From 642fe896f9a69051fd9dfe69cffa7809d339a057 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 28 Oct 2008 17:44:07 +0100 Subject: xf86-input-tslib: fix autoreconf and actually ship fdi fil --- packages/xorg-driver/xf86-input-tslib_0.0.5.bb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/xorg-driver/xf86-input-tslib_0.0.5.bb b/packages/xorg-driver/xf86-input-tslib_0.0.5.bb index db477c2c89..b504dff5cf 100644 --- a/packages/xorg-driver/xf86-input-tslib_0.0.5.bb +++ b/packages/xorg-driver/xf86-input-tslib_0.0.5.bb @@ -2,14 +2,19 @@ require xorg-driver-input.inc DESCRIPTION = "X.Org X server -- tslib input driver" RRECOMMENDS += "hal" -PR = "r3" +PR = "r4" SRC_URI = "http://www.pengutronix.de/software/xf86-input-tslib/download/xf86-input-tslib-${PV}.tar.bz2 \ file://10-x11-input-tslib.fdi" +do_configure_prepend() { + rm -rf ${S}/m4/ || true +} + do_install_append() { install -d ${D}/${datadir}/hal/fdi/policy/20thirdparty install -m 0644 ${WORKDIR}/10-x11-input-tslib.fdi ${D}/${datadir}/hal/fdi/policy/20thirdparty } +FILES_${PN} += "${datadir}/hal" -- cgit v1.2.3 From 2b6bf90a324da0877cfd38f47fc822959862775a Mon Sep 17 00:00:00 2001 From: Elena ``of Valhalla'' Grandi Date: Wed, 22 Oct 2008 14:58:24 +0200 Subject: podget 0.5.8: new recipe --- packages/podget/podget-0.5.8/busybox_df.patch | 11 +++++++++++ packages/podget/podget_0.5.8.bb | 16 ++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 packages/podget/podget-0.5.8/busybox_df.patch create mode 100644 packages/podget/podget_0.5.8.bb diff --git a/packages/podget/podget-0.5.8/busybox_df.patch b/packages/podget/podget-0.5.8/busybox_df.patch new file mode 100644 index 0000000000..1f84558d92 --- /dev/null +++ b/packages/podget/podget-0.5.8/busybox_df.patch @@ -0,0 +1,11 @@ +--- podget/podget~ 2008-05-08 08:50:23.000000000 +0000 ++++ podget/podget 2008-05-08 08:50:37.000000000 +0000 +@@ -535,7 +535,7 @@ + url_base=$(echo $url | sed -e 's/\(.*\/\)[^\/]\+/\1/') + + # Test for available space on library partition +- avail_space=$(df -kP ${dir_library} | tail -n 1 | awk '{print $4}') ++ avail_space=$(df -k ${dir_library} | tail -n 1 | awk '{print $4}') + if [ ${avail_space} -le ${min_space} ] ; then + echo -e "\nAvailable space on Library partition has dropped below allowed.\nStopping Session." + exit 1 diff --git a/packages/podget/podget_0.5.8.bb b/packages/podget/podget_0.5.8.bb new file mode 100644 index 0000000000..4af771e153 --- /dev/null +++ b/packages/podget/podget_0.5.8.bb @@ -0,0 +1,16 @@ +DESCRIPTION = "A simple podcast aggregator." +HOMEPAGE = "http://podget.sourceforge.net/" +PRIORITY = "optional" +LICENSE = "GPL" + +RDEPENDS = "bash sed wget libiconv" + +SRC_URI = "${SOURCEFORGE_MIRROR}/podget/podget_${PV}.tar.gz \ + file://busybox_df.patch;patch=1" + +S = "${WORKDIR}/podget" + +do_install () { + install -d ${D}/usr/bin + install -m 0755 ${WORKDIR}/podget/podget ${D}/usr/bin +} -- cgit v1.2.3 From 211e659dc4867b72cc80c94fa736067712a6f3a6 Mon Sep 17 00:00:00 2001 From: Elena ``of Valhalla'' Grandi Date: Wed, 22 Oct 2008 15:59:10 +0200 Subject: podget 0.5.8: added checksum.ini entry --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 3f66ef31c5..115959297b 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -12378,6 +12378,10 @@ sha256=74c83c3283178656a6fc1ee571fb1ebbddda8f3b7c32ad405477ae278b0cf867 md5=8c1bc9d5bdd6f6298222125669d16e1e sha256=5a31aa10668b93e8283c58592b46368c26aa92e097cea0bda9b0554042bd6643 +[http://downloads.sourceforge.net/podget/podget_0.5.8.tar.gz] +md5=6619557b02559ac3191d4cc2054bf325 +sha256=ab6e33b09bfbd407ee444ef37d769658e651cfe6eee96ce7aac5be8860e069e5 + [http://www.rpsys.net/openzaurus/patches/archive/poodle_asoc_fix-r1.patch] md5=7c766563674dec668baa5f650a14b7cd sha256=3f78e714248cdaa0b83f530a3b7f80da02446b179e86fbb043d57c3e05ae0d7e -- cgit v1.2.3 From 8ecf1848ce7f4438f4cce8f524b1ff351cd5a7fe Mon Sep 17 00:00:00 2001 From: Elena ``of Valhalla'' Grandi Date: Wed, 29 Oct 2008 15:38:15 +0100 Subject: geany 0.14: added checksum.ini entry --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 115959297b..8b1b5cf82f 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -4434,6 +4434,10 @@ sha256=cc340338a2e28b40058ab9eb5354a21d53f88a1582ea21ba0bb185c37a281dc9 md5=7e46bc3b0a5b08e79f1f2f1b869caf40 sha256=0483dac71c88ca0da5ee85729c0c1dd6793d928109ac79ad56583aa1a5ff43d2 +[http://downloads.sourceforge.net/geany/geany-0.14.tar.bz2] +md5=c6c22c7f9feff81a15f5c8ece03b87c1 +sha256=619d59b339e1be7687058460c105b8f2d4f00e6409e4450dee385e3086fdf6d7 + [ftp://ftp.billsgames.com/unix/x/gemdropx/src/gemdropx-0.9.tar.gz] md5=fd0337e89778e2dba74461c555ea8e42 sha256=e50495d292a1d456c28044efbf07c16d8865f8d95e1caba86f4c5b2e3fb1d28f -- cgit v1.2.3 From 3ff38e08f4f689d81d6d5cc114fda8de3b97d966 Mon Sep 17 00:00:00 2001 From: Elena ``of Valhalla'' Grandi Date: Wed, 29 Oct 2008 16:25:20 +0100 Subject: mcabber 0.9.9: added checksum.ini entry This closes bug 4764 http://bugs.openembedded.net/show_bug.cgi?id=4764 --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 8b1b5cf82f..9c8c23c540 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -10694,6 +10694,10 @@ sha256=396a2de3eed6d5d3c4604b372e11f6c0f18644ef3d8ee14978b715ec26aa0974 md5=18b20db6e40480a53bac2870c56fc3c4 sha256=086ab03daaac28a28c0ddb9a709040b59e1322f6bfa68e39d004d9c66b119e7e +[http://www.lilotux.net/~mikael/mcabber/files/mcabber-0.9.9.tar.bz2] +md5=189fb9d23f5a8412bc660884528475ea +sha256=2a231c9241211d33745f110f35cfa6bdb051b32791461b9579794b6623863bb1 + [http://archive.ubuntu.com/ubuntu/pool/universe/m/mce-dev/mce-dev_1.5.6.tar.gz] md5=b3a28fe9bcec2fc7ae70f5d819bf3d1a sha256=aaaae4e3a25880d9f6af2dcf504b03f98946dcfb79e4c0a77adb9223aaa5cbc4 -- cgit v1.2.3 From dc39745f3c8ea019033b811f6ef0ececb110d330 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Wed, 29 Oct 2008 16:44:55 +0100 Subject: hal 0.5.11: add fix from hal git to fix libtool issues in configure --- packages/hal/hal-0.5.11/fix-configure.diff | 22 ++++++++++++++++++++++ packages/hal/hal_0.5.11.bb | 6 +++++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 packages/hal/hal-0.5.11/fix-configure.diff diff --git a/packages/hal/hal-0.5.11/fix-configure.diff b/packages/hal/hal-0.5.11/fix-configure.diff new file mode 100644 index 0000000000..7d9d42d69f --- /dev/null +++ b/packages/hal/hal-0.5.11/fix-configure.diff @@ -0,0 +1,22 @@ +From: Rémi Cardona +Date: Sat, 9 Aug 2008 15:04:07 +0000 (+0200) +Subject: add libtool-2.2 support +X-Git-Url: http://gitweb.freedesktop.org/?p=hal.git;a=commitdiff;h=c8a1aedf87bbb200fc5daa0ec8559a2d84fbb61d + +add libtool-2.2 support + +Fix for aclocal to work properly with libtool 2.2 which no longer +checks for C++ automatically (this patch is of course backwards +compatible with libtool 1.5.x) +--- + +--- a/configure.in ++++ b/configure.in +@@ -29,6 +29,7 @@ AC_SUBST(LT_AGE) + + AC_ISC_POSIX + AC_PROG_CC ++AC_PROG_CXX + AM_PROG_CC_C_O + AC_HEADER_STDC + AC_PROG_LIBTOOL diff --git a/packages/hal/hal_0.5.11.bb b/packages/hal/hal_0.5.11.bb index 5408756510..e93ad64ac3 100644 --- a/packages/hal/hal_0.5.11.bb +++ b/packages/hal/hal_0.5.11.bb @@ -1,4 +1,8 @@ require hal.inc -SRC_URI += " file://hal-right-input-h.patch;patch=1" +PR = "r1" + +SRC_URI += " file://hal-right-input-h.patch;patch=1 \ + file://fix-configure.diff;patch=1" + EXTRA_OECONF += "--with-linux-input-header=${STAGING_INCDIR}/linux/input.h" -- cgit v1.2.3 From f36893c64eb7873f5865ecf485a4fadac8f0bbe9 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Wed, 29 Oct 2008 19:03:15 +0100 Subject: xserver xorg 1.4.2: try harder to get xcalibrate enabled --- packages/xorg-xserver/files/xcalibrate-xorg.diff | 11 +++++++++++ packages/xorg-xserver/xserver-xorg_1.4.2.bb | 8 ++++---- 2 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 packages/xorg-xserver/files/xcalibrate-xorg.diff diff --git a/packages/xorg-xserver/files/xcalibrate-xorg.diff b/packages/xorg-xserver/files/xcalibrate-xorg.diff new file mode 100644 index 0000000000..65121efc3b --- /dev/null +++ b/packages/xorg-xserver/files/xcalibrate-xorg.diff @@ -0,0 +1,11 @@ +--- /tmp/configure.ac 2008-10-29 18:53:23.000000000 +0100 ++++ xorg-server-1.4.2/configure.ac 2008-10-29 18:53:40.000000000 +0100 +@@ -865,7 +865,7 @@ + FONTPATH="built-ins" + fi + +-if test "x$XCALIBRATE" = xyes && test "$KDRIVE" = yes; then ++if test "x$XCALIBRATE" = xyes ; then + AC_DEFINE(XCALIBRATE, 1, [Build XCalibrate extension]) + REQUIRED_MODULES="$REQUIRED_MODULES xcalibrateproto" + else diff --git a/packages/xorg-xserver/xserver-xorg_1.4.2.bb b/packages/xorg-xserver/xserver-xorg_1.4.2.bb index 3f53002a34..1abac8443f 100644 --- a/packages/xorg-xserver/xserver-xorg_1.4.2.bb +++ b/packages/xorg-xserver/xserver-xorg_1.4.2.bb @@ -3,14 +3,14 @@ require xorg-xserver-common.inc DESCRIPTION = "the X.Org X server" DEPENDS += "pixman" PE = "1" -PR = "r7" +PR = "r8" SRC_URI += "file://drmfix.patch;patch=1 \ file://pkgconfig_fix.patch;patch=1 \ - file://sysroot_fix.patch;patch=1" + file://sysroot_fix.patch;patch=1 \ + file://xcalibrate-xorg.diff \ +" MESA_VER = "7.0.2" -EXTRA_OECONF += " ac_cv_file__usr_share_sgml_X11_defs_ent=no " - export LDFLAGS += " -ldl " -- cgit v1.2.3 From e25e2f583c1b80711092322279226294cccb35ec Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Wed, 29 Oct 2008 19:15:22 +0100 Subject: xserver-xorg: use omapfb driver and tslib for omap3evm machine --- .../xorg-xserver/xserver-xorg/omap3evm/xorg.conf | 133 +++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf diff --git a/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf b/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf new file mode 100644 index 0000000000..55eba4fc21 --- /dev/null +++ b/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf @@ -0,0 +1,133 @@ + +# xorg configuration + +Section "ServerLayout" + Identifier "Default Layout" + Screen 0 "Screen0" 0 0 + InputDevice "touchscreen0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" +EndSection + +Section "Files" + +# RgbPath is the location of the RGB database. Note, this is the name of the +# file minus the extension (like ".txt" or ".db"). There is normally +# no need to change the default. +# Multiple FontPath entries are allowed (they are concatenated together) +# By default, Red Hat 6.0 and later now use a font server independent of +# the X server to render fonts. +# FontPath "unix/:7100" + FontPath "/usr/lib/X11/fonts/misc" +EndSection + +Section "Module" + Load "dbe" + Load "extmod" + Load "fbdevhw" +# Load "glx" + Load "record" + Load "freetype" + Load "type1" + Load "tslib" +# to enable Xv, link /dev/videox to video device, eg. ln -s video0 /dev/videox +# Load "z4l" +EndSection + +Section "InputDevice" + +# Specify which keyboard LEDs can be user-controlled (eg, with xset(1)) +# Option "Xleds" "1 2 3" +# To disable the XKEYBOARD extension, uncomment XkbDisable. +# Option "XkbDisable" +# To customise the XKB settings to suit your keyboard, modify the +# lines below (which are the defaults). For example, for a non-U.S. +# keyboard, you will probably want to use: +# Option "XkbModel" "pc102" +# If you have a US Microsoft Natural keyboard, you can use: +# Option "XkbModel" "microsoft" +# +# Then to change the language, change the Layout setting. +# For example, a german layout can be obtained with: +# Option "XkbLayout" "de" +# or: +# Option "XkbLayout" "de" +# Option "XkbVariant" "nodeadkeys" +# +# If you'd like to switch the positions of your capslock and +# control keys, use: +# Option "XkbOptions" "ctrl:swapcaps" +# Or if you just want both to be control, use: +# Option "XkbOptions" "ctrl:nocaps" +# + Identifier "Keyboard0" + Driver "keyboard" + Option "XkbModel" "pc105" + Option "XkbLayout" "us" +EndSection + +Section "InputDevice" + Identifier "touchscreen0" + Driver "tslib" + Option "TslibDevice" "/dev/input/touchscreen0" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Monitor Vendor" + ModelName "NEC FP2141SB" +# DisplaySize 400 300 +# Note: setting HorizSync/VertRefresh will override DDC probe +# HorizSync 30.0 - 140.0 +# VertRefresh 25.0 - 160.0 + Option "dpms" +EndSection + +Section "Monitor" + Identifier "Monitor1" + VendorName "Generic Vendor" + ModelName "Generic Monitor" + HorizSync 28-50 + VertRefresh 43-73 + Modeline "800x600-60" 40.0000 800 840 976 1056 600 601 605 628 + Modeline "800x600-72" 50.0000 800 856 976 1040 600 637 643 666 + Modeline "640x480-60" 25.1749 640 656 744 800 480 490 492 525 -HSync -VSync + Modeline "640x480-72" 31.5000 640 664 704 832 480 489 492 520 -HSync -VSync + Option "dpms" +EndSection + + +Section "Device" + Identifier "FBDev" + Driver "omapfb" + #Option "shadowfb" "off" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "FBDev" + Monitor "Monitor0" + DefaultDepth 16 + + SubSection "Display" + Depth 8 + Modes "1024x768" "800x600" "640x480" + EndSubsection + + SubSection "Display" + Depth 16 + Modes "1024x768" "800x600" "640x480" + EndSubsection + + SubSection "Display" + Depth 24 + FbBpp 32 + Modes "1024x768" "800x600" "640x480" + EndSubsection + +EndSection + +Section "DRI" + Group 0 + Mode 0666 +EndSection + -- cgit v1.2.3 From 0d2c29eaff64c853bdd73b9cbf01fbe39020db46 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Wed, 29 Oct 2008 18:48:41 +0100 Subject: bluemchen wiese: Allow to disable certain ugly packages globally Adopt the notion of gstreamer and allow to easily not build certain ugly packages. People are constraints to not live on a bluemchen wiese can set ENTERPRISE_DISTRO="1" in their config and get ugly packages removed. This is implemented by a set of packages in the BBMASK (as a safety net) and by using base conditional to onl conditonally add ugly packages. --- conf/bitbake.conf | 4 ++++ conf/enterprise.conf | 2 ++ packages/ffmpeg/ffmpeg.inc | 2 +- packages/ffmpeg/ffmpeg_0.4.9-pre1.bb | 2 +- packages/ffmpeg/ffmpeg_git.bb | 2 +- packages/ffmpeg/ffmpeg_svn.bb | 2 +- packages/gnash/gnash-minimal.inc | 3 ++- packages/gnash/gnash-minimal_0.8.2.bb | 2 +- packages/gnash/gnash-minimal_cvs.bb | 2 +- packages/gnash/gnash.inc | 6 ++++-- packages/gnash/gnash_0.8.0.bb | 2 ++ packages/gnash/gnash_0.8.1.bb | 2 ++ packages/gnash/gnash_0.8.2.bb | 2 ++ packages/gnash/gnash_0.8.3.bb | 2 +- packages/gstreamer/gst-meta-base_0.10.bb | 20 ++++++-------------- packages/gstreamer/gst-plugins-ugly_0.10.7.bb | 2 -- packages/gstreamer/gst-plugins.inc | 4 ++-- packages/images/fso-image.bb | 3 +-- packages/libxine/libxine-fb_1.0.bb | 5 +++-- packages/libxine/libxine-x11_1.0.bb | 5 +++-- packages/libxine/libxine_1.1.0.bb | 5 +++-- packages/mplayer/mplayer_0.0+1.0rc1.bb | 5 +++-- packages/mplayer/mplayer_0.0+1.0rc2.bb | 5 +++-- packages/mplayer/mplayer_svn.bb | 5 +++-- packages/mt-daapd/mt-daapd.inc | 3 ++- packages/mt-daapd/mt-daapd_0.2.1.1.bb | 2 +- packages/mt-daapd/mt-daapd_0.2.2.bb | 2 +- packages/mt-daapd/mt-daapd_0.2.3.bb | 2 +- packages/musicpd/mpd-alsa_0.11.5.bb | 5 +++-- packages/musicpd/mpd-alsa_svn.bb | 3 ++- packages/musicpd/mpd_svn.bb | 5 +++-- packages/mythtv/mythtv.inc | 3 ++- packages/mythtv/mythtv_0.18.1.bb | 2 +- packages/mythtv/mythtv_0.20.bb | 2 +- packages/openmax/libomxil-bellagio_0.9.0.bb | 5 +++-- packages/scummvm/scummvm.inc | 2 +- packages/scummvm/scummvm_0.6.0.bb | 3 ++- packages/scummvm/scummvm_0.6.1b.bb | 3 ++- packages/scummvm/scummvm_0.9.0.bb | 9 ++++++--- packages/scummvm/scummvm_0.9.1.bb | 9 ++++++--- packages/squeezeclient/squeezeslave_svn.bb | 5 +++-- packages/swfdec/swfdec-mozilla_0.7.2.bb | 5 +++-- packages/swfdec/swfdec-mozilla_0.7.4.bb | 5 ++++- packages/swfdec/swfdec_0.4.0.bb | 4 +++- packages/swfdec/swfdec_0.7.2.bb | 4 +++- packages/tasks/task-opie-all.bb | 4 ++-- packages/vlc/vlc-davinci_0.8.6h.bb | 5 +++-- packages/vlc/vlc-gpe_0.7.2.bb | 5 +++-- packages/vlc/vlc-gpe_0.8.1.bb | 5 +++-- packages/vlc/vlc-gpe_0.8.4.bb | 5 +++-- packages/vlc/vlc_0.9.2.bb | 5 +++-- packages/vlc/vlc_0.9.4.bb | 5 +++-- packages/xmms-embedded/xmms-embedded_20040327.bb | 5 +++-- 53 files changed, 128 insertions(+), 88 deletions(-) create mode 100644 conf/enterprise.conf diff --git a/conf/bitbake.conf b/conf/bitbake.conf index edb4e4ddbc..4273152a87 100644 --- a/conf/bitbake.conf +++ b/conf/bitbake.conf @@ -547,6 +547,9 @@ export STAGING_IDLDIR = "${STAGING_DATADIR}/idl" # library package naming AUTO_LIBNAME_PKGS = "${PACKAGES}" +# Globally toggle certain dependencies +ENTERPRISE_DISTRO ?= "0" + ### ### Config file processing ### @@ -580,6 +583,7 @@ include conf/distro/${DISTRO}.conf include conf/documentation.conf require conf/sanity.conf require conf/abi_version.conf +require conf/enterprise.conf ################################################################## # Weak variables (usually to retain backwards compatibility) diff --git a/conf/enterprise.conf b/conf/enterprise.conf new file mode 100644 index 0000000000..79637661dd --- /dev/null +++ b/conf/enterprise.conf @@ -0,0 +1,2 @@ +# For the enterprise edition we want to avoid certain packages by default. +BBMASK = "${@base_conditional('ENTERPRISE_DISTRO', '1', '(gst-plugins-ugly|mp3blaster|mpg123|mpg321|liba52|lame|libmad|mpeg2dec|xmms-mad|madplay|libsidplay|sidplayer|python-mad|opie-mediaplayer1-libmadplugin)', '', d)}" diff --git a/packages/ffmpeg/ffmpeg.inc b/packages/ffmpeg/ffmpeg.inc index 44e00e6764..f26c71e80f 100644 --- a/packages/ffmpeg/ffmpeg.inc +++ b/packages/ffmpeg/ffmpeg.inc @@ -5,7 +5,7 @@ SECTION = "libs" PRIORITY = "optional" LICENSE = "LGPL" -DEPENDS = "zlib libogg libvorbis faac faad2 liba52 lame" +DEPENDS = "zlib libogg libvorbis faac faad2 ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'lame liba52', d)}" RSUGGESTS = "mplayer" inherit autotools pkgconfig diff --git a/packages/ffmpeg/ffmpeg_0.4.9-pre1.bb b/packages/ffmpeg/ffmpeg_0.4.9-pre1.bb index 3e05040854..6e347b16f1 100644 --- a/packages/ffmpeg/ffmpeg_0.4.9-pre1.bb +++ b/packages/ffmpeg/ffmpeg_0.4.9-pre1.bb @@ -1,6 +1,6 @@ require ffmpeg.inc -PR = "r8" +PR = "r9" SRC_URI = "${SOURCEFORGE_MIRROR}/ffmpeg/ffmpeg-${PV}.tar.gz \ file://configure.patch;patch=0 \ diff --git a/packages/ffmpeg/ffmpeg_git.bb b/packages/ffmpeg/ffmpeg_git.bb index aa955b1648..3f8785b6d7 100644 --- a/packages/ffmpeg/ffmpeg_git.bb +++ b/packages/ffmpeg/ffmpeg_git.bb @@ -4,7 +4,7 @@ DEPENDS += "schroedinger libgsm" PE = "1" PV = "0.4.9+${PR}+gitr${SRCREV}" -PR = "r34" +PR = "r35" DEFAULT_PREFERENCE = "-1" DEFAULT_PREFERENCE_armv5te = "1" diff --git a/packages/ffmpeg/ffmpeg_svn.bb b/packages/ffmpeg/ffmpeg_svn.bb index 2433565bbe..09f1003a1d 100644 --- a/packages/ffmpeg/ffmpeg_svn.bb +++ b/packages/ffmpeg/ffmpeg_svn.bb @@ -6,7 +6,7 @@ SRCREV ?= "12186" PE = "1" PV = "0.4.9+svnr${SRCREV}" -PR = "r0" +PR = "r1" DEFAULT_PREFERENCE = "-1" diff --git a/packages/gnash/gnash-minimal.inc b/packages/gnash/gnash-minimal.inc index 1f3c486e53..4f52322467 100644 --- a/packages/gnash/gnash-minimal.inc +++ b/packages/gnash/gnash-minimal.inc @@ -2,7 +2,8 @@ DESCRIPTION = "Gnash is a GNU Flash movie player that supports many SWF v7 featu HOMEPAGE = "http://www.gnu.org/software/gnash" LICENSE = "GPL-2" -DEPENDS = "virtual/libiconv virtual/libintl ffmpeg libtool agg libxml2 libmad zlib boost jpeg pango curl freetype" +DEPENDS = "virtual/libiconv virtual/libintl ffmpeg libtool agg libxml2 zlib boost jpeg pango curl freetype \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad', d)}" RRECOMMENDS_${PN} = "libltdl" SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gnash/${PV}/gnash-${PV}.tar.bz2" diff --git a/packages/gnash/gnash-minimal_0.8.2.bb b/packages/gnash/gnash-minimal_0.8.2.bb index 1c6065e74e..ea99de1e39 100644 --- a/packages/gnash/gnash-minimal_0.8.2.bb +++ b/packages/gnash/gnash-minimal_0.8.2.bb @@ -1,3 +1,3 @@ require gnash-minimal.inc -PR = "r2" +PR = "r3" diff --git a/packages/gnash/gnash-minimal_cvs.bb b/packages/gnash/gnash-minimal_cvs.bb index 80564ebe7e..7c36dbafff 100644 --- a/packages/gnash/gnash-minimal_cvs.bb +++ b/packages/gnash/gnash-minimal_cvs.bb @@ -1,7 +1,7 @@ require gnash-minimal.inc -PR = "r2" +PR = "r3" PV = "0.8.3+cvs${SRCDATE}" diff --git a/packages/gnash/gnash.inc b/packages/gnash/gnash.inc index 60162ed1bd..59261e3121 100644 --- a/packages/gnash/gnash.inc +++ b/packages/gnash/gnash.inc @@ -1,8 +1,10 @@ DESCRIPTION = "Gnash is a GNU Flash movie player that supports many SWF v7 features" HOMEPAGE = "http://www.gnu.org/software/gnash" LICENSE = "GPL-2" -DEPENDS = "libtool ffmpeg gtk+ cairo libxml2 libmad libsdl-mixer zlib boost jpeg pango curl freetype" -PR = "r2" +DEPENDS = "libtool ffmpeg gtk+ cairo libxml2 libsdl-mixer zlib boost jpeg pango curl freetype \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad', d)}" + +PR = "r3" SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gnash/${PV}/gnash-${PV}.tar.bz2 \ " diff --git a/packages/gnash/gnash_0.8.0.bb b/packages/gnash/gnash_0.8.0.bb index da4b281e94..d9dc87a417 100644 --- a/packages/gnash/gnash_0.8.0.bb +++ b/packages/gnash/gnash_0.8.0.bb @@ -1 +1,3 @@ require gnash.inc + +PR = "r1" diff --git a/packages/gnash/gnash_0.8.1.bb b/packages/gnash/gnash_0.8.1.bb index da4b281e94..d9dc87a417 100644 --- a/packages/gnash/gnash_0.8.1.bb +++ b/packages/gnash/gnash_0.8.1.bb @@ -1 +1,3 @@ require gnash.inc + +PR = "r1" diff --git a/packages/gnash/gnash_0.8.2.bb b/packages/gnash/gnash_0.8.2.bb index da4b281e94..d9dc87a417 100644 --- a/packages/gnash/gnash_0.8.2.bb +++ b/packages/gnash/gnash_0.8.2.bb @@ -1 +1,3 @@ require gnash.inc + +PR = "r1" diff --git a/packages/gnash/gnash_0.8.3.bb b/packages/gnash/gnash_0.8.3.bb index 87ea15878f..9afde70d98 100644 --- a/packages/gnash/gnash_0.8.3.bb +++ b/packages/gnash/gnash_0.8.3.bb @@ -1,6 +1,6 @@ require gnash.inc -PR = "r3" +PR = "r4" EXTRA_OECONF += " --without-included-ltdl \ --with-ltdl-include=${STAGING_INCDIR} \ diff --git a/packages/gstreamer/gst-meta-base_0.10.bb b/packages/gstreamer/gst-meta-base_0.10.bb index 06a4fba4cd..c54429aca8 100644 --- a/packages/gstreamer/gst-meta-base_0.10.bb +++ b/packages/gstreamer/gst-meta-base_0.10.bb @@ -1,8 +1,10 @@ # Based on its sibling on Poky which is copyright (C) 2006,2007 OpenedHand LTD DESCRIPTION = "Gstreamer package groups" -DEPENDS = "gstreamer gst-plugins-base gst-plugins-bad gst-plugins-good gst-plugins-ugly" -PR = "r11" +DEPENDS = "gstreamer gst-plugins-base gst-plugins-bad gst-plugins-good \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'gst-plugins-ugly', d)}" + +PR = "r12" PACKAGES = "${PN}-dbg \ gst-meta-base \ @@ -34,14 +36,7 @@ RDEPENDS_gst-meta-audio = "\ gst-meta-base \ gst-plugin-ivorbis \ gst-plugin-ogg \ - gst-plugin-mad \ - gst-plugin-id3demux \ - gst-plugin-wavparse" - -RDEPENDS_gst-meta-audio_openmoko = "\ - gst-meta-base \ - gst-plugin-ivorbis \ - gst-plugin-ogg \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'gst-plugin-mad', d)} \ gst-plugin-id3demux \ gst-plugin-wavparse" @@ -55,10 +50,7 @@ RDEPENDS_gst-meta-video = "\ gst-meta-base \ gst-plugin-avi \ gst-plugin-matroska \ - gst-plugin-mpegstream \ - gst-plugin-mpegaudioparse \ - gst-plugin-mpegvideoparse \ - gst-plugin-mpeg2dec" + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'gst-plugin-mpegstream gst-plugin-mpegaudioparse gst-plugin-mpegvideoparse gst-plugin-mpeg2dec', d)}" RRECOMMENDS_gst-meta-video = "\ gst-meta-audio" diff --git a/packages/gstreamer/gst-plugins-ugly_0.10.7.bb b/packages/gstreamer/gst-plugins-ugly_0.10.7.bb index d7ff21d4e9..fd008b065a 100644 --- a/packages/gstreamer/gst-plugins-ugly_0.10.7.bb +++ b/packages/gstreamer/gst-plugins-ugly_0.10.7.bb @@ -1,8 +1,6 @@ require gst-plugins.inc PR = "r0" -EXTRA_OECONF_append_openmoko = "--disable-mad" - DEPENDS += "gst-plugins-base mpeg2dec libsidplay" SRC_URI += "\ diff --git a/packages/gstreamer/gst-plugins.inc b/packages/gstreamer/gst-plugins.inc index f8447ee25d..68a0502182 100644 --- a/packages/gstreamer/gst-plugins.inc +++ b/packages/gstreamer/gst-plugins.inc @@ -1,7 +1,7 @@ require gst-common.inc DESCRIPTION = "Plugins for GStreamer" -DEPENDS = "gstreamer libmikmod liboil libogg tremor libvorbis libid3tag" -DEPENDS += "${@base_conditional('DISTRO', 'openmoko', '', 'libmad', d)}" +DEPENDS = "gstreamer libmikmod liboil libogg tremor libvorbis" +DEPENDS += "${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad libid3tag', d)}" PACKAGES_DYNAMIC = "gst-plugin-*" diff --git a/packages/images/fso-image.bb b/packages/images/fso-image.bb index d0ae4039d3..f9d7312431 100644 --- a/packages/images/fso-image.bb +++ b/packages/images/fso-image.bb @@ -75,9 +75,8 @@ AUDIO_INSTALL = "\ alsa-utils-aplay \ alsa-utils-amixer \ gst-meta-audio \ - gst-plugin-mad \ gst-plugin-modplug \ - gst-plugin-sid \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'gst-plugin-mad gst-plugin-sid', d)} \ fso-sounds \ " diff --git a/packages/libxine/libxine-fb_1.0.bb b/packages/libxine/libxine-fb_1.0.bb index a51dc83896..87818d5e8c 100644 --- a/packages/libxine/libxine-fb_1.0.bb +++ b/packages/libxine/libxine-fb_1.0.bb @@ -3,9 +3,10 @@ This version is configured for the usage with framebuffer based environments" SECTION = "libs" PRIORITY = "optional" LICENSE = "GPL" -DEPENDS = "zlib libogg tremor libmad libmodplug libpng" +DEPENDS = "zlib libogg tremor libmodplug libpng \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad', d)}" PROVIDES = "virtual/libxine" -PR = "r1" +PR = "r2" inherit autotools pkgconfig gettext diff --git a/packages/libxine/libxine-x11_1.0.bb b/packages/libxine/libxine-x11_1.0.bb index 806f8fd4b7..6bc7e6eb15 100644 --- a/packages/libxine/libxine-x11_1.0.bb +++ b/packages/libxine/libxine-x11_1.0.bb @@ -3,9 +3,10 @@ This version is configued for the usage with X11" SECTION = "libs" PRIORITY = "optional" LICENSE = "GPL" -DEPENDS = "zlib libogg libvorbis tremor libmad libmodplug esound virtual/libx11 libxext libpng" +DEPENDS = "zlib libogg libvorbis tremor libmodplug esound virtual/libx11 libxext libpng \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad', d)}" PROVIDES = "virtual/libxine" -PR = "r1" +PR = "r2" inherit autotools pkgconfig gettext binconfig diff --git a/packages/libxine/libxine_1.1.0.bb b/packages/libxine/libxine_1.1.0.bb index 9219e5fdcd..71e7663101 100644 --- a/packages/libxine/libxine_1.1.0.bb +++ b/packages/libxine/libxine_1.1.0.bb @@ -3,9 +3,10 @@ This version is configued for the usage with X11" SECTION = "libs" PRIORITY = "optional" LICENSE = "GPL" -DEPENDS = "zlib libogg libvorbis tremor libmad libmodplug esound virtual/libx11 libxext libpng" +DEPENDS = "zlib libogg libvorbis tremor libmodplug esound virtual/libx11 libxext libpng \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad', d)}" PROVIDES = "virtual/libxine" -PR = "r1" +PR = "r2" inherit autotools pkgconfig gettext binconfig diff --git a/packages/mplayer/mplayer_0.0+1.0rc1.bb b/packages/mplayer/mplayer_0.0+1.0rc1.bb index f89364335c..cf899861a0 100644 --- a/packages/mplayer/mplayer_0.0+1.0rc1.bb +++ b/packages/mplayer/mplayer_0.0+1.0rc1.bb @@ -2,7 +2,8 @@ DESCRIPTION = "Open Source multimedia player." SECTION = "multimedia" PRIORITY = "optional" HOMEPAGE = "http://www.mplayerhq.hu/" -DEPENDS = "virtual/libsdl libmad zlib libpng jpeg liba52 freetype fontconfig alsa-lib lzo ncurses lame libxv virtual/libx11" +DEPENDS = "virtual/libsdl zlib libpng jpeg freetype fontconfig alsa-lib lzo ncurses libxv virtual/libx11 \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad liba52 lame', d)}" RDEPENDS = "mplayer-common" LICENSE = "GPL" SRC_URI = "http://www1.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc1.tar.bz2 \ @@ -38,7 +39,7 @@ PACKAGE_ARCH_mencoder_collie = "collie" RCONFLICTS_${PN} = "mplayer-atty" RREPLACES_${PN} = "mplayer-atty" -PR = "r16" +PR = "r17" PARALLEL_MAKE = "" diff --git a/packages/mplayer/mplayer_0.0+1.0rc2.bb b/packages/mplayer/mplayer_0.0+1.0rc2.bb index d086e9bcc1..e4fb267f7c 100644 --- a/packages/mplayer/mplayer_0.0+1.0rc2.bb +++ b/packages/mplayer/mplayer_0.0+1.0rc2.bb @@ -2,7 +2,8 @@ DESCRIPTION = "Open Source multimedia player." SECTION = "multimedia" PRIORITY = "optional" HOMEPAGE = "http://www.mplayerhq.hu/" -DEPENDS = "virtual/libsdl xsp libmad zlib libpng jpeg liba52 freetype fontconfig alsa-lib lzo ncurses lame libxv virtual/libx11" +DEPENDS = "virtual/libsdl xsp zlib libpng jpeg freetype fontconfig alsa-lib lzo ncurses libxv virtual/libx11 \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad liba52 lame', d)}" DEPENDS_append_c7x0 = " libw100 " DEPENDS_append_hx4700 = " libw100 " @@ -42,7 +43,7 @@ PACKAGE_ARCH_hx4700 = "hx4700" RCONFLICTS_${PN} = "mplayer-atty" RREPLACES_${PN} = "mplayer-atty" -PR = "r8" +PR = "r9" PARALLEL_MAKE = "" diff --git a/packages/mplayer/mplayer_svn.bb b/packages/mplayer/mplayer_svn.bb index 923c9abf68..dc9ae77116 100644 --- a/packages/mplayer/mplayer_svn.bb +++ b/packages/mplayer/mplayer_svn.bb @@ -2,7 +2,8 @@ DESCRIPTION = "Open Source multimedia player." SECTION = "multimedia" PRIORITY = "optional" HOMEPAGE = "http://www.mplayerhq.hu/" -DEPENDS = "virtual/libsdl ffmpeg xsp libmad zlib libpng jpeg liba52 freetype fontconfig alsa-lib lzo ncurses lame libxv virtual/libx11" +DEPENDS = "virtual/libsdl ffmpeg xsp zlib libpng jpeg freetype fontconfig alsa-lib lzo ncurses libxv virtual/libx11 \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad liba52 lame', d)}" RDEPENDS = "mplayer-common" LICENSE = "GPL" @@ -39,7 +40,7 @@ RCONFLICTS_${PN} = "mplayer-atty" RREPLACES_${PN} = "mplayer-atty" PV = "0.0+1.0rc2+svnr${SRCREV}" -PR = "r5" +PR = "r6" DEFAULT_PREFERENCE = "-1" DEFAULT_PREFERENCE_armv7a = "1" diff --git a/packages/mt-daapd/mt-daapd.inc b/packages/mt-daapd/mt-daapd.inc index 56692a3db8..859e586cdf 100644 --- a/packages/mt-daapd/mt-daapd.inc +++ b/packages/mt-daapd/mt-daapd.inc @@ -1,7 +1,8 @@ DESCRIPTION = "multi threaded daap server for POSIX Systems: iTunes Server." SECTION = "console/network" PRIORITY = "optional" -DEPENDS = "zlib gdbm libid3tag" +DEPENDS = "zlib gdbm libid3tag \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libid3tag', d)}" LICENSE = "GPL" SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz \ diff --git a/packages/mt-daapd/mt-daapd_0.2.1.1.bb b/packages/mt-daapd/mt-daapd_0.2.1.1.bb index 45256799aa..e39cd775d7 100644 --- a/packages/mt-daapd/mt-daapd_0.2.1.1.bb +++ b/packages/mt-daapd/mt-daapd_0.2.1.1.bb @@ -1,3 +1,3 @@ require ${PN}.inc -PR = "r3" +PR = "r4" SRC_URI += "file://itunes-5-fix.patch;patch=1" diff --git a/packages/mt-daapd/mt-daapd_0.2.2.bb b/packages/mt-daapd/mt-daapd_0.2.2.bb index dd2da24e65..8145a5892b 100644 --- a/packages/mt-daapd/mt-daapd_0.2.2.bb +++ b/packages/mt-daapd/mt-daapd_0.2.2.bb @@ -1,4 +1,4 @@ require ${PN}.inc # This has not been released yet! DEFAULT_PREFERENCE = "-1" -PR = "r0" +PR = "r1" diff --git a/packages/mt-daapd/mt-daapd_0.2.3.bb b/packages/mt-daapd/mt-daapd_0.2.3.bb index a376c76229..f6a01e0d80 100644 --- a/packages/mt-daapd/mt-daapd_0.2.3.bb +++ b/packages/mt-daapd/mt-daapd_0.2.3.bb @@ -1,4 +1,4 @@ require ${PN}.inc # This has not been released yet! #DEFAULT_PREFERENCE = -1 -PR = "r0" +PR = "r1" diff --git a/packages/musicpd/mpd-alsa_0.11.5.bb b/packages/musicpd/mpd-alsa_0.11.5.bb index 939ecec836..82b24603a0 100644 --- a/packages/musicpd/mpd-alsa_0.11.5.bb +++ b/packages/musicpd/mpd-alsa_0.11.5.bb @@ -2,9 +2,10 @@ DESCRIPTION = "Music Player Daemon (mpd). This version is configured for alsa su HOMEPAGE = "http://www.musicpd.org" SECTION = "console/multimedia" LICENSE = "GPLv2" -DEPENDS = "libvorbis libogg libid3tag libao-alsa zlib libmikmod libmad flac audiofile virtual/libiconv" +DEPENDS = "libvorbis libogg libao-alsa zlib libmikmod flac audiofile virtual/libiconv \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad libid3tag', d)}" RDEPENDS = "libao-alsa" -PR = "r3" +PR = "r4" SRC_URI = "${SOURCEFORGE_MIRROR}/musicpd/mpd-${PV}.tar.gz \ file://mpd/save-volume-state.patch;patch=1 file://mpd/mpd.init" diff --git a/packages/musicpd/mpd-alsa_svn.bb b/packages/musicpd/mpd-alsa_svn.bb index f86ae6a337..9890c85831 100644 --- a/packages/musicpd/mpd-alsa_svn.bb +++ b/packages/musicpd/mpd-alsa_svn.bb @@ -2,7 +2,8 @@ DESCRIPTION = "Music Player Daemon (mpd). This version is configured for alsa su HOMEPAGE = "http://www.musicpd.org" SECTION = "console/multimedia" LICENSE = "GPLv2" -DEPENDS = "libvorbis libogg libid3tag libao-alsa zlib libmad flac audiofile virtual/libiconv faad2" +DEPENDS = "libvorbis libogg libao-alsa zlib flac audiofile virtual/libiconv faad2 \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad libid3tag', d)}" RDEPENDS = "libao-alsa" PV = "0.11.5+svnr${SRCREV}" PR = "r2" diff --git a/packages/musicpd/mpd_svn.bb b/packages/musicpd/mpd_svn.bb index 673ff03b98..c7d9a5b00a 100644 --- a/packages/musicpd/mpd_svn.bb +++ b/packages/musicpd/mpd_svn.bb @@ -2,9 +2,10 @@ DESCRIPTION = "Music Player Daemon (mpd)" HOMEPAGE = "http://www.musicpd.org" SECTION = "console/multimedia" LICENSE = "GPLv2" -DEPENDS = "libvorbis libogg libid3tag libao zlib libmikmod libmad flac audiofile virtual/libiconv faad2 pulseaudio" +DEPENDS = "libvorbis libogg libao zlib libmikmod flac audiofile virtual/libiconv faad2 pulseaudio \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad libid3tag', d)}" PV = "0.12.1+svn${SRCDATE}" -PR = "r0" +PR = "r1" SRC_URI = "svn://svn.musicpd.org/mpd;module=trunk;proto=https \ file://mpd/mpd.init" diff --git a/packages/mythtv/mythtv.inc b/packages/mythtv/mythtv.inc index 8355e0f1a1..9d0ebd9f0e 100644 --- a/packages/mythtv/mythtv.inc +++ b/packages/mythtv/mythtv.inc @@ -2,7 +2,8 @@ DESCRIPTION = "A full featured personal video recorder system." HOMEPAGE = "http://www.mythtv.org" LICENSE = "GPL" SECTION = "x11/multimedia" -DEPENDS = "jack alsa-lib lame libxinerama libxv libxxf86vm libxvmc lirc" +DEPENDS = "jack alsa-lib libxinerama libxv libxxf86vm libxvmc lirc \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'lame', d)}" #RDEPENDS_${PN} = "qt-x11-plugins-sqldrivers qt-x11-plugins-imageformats" SRC_URI = "http://www.mythtv.org/mc/mythtv-${PV}.tar.bz2" diff --git a/packages/mythtv/mythtv_0.18.1.bb b/packages/mythtv/mythtv_0.18.1.bb index fd2c351845..2d3f55c711 100644 --- a/packages/mythtv/mythtv_0.18.1.bb +++ b/packages/mythtv/mythtv_0.18.1.bb @@ -2,7 +2,7 @@ require mythtv.inc inherit qmake2 qt3x11 -PR = "r1" +PR = "r2" SRC_URI += "file://msmpeg-underscore-pic.patch;patch=1 \ file://settings.pro" diff --git a/packages/mythtv/mythtv_0.20.bb b/packages/mythtv/mythtv_0.20.bb index 2ebebd3012..467ed5112b 100644 --- a/packages/mythtv/mythtv_0.20.bb +++ b/packages/mythtv/mythtv_0.20.bb @@ -3,7 +3,7 @@ require mythtv.inc inherit qmake2 qt3x11 DEPENDS += "openchrome" -PR = "r0" +PR = "r1" SRC_URI += "file://configure.patch;patch=1 \ file://libmyth-libdir.patch;patch=1" diff --git a/packages/openmax/libomxil-bellagio_0.9.0.bb b/packages/openmax/libomxil-bellagio_0.9.0.bb index edfcde03d2..105698999e 100644 --- a/packages/openmax/libomxil-bellagio_0.9.0.bb +++ b/packages/openmax/libomxil-bellagio_0.9.0.bb @@ -1,8 +1,9 @@ DESCRIPTION = "OpenMAX Integration Layer (IL) is a standard API to access Multimedia Components on mobile platforms. It has been defined by the Khronos group." LICENSE = "LGPLv2" -DEPENDS = "libmad alsa-lib ffmpeg" +DEPENDS = "alsa-lib ffmpeg \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad', d)}" -PR = "r4" +PR = "r5" SRC_URI = "${SOURCEFORGE_MIRROR}/omxil/${PN}-${PV}.tar.gz" diff --git a/packages/scummvm/scummvm.inc b/packages/scummvm/scummvm.inc index b35e71374d..e12341e8bb 100644 --- a/packages/scummvm/scummvm.inc +++ b/packages/scummvm/scummvm.inc @@ -3,7 +3,7 @@ HOMEPAGE = "http://www.scummvm.org" SECTION = "games" PRIORITY = "optional" LICENSE = "GPL" -PR = "r4" +PR = "r5" SRC_URI = "${SOURCEFORGE_MIRROR}/scummvm/scummvm-${PV}.tar.bz2" diff --git a/packages/scummvm/scummvm_0.6.0.bb b/packages/scummvm/scummvm_0.6.0.bb index 852ca5ff1e..9c8477dcaa 100644 --- a/packages/scummvm/scummvm_0.6.0.bb +++ b/packages/scummvm/scummvm_0.6.0.bb @@ -1,7 +1,8 @@ DESCRIPTION = "Virtual Machine for LucasArts Adventures for Qt/Embedded based palmtop environments w/ SDL." SECTION = "opie/games" PRIORITY = "optional" -DEPENDS = "libsdl-qpe libmad tremor libogg zlib mpeg2dec" +DEPENDS = "libsdl-qpe tremor libogg zlib \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad mpeg2dec', d)}" LICENSE = "GPL" SRC_URI = "${SOURCEFORGE_MIRROR}/scummvm/scummvm-${PV}.tar.bz2 \ diff --git a/packages/scummvm/scummvm_0.6.1b.bb b/packages/scummvm/scummvm_0.6.1b.bb index a1d3dce944..638a39e7fd 100644 --- a/packages/scummvm/scummvm_0.6.1b.bb +++ b/packages/scummvm/scummvm_0.6.1b.bb @@ -1,5 +1,6 @@ require scummvm.inc -DEPENDS = "virtual/libsdl libmad tremor libogg zlib mpeg2dec" +DEPENDS = "virtual/libsdl tremor libogg zlib \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad mpeg2dec', d)}" SRC_URI += " file://mouse.patch;patch=1 \ file://gcc-4.x.x-accept.patch;patch=1 \ file://sh3-linux-new-arch.patch;patch=1 \ diff --git a/packages/scummvm/scummvm_0.9.0.bb b/packages/scummvm/scummvm_0.9.0.bb index 0403e6ae90..01ade38458 100644 --- a/packages/scummvm/scummvm_0.9.0.bb +++ b/packages/scummvm/scummvm_0.9.0.bb @@ -1,5 +1,6 @@ require scummvm.inc -DEPENDS = "virtual/libsdl libmad libvorbis libogg zlib mpeg2dec" +DEPENDS = "virtual/libsdl libvorbis libogg zlib \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad mpeg2dec', d)}" SRC_URI += "file://sh3-arch-0.9.0+.patch;patch=1" EXTRA_OECONF += "--enable-lure \ @@ -8,8 +9,10 @@ EXTRA_OECONF += "--enable-lure \ " do_compile() { - oe_runmake CC="${CC}" CXX="${CXX}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS} -lmpeg2" \ - DEFINES="-DUNIX -DSCUMM_NEED_ALIGNMENT -DUSE_MAD -DUSE_VORBIS -DUSE_ZLIB -DUSE_MPEG2" + oe_runmake CC="${CC}" CXX="${CXX}" CFLAGS="${CFLAGS}" \ + CXXFLAGS="${CXXFLAGS}" \ + LDFLAGS="${LDFLAGS} ${@base_conditional('ENTERPRISE_DISTRO', '1', '', '-lmpeg2', d)}" \ + DEFINES="-DUNIX -DSCUMM_NEED_ALIGNMENT -DUSE_VORBIS -DUSE_ZLIB -DUSE_MPEG2 ${@base_conditional('ENTERPRISE_DISTRO', '1', '', '-DUSE_MAD -DUSE_MPEG2', d}" } diff --git a/packages/scummvm/scummvm_0.9.1.bb b/packages/scummvm/scummvm_0.9.1.bb index 39f3a76d14..7b6c9238a4 100644 --- a/packages/scummvm/scummvm_0.9.1.bb +++ b/packages/scummvm/scummvm_0.9.1.bb @@ -1,6 +1,7 @@ require scummvm.inc -DEPENDS = "virtual/libsdl libmad libvorbis libogg zlib mpeg2dec" +DEPENDS = "virtual/libsdl libvorbis libogg zlib \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad mpeg2dec', d)}" SRC_URI += "file://makefile-nostrip.patch;patch=1 \ file://scummvm-targetcheck.patch;patch=1" @@ -15,8 +16,10 @@ EXTRA_OECONF += "--enable-lure \ " do_compile() { - oe_runmake CC="${CC}" CXX="${CXX}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS} -lmpeg2" \ - DEFINES="-DUNIX -DSCUMM_NEED_ALIGNMENT -DUSE_MAD -DUSE_VORBIS -DUSE_ZLIB -DUSE_MPEG2" + oe_runmake CC="${CC}" CXX="${CXX}" CFLAGS="${CFLAGS}" \ + CXXFLAGS="${CXXFLAGS}" \ + LDFLAGS="${LDFLAGS} ${@base_conditional('ENTERPRISE_DISTRO', '1', '', '-lmpeg2', d)}" \ + DEFINES="-DUNIX -DSCUMM_NEED_ALIGNMENT -DUSE_VORBIS -DUSE_ZLIB -DUSE_MPEG2 ${@base_conditional('ENTERPRISE_DISTRO', '1', '', '-DUSE_MAD -DUSE_MPEG2', d}" } diff --git a/packages/squeezeclient/squeezeslave_svn.bb b/packages/squeezeclient/squeezeslave_svn.bb index 03fbb0ede0..acdbc656da 100644 --- a/packages/squeezeclient/squeezeslave_svn.bb +++ b/packages/squeezeclient/squeezeslave_svn.bb @@ -1,9 +1,10 @@ SECTION = "console/multimedia" DESCRIPTION = "command line audio playback client for SlimServer" LICENSE = "GPL" -DEPENDS += "libmad flac libvorbis" +DEPENDS += "flac libvorbis \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad', d)}" PV = "3.0+svn-${SRCDATE}" -PR = "r0" +PR = "r1" SRC_URI = "svn://svn.slimdevices.com/repos/slim/trunk/;module=softsqueeze;proto=http \ file://varinit.patch;patch=1 \ diff --git a/packages/swfdec/swfdec-mozilla_0.7.2.bb b/packages/swfdec/swfdec-mozilla_0.7.2.bb index 63499cfbd3..d98a25582b 100644 --- a/packages/swfdec/swfdec-mozilla_0.7.2.bb +++ b/packages/swfdec/swfdec-mozilla_0.7.2.bb @@ -1,9 +1,10 @@ DESCRIPTION = "Swfdec plugin for browsers using NPAPI. Swfdec is a decoder/renderer for Macromedia Flash animations." LICENSE = "LGPL" -PR = "r1" +PR = "r2" -DEPENDS = "gst-ffmpeg swfdec gstreamer libsoup-2.4 pango cairo liboil zlib libmad gtk+ alsa-lib" +DEPENDS = "gst-ffmpeg swfdec gstreamer libsoup-2.4 pango cairo liboil zlib gtk+ alsa-lib \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad', d)}" RDEPENDS = "gst-ffmpeg" SRC_URI = "http://swfdec.freedesktop.org/download/swfdec-mozilla/0.7/${P}.tar.gz \ diff --git a/packages/swfdec/swfdec-mozilla_0.7.4.bb b/packages/swfdec/swfdec-mozilla_0.7.4.bb index 2bc6a00a84..ed727555f7 100644 --- a/packages/swfdec/swfdec-mozilla_0.7.4.bb +++ b/packages/swfdec/swfdec-mozilla_0.7.4.bb @@ -1,7 +1,10 @@ DESCRIPTION = "Swfdec plugin for browsers using NPAPI. Swfdec is a decoder/renderer for Macromedia Flash animations." LICENSE = "LGPL" -DEPENDS = "gst-ffmpeg swfdec gstreamer libsoup-2.4 pango cairo liboil zlib libmad gtk+ alsa-lib" +PR = "r1" + +DEPENDS = "gst-ffmpeg swfdec gstreamer libsoup-2.4 pango cairo liboil zlib gtk+ alsa-lib \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad', d)}" RDEPENDS = "gst-ffmpeg" SRC_URI = "http://swfdec.freedesktop.org/download/swfdec-mozilla/0.7/${P}.tar.gz \ diff --git a/packages/swfdec/swfdec_0.4.0.bb b/packages/swfdec/swfdec_0.4.0.bb index b4c56afacf..c9296c652b 100644 --- a/packages/swfdec/swfdec_0.4.0.bb +++ b/packages/swfdec/swfdec_0.4.0.bb @@ -1,7 +1,9 @@ DESCRIPTION = "Swfdec is a decoder/renderer for Macromedia Flash animations." LICENSE = "LGPL" -DEPENDS = "pango cairo liboil zlib libmad gtk+ alsa-lib" +DEPENDS = "pango cairo liboil zlib gtk+ alsa-lib \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad', d)}" +PR = "r1" SRC_URI = "http://swfdec.freedesktop.org/download/swfdec/0.4/${P}.tar.gz \ file://jsautocfg.h \ diff --git a/packages/swfdec/swfdec_0.7.2.bb b/packages/swfdec/swfdec_0.7.2.bb index 05d4977eae..7e3c15dd6c 100644 --- a/packages/swfdec/swfdec_0.7.2.bb +++ b/packages/swfdec/swfdec_0.7.2.bb @@ -1,7 +1,9 @@ DESCRIPTION = "Swfdec is a decoder/renderer for Macromedia Flash animations." LICENSE = "LGPL" -DEPENDS = "gstreamer libsoup-2.4 pango cairo liboil zlib libmad gtk+ alsa-lib" +DEPENDS = "gstreamer libsoup-2.4 pango cairo liboil zlib gtk+ alsa-lib \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad', d)}" +PR = "r1" SRC_URI = "http://swfdec.freedesktop.org/download/swfdec/0.7/${P}.tar.gz \ " diff --git a/packages/tasks/task-opie-all.bb b/packages/tasks/task-opie-all.bb index 9f1403f050..e316971e75 100644 --- a/packages/tasks/task-opie-all.bb +++ b/packages/tasks/task-opie-all.bb @@ -1,7 +1,7 @@ DESCRIPTION = "Tasks for OPIE stuff" SECTION = "opie/base" LICENSE = "MIT" -PR = "r2" +PR = "r3" inherit task @@ -34,7 +34,7 @@ RDEPENDS_task-opie-styles = "opie-style-flat opie-style-fresh opie-style-liquid RDEPENDS_task-opie-decorations = "opie-deco-flat opie-deco-liquid opie-deco-polished" RDEPENDS_task-opie-multimedia = "opie-mediaplayer1 \ - opie-mediaplayer1-libmadplugin \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'opie-mediaplayer1-libmadplugin', d)} \ opie-mediaplayer1-libmodplugin \ opie-mediaplayer1-libtremorplugin \ opie-mediaplayer1-libwavplugin \ diff --git a/packages/vlc/vlc-davinci_0.8.6h.bb b/packages/vlc/vlc-davinci_0.8.6h.bb index 4c6b19231b..71520bbb9b 100644 --- a/packages/vlc/vlc-davinci_0.8.6h.bb +++ b/packages/vlc/vlc-davinci_0.8.6h.bb @@ -6,11 +6,12 @@ SECTION = "multimedia" SRCREV = "e712a114e04a1070f1afdf31ec668cb28eda513c" -PR = "r5" +PR = "r6" PV = "0.8.6h+${PR}+gitr${SRCREV}" -DEPENDS = "codec-engine dbus libxml2 gnutls tremor faad2 ffmpeg flac liba52 libid3tag libmad mpeg2dec" +DEPENDS = "codec-engine dbus libxml2 gnutls tremor faad2 ffmpeg flac \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad libid3tag liba52 mpeg2dec', d)}" SRC_URI = "git://git.videolan.org/vlc.git;protocol=git;branch=0.8.6-neuros" diff --git a/packages/vlc/vlc-gpe_0.7.2.bb b/packages/vlc/vlc-gpe_0.7.2.bb index 224b88096e..8b09103a7f 100644 --- a/packages/vlc/vlc-gpe_0.7.2.bb +++ b/packages/vlc/vlc-gpe_0.7.2.bb @@ -3,9 +3,10 @@ HOMEPAGE = "http://www.videolan.org" LICENSE = "GPL" PRIORITY = "optional" SECTION = "x11/multimedia" -PR = "r2" +PR = "r3" -DEPENDS = "faad2 ffmpeg flac liba52 libid3tag libmad mpeg2dec" +DEPENDS = "faad2 ffmpeg flac \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad libid3tag liba52 mpeg2dec', d)}" SRC_URI = "http://download.videolan.org/pub/videolan/vlc/${PV}/vlc-${PV}.tar.gz" S = "${WORKDIR}/vlc-${PV}" diff --git a/packages/vlc/vlc-gpe_0.8.1.bb b/packages/vlc/vlc-gpe_0.8.1.bb index 0c83b6036c..7852521179 100644 --- a/packages/vlc/vlc-gpe_0.8.1.bb +++ b/packages/vlc/vlc-gpe_0.8.1.bb @@ -3,9 +3,10 @@ HOMEPAGE = "http://www.videolan.org" LICENSE = "GPL" PRIORITY = "optional" SECTION = "x11/multimedia" -PR = "r5" +PR = "r6" -DEPENDS = "gtk+ freetype gnutls tremor faad2 ffmpeg flac liba52 libid3tag libmad mpeg2dec" +DEPENDS = "gtk+ freetype gnutls tremor faad2 ffmpeg flac \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad libid3tag liba52 mpeg2dec', d)}" SRC_URI = "http://download.videolan.org/pub/videolan/vlc/${PV}/vlc-${PV}.tar.gz \ file://fix-pda.patch;patch=1 \ diff --git a/packages/vlc/vlc-gpe_0.8.4.bb b/packages/vlc/vlc-gpe_0.8.4.bb index f53aa6b45f..d7138ee69d 100644 --- a/packages/vlc/vlc-gpe_0.8.4.bb +++ b/packages/vlc/vlc-gpe_0.8.4.bb @@ -3,9 +3,10 @@ HOMEPAGE = "http://www.videolan.org" LICENSE = "GPL" PRIORITY = "optional" SECTION = "x11/multimedia" -PR = "r4" +PR = "r5" -DEPENDS = "gtk+ freetype gnutls tremor faad2 ffmpeg flac liba52 libid3tag libmad mpeg2dec" +DEPENDS = "gtk+ freetype gnutls tremor faad2 ffmpeg flac \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad libid3tag liba52 mpeg2dec', d)}" SRC_URI = "http://download.videolan.org/pub/videolan/vlc/${PV}/vlc-${PV}.tar.gz \ file://pda-interface.patch;patch=1" diff --git a/packages/vlc/vlc_0.9.2.bb b/packages/vlc/vlc_0.9.2.bb index 588da5e29e..509662b4ae 100644 --- a/packages/vlc/vlc_0.9.2.bb +++ b/packages/vlc/vlc_0.9.2.bb @@ -4,9 +4,10 @@ LICENSE = "GPL" PRIORITY = "optional" SECTION = "multimedia" -PR = "r1" +PR = "r2" -DEPENDS = "libtool hal gettext libgcrypt schroedinger libsdl-x11 qt4-x11-free dbus libxml2 gnutls tremor faad2 ffmpeg flac liba52 libid3tag libmad mpeg2dec" +DEPENDS = "libtool hal gettext libgcrypt schroedinger libsdl-x11 qt4-x11-free dbus libxml2 gnutls tremor faad2 ffmpeg flac \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad libid3tag liba52 mpeg2dec', d)}" SRC_URI = "http://videolan.mirror.technotop.nl/vlc/0.9.2/vlc-${PV}.tar.bz2" diff --git a/packages/vlc/vlc_0.9.4.bb b/packages/vlc/vlc_0.9.4.bb index bf60e2762e..4630ea5340 100644 --- a/packages/vlc/vlc_0.9.4.bb +++ b/packages/vlc/vlc_0.9.4.bb @@ -4,9 +4,10 @@ LICENSE = "GPL" PRIORITY = "optional" SECTION = "multimedia" -PR = "r1" +PR = "r2" -DEPENDS = "libtool hal gettext libgcrypt schroedinger libsdl-x11 qt4-x11-free dbus libxml2 gnutls tremor faad2 ffmpeg flac liba52 libid3tag libmad mpeg2dec" +DEPENDS = "libtool hal gettext libgcrypt schroedinger libsdl-x11 qt4-x11-free dbus libxml2 gnutls tremor faad2 ffmpeg flac \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad libid3tag liba52 mpeg2dec', d)}" SRC_URI = "http://videolan.mirror.technotop.nl/vlc/${PV}/vlc-${PV}.tar.bz2" diff --git a/packages/xmms-embedded/xmms-embedded_20040327.bb b/packages/xmms-embedded/xmms-embedded_20040327.bb index d429449435..a8b24e709a 100644 --- a/packages/xmms-embedded/xmms-embedded_20040327.bb +++ b/packages/xmms-embedded/xmms-embedded_20040327.bb @@ -1,8 +1,9 @@ DESCRIPTION = "XMMS embedded - lightweight audio player with video and codec plugins" SECTION = "opie/multimedia" -DEPENDS = "zlib tremor libmad libid3tag libsidplay glib-2.0 libmikmod" +DEPENDS = "zlib tremor glib-2.0 libmikmod \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libsidplay libmad libid3tag', d)}" LICENSE = "GPL" -PR = "r5" +PR = "r6" SRC_URI = "cvs://anonymous@xmms-embedded.cvs.sourceforge.net/cvsroot/xmms-embedded;module=xmms-embedded;date=${PV} \ file://bogusincdir.patch;patch=1 \ -- cgit v1.2.3 From 686b241399f3194a20bf3db9f27033e24fd1cdb7 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Wed, 29 Oct 2008 19:29:32 +0100 Subject: angstrom feed builder: add qemux86 machine --- contrib/angstrom/build-feeds.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/contrib/angstrom/build-feeds.sh b/contrib/angstrom/build-feeds.sh index 428ddd2146..b98d19df34 100755 --- a/contrib/angstrom/build-feeds.sh +++ b/contrib/angstrom/build-feeds.sh @@ -57,8 +57,9 @@ do_build # * armv7a: beagleboard # * ppc405: dht-walnut # * ppc603e: efika +# * i586: qemux86 -for machine in simpad om-gta01 c7x0 nokia800 beagleboard dht-walnut efika +for machine in simpad om-gta01 c7x0 nokia800 beagleboard dht-walnut efika qemux86 do BUILD_MACHINE=$machine BUILD_CLEAN="qmake-native qmake2-native qt-x11-free python gnome-icon-theme" @@ -276,7 +277,7 @@ done # machine packages (machine specific (sub)packages) -for machine in beagleboard omap3evm neuros-osd2 efika dht-walnut omap5912osk ixp4xxle ixp4xxbe c7x0 poodle tosa akita spitz collie simpad om-gta01 om-gta02 a780 at91sam9263ek qemuarm h2200 h3900 h4000 hx4700 nokia800 +for machine in beagleboard omap3evm neuros-osd2 efika dht-walnut omap5912osk ixp4xxle ixp4xxbe c7x0 poodle tosa akita spitz collie simpad om-gta01 om-gta02 a780 at91sam9263ek qemuarm h2200 h3900 h4000 hx4700 nokia800 qemux86 do BUILD_MACHINE=$machine BUILD_CLEAN="" -- cgit v1.2.3 From 714e2cace5819ff64b04f870506dbfca9bd1c557 Mon Sep 17 00:00:00 2001 From: Joshua Lock Date: Wed, 29 Oct 2008 20:10:12 +0100 Subject: xerces-c: Correct SRC_URI --- packages/xerces-c/xerces-c_2.8.0.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xerces-c/xerces-c_2.8.0.bb b/packages/xerces-c/xerces-c_2.8.0.bb index 4f72e9dc77..d78bb22ad9 100644 --- a/packages/xerces-c/xerces-c_2.8.0.bb +++ b/packages/xerces-c/xerces-c_2.8.0.bb @@ -5,7 +5,7 @@ PRIORITY = "optional" LICENSE = "MIT" PR = "r1" -SRC_URI = "http://mirror.serversupportforum.de/apache/xerces/c/sources/xerces-c-src_2_8_0.tar.gz" +SRC_URI = "http://mirror.serversupportforum.de/apache/xerces/c/2/sources/xerces-c-src_2_8_0.tar.gz" S = "${WORKDIR}/xerces-c-src_2_8_0/src/xercesc" inherit autotools pkgconfig -- cgit v1.2.3 From 2086b01ec34e352cc37116febe64b86e00281dac Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Wed, 29 Oct 2008 20:12:55 +0100 Subject: checksums.ini: Add sums for new xerces-c location --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 9c8c23c540..3a89f29526 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -16010,6 +16010,10 @@ sha256=fb22559759a92f1a6c10716b743509ba20005f223725ec4b6492462bfe9237d0 md5=04169609449a8846bc1e6891c04cadf4 sha256=77fae8a1e7aa58007115c939aa68fd5028da79c481fc457dfce546b50c9dfda5 +[http://mirror.serversupportforum.de/apache/xerces/c/2/sources/xerces-c-src_2_8_0.tar.gz] +md5=5daf514b73f3e0de9e3fce704387c0d2 +sha256=416eaf74bbe6ff3b3c64a282e886810cad6cbb48478d3c83344661504c09c8d6 + [http://xorg.freedesktop.org/releases/individual/app/xev-1.0.2.tar.bz2] md5=e3008eb0655da3026c162a5597d70869 sha256=cac2771b67942d9a00b46532176feb18b2f82c434e0f6ece578d95953ef33053 -- cgit v1.2.3 From 587358b294d0f7c71716ea9ae744af137d77e9d7 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Wed, 29 Oct 2008 12:59:43 -0700 Subject: binutils checksum.ini: Add binutils 2.19 recipes Add new checksum entry --- conf/checksums.ini | 4 ++ .../binutils/binutils-2.19/110-arm-eabi-conf.patch | 22 ++++++++++ .../binutils-2.19/binutils-2.16.1-e300c2c3.patch | 19 ++++++++ ...tils-2.16.91.0.6-objcopy-rename-errorcode.patch | 39 +++++++++++++++++ .../binutils-uclibc-100-uclibc-conf.patch | 34 +++++++++++++++ ...binutils-uclibc-300-001_ld_makefile_patch.patch | 50 ++++++++++++++++++++++ ...binutils-uclibc-300-006_better_file_error.patch | 43 +++++++++++++++++++ ...ils-uclibc-300-012_check_ldrunpath_length.patch | 47 ++++++++++++++++++++ .../binutils-uclibc-gas-needs-libm.patch | 38 ++++++++++++++++ packages/binutils/binutils-cross-sdk_2.19.bb | 3 ++ packages/binutils/binutils-cross_2.19.bb | 4 ++ packages/binutils/binutils_2.19.bb | 18 ++++++++ 12 files changed, 321 insertions(+) create mode 100644 packages/binutils/binutils-2.19/110-arm-eabi-conf.patch create mode 100644 packages/binutils/binutils-2.19/binutils-2.16.1-e300c2c3.patch create mode 100644 packages/binutils/binutils-2.19/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch create mode 100644 packages/binutils/binutils-2.19/binutils-uclibc-100-uclibc-conf.patch create mode 100644 packages/binutils/binutils-2.19/binutils-uclibc-300-001_ld_makefile_patch.patch create mode 100644 packages/binutils/binutils-2.19/binutils-uclibc-300-006_better_file_error.patch create mode 100644 packages/binutils/binutils-2.19/binutils-uclibc-300-012_check_ldrunpath_length.patch create mode 100644 packages/binutils/binutils-2.19/binutils-uclibc-gas-needs-libm.patch create mode 100644 packages/binutils/binutils-cross-sdk_2.19.bb create mode 100644 packages/binutils/binutils-cross_2.19.bb create mode 100644 packages/binutils/binutils_2.19.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 3a89f29526..0952d0f138 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -1606,6 +1606,10 @@ sha256=6fe3c4b2d45a50582f832bc77deb4e3da74a15ea8e09dbb214b9c44e7c3378fc md5=9d22ee4dafa3a194457caf4706f9cf01 sha256=487a33a452f0edcf1f8bb8fc23dff5c7a82edec3f3f8b65632b6c945e961ee9b +[ftp://ftp.gnu.org/gnu/binutils/binutils-2.19.tar.bz2] +md5=17a52219dee5a76c1a9d9b0bfd337d66 +sha256=bd2ea10ffc2bf62a917b05f4fbe3d02212589c2bc177fa0c51a9c874d3da528a + [ftp://ftp.gnu.org/gnu/bison/bison-2.0.tar.gz] md5=c17f964fd5504b88b07a183420de25e3 sha256=31b816846903d319a6f6cd1c9aada5ff83914206cb7df69c235ae909785109a1 diff --git a/packages/binutils/binutils-2.19/110-arm-eabi-conf.patch b/packages/binutils/binutils-2.19/110-arm-eabi-conf.patch new file mode 100644 index 0000000000..2623301da0 --- /dev/null +++ b/packages/binutils/binutils-2.19/110-arm-eabi-conf.patch @@ -0,0 +1,22 @@ +--- /tmp/configure.ac 2008-06-22 14:14:59.000000000 +0200 ++++ binutils-2.18.50.0.7/configure.ac 2008-06-22 14:15:30.000000000 +0200 +@@ -561,7 +561,7 @@ + noconfigdirs="$noconfigdirs target-libffi target-qthreads" + libgloss_dir=arm + ;; +- arm*-*-linux-gnueabi) ++ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi) + noconfigdirs="$noconfigdirs target-qthreads" + noconfigdirs="$noconfigdirs target-libobjc" + case ${with_newlib} in +--- /tmp/configure 2008-06-22 14:17:11.000000000 +0200 ++++ binutils-2.18.50.0.7/configure 2008-06-22 14:17:56.000000000 +0200 +@@ -2307,7 +2307,7 @@ + noconfigdirs="$noconfigdirs target-libffi target-qthreads" + libgloss_dir=arm + ;; +- arm*-*-linux-gnueabi) ++ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi) + noconfigdirs="$noconfigdirs target-qthreads" + noconfigdirs="$noconfigdirs target-libobjc" + case ${with_newlib} in diff --git a/packages/binutils/binutils-2.19/binutils-2.16.1-e300c2c3.patch b/packages/binutils/binutils-2.19/binutils-2.16.1-e300c2c3.patch new file mode 100644 index 0000000000..c5e4234f22 --- /dev/null +++ b/packages/binutils/binutils-2.19/binutils-2.16.1-e300c2c3.patch @@ -0,0 +1,19 @@ +Adds support for Freescale Power architecture e300c2 and e300c3 cores. +http://www.bitshrine.org/gpp/tc-fsl-x86lnx-e300c3-nptl-4.0.2-2.src.rpm + +Leon Woestenberg + +diff -uNr binutils-2.16.1.orig/gas/config/tc-ppc.c binutils-2.16.1/gas/config/tc-ppc.c +--- binutils-2.16.1.orig/gas/config/tc-ppc.c 2005-03-02 13:24:01.000000000 +0000 ++++ binutils-2.16.1/gas/config/tc-ppc.c 2006-07-04 11:45:24.000000000 +0100 +@@ -879,6 +879,10 @@ + else + ppc_cpu |= PPC_OPCODE_SPE; + } ++ else if (strcmp (arg, "pmr") == 0) ++ { ++ ppc_cpu |= PPC_OPCODE_PMR; ++ } + /* -mppc64 and -m620 mean to assemble for the 64-bit PowerPC + 620. */ + else if (strcmp (arg, "ppc64") == 0 || strcmp (arg, "620") == 0) diff --git a/packages/binutils/binutils-2.19/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch b/packages/binutils/binutils-2.19/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch new file mode 100644 index 0000000000..8df5b1fea0 --- /dev/null +++ b/packages/binutils/binutils-2.19/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch @@ -0,0 +1,39 @@ +# strip (and objcopy) fail to set the error code if there is no +# output file name and the rename of the stripped (or copied) file +# fails, yet the command fails to do anything. This fixes both +# objcopy and strip. +# +# modification by bero: Ported to 2.16.91.0.6 +# +#Signed-off-by: John Bowler +#Signed-off-by: Bernhard Rosenkraenzer +--- +# binutils/objcopy.c | 8 +++++--- +# 1 file changed, 5 insertions(+), 3 deletions(-) +# +Index: src/binutils/objcopy.c +=================================================================== +--- src.orig/binutils/objcopy.c 2007-08-09 13:26:03.000000000 +0100 ++++ src/binutils/objcopy.c 2007-08-09 16:36:12.000000000 +0100 +@@ -2787,8 +2787,9 @@ strip_main (int argc, char *argv[]) + if (preserve_dates) + set_times (tmpname, &statbuf); + if (output_file != tmpname) +- smart_rename (tmpname, output_file ? output_file : argv[i], +- preserve_dates); ++ if (smart_rename (tmpname, output_file ? output_file : argv[i], ++ preserve_dates)) ++ hold_status = 1; + status = hold_status; + } + else +@@ -3411,7 +3412,8 @@ copy_main (int argc, char *argv[]) + if (preserve_dates) + set_times (tmpname, &statbuf); + if (tmpname != output_filename) +- smart_rename (tmpname, input_filename, preserve_dates); ++ if (smart_rename (tmpname, input_filename, preserve_dates)) ++ status = 1; + } + else + unlink_if_ordinary (tmpname); diff --git a/packages/binutils/binutils-2.19/binutils-uclibc-100-uclibc-conf.patch b/packages/binutils/binutils-2.19/binutils-uclibc-100-uclibc-conf.patch new file mode 100644 index 0000000000..8de04e0fe0 --- /dev/null +++ b/packages/binutils/binutils-2.19/binutils-uclibc-100-uclibc-conf.patch @@ -0,0 +1,34 @@ +--- binutils-2.18.orig/configure ++++ binutils-2.18/configure +@@ -2206,7 +2206,7 @@ + am33_2.0-*-linux*) + noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" + ;; +- sh-*-linux*) ++ sh*-*-linux*) + noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" + ;; + sh*-*-pe|mips*-*-pe|*arm-wince-pe) +@@ -2504,7 +2504,7 @@ + romp-*-*) + noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}" + ;; +- sh-*-* | sh64-*-*) ++ sh*-*-* | sh64-*-*) + case "${host}" in + i[3456789]86-*-vsta) ;; # don't add gprof back in + i[3456789]86-*-go32*) ;; # don't add gprof back in +--- binutils-2.18.orig/gprof/configure ++++ binutils-2.18/gprof/configure +@@ -4124,6 +4124,11 @@ + lt_cv_deplibs_check_method=pass_all + ;; + ++linux-uclibc*) ++ lt_cv_deplibs_check_method=pass_all ++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` ++ ;; ++ + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' diff --git a/packages/binutils/binutils-2.19/binutils-uclibc-300-001_ld_makefile_patch.patch b/packages/binutils/binutils-2.19/binutils-uclibc-300-001_ld_makefile_patch.patch new file mode 100644 index 0000000000..04a7e61e25 --- /dev/null +++ b/packages/binutils/binutils-2.19/binutils-uclibc-300-001_ld_makefile_patch.patch @@ -0,0 +1,50 @@ +#!/bin/sh -e +## 001_ld_makefile_patch.dpatch +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Description: correct where ld scripts are installed +## DP: Author: Chris Chimelis +## DP: Upstream status: N/A +## DP: Date: ?? + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch}" + +case "$1" in + -patch) patch $patch_opts -p1 < $0;; + -unpatch) patch $patch_opts -p1 -R < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- binutils-2.16.91.0.1/ld/Makefile.am ++++ binutils-2.16.91.0.1/ld/Makefile.am +@@ -20,7 +20,7 @@ + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + + EMUL = @EMUL@ + EMULATION_OFILES = @EMULATION_OFILES@ +--- binutils-2.16.91.0.1/ld/Makefile.in ++++ binutils-2.16.91.0.1/ld/Makefile.in +@@ -268,7 +268,7 @@ + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + BASEDIR = $(srcdir)/.. + BFDDIR = $(BASEDIR)/bfd + INCDIR = $(BASEDIR)/include diff --git a/packages/binutils/binutils-2.19/binutils-uclibc-300-006_better_file_error.patch b/packages/binutils/binutils-2.19/binutils-uclibc-300-006_better_file_error.patch new file mode 100644 index 0000000000..f337611edf --- /dev/null +++ b/packages/binutils/binutils-2.19/binutils-uclibc-300-006_better_file_error.patch @@ -0,0 +1,43 @@ +#!/bin/sh -e +## 006_better_file_error.dpatch by David Kimdon +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Specify which filename is causing an error if the filename is a +## DP: directory. (#45832) + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch}" + +case "$1" in + -patch) patch $patch_opts -p1 < $0;; + -unpatch) patch $patch_opts -p1 -R < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +@DPATCH@ +diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c +--- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c 2003-07-23 16:08:09.000000000 +0100 ++++ binutils-2.14.90.0.6/bfd/opncls.c 2003-09-10 22:35:00.000000000 +0100 +@@ -150,6 +150,13 @@ + { + bfd *nbfd; + const bfd_target *target_vec; ++ struct stat s; ++ ++ if (stat (filename, &s) == 0) ++ if (S_ISDIR(s.st_mode)) { ++ bfd_set_error (bfd_error_file_not_recognized); ++ return NULL; ++ } + + nbfd = _bfd_new_bfd (); + if (nbfd == NULL) diff --git a/packages/binutils/binutils-2.19/binutils-uclibc-300-012_check_ldrunpath_length.patch b/packages/binutils/binutils-2.19/binutils-uclibc-300-012_check_ldrunpath_length.patch new file mode 100644 index 0000000000..498651a90c --- /dev/null +++ b/packages/binutils/binutils-2.19/binutils-uclibc-300-012_check_ldrunpath_length.patch @@ -0,0 +1,47 @@ +#!/bin/sh -e +## 012_check_ldrunpath_length.dpatch by Chris Chimelis +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for +## DP: cases where -rpath isn't specified. (#151024) + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch}" + +case "$1" in + -patch) patch $patch_opts -p1 < $0;; + -unpatch) patch $patch_opts -p1 -R < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +@DPATCH@ +diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em +--- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:58.000000000 +0100 ++++ binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:59.000000000 +0100 +@@ -692,6 +692,8 @@ + && command_line.rpath == NULL) + { + lib_path = (const char *) getenv ("LD_RUN_PATH"); ++ if ((lib_path) && (strlen (lib_path) == 0)) ++ lib_path = NULL; + if (gld${EMULATION_NAME}_search_needed (lib_path, &n, + force)) + break; +@@ -871,6 +873,8 @@ + rpath = command_line.rpath; + if (rpath == NULL) + rpath = (const char *) getenv ("LD_RUN_PATH"); ++ if ((rpath) && (strlen (rpath) == 0)) ++ rpath = NULL; + if (! (bfd_elf_size_dynamic_sections + (output_bfd, command_line.soname, rpath, + command_line.filter_shlib, diff --git a/packages/binutils/binutils-2.19/binutils-uclibc-gas-needs-libm.patch b/packages/binutils/binutils-2.19/binutils-uclibc-gas-needs-libm.patch new file mode 100644 index 0000000000..db838cf20c --- /dev/null +++ b/packages/binutils/binutils-2.19/binutils-uclibc-gas-needs-libm.patch @@ -0,0 +1,38 @@ +Source: Khem Raj +Disposition: submit upstream. + +Description: + +We do not need to have the libtool patch anymore for binutils after +libtool has been updated upstream it include support for it. However +for building gas natively on uclibc systems we have to link it with +-lm so that it picks up missing symbols. + +/local/build_area/BUILD/arm_v5t_le_uclibc/binutils-2.17.50/objdir/libiberty/pic/libiberty.a(floatformat.o): In function `floatformat_from_double': +floatformat.c:(.text+0x1ec): undefined reference to `frexp' +floatformat.c:(.text+0x2f8): undefined reference to `ldexp' +/local/build_area/BUILD/arm_v5t_le_uclibc/binutils-2.17.50/objdir/libiberty/pic/libiberty.a(floatformat.o): In function `floatformat_to_double': +floatformat.c:(.text+0x38a): undefined reference to `ldexp' +floatformat.c:(.text+0x3d2): undefined reference to `ldexp' +floatformat.c:(.text+0x43e): undefined reference to `ldexp' floatformat.c:(.text+0x4e2): undefined reference to `ldexp' +collect2: ld returned 1 exit status +make[4]: *** [as-new] Error 1 + +Index: binutils-2.17.50/gas/configure.tgt +=================================================================== +--- binutils-2.17.50.orig/gas/configure.tgt ++++ binutils-2.17.50/gas/configure.tgt +@@ -408,6 +408,12 @@ case ${generic_target} in + *-*-netware) fmt=elf em=netware ;; + esac + ++case ${generic_target} in ++ arm-*-*uclibc*) ++ need_libm=yes ++ ;; ++esac ++ + case ${cpu_type} in + alpha | arm | i386 | ia64 | mips | ns32k | pdp11 | ppc | sparc | z80 | z8k) + bfd_gas=yes + diff --git a/packages/binutils/binutils-cross-sdk_2.19.bb b/packages/binutils/binutils-cross-sdk_2.19.bb new file mode 100644 index 0000000000..76dff5449f --- /dev/null +++ b/packages/binutils/binutils-cross-sdk_2.19.bb @@ -0,0 +1,3 @@ +require binutils_${PV}.bb +require binutils-cross-sdk.inc +PR = "r0" diff --git a/packages/binutils/binutils-cross_2.19.bb b/packages/binutils/binutils-cross_2.19.bb new file mode 100644 index 0000000000..b78a30ac47 --- /dev/null +++ b/packages/binutils/binutils-cross_2.19.bb @@ -0,0 +1,4 @@ +FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/binutils-${PV}" +require binutils_${PV}.bb +require binutils-cross.inc + diff --git a/packages/binutils/binutils_2.19.bb b/packages/binutils/binutils_2.19.bb new file mode 100644 index 0000000000..bd03b4d39c --- /dev/null +++ b/packages/binutils/binutils_2.19.bb @@ -0,0 +1,18 @@ +PR = "r0" + +require binutils.inc + +SRC_URI = "\ + ${GNU_MIRROR}/binutils/binutils-${PV}.tar.bz2 \ + file://binutils-2.16.91.0.6-objcopy-rename-errorcode.patch;patch=1 \ + file://binutils-uclibc-100-uclibc-conf.patch;patch=1 \ + file://110-arm-eabi-conf.patch;patch=1 \ + file://binutils-uclibc-300-001_ld_makefile_patch.patch;patch=1 \ + file://binutils-uclibc-300-006_better_file_error.patch;patch=1 \ + file://binutils-uclibc-300-012_check_ldrunpath_length.patch;patch=1 \ + file://binutils-uclibc-gas-needs-libm.patch;patch=1 \ + " + +# powerpc patches +SRC_URI += "file://binutils-2.16.1-e300c2c3.patch;patch=1" + -- cgit v1.2.3 From 9bac65532065a98b8fe4e71d0250c92141cc750a Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Tue, 28 Oct 2008 14:17:45 -0200 Subject: checksums.ini: new checksums for a set of packages - LibVNCServer-0.9.1 - MesaLib-7.0.2 - acpid-1.0.6 - console-tools-0.3.2 - dbh_1.0-18 - dejavu-fonts-ttf-2.23 - dhcdbd-3.0 - e2fsprogs-libs-1.41.2 - genext2fs-1.4rc1 - iceauth-1.0.2 - libexif-0.6.16 - libmad-0.15.1b - libmikmod-3.1.12 - libusb-0.9.2 - libusb-compat-0.1.0-beta2 - openrdate-1.1.3 - rdesktop-1.6.0 - strace-4.5.14 - sysfsutils-2.1.0 - tightvnc-1.3.9_unixsrc - xf86-video-cirrus-1.1.0 --- conf/checksums.ini | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 0952d0f138..dec4b7ef0c 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -230,6 +230,10 @@ sha256=dbe5d8a0ac16a7953b3b2d34841dabd2b3071a2f66585ff25a538bd2ad1513ca md5=17a18e398af6c1730f72068022a152aa sha256=f199f7558e6a071ae1ead06b9207c0819281b6b2094dcef6fc4201a4bdf8854d +[http://qa.debian.org/watch/sf.php/libvncserver/LibVNCServer-0.9.1.tar.gz] +md5=aa00efc3dabde82fde9509bfbab0aba4 +sha256=0fbda7fc37c1f360bdbeb586e48d6203a5ef56a8cfc3b78887d7d90db683f282 + [http://kernel.org/pub/linux/libs/pam/pre/library/Linux-PAM-0.79.tar.bz2] md5=0b89b73970c7d490ad9a13718b74d27b sha256=5ed480cb76c91c2739ddba87f15437510e58c60dfdd7ead6f469149b2da94bb7 @@ -290,6 +294,10 @@ sha256=dcacf4c18af89b57e66dc7ba39e24c3b74ff6f83b8745bcc1390170a4190eebd md5=93e6ed7924ff069a4f883b4fce5349dc sha256=9d4707b556960f6aef14480f91fcd4f868720f64321947ab1b2fd20e85ce7f9e +[http://qa.debian.org/watch/sf.php/mesa3d/MesaLib-7.0.2.tar.bz2] +md5=93e6ed7924ff069a4f883b4fce5349dc +sha256=9d4707b556960f6aef14480f91fcd4f868720f64321947ab1b2fd20e85ce7f9e + [http://downloads.sourceforge.net/mesa3d/MesaLib-7.1.tar.bz2] md5=6bff7f532d16f90f944a400c8bd7074d sha256=d63a29bf206a5304b3c319a47fa16892db3d2e14737f2c534acf1eb220e9c550 @@ -730,6 +738,10 @@ sha256=032a95967f8dd8a227ee1771de4a2646becc4d0f1123568faeca931006ec8f5f md5=5c9b705700df51d232be223b6ab6414d sha256=aa3c42224ec702b6cdb69ca6501284cb6dacb87473a076d7337ee9635c96f160 +[http://qa.debian.org/watch/sf.php/acpid/acpid-1.0.6.tar.gz] +md5=5c9b705700df51d232be223b6ab6414d +sha256=aa3c42224ec702b6cdb69ca6501284cb6dacb87473a076d7337ee9635c96f160 + [http://svn.o-hand.com/repos/web/trunk/patches/add-dom-functions.patch] md5=041be9711a16e629d01487664ba97152 sha256=42956fb41341cf82ae8bce18b4cf96a7e2aa631b1b60657afb6d7e9be7cd138c @@ -2386,6 +2398,10 @@ sha256=cb007ea21edb0e11f9e3a8a72c1623ce2718c49b7ddcabe6b815504b13d47c56 md5=bf21564fc38b3af853ef724babddbacd sha256=eea6b441672dacd251079fc85ed322e196282e0e66c16303ec64c3a2b1c126c2 +[http://qa.debian.org/watch/sf.php/lct/console-tools-0.3.2.tar.gz] +md5=bf21564fc38b3af853ef724babddbacd +sha256=eea6b441672dacd251079fc85ed322e196282e0e66c16303ec64c3a2b1c126c2 + [ftp://ftp.logilab.org/pub/constraint/constraint-0.2.3.tar.gz] md5=17fd01667356cf4d9298c46ed6f88a4f sha256=e77e1cb6cdeb30367f75accf62a7b94598ece4400c42eb9d8181b7da4fc87f82 @@ -2694,6 +2710,10 @@ sha256=6001893f34e68a3cfeb5d424e1f2bfef005df96a22d86f35dc770c5bccf3aa8a md5=dca09e2949616471669320e3429a49ef sha256=62c8c36df69c48bed9e8a1406faa5df5d057876b34fc110492c87260a70692c6 +[http://qa.debian.org/watch/sf.php/dbh/dbh_1.0-18.tar.bz2] +md5=dca09e2949616471669320e3429a49ef +sha256=62c8c36df69c48bed9e8a1406faa5df5d057876b34fc110492c87260a70692c6 + [http://dbus.freedesktop.org/releases/dbus/dbus-1.0.1.tar.gz] md5=52c70d18fe0b398f5de3b8a18a589960 sha256=6e0730a39485fb502d640841f0f328c1a0212743f17b3fa61c78e6e32925f061 @@ -2778,6 +2798,10 @@ sha256=d0fbedef20fb0843318d60551023631176b27ceb1e11de7468a971770d0e048d md5=ff871dff0b3e8a11cd5c54478f11073f sha256=243642a1c3f4b6fd00125f5772ac5c8e4d0bb6586f5abb05829ead4b83ad5233 +[http://qa.debian.org/watch/sf.php/dejavu/dejavu-fonts-ttf-2.23.tar.bz2] +md5=ff871dff0b3e8a11cd5c54478f11073f +sha256=243642a1c3f4b6fd00125f5772ac5c8e4d0bb6586f5abb05829ead4b83ad5233 + [http://downloads.sourceforge.net/dejavu/dejavu-fonts-ttf-2.24.tar.bz2] md5=7b56c9db1e2a3bf9c80d20ea1c823623 sha256=0f42b12ad2537ea32977809585fd066157394efc35ff5ddf5abb5f47411bd18d @@ -2854,6 +2878,10 @@ sha256=e5facfcab28377d32fd4c70aa1fe0820d3dba4abdfc48bd15eda712c8815e505 md5=002e9d7d85a2f0e6261b6bf501c53a3e sha256=f399428e0e191233b4dcead88afbe78a26cc16bd9a47e305f6dd3299e011ef18 +[http://dcantrel.fedorapeople.org/dhcdbd/dhcdbd-3.0.tar.bz2] +md5=5316b1a0b3a3d53e972374627546d0bf +sha256=c62d5916dbd4d3148bd4deff355c3dfcb8092c2d9918d62dd24030e01c28361a + [ftp://ftp.isc.org/isc/dhcp/dhcp-2.0-history/dhcp-2.0pl5.tar.gz] md5=ab22f363a7aff924e2cc9d1019a21498 sha256=ef0fa044354ea42983584fcf94838445d8c8167b07630ad1a1057ea4783794b7 @@ -3146,6 +3174,10 @@ sha256=fe3c72d861f2a3791f31ea33043d25e29e9a4e3d6a3833b151237a62c5c703f9 md5=258d0a8277ace7fab06c55fdb2b249c4 sha256=2de57ec75aca127ec70c2797c1a416fca43d78e6cb5c8ee4938864cb8eaafb56 +[http://qa.debian.org/watch/sf.php/e2fsprogs/e2fsprogs-libs-1.41.2.tar.gz] +md5=258d0a8277ace7fab06c55fdb2b249c4 +sha256=2de57ec75aca127ec70c2797c1a416fca43d78e6cb5c8ee4938864cb8eaafb56 + [http://www.pobox.com/~sheff/sw/e2tools/e2tools-0.0.16.tar.gz] md5=1829b2b261e0e0d07566066769b5b28b sha256=4e3c8e17786ccc03fc9fb4145724edf332bb50e1b3c91b6f33e0e3a54861949b @@ -4450,6 +4482,10 @@ sha256=e50495d292a1d456c28044efbf07c16d8865f8d95e1caba86f4c5b2e3fb1d28f md5=664431bf6737df1c265500e1f0b5d40c sha256=e60f88763ee12c02a5c7ade1a58925ef0ab198f9ec6aaf404747dfc29074c7be +[http://qa.debian.org/watch/sf.php/genext2fs/genext2fs-1.4rc1.tar.gz] +md5=664431bf6737df1c265500e1f0b5d40c +sha256=e60f88763ee12c02a5c7ade1a58925ef0ab198f9ec6aaf404747dfc29074c7be + [ftp://ftp.debian.org/debian/pool/main/g/genext2fs/genext2fs_1.3.orig.tar.gz] md5=1342f26b75d8edb1daa01999ce330d29 sha256=8e7dfa34f3919226550dc6507a23753f9fda55e78b15b264291ecf5940d837e9 @@ -6838,6 +6874,10 @@ sha256=9a9b7092f2e48786e8f83e5bef99fd31988f87140ad9ca840583f91b3623d628 md5=4e11dc7899d68f2be2e06ccee01d296d sha256=1e2cc080e654c1839c5cb4b4adf4c62a23e7da208427f3ba0b16cfed9e5cfa98 +[http://xorg.freedesktop.org/releases/individual/app/iceauth-1.0.2.tar.bz2] +md5=7ab8b64edf0212a9d9a3c8129901a450 +sha256=06401591de57a2c4cf2255e3d5230ea19351c5516cf8dae98c61092392bab5bb + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/iceauth-X11R7.0-1.0.1.tar.bz2] md5=92035bd69b4c9aba47607ba0efcc8530 sha256=46a02c0dddbe80fbd802da47d0a9eac03002deb538b109dae804553fbbdfa7bd @@ -8418,6 +8458,10 @@ sha256=830802525700e65809afdd56ccdb5cd9950747044ab50666257bbb3d59a82754 md5=deee153b1ded5a944ea05d041d959eca sha256=db6885d5e40e3a273ff8bb9708ab739c8ace3c5abdd75509eec8ea31a31aac43 +[http://qa.debian.org/watch/sf.php/libexif/libexif-0.6.16.tar.bz2] +md5=deee153b1ded5a944ea05d041d959eca +sha256=db6885d5e40e3a273ff8bb9708ab739c8ace3c5abdd75509eec8ea31a31aac43 + [http://downloads.sourceforge.net/libexif/libexif-0.6.9.tar.gz] md5=0aa142335a8a00c32bb6c7dbfe95fc24 sha256=a2f309c702ee72967676d96b1a9d06806d069fde8e88076200cca6479c3d3c38 @@ -8926,6 +8970,10 @@ sha256=bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690 md5=1be543bc30c56fb6bea1d7bf6a64e66c sha256=bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690 +[http://qa.debian.org/watch/sf.php/mad/libmad-0.15.1b.tar.gz] +md5=1be543bc30c56fb6bea1d7bf6a64e66c +sha256=bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690 + [http://projects.o-hand.com/matchbox/sources/libmatchbox/1.2/libmatchbox-1.2.tar.bz2] md5=cf28ace4e666a8a9875c2397aa1ef9fd sha256=fc4fd138fe7efcbedd84ac99bb6dd2fa68ac44268c1bfc13712a2f051428a3ae @@ -8966,6 +9014,10 @@ sha256=2d7598cd2a8c61c023f27c9c7c1aca8bbfd92aadbee2f98b7a6d421eae35c929 md5=9f3c740298260d5f88981fc0d51f6f16 sha256=891a2b780306e6ef86e381f459e71a085d4e7f56c970a879d3bf341c01bdfc32 +[http://qa.debian.org/watch/sf.php/mikmod/libmikmod-3.1.12.tar.gz] +md5=9f3c740298260d5f88981fc0d51f6f16 +sha256=891a2b780306e6ef86e381f459e71a085d4e7f56c970a879d3bf341c01bdfc32 + [http://mikmod.raphnet.net/files/libmikmod-3.2.0-beta2.tar.gz] md5=19fc0879aebd1610813a23bd84726362 sha256=857b66ef04d695f70414188b985e08b04f1f62cc250d72a43d0e0609dfbdba03 @@ -9606,6 +9658,10 @@ sha256=49aaecc7b8ff57903801745ad56e918b25df8a3839cff526c8a210c5cf5a2995 md5=f28e7ae610147a057e481bc731749bc5 sha256=d112f79489d5deabc0cbb48c6192353d488d9e62c28752eda091f585f2e41176 +[http://qa.debian.org/watch/sf.php/libusb/libusb-0.9.2.tar.bz2] +md5=f28e7ae610147a057e481bc731749bc5 +sha256=d112f79489d5deabc0cbb48c6192353d488d9e62c28752eda091f585f2e41176 + [http://downloads.sourceforge.net/libusb/libusb-compat-0.1.0-beta1.tar.bz2] md5=3d9f7c3966d24c6e2d58becac96e4e27 sha256=9365108d71cecb78055de4df6eeb2fadf0fe9143ef105bcb6934dcf391983a49 @@ -9614,6 +9670,10 @@ sha256=9365108d71cecb78055de4df6eeb2fadf0fe9143ef105bcb6934dcf391983a49 md5=1fd5b9457e662531a48993191c1dfb64 sha256=4ab03b0d1d41db6a5c4e10c6dd819ad90876e712fd66a2de2b824a2fd3ce7dee +[http://qa.debian.org/watch/sf.php/libusb/libusb-compat-0.1.0-beta2.tar.bz2] +md5=1fd5b9457e662531a48993191c1dfb64 +sha256=4ab03b0d1d41db6a5c4e10c6dd819ad90876e712fd66a2de2b824a2fd3ce7dee + [http://downloads.sourceforge.net/libvisual/libvisual-0.1.3.tar.gz] md5=e70e91d2e90831c0eb78944b6a9605ef sha256=fc04f2f2bae4b3eef7eb331330e2e3fd336d1894dbf4cae631c8b635622cdd52 @@ -11586,6 +11646,10 @@ sha256=3a80ba2524c66a46db3ac17a788a759015a1f79de6a495fcdf3a316e19fe7c23 md5=e270c40626dfa2131cc39dd1352b46f9 sha256=934e1e5438c46927236f1f3254265e94c7e38e7c0e02d92abb7efc4e03ce91e9 +[http://qa.debian.org/watch/sf.php/openrdate/openrdate-1.1.3.tar.gz] +md5=af4785f615b9d87b9c86a32af4ecc225 +sha256=0f8a034107fc7593f28e77b276f964c1309343b4702ecdf0d61bb3e57ad0cb5f + [http://openredalert.googlecode.com/files/openredalert-r438-src.tar.gz] md5=12dc7a8042c023bc77b7830946fc8492 sha256=68058b6ffd9a286111c1860ca6d53af0d98d3f0c2a53875efd72ab381a3f9d6d @@ -13366,6 +13430,10 @@ sha256=5ead17c3d29cb1028aeca485ee7a8c65694c1b02a1b7014c3da920b265a438aa md5=c6fcbed7f0ad7e60ac5fcb2d324d8b16 sha256=35026eaa8e14ca8bd0ba3730926f14222f8452f2ac662623bbf1909d8b060979 +[http://qa.debian.org/watch/sf.php/rdesktop/rdesktop-1.6.0.tar.gz] +md5=c6fcbed7f0ad7e60ac5fcb2d324d8b16 +sha256=35026eaa8e14ca8bd0ba3730926f14222f8452f2ac662623bbf1909d8b060979 + [http://savannah.nongnu.org/download/rdiff-backup/rdiff-backup-1.0.4.tar.gz] md5=756b38aaf2602d097cafd08996fb7887 sha256=e754605b72b5498d11207920291d0eed6fa78ad46d3b9ad018cff9bb480224ea @@ -14358,6 +14426,10 @@ sha256=d8d9d62f0ebab71fab62b5ba7eaddd8bb8df9b7f4988b4a8e0d0724662702acf md5=09bcd5d00ece28f8154dec11cadfce3c sha256=a6808914cbfead2595dfd061a0f14dcbb0a8bb645e3cfdfa5c247d7ded9e0e7d +[http://qa.debian.org/watch/sf.php/strace/strace-4.5.14.tar.bz2] +md5=09bcd5d00ece28f8154dec11cadfce3c +sha256=a6808914cbfead2595dfd061a0f14dcbb0a8bb645e3cfdfa5c247d7ded9e0e7d + [http://downloads.sourceforge.net/strace/strace-4.5.15.tar.bz2] md5=ef40944118841803391d212cb64d3c5b sha256=ba8c492c1b2033d4e2131f05df9e3780d4bc35bea87aa32a6052dd53a814e288 @@ -14506,6 +14578,10 @@ sha256=d162ddc4f4a29c770549cb135da179e205480c065739dbe6c3c1bed6d84a3060 md5=14e7dcd0436d2f49aa403f67e1ef7ddc sha256=e865de2c1f559fff0d3fc936e660c0efaf7afe662064f2fb97ccad1ec28d208a +[http://qa.debian.org/watch/sf.php/linux-diag/sysfsutils-2.1.0.tar.gz] +md5=14e7dcd0436d2f49aa403f67e1ef7ddc +sha256=e865de2c1f559fff0d3fc936e660c0efaf7afe662064f2fb97ccad1ec28d208a + [http://www.ibiblio.org/pub/Linux/system/daemons/sysklogd-1.4.1.tar.gz] md5=d214aa40beabf7bdb0c9b3c64432c774 sha256=44357e0fae8c8f0e315bf130b4e86a4f96b91d66eeb4e473def4ce8336fff102 @@ -14786,6 +14862,10 @@ sha256=16d746a7bf057a9147756e15fdd7ce76a63ddde122294ce188dc8332da5118ba md5=80b904d4a10fccee9045d0feeaa65df8 sha256=56062708bb547425f8e8f0f9c571d4fa06fcc89a11146a5b15c608fd8debdb80 +[http://qa.debian.org/watch/sf.php/vnc-tight/tightvnc-1.3.9_unixsrc.tar.gz] +md5=80b904d4a10fccee9045d0feeaa65df8 +sha256=56062708bb547425f8e8f0f9c571d4fa06fcc89a11146a5b15c608fd8debdb80 + [http://downloads.sourceforge.net/vnc-tight/tightvnc-1.3dev7_unixsrc.tar.gz] md5=030903eeafc3c20ef1fb1610bfe6311d sha256=390fdd05d86e091300248a4f74a0ffe7b4169f75aa2c1a5461c997a4c2ed2c10 @@ -16354,6 +16434,10 @@ sha256=2df2e34dc61907fb3c41b4590f51d39f951d2d74422d84f1f7d53ef6f5b25352 md5=cae9b1b131c1fc1b45ad1a9604fdeb66 sha256=e851ff555f177ebe6b4d8f961e088a1e2f5947ba739e5b891eb5b3ff4cdd652b +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-cirrus-1.1.0.tar.bz2] +md5=66344e315def275605dafb314ce59851 +sha256=5988962199d5013274f6a6952939e4f405df658bb6616ebf9954c993b1179b1b + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-cirrus-X11R7.0-1.0.0.5.tar.bz2] md5=7708693ad9d73cd76d4caef7c644a46f sha256=29e6fdd67e8ec51c534f6123f9935a165711255d935fb9cb28cd44f9db278b3e -- cgit v1.2.3 From 7f8f1ac6f264598292414462a3a7171652700826 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Wed, 29 Oct 2008 21:41:40 -0200 Subject: thunar: recommends shared-mime-info to properly support .desktop files --- packages/xfce/thunar_0.9.0.bb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/xfce/thunar_0.9.0.bb b/packages/xfce/thunar_0.9.0.bb index 8638b5add3..de85f23a9c 100644 --- a/packages/xfce/thunar_0.9.0.bb +++ b/packages/xfce/thunar_0.9.0.bb @@ -1,10 +1,11 @@ DESCRIPTION = "File manager for the Xfce Desktop Environment" DEPENDS = "libxfcegui4 exo dbus-glib libexif xfce4-panel libice libsm" +RRECOMMENDS = "shared-mime-info" inherit xfce pkgconfig SRC_URI = "http://www.us.xfce.org/archive/xfce-4.4.2/src/Thunar-${PV}.tar.bz2" -PR = 'r1' +PR = 'r2' S = "${WORKDIR}/Thunar-${PV}/" -- cgit v1.2.3 From 45c74cbeb6bb357715d3337a633d53af89b86663 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Wed, 29 Oct 2008 22:33:28 -0200 Subject: firefox: use system bz2 library to avoid missing symbols --- packages/mozilla/firefox-3.0.1/mozconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mozilla/firefox-3.0.1/mozconfig b/packages/mozilla/firefox-3.0.1/mozconfig index f7ab5dd3a3..652c780bbd 100644 --- a/packages/mozilla/firefox-3.0.1/mozconfig +++ b/packages/mozilla/firefox-3.0.1/mozconfig @@ -12,6 +12,7 @@ ac_add_options --enable-single-profile ac_add_options --with-system-zlib ac_add_options --with-system-jpeg +ac_add_options --with-system-bz2 #ac_add_options --with-system-png ac_add_options --disable-accessibility -- cgit v1.2.3 From d569e2df3c9e2d97396f462b4e3789531ea3ef8b Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Wed, 29 Oct 2008 22:42:12 -0200 Subject: Revert "xorg-xserver-common.inc: set userid to allow Xorg to be run by users" This reverts commit 83176ca41497b63eab25babf275eb09b5de55a8d. --- packages/xorg-xserver/xorg-xserver-common.inc | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/xorg-xserver/xorg-xserver-common.inc b/packages/xorg-xserver/xorg-xserver-common.inc index 63a62a5b08..190de2c49a 100644 --- a/packages/xorg-xserver/xorg-xserver-common.inc +++ b/packages/xorg-xserver/xorg-xserver-common.inc @@ -53,5 +53,4 @@ do_install_append () { install -d ${D}/${sysconfdir}/X11 install -m 0644 ${WORKDIR}/xorg.conf ${D}/${sysconfdir}/X11/ ln -sf ${datadir}/fonts/X11 ${D}/${libdir}/X11/fonts - chmod u+s ${D}/usr/bin/Xorg } -- cgit v1.2.3 From fb43a0277a1472dbbdea175cee1789b25c072a5f Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Sat, 27 Sep 2008 16:35:04 -0300 Subject: initscripts: do /proc remount instead of mounting it --- packages/initscripts/initscripts-1.0/checkroot.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/initscripts/initscripts-1.0/checkroot.sh b/packages/initscripts/initscripts-1.0/checkroot.sh index 5c1e5c6ebb..e5aa9aaf99 100755 --- a/packages/initscripts/initscripts-1.0/checkroot.sh +++ b/packages/initscripts/initscripts-1.0/checkroot.sh @@ -208,7 +208,7 @@ then : > /etc/mtab fi mount -f -o remount / - mount -f /proc + mount -f -o remount /proc test "$devfs" && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs" fi -- cgit v1.2.3 From 6314775271323c584587f94940c4b4724a656d76 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 10:21:20 +0100 Subject: exo: fix build of python modules and disable running of tests at buildtime, my buildmachine can't run target code --- packages/xfce/exo/exo-no-tests.patch | 14 ++++++++++++++ packages/xfce/exo_0.3.4.bb | 4 ++++ 2 files changed, 18 insertions(+) create mode 100644 packages/xfce/exo/exo-no-tests.patch diff --git a/packages/xfce/exo/exo-no-tests.patch b/packages/xfce/exo/exo-no-tests.patch new file mode 100644 index 0000000000..1cb51ab600 --- /dev/null +++ b/packages/xfce/exo/exo-no-tests.patch @@ -0,0 +1,14 @@ +The tests/ subdir consists of stuff trying to run a generated file ('exo-csource'), which doesn't work on host systems + +--- /tmp/Makefile.am 2008-10-30 09:23:41.000000000 +0100 ++++ exo-0.3.4/Makefile.am 2008-10-30 09:24:03.011124000 +0100 +@@ -23,8 +23,7 @@ + pixmaps \ + po \ + po-doc \ +- $(PYTHON_SUBDIR) \ +- tests ++ $(PYTHON_SUBDIR) + + AUTOMAKE_OPTIONS = \ + 1.8 \ diff --git a/packages/xfce/exo_0.3.4.bb b/packages/xfce/exo_0.3.4.bb index 49ab44582c..17ea87d3d3 100644 --- a/packages/xfce/exo_0.3.4.bb +++ b/packages/xfce/exo_0.3.4.bb @@ -4,8 +4,12 @@ inherit xfce XFCE_VERSION = 4.4.2 SRC_URI += " file://configure.patch;patch=1" +SRC_URI += " file://exo-no-tests.patch;patch=1" # Note: Python checking is broken +do_configure_prepend() { + sed -i -e s:'`$PKG_CONFIG --variable=defsdir pygtk-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/defs\":g ${S}/configure.in +} do_stage() { autotools_stage_all -- cgit v1.2.3 From bdec70c94c71af7bdfb50dca254b4f51cb2d7205 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 10:30:45 +0100 Subject: ti-lpm-module: not using oe_runmake allows us to get rid of all the sed magic --- packages/dsplink/ti-lpm-module_2.21.bb | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/packages/dsplink/ti-lpm-module_2.21.bb b/packages/dsplink/ti-lpm-module_2.21.bb index cbbc5c8ce5..50e58666bd 100644 --- a/packages/dsplink/ti-lpm-module_2.21.bb +++ b/packages/dsplink/ti-lpm-module_2.21.bb @@ -38,20 +38,13 @@ do_compile() { cd ${DSPPOWERSOC}/lpm - export KERNEL_DIR=${STAGING_KERNEL_DIR} - export TOOL_PREFIX=${TARGET_PREFIX} - - # Different SoCs use different toolchains by default, we just want them to use the OE one, so replace the entries because they can't be overloaded within the environment - sed -i -e s:/db/toolsrc/library/tools/vendors/mvl/arm/omap3/OMAP35x_SDK_0.9.7/src/linux/kernel_org/2.6_kernel:${STAGING_KERNEL_DIR}:g \ - -e s:/db/toolsrc/library/tools/vendors/cs/arm/arm-2007q3/bin/arm-none-linux-gnueabi-:${TARGET_PREFIX}:g \ - -e s:/db/atree/library/trees/power/power-d02x/imports:${STAGING_DIR}/${MULTIMACH_TARGET_SYS}:g \ - -e s:/db/toolsrc/library/tools/vendors/mvl/arm/dm6446/REL_LSP_02_00_00_010/montavista/pro/devkit/lsp/ti-davinci/linux-2.6.18_pro500:${STAGING_KERNEL_DIR}:g \ - -e s:/db/toolsrc/library/tools/vendors/mvl/arm/mvl5.0/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-:${TARGET_PREFIX}:g \ - Makefile - - oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ + unset LDFLAGS CFLAGS + make KERNEL_PATH=${STAGING_KERNEL_DIR} \ KERNEL_SRC=${STAGING_KERNEL_DIR} \ + KERNEL_DIR=${STAGING_KERNEL_DIR} \ KERNEL_VERSION=${KERNEL_VERSION} \ + TOOL_PREFIX=${TARGET_PREFIX} \ + DSPLINK_REPO=${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ \ CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ AR="${KERNEL_AR}" } -- cgit v1.2.3 From 9f0a59964a3a089edc0bb4ed6d706add62676f37 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 10:35:57 +0100 Subject: codec-engine 2.21: apply fix for ti-lpm-module build --- packages/dsplink/codec-engine_2.21.bb | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/packages/dsplink/codec-engine_2.21.bb b/packages/dsplink/codec-engine_2.21.bb index 4cb227ed23..caaf297c9f 100644 --- a/packages/dsplink/codec-engine_2.21.bb +++ b/packages/dsplink/codec-engine_2.21.bb @@ -94,23 +94,16 @@ do_compile() { cd ${DSPPOWERSOC}/lpm - export KERNEL_DIR=${STAGING_KERNEL_DIR} - export TOOL_PREFIX=${TARGET_PREFIX} - - # Different SoCs use different toolchains by default, we just want them to use the OE one, so replace the entries because they can't be overloaded within the environment - sed -i -e s:/db/toolsrc/library/tools/vendors/mvl/arm/omap3/OMAP35x_SDK_0.9.7/src/linux/kernel_org/2.6_kernel:${STAGING_KERNEL_DIR}:g \ - -e s:/db/toolsrc/library/tools/vendors/cs/arm/arm-2007q3/bin/arm-none-linux-gnueabi-:${TARGET_PREFIX}:g \ - -e s:/db/atree/library/trees/power/power-d02x/imports:${STAGING_DIR}/${MULTIMACH_TARGET_SYS}:g \ - -e s:/db/toolsrc/library/tools/vendors/mvl/arm/dm6446/REL_LSP_02_00_00_010/montavista/pro/devkit/lsp/ti-davinci/linux-2.6.18_pro500:${STAGING_KERNEL_DIR}:g \ - -e s:/db/toolsrc/library/tools/vendors/mvl/arm/mvl5.0/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-:${TARGET_PREFIX}:g \ - Makefile - - oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ + unset LDFLAGS CFLAGS + make KERNEL_PATH=${STAGING_KERNEL_DIR} \ KERNEL_SRC=${STAGING_KERNEL_DIR} \ + KERNEL_DIR=${STAGING_KERNEL_DIR} \ KERNEL_VERSION=${KERNEL_VERSION} \ + TOOL_PREFIX=${TARGET_PREFIX} \ + DSPLINK_REPO=${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ \ CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ AR="${KERNEL_AR}" - + cd ${S}/examples # export some more variable to point to external TI tools # information is duplicated between the js and make based tools -- cgit v1.2.3 From 22e85416d9973330854c17e0c53df16b62363b48 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 11:31:41 +0100 Subject: linux-omap git: add patch for fix scaling for the overlay --- ...solution-check-that-prevents-scaling-when.patch | 26 ++++++++++++++++++++++ packages/linux/linux-omap_git.bb | 3 ++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 packages/linux/linux-omap/0001-Removed-resolution-check-that-prevents-scaling-when.patch diff --git a/packages/linux/linux-omap/0001-Removed-resolution-check-that-prevents-scaling-when.patch b/packages/linux/linux-omap/0001-Removed-resolution-check-that-prevents-scaling-when.patch new file mode 100644 index 0000000000..636203ef32 --- /dev/null +++ b/packages/linux/linux-omap/0001-Removed-resolution-check-that-prevents-scaling-when.patch @@ -0,0 +1,26 @@ +From 3227bd5c412e7eb0d4370b2834e71723f6b4be48 Mon Sep 17 00:00:00 2001 +From: Tuomas Kulve +Date: Mon, 27 Oct 2008 18:55:59 +0200 +Subject: [PATCH] Removed resolution check that prevents scaling when output resolution doesn't match the original resolution. + +--- + drivers/video/omap/dispc.c | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) + +diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c +index 0f0b2e5..1df0c1e 100644 +--- a/drivers/video/omap/dispc.c ++++ b/drivers/video/omap/dispc.c +@@ -579,9 +579,6 @@ static int omap_dispc_set_scale(int plane, + if ((unsigned)plane > OMAPFB_PLANE_NUM) + return -ENODEV; + +- if (out_width != orig_width || out_height != orig_height) +- return -EINVAL; +- + enable_lcd_clocks(1); + if (orig_width < out_width) { + /* +-- +1.5.6.5 + diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb index 0f5113d76e..e7fb608337 100644 --- a/packages/linux/linux-omap_git.bb +++ b/packages/linux/linux-omap_git.bb @@ -10,7 +10,7 @@ SRCREV = "2a3408be17f287fdb5809c9b6c68e7ad96d25b74" #PV = "2.6.26+2.6.27-rc7+${PR}+gitr${SRCREV}" PV = "2.6.27+${PR}+gitr${SRCREV}" -PR = "r1" +PR = "r2" SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \ file://defconfig" @@ -34,6 +34,7 @@ SRC_URI_append = " \ file://musb-fix-multiple-bulk-transfers.diff;patch=1 \ file://musb-fix-endpoints.diff;patch=1 \ file://dvb-fix-dma.diff;patch=1 \ + file://0001-Removed-resolution-check-that-prevents-scaling-when.patch;patch=1 \ " -- cgit v1.2.3 From 1320d90a7ad2c96f9a5a45d5abb886c150a752e4 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 11:40:08 +0100 Subject: package bblass: fix ldconfig_postinst_fragment to not return an error if no /etc/ld.so.conf is present --- classes/package.bbclass | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/classes/package.bbclass b/classes/package.bbclass index 4dfd5f0444..8db000b23a 100644 --- a/classes/package.bbclass +++ b/classes/package.bbclass @@ -551,7 +551,9 @@ emit_pkgdata[dirs] = "${PKGDATA_DIR}/runtime" ldconfig_postinst_fragment() { if [ x"$D" = "x" ]; then - [ -x /sbin/ldconfig ] && [ -e /etc/ld.so.conf ] && /sbin/ldconfig + if [ -e /etc/ld.so.conf ] ; then + [ -x /sbin/ldconfig ] && /sbin/ldconfig + fi fi } -- cgit v1.2.3 From 39430f1c3b573bb86abb455d2d8355a4e6214344 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 11:55:33 +0100 Subject: angstrom feed builder: add xf86-input-tslib --- contrib/angstrom/build-feeds.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/angstrom/build-feeds.sh b/contrib/angstrom/build-feeds.sh index b98d19df34..60fe1bf7ee 100755 --- a/contrib/angstrom/build-feeds.sh +++ b/contrib/angstrom/build-feeds.sh @@ -239,7 +239,8 @@ do xf86-input-evdev \ xf86-input-keyboard \ xf86-input-mouse \ - xf86-video-ati \ + xf86-input-tslib \ + xf86-video-ati \ xf86-video-fbdev \ xf86-video-vesa \ xfce-mcs-manager -- cgit v1.2.3 From db3b63202106159a4a3113eefc836589debdacff Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 12:09:28 +0100 Subject: ti-cmemk-module, codec-engine: add patch to fix builds with >=2.6.26 and class_device_* API change --- packages/dsplink/codec-engine_2.21.bb | 16 +--- .../dsplink/files/cmemk-fix-class-device-api.diff | 89 ++++++++++++++++++++++ packages/dsplink/ti-cmemk-module_2.21.bb | 19 +---- 3 files changed, 94 insertions(+), 30 deletions(-) create mode 100644 packages/dsplink/files/cmemk-fix-class-device-api.diff diff --git a/packages/dsplink/codec-engine_2.21.bb b/packages/dsplink/codec-engine_2.21.bb index caaf297c9f..b300256a3a 100644 --- a/packages/dsplink/codec-engine_2.21.bb +++ b/packages/dsplink/codec-engine_2.21.bb @@ -15,7 +15,8 @@ PV = "221" SRC_URI = "http://install.tarball.in.source.dir/codec_engine_2_21_00_06.tar.gz \ file://Makefile.dsplink \ - " + file://cmemk-fix-class-device-api.diff;patch=1 \ +" S = "${WORKDIR}/codec_engine_2_21_00_06" @@ -65,19 +66,6 @@ do_compile() { cd ${S}/cetools/packages/ti/sdo/linuxutils/cmem oe_runmake clean - # We probably don't need to build all 3, but atm it doesn't hurt us - oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ - KERNEL_SRC=${STAGING_KERNEL_DIR} \ - KERNEL_VERSION=${KERNEL_VERSION} \ - CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ - AR="${KERNEL_AR}" \ - release - oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ - KERNEL_SRC=${STAGING_KERNEL_DIR} \ - KERNEL_VERSION=${KERNEL_VERSION} \ - CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ - AR="${KERNEL_AR}" \ - debug oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ KERNEL_SRC=${STAGING_KERNEL_DIR} \ KERNEL_VERSION=${KERNEL_VERSION} \ diff --git a/packages/dsplink/files/cmemk-fix-class-device-api.diff b/packages/dsplink/files/cmemk-fix-class-device-api.diff new file mode 100644 index 0000000000..c42e6ae927 --- /dev/null +++ b/packages/dsplink/files/cmemk-fix-class-device-api.diff @@ -0,0 +1,89 @@ +--- codec_engine_2_21_00_06/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c 2008-09-26 02:26:04.000000000 +0200 ++++ codec_engine_2_21_00_06/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c 2008-10-30 11:57:54.000000000 +0100 +@@ -42,11 +26,20 @@ + * USE_CLASS_SIMPLE - #define if Linux version contains class_simple, + * otherwise class is used (Linux supports one or the other, not both) + */ +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) + +-#warning LINUX_VERSION_CODE >= 2.6.18 ++#warning LINUX_VERSION_CODE >= 2.6.26 ++ ++#define USE_CACHE_VOID_ARG ++#undef USE_CLASS_DEVICE ++#undef USE_CLASS_SIMPLE ++ ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18) ++ ++#warning 2.6.26 > LINUX_VERSION_CODE >= 2.6.18 + + #define USE_CACHE_VOID_ARG ++#define USE_CLASS_DEVICE + #undef USE_CLASS_SIMPLE + + #else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18) */ +@@ -54,6 +47,7 @@ + #warning LINUX_VERSION_CODE < 2.6.18 + + #define USE_CLASS_SIMPLE ++#undef USE_CLASS_DEVICE + #undef USE_CACHE_VOID_ARG + + #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18) */ +@@ -1697,12 +1691,12 @@ + #ifdef USE_CLASS_SIMPLE + class_simple_device_add(cmem_class, MKDEV(cmem_major, 0), NULL, "cmem"); + #else +-/* +- Use the following for newer GIT releases ( > 2.6.25?) +- device_create(cmem_class, NULL, MKDEV(cmem_major, 0), "cmem"); +-*/ ++#ifdef USE_CLASS_DEVICE + class_device_create(cmem_class, NULL, MKDEV(cmem_major, 0), NULL, "cmem"); +-#endif ++#else ++ device_create(cmem_class, NULL, MKDEV(cmem_major, 0), "cmem"); ++#endif // USE_CLASS_DEVICE ++#endif // USE_CLASS_SIMPLE + #endif // USE_UDEV + + pstart[0] = phys_start; +@@ -1862,13 +1856,13 @@ + class_simple_device_remove(MKDEV(cmem_major, 0)); + class_simple_destroy(cmem_class); + #else +-/* +- Use the following for newer GIT releases ( > 2.6.25?) +- device_destroy(cmem_class, MKDEV(cmem_major, 0)); +-*/ ++#ifdef USE_CLASS_DEVICE + class_device_destroy(cmem_class, MKDEV(cmem_major, 0)); ++#else ++ device_destroy(cmem_class, MKDEV(cmem_major, 0)); ++#endif // USE_CLASS_DEVICE + class_destroy(cmem_class); +-#endif ++#endif // USE_CLASS_SIMPLE + + #endif // USE_UDEV + +@@ -1938,13 +1932,13 @@ + class_simple_device_remove(MKDEV(cmem_major, 0)); + class_simple_destroy(cmem_class); + #else +-/* +- Use the following for newer GIT releases ( > 2.6.25?) +- device_destroy(cmem_class, MKDEV(cmem_major, 0)); +-*/ ++#ifdef USE_CLASS_DEVICE + class_device_destroy(cmem_class, MKDEV(cmem_major, 0)); ++#else ++ device_destroy(cmem_class, MKDEV(cmem_major, 0)); ++#endif // USE_CLASS_DEVICE + class_destroy(cmem_class); +-#endif ++#endif // USE_CLASS_SIMPLE + + #endif // USE_UDEV + diff --git a/packages/dsplink/ti-cmemk-module_2.21.bb b/packages/dsplink/ti-cmemk-module_2.21.bb index 82e5fb61e4..4261b140d2 100644 --- a/packages/dsplink/ti-cmemk-module_2.21.bb +++ b/packages/dsplink/ti-cmemk-module_2.21.bb @@ -15,7 +15,8 @@ PV = "221" SRC_URI = "http://install.tarball.in.source.dir/codec_engine_2_21_00_06.tar.gz \ file://Makefile.dsplink \ - " + file://cmemk-fix-class-device-api.diff;patch=1 \ +" S = "${WORKDIR}/codec_engine_2_21_00_06" @@ -37,25 +38,11 @@ do_compile() { cd ${S}/cetools/packages/ti/sdo/linuxutils/cmem oe_runmake clean - # We probably don't need to build all 3, but atm it doesn't hurt us oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ KERNEL_SRC=${STAGING_KERNEL_DIR} \ KERNEL_VERSION=${KERNEL_VERSION} \ CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ - AR="${KERNEL_AR}" \ - release - oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ - KERNEL_SRC=${STAGING_KERNEL_DIR} \ - KERNEL_VERSION=${KERNEL_VERSION} \ - CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ - AR="${KERNEL_AR}" \ - debug - oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ - KERNEL_SRC=${STAGING_KERNEL_DIR} \ - KERNEL_VERSION=${KERNEL_VERSION} \ - CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ - AR="${KERNEL_AR}" - + AR="${KERNEL_AR}" } -- cgit v1.2.3 From 3f9ca3c829ee0b9175c2898918525c37a6d11398 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 13:29:54 +0100 Subject: dsplink: add omap3evm support --- packages/dsplink/ti-paths.inc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/dsplink/ti-paths.inc b/packages/dsplink/ti-paths.inc index ba84155195..4599c3ef73 100644 --- a/packages/dsplink/ti-paths.inc +++ b/packages/dsplink/ti-paths.inc @@ -9,6 +9,7 @@ TICGTOOLSDIR ?= "cg6x_6_0_19" DSPLINKPLATFORM ?= "DAVINCI" DSPLINKPLATFORM_omap5912osk = "OMAP" DSPLINKPLATFORM_beagleboard = "OMAP3530" +DSPLINKPLATFORM_omap3evm = "OMAP3530" DSPLINKPLATFORM_davinci-sffsdr = "DAVINCI" DSPLINKPLATFORM_davinci-dvevm = "DAVINCI" @@ -16,12 +17,15 @@ DSPLINKDSP ?= "C64XX" DSPLINKSOC ?= "DM6446" DSPLINKSOC_beagleboard = "3530" +DSPLINKSOC_omap3evm = "3530" DSPCFG ?= "DM6446GEMSHMEM" DSPCFG_beagleboard ?= "OMAP3530SHMEM" +DSPCFG_omap3evm ?= "OMAP3530SHMEM" GPPOS ?= "MVL5G" GPPOS_beagleboard = "OMAPLSP" +GPPOS_omap3evm = "OMAPLSP" export DSPLINKPLATFORM export DSPLINKDSP @@ -31,4 +35,5 @@ export GPPOS DSPPOWERSOC ?= "dm6446" DSPPOWERSOC_beagleboard = "omap3530" +DSPPOWERSOC_omap3evm = "omap3530" -- cgit v1.2.3 From 4bbfd7ad9f6fca1669e7635dc28749ef11549b1c Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 14:04:34 +0100 Subject: dropbear: fix do_install for all distros that aren't named 'openmoko' * IMPORTANT: test -e foo && bar will make do_install exit with an error if 'foo' doesn't exist, so use the if [ -e foo ] ; then pattern instead --- packages/dropbear/dropbear.inc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/dropbear/dropbear.inc b/packages/dropbear/dropbear.inc index 168cedbf8a..26e3235b92 100644 --- a/packages/dropbear/dropbear.inc +++ b/packages/dropbear/dropbear.inc @@ -59,8 +59,9 @@ do_install() { -e 's,/usr/bin,${bindir},g' \ -e 's,/usr,${prefix},g' > ${D}${sysconfdir}/init.d/dropbear chmod 755 ${D}${sysconfdir}/init.d/dropbear - test -e ${WORKDIR}/default && \ - install -m 0644 ${WORKDIR}/default ${D}${sysconfdir}/default/dropbear + if test -e ${WORKDIR}/default ; then + install -m 0644 ${WORKDIR}/default ${D}${sysconfdir}/default/dropbear + fi } pkg_postinst () { -- cgit v1.2.3 From 26f6477a2d5ecb7bc4eb984a334d17e2c833b875 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 14:28:16 +0100 Subject: weekly changelog: add in bugstats from the mtn2cl script --- contrib/weekly-changelog-report.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/contrib/weekly-changelog-report.py b/contrib/weekly-changelog-report.py index 101de2919b..22535f32b1 100755 --- a/contrib/weekly-changelog-report.py +++ b/contrib/weekly-changelog-report.py @@ -25,4 +25,16 @@ print "OE weekly changelog %s to %s\n" % (start_day.isoformat(), end_day.isoform os.system("git-shortlog --since=%s --until=%s | grep -v \"Merge branch\" | grep -v \"Merge commit\"" % (start_day.isoformat(), end_day.isoformat())) +os.system("wget 'http://bugs.openembedded.net/buglist.cgi?bug_file_loc=&bug_file_loc_type=allwordssubstr&bug_id=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&bugidtype=include&chfieldfrom=7d&chfieldto=Now&chfieldvalue=&email1=&email2=&emailassigned_to1=1&emailassigned_to2=1&emailcc2=1&emailqa_contact2=1&emailreporter2=1&emailtype1=substring&emailtype2=substring&field-1-0-0=bug_status&field0-0-0=noop&known_name=1WFixed&long_desc=&long_desc_type=substring&query_format=advanced&remaction=&short_desc=&short_desc_type=allwordssubstr&type-1-0-0=anyexact&type0-0-0=noop&value-1-0-0=RESOLVED%2CVERIFIED%2CCLOSED&value0-0-0=&ctype=csv' -O resolved-bugs.csv >& /dev/null") +os.system("wget 'http://bugs.openembedded.net/buglist.cgi?bug_file_loc=&bug_file_loc_type=allwordssubstr&bug_id=&bug_status=NEW&bugidtype=include&chfield=%5BBug%20creation%5D&chfieldfrom=7d&chfieldto=Now&chfieldvalue=&email1=&email2=&emailassigned_to1=1&emailassigned_to2=1&emailcc2=1&emailqa_contact2=1&emailreporter2=1&emailtype1=substring&emailtype2=substring&field-1-0-0=bug_status&field0-0-0=noop&long_desc=&long_desc_type=substring&query_format=advanced&remaction=&short_desc=&short_desc_type=allwordssubstr&type-1-0-0=anyexact&type0-0-0=noop&value-1-0-0=NEW&value0-0-0=&ctype=csv' -O new-bugs.csv &> /dev/null") + + +print "Bugs fixed:\n" + +os.system("cat resolved-bugs.csv | awk -F, '{print $1 \" \" $7 \"\t \" $8}' | sed s:\\\"::g") + +print "\nBugs opened:\n" + +os.system("cat new-bugs.csv | awk -F, '{print $1 \" \" $7 \"\t \" $8}' | sed s:\\\"::g") + -- cgit v1.2.3 From b6220af33a70d96345dea130005ce842eeadfdf5 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 14:55:19 +0100 Subject: kernel bbclass: start adding support for >=2.6.27 where headers moved * still lack a symlink for mach/, dunno how to do that properly since the information is dynamically generated with makefiles --- classes/kernel.bbclass | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass index 266a89dd9a..742654e7c1 100644 --- a/classes/kernel.bbclass +++ b/classes/kernel.bbclass @@ -91,12 +91,15 @@ kernel_do_compile() { } kernel_do_compile[depends] = "${INITRAMFS_TASK}" - kernel_do_stage() { ASMDIR=`readlink include/asm` mkdir -p ${STAGING_KERNEL_DIR}/include/$ASMDIR cp -fR include/$ASMDIR/* ${STAGING_KERNEL_DIR}/include/$ASMDIR/ + # Kernel 2.6.27 moved headers from includes/asm-${ARCH} to arch/${ARCH/include/asm + if [ -e arch/${ARCH}/include/asm/ ] ; then + cp -fR arch/${ARCH}/include/asm/* ${STAGING_KERNEL_DIR}/include/$ASMDIR/ + fi rm -f $ASMDIR ${STAGING_KERNEL_DIR}/include/asm ln -sf $ASMDIR ${STAGING_KERNEL_DIR}/include/asm -- cgit v1.2.3 From b7983d0f73d568106fdd76f189fcce4da7296752 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Thu, 30 Oct 2008 17:07:41 -0200 Subject: gnumeric: do not overwrite PACKAGES_DYNAMIC to allow locales to be used --- packages/gnumeric/gnumeric_1.8.3.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/gnumeric/gnumeric_1.8.3.bb b/packages/gnumeric/gnumeric_1.8.3.bb index 0f70e37d5c..92cdc4c6c9 100644 --- a/packages/gnumeric/gnumeric_1.8.3.bb +++ b/packages/gnumeric/gnumeric_1.8.3.bb @@ -14,7 +14,7 @@ SRC_URI += "file://remove-docs.patch;patch=1" EXTRA_OECONF=" --without-perl " -PACKAGES_DYNAMIC = "gnumeric-plugin-*" +PACKAGES_DYNAMIC += "gnumeric-plugin-*" FILES_${PN}-dbg += "${libdir}/gnumeric/${PV}/plugins/*/.debug" FILES_gnumeric_append = " /usr/lib/libspreadsheet-${PV}.so " -- cgit v1.2.3 From a8744762b0468c4d2d952c82cda34411a67735e1 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Thu, 30 Oct 2008 08:53:11 -0200 Subject: fennec: use system libraries while building --- packages/mozilla/fennec/mozconfig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/mozilla/fennec/mozconfig b/packages/mozilla/fennec/mozconfig index ba4099d691..7696f78a9c 100644 --- a/packages/mozilla/fennec/mozconfig +++ b/packages/mozilla/fennec/mozconfig @@ -4,6 +4,11 @@ mk_add_options AUTOCONF=autoconf2.13 ac_add_options --disable-javaxpcom +ac_add_options --enable-system-cairo +ac_add_options --with-system-zlib +ac_add_options --with-system-bz2 +ac_add_options --with-system-jpeg + ac_add_app_options xulrunner --enable-application=xulrunner ac_add_app_options mobile --enable-application=mobile -- cgit v1.2.3 From c5a381985f10133754c32cac9ef0e02504819a6d Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 21:01:22 +0100 Subject: mplayer: enable more inputs --- packages/mplayer/mplayer_svn.bb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/mplayer/mplayer_svn.bb b/packages/mplayer/mplayer_svn.bb index 923c9abf68..8ecc90a5a3 100644 --- a/packages/mplayer/mplayer_svn.bb +++ b/packages/mplayer/mplayer_svn.bb @@ -39,7 +39,7 @@ RCONFLICTS_${PN} = "mplayer-atty" RREPLACES_${PN} = "mplayer-atty" PV = "0.0+1.0rc2+svnr${SRCREV}" -PR = "r5" +PR = "r6" DEFAULT_PREFERENCE = "-1" DEFAULT_PREFERENCE_armv7a = "1" @@ -69,7 +69,8 @@ EXTRA_OECONF = " \ --disable-vm \ --disable-xf86keysym \ --enable-tv \ - --enable-tv-v4l2 \ + --enable-tv-v4l1 \ + --enable-tv-v4l2 \ --disable-tv-bsdbt848 \ --enable-rtc \ --enable-network \ -- cgit v1.2.3 From 6b982d8fbd791067c74b137041075f0f04d521ec Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 21:02:09 +0100 Subject: linux-omap git: bump PR for staging changes --- packages/linux/linux-omap_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb index e7fb608337..ec1a071773 100644 --- a/packages/linux/linux-omap_git.bb +++ b/packages/linux/linux-omap_git.bb @@ -10,7 +10,7 @@ SRCREV = "2a3408be17f287fdb5809c9b6c68e7ad96d25b74" #PV = "2.6.26+2.6.27-rc7+${PR}+gitr${SRCREV}" PV = "2.6.27+${PR}+gitr${SRCREV}" -PR = "r2" +PR = "r3" SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \ file://defconfig" -- cgit v1.2.3 From b694b15ff48d0a019db7bf4c3c622823a7da93c4 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 30 Oct 2008 23:14:00 +0100 Subject: bluez-gnome: package icons and mime types --- packages/bluez/bluez-gnome_0.26.bb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/bluez/bluez-gnome_0.26.bb b/packages/bluez/bluez-gnome_0.26.bb index d16c3a5894..0b78a84f5e 100644 --- a/packages/bluez/bluez-gnome_0.26.bb +++ b/packages/bluez/bluez-gnome_0.26.bb @@ -4,9 +4,11 @@ LICENSE = "GPL+LGPL" DEPENDS = "dbus-glib gconf libnotify gtk+" RRECOMMENDS = "gnome-icon-theme" +PR = "r1" + SRC_URI = "http://bluez.sourceforge.net/download/${P}.tar.gz" inherit autotools pkgconfig gconf -FILES_${PN} += "${datadir}/gconf" +FILES_${PN} += "${datadir}/gconf ${datadir}/icons ${datadir}/mime" -- cgit v1.2.3 From 037319d0bffb37a6cbc6f8a6a64135fa9169e437 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 31 Oct 2008 11:38:44 +0100 Subject: icu 3.6: sed binconfig file so that -I/usr/include doesn't end up in cflags for e.g. webkit --- packages/icu/icu_3.6.bb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/icu/icu_3.6.bb b/packages/icu/icu_3.6.bb index 91b25adbe9..1dbdf94b3a 100644 --- a/packages/icu/icu_3.6.bb +++ b/packages/icu/icu_3.6.bb @@ -1,7 +1,7 @@ require icu-3.6.inc DEPENDS += "icu-native" -PR = "r3" +PR = "r4" SRC_URI += "file://use-g++-for-linking.patch;patch=1" @@ -34,6 +34,11 @@ FILES_libicuio = "${libdir}/libicuio.so.*" do_stage() { autotools_stage_all +} + +# We need to append this so it runs *after* binconfig.do_stage +do_stage_append() { + sed -i -e s:^prefix=:prefix=\"${STAGING_DIR_TARGET}/usr\": ${STAGING_BINDIR_CROSS}/icu-config } -- cgit v1.2.3 From f7b469d0fa1785213148875adaac0330a89a652d Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 31 Oct 2008 11:39:43 +0100 Subject: webkit-gtk: bump PR to get icu binconfig fix --- packages/webkit/webkit-gtk_svn.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webkit/webkit-gtk_svn.bb b/packages/webkit/webkit-gtk_svn.bb index b78844fc53..bed1a180b0 100644 --- a/packages/webkit/webkit-gtk_svn.bb +++ b/packages/webkit/webkit-gtk_svn.bb @@ -5,7 +5,7 @@ SRCREV_FORMAT = "webcore-rwebkit" # Yes, this is wrong... PV = "0.1+svnr${SRCREV}" -PR = "r5" +PR = "r6" SRC_URI = "\ svn://svn.webkit.org/repository/webkit/trunk/;module=JavaScriptCore;proto=http \ -- cgit v1.2.3 From fd9078558befa2c11c0962017949d6cf597095c6 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 31 Oct 2008 11:53:10 +0100 Subject: glibc 2.6.1: bump PR for package.bbclass change --- packages/glibc/glibc_2.6.1.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/glibc/glibc_2.6.1.bb b/packages/glibc/glibc_2.6.1.bb index 1f72ff02e0..17050174b3 100644 --- a/packages/glibc/glibc_2.6.1.bb +++ b/packages/glibc/glibc_2.6.1.bb @@ -1,5 +1,5 @@ require glibc.inc -PR = "r14" +PR = "r15" PACKAGES_DYNAMIC = "libc6*" RPROVIDES_${PN}-dev = "libc6-dev virtual-libc-dev" -- cgit v1.2.3 From d00e1cb3d100ad9b528e72394a6d5440f06ed35c Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 31 Oct 2008 11:55:45 +0100 Subject: checksums.ini: add claws-mail --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index dec4b7ef0c..1d42f89890 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -2294,6 +2294,10 @@ sha256=056500e4f61f28791390270636ef279c326b090c8634c15faa59497fb3086c8b md5=97a0c627f91b51b6851b9a1ed9ee7afe sha256=d04db59df8b013651721312ed167df95d47c88d55eac0eb5b7950d6958f3636e +[http://downloads.sourceforge.net/sylpheed-claws/claws-mail-3.3.0.tar.bz2] +md5=646fea69bfa82be5f507e72e055957b6 +sha256=16d4a9ef3a2c62f879c688b7949f4d0b834b26c9905d16fee7d76432df29d8fd + [http://downloads.sourceforge.net/clearlooks/clearlooks-0.6.2.tar.bz2] md5=451ef33d1bffa261c5cbe01182199f97 sha256=be080113c9e9d137ee14eaf7f731c5ae58d24924748aaa725d0f061d59265f3b -- cgit v1.2.3 From 6628886e858d77a8f9f94dd3229143e144d39f0e Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 31 Oct 2008 11:57:54 +0100 Subject: initscripts: only run ldconfig on boot when ld.so.conf is present --- packages/initscripts/initscripts-1.0/bootmisc.sh | 6 ++++-- packages/initscripts/initscripts_1.0.bb | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/initscripts/initscripts-1.0/bootmisc.sh b/packages/initscripts/initscripts-1.0/bootmisc.sh index 2a40e0c410..dde1209be5 100755 --- a/packages/initscripts/initscripts-1.0/bootmisc.sh +++ b/packages/initscripts/initscripts-1.0/bootmisc.sh @@ -57,9 +57,11 @@ then fi # -# Update dynamic library cache +# Update dynamic library cache, but only if ld.so.conf is present # -/sbin/ldconfig +if [ -e /etc/ld.so.conf ] ; then + /sbin/ldconfig +fi # Set the system clock from hardware clock # If the timestamp is 1 day or more recent than the current time, diff --git a/packages/initscripts/initscripts_1.0.bb b/packages/initscripts/initscripts_1.0.bb index b1c43174e8..8daefc519d 100644 --- a/packages/initscripts/initscripts_1.0.bb +++ b/packages/initscripts/initscripts_1.0.bb @@ -4,7 +4,7 @@ PRIORITY = "required" DEPENDS = "makedevs" RDEPENDS = "makedevs" LICENSE = "GPL" -PR = "r109" +PR = "r110" SRC_URI = "file://functions \ file://halt \ -- cgit v1.2.3 From ddbfb1c5274327f0fe3955368b46090496c9795c Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Wed, 29 Oct 2008 16:18:01 +0100 Subject: checksums.ini: Added midpath 0.3rc1 entry. --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 1d42f89890..9017c2346e 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -10858,6 +10858,10 @@ sha256=e561f66262eaf6b9cbd8e84688184b7f3ba6cba0e34e9791e578bdef9adc7731 md5=afed8ebe979ce2ea189b117062aaa011 sha256=556729f60cf2de79a20627dd3f448a7b8dc164331576497f876a4a5c9179544f +[http://downloads.sourceforge.net/midpath/midpath-0.3rc1.tar.gz] +md5=89695ed5a40f6d818f792ee3666a0ecb +sha256=ebd1462109e03854ad26a14fcb96761076ce7b5f71af8a1801f0b71ccb101aba + [http://mikmod.raphnet.net/files/mikmod-3.2.2-beta1.tar.bz2] md5=006378681d520fa8ee1dacca965bbd3c sha256=0e760acb85584ea3e828989c5588f827f0dd845d3dd6948e2aea12bb6278651d -- cgit v1.2.3 From ea662c15729c1fb25be4ab1ea9010020aa2df34e Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 31 Oct 2008 16:07:36 +0100 Subject: linux omap git: add patch that implements downscaling for the overlay * this fixes: http://www.flickr.com/photos/koenkooi/2946825478/ --- .../0001-Implement-downsampling-with-debugs.patch | 138 +++++++++++++++++++++ packages/linux/linux-omap_git.bb | 3 +- 2 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 packages/linux/linux-omap/0001-Implement-downsampling-with-debugs.patch diff --git a/packages/linux/linux-omap/0001-Implement-downsampling-with-debugs.patch b/packages/linux/linux-omap/0001-Implement-downsampling-with-debugs.patch new file mode 100644 index 0000000000..d3608df9cb --- /dev/null +++ b/packages/linux/linux-omap/0001-Implement-downsampling-with-debugs.patch @@ -0,0 +1,138 @@ +From 1ef94095e9399a9a387b7b457b48f6c5de7013d8 Mon Sep 17 00:00:00 2001 +From: Tuomas Kulve +Date: Fri, 31 Oct 2008 14:23:57 +0200 +Subject: [PATCH] Implement downsampling (with debugs). + +--- + drivers/video/omap/dispc.c | 75 +++++++++++++++++++++++++++++++++++++------- + 1 files changed, 63 insertions(+), 12 deletions(-) + +diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c +index 68bc887..3640dbe 100644 +--- a/drivers/video/omap/dispc.c ++++ b/drivers/video/omap/dispc.c +@@ -18,6 +18,8 @@ + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ ++#define DEBUG ++#define VERBOSE_DEBUG + #include + #include + #include +@@ -545,6 +547,17 @@ static void write_firhv_reg(int plane, int reg, u32 value) + dispc_write_reg(base + reg * 8, value); + } + ++static void write_firv_reg(int plane, int reg, u32 value) ++{ ++ u32 base; ++ ++ if (plane == 1) ++ base = 0x1E0; ++ else ++ base = 0x1E0 + 0x20; ++ dispc_write_reg(base + reg * 4, value); ++} ++ + static void set_upsampling_coef_table(int plane) + { + const u32 coef[][2] = { +@@ -565,6 +578,27 @@ static void set_upsampling_coef_table(int plane) + } + } + ++static void set_downsampling_coef_table(int plane) ++{ ++ const u32 coef[][3] = { ++ { 0x24382400, 0x24382400, 0x00000000 }, ++ { 0x28371FFE, 0x28391F04, 0x000004FE }, ++ { 0x2C361BFB, 0x2D381B08, 0x000008FB }, ++ { 0x303516F9, 0x3237170C, 0x00000CF9 }, ++ { 0x11343311, 0x123737F7, 0x0000F711 }, ++ { 0x1635300C, 0x173732F9, 0x0000F90C }, ++ { 0x1B362C08, 0x1B382DFB, 0x0000FB08 }, ++ { 0x1F372804, 0x1F3928FE, 0x0000FE04 }, ++ }; ++ int i; ++ ++ for (i = 0; i < 8; i++) { ++ write_firh_reg(plane, i, coef[i][0]); ++ write_firhv_reg(plane, i, coef[i][1]); ++ write_firv_reg(plane, i, coef[i][2]); ++ } ++} ++ + static int omap_dispc_set_scale(int plane, + int orig_width, int orig_height, + int out_width, int out_height) +@@ -592,25 +626,47 @@ static int omap_dispc_set_scale(int plane, + if (orig_height > out_height || + orig_width * 8 < out_width || + orig_height * 8 < out_height) { ++ dev_dbg(dispc.fbdev->dev, ++ "Max upsampling is 8x, " ++ "tried: %dx%d -> %dx%d\n", ++ orig_width, orig_height, ++ out_width, out_height); + enable_lcd_clocks(0); + return -EINVAL; + } + set_upsampling_coef_table(plane); + } else if (orig_width > out_width) { +- /* Downsampling not yet supported +- */ +- +- enable_lcd_clocks(0); +- return -EINVAL; ++ /* ++ * Downsampling. ++ * Currently you can only scale both dimensions in one way. ++ */ ++ if (orig_height < out_height || ++ orig_width > out_width * 4|| ++ orig_height > out_height * 4) { ++ dev_dbg(dispc.fbdev->dev, ++ "Max downsampling is 4x, " ++ "tried: %dx%d -> %dx%d\n", ++ orig_width, orig_height, ++ out_width, out_height); ++ enable_lcd_clocks(0); ++ return -EINVAL; ++ } ++ set_downsampling_coef_table(plane); + } + if (!orig_width || orig_width == out_width) + fir_hinc = 0; + else +- fir_hinc = 1024 * orig_width / out_width; ++ fir_hinc = 1024 * (orig_width -1)/ (out_width -1); + if (!orig_height || orig_height == out_height) + fir_vinc = 0; + else +- fir_vinc = 1024 * orig_height / out_height; ++ fir_vinc = 1024 * (orig_height-1) / (out_height -1 ); ++ ++ dev_dbg(dispc.fbdev->dev, "out_width %d out_height %d orig_width %d " ++ "orig_height %d fir_hinc %d fir_vinc %d\n", ++ out_width, out_height, orig_width, orig_height, ++ fir_hinc, fir_vinc); ++ + dispc.fir_hinc[plane] = fir_hinc; + dispc.fir_vinc[plane] = fir_vinc; + +@@ -619,11 +675,6 @@ static int omap_dispc_set_scale(int plane, + ((fir_vinc & 4095) << 16) | + (fir_hinc & 4095)); + +- dev_dbg(dispc.fbdev->dev, "out_width %d out_height %d orig_width %d " +- "orig_height %d fir_hinc %d fir_vinc %d\n", +- out_width, out_height, orig_width, orig_height, +- fir_hinc, fir_vinc); +- + MOD_REG_FLD(vs_reg[plane], + FLD_MASK(16, 11) | FLD_MASK(0, 11), + ((out_height - 1) << 16) | (out_width - 1)); +-- +1.5.6.5 + diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb index ec1a071773..6512e101da 100644 --- a/packages/linux/linux-omap_git.bb +++ b/packages/linux/linux-omap_git.bb @@ -10,7 +10,7 @@ SRCREV = "2a3408be17f287fdb5809c9b6c68e7ad96d25b74" #PV = "2.6.26+2.6.27-rc7+${PR}+gitr${SRCREV}" PV = "2.6.27+${PR}+gitr${SRCREV}" -PR = "r3" +PR = "r4" SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \ file://defconfig" @@ -35,6 +35,7 @@ SRC_URI_append = " \ file://musb-fix-endpoints.diff;patch=1 \ file://dvb-fix-dma.diff;patch=1 \ file://0001-Removed-resolution-check-that-prevents-scaling-when.patch;patch=1 \ + file://0001-Implement-downsampling-with-debugs.patch;patch=1 \ " -- cgit v1.2.3 From ab81648dc5e30c0fca667d781fb2f50aa5d37048 Mon Sep 17 00:00:00 2001 From: woglinde Date: Fri, 31 Oct 2008 16:09:48 +0100 Subject: mx31ads.conf: remove extra PACKAGE_EXTRA_ARCHS * PACKAGE_EXTRA_ARCHS is now handled by the .tune files * patch comes from Mark Brown * closes bug 4788 --- conf/machine/mx31ads.conf | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/machine/mx31ads.conf b/conf/machine/mx31ads.conf index 6a5c09796b..de429c3cce 100644 --- a/conf/machine/mx31ads.conf +++ b/conf/machine/mx31ads.conf @@ -7,7 +7,6 @@ TARGET_ARCH = "arm" MACHINE_FEATURES = "kernel26 apm alsa ext2 pcmcia usbhost usbgadget" GUI_MACHINE_CLASS = "smallscreen" -PACKAGE_EXTRA_ARCHS = "arm armv4t armv5te armv6" PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}-kernel" -- cgit v1.2.3 From 113ebef499d1288fc54df39d9196088c78f08aa5 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 31 Oct 2008 16:24:41 +0100 Subject: xserver xorg: have beagleboard use xf86-video-omapfb to gain XV support --- .../xserver-xorg/beagleboard/xorg.conf | 135 +++++++++++++++++++++ packages/xorg-xserver/xserver-xorg_1.4.2.bb | 2 +- 2 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 packages/xorg-xserver/xserver-xorg/beagleboard/xorg.conf diff --git a/packages/xorg-xserver/xserver-xorg/beagleboard/xorg.conf b/packages/xorg-xserver/xserver-xorg/beagleboard/xorg.conf new file mode 100644 index 0000000000..1778960638 --- /dev/null +++ b/packages/xorg-xserver/xserver-xorg/beagleboard/xorg.conf @@ -0,0 +1,135 @@ + +# xorg configuration + +Section "ServerLayout" + Identifier "Default Layout" + Screen 0 "Screen0" 0 0 + InputDevice "Mouse0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" +EndSection + +Section "Files" + +# RgbPath is the location of the RGB database. Note, this is the name of the +# file minus the extension (like ".txt" or ".db"). There is normally +# no need to change the default. +# Multiple FontPath entries are allowed (they are concatenated together) +# By default, Red Hat 6.0 and later now use a font server independent of +# the X server to render fonts. +# FontPath "unix/:7100" + FontPath "/usr/lib/X11/fonts/misc" +EndSection + +Section "Module" + Load "dbe" + Load "extmod" + Load "fbdevhw" +# Load "glx" + Load "record" + Load "freetype" + Load "type1" +# to enable Xv, link /dev/videox to video device, eg. ln -s video0 /dev/videox +# Load "z4l" +EndSection + +Section "InputDevice" + +# Specify which keyboard LEDs can be user-controlled (eg, with xset(1)) +# Option "Xleds" "1 2 3" +# To disable the XKEYBOARD extension, uncomment XkbDisable. +# Option "XkbDisable" +# To customise the XKB settings to suit your keyboard, modify the +# lines below (which are the defaults). For example, for a non-U.S. +# keyboard, you will probably want to use: +# Option "XkbModel" "pc102" +# If you have a US Microsoft Natural keyboard, you can use: +# Option "XkbModel" "microsoft" +# +# Then to change the language, change the Layout setting. +# For example, a german layout can be obtained with: +# Option "XkbLayout" "de" +# or: +# Option "XkbLayout" "de" +# Option "XkbVariant" "nodeadkeys" +# +# If you'd like to switch the positions of your capslock and +# control keys, use: +# Option "XkbOptions" "ctrl:swapcaps" +# Or if you just want both to be control, use: +# Option "XkbOptions" "ctrl:nocaps" +# + Identifier "Keyboard0" + Driver "keyboard" + Option "XkbModel" "pc105" + Option "XkbLayout" "us" +EndSection + +Section "InputDevice" + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "IMPS/2" + Option "Device" "/dev/input/mice" + Option "ZAxisMapping" "4 5" + Option "Emulate3Buttons" "yes" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Monitor Vendor" + ModelName "NEC FP2141SB" +# DisplaySize 400 300 +# Note: setting HorizSync/VertRefresh will override DDC probe +# HorizSync 30.0 - 140.0 +# VertRefresh 25.0 - 160.0 + Option "dpms" +EndSection + +Section "Monitor" + Identifier "Monitor1" + VendorName "Generic Vendor" + ModelName "Generic Monitor" + HorizSync 28-50 + VertRefresh 43-73 + Modeline "800x600-60" 40.0000 800 840 976 1056 600 601 605 628 + Modeline "800x600-72" 50.0000 800 856 976 1040 600 637 643 666 + Modeline "640x480-60" 25.1749 640 656 744 800 480 490 492 525 -HSync -VSync + Modeline "640x480-72" 31.5000 640 664 704 832 480 489 492 520 -HSync -VSync + Option "dpms" +EndSection + + +Section "Device" + Identifier "FBDev" + Driver "omapfb" + #Option "shadowfb" "off" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "FBDev" + Monitor "Monitor0" + DefaultDepth 16 + + SubSection "Display" + Depth 8 + Modes "1024x768" "800x600" "640x480" + EndSubsection + + SubSection "Display" + Depth 16 + Modes "1024x768" "800x600" "640x480" + EndSubsection + + SubSection "Display" + Depth 24 + FbBpp 32 + Modes "1024x768" "800x600" "640x480" + EndSubsection + +EndSection + +Section "DRI" + Group 0 + Mode 0666 +EndSection + diff --git a/packages/xorg-xserver/xserver-xorg_1.4.2.bb b/packages/xorg-xserver/xserver-xorg_1.4.2.bb index 1abac8443f..562266ff39 100644 --- a/packages/xorg-xserver/xserver-xorg_1.4.2.bb +++ b/packages/xorg-xserver/xserver-xorg_1.4.2.bb @@ -3,7 +3,7 @@ require xorg-xserver-common.inc DESCRIPTION = "the X.Org X server" DEPENDS += "pixman" PE = "1" -PR = "r8" +PR = "r9" SRC_URI += "file://drmfix.patch;patch=1 \ file://pkgconfig_fix.patch;patch=1 \ -- cgit v1.2.3 From b8ca677049efa762d1117721e83d8b623d787f77 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 31 Oct 2008 16:25:37 +0100 Subject: beagleboard.conf: s/fbdev/omapfb/ for xserver --- conf/machine/beagleboard.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/machine/beagleboard.conf b/conf/machine/beagleboard.conf index 548cf764d1..a5f39cd8b3 100644 --- a/conf/machine/beagleboard.conf +++ b/conf/machine/beagleboard.conf @@ -7,7 +7,7 @@ PREFERRED_PROVIDER_virtual/xserver = "xserver-xorg" XSERVER = "xserver-xorg \ xf86-input-evdev \ xf86-input-mouse \ - xf86-video-fbdev \ + xf86-video-omapfb \ xf86-input-keyboard" # Only has DVI connector for external screen -- cgit v1.2.3 From a89c5801fe1dcc2f53c5c805faad5f1af01b3e7e Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 31 Oct 2008 16:26:15 +0100 Subject: angstrom-x11-base depends: bump PR for XSERVER change --- packages/angstrom/angstrom-x11-base-depends.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angstrom/angstrom-x11-base-depends.bb b/packages/angstrom/angstrom-x11-base-depends.bb index e542e4232a..cecb821faf 100644 --- a/packages/angstrom/angstrom-x11-base-depends.bb +++ b/packages/angstrom/angstrom-x11-base-depends.bb @@ -1,5 +1,5 @@ DESCRIPTION = "Task packages for the Angstrom distribution" -PR = "r38" +PR = "r39" inherit task -- cgit v1.2.3 From a00547e2190bd991120c3703a5265fda878fcae3 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 31 Oct 2008 16:27:08 +0100 Subject: task-x11: bump PR for XSERVER change --- packages/tasks/task-x11.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tasks/task-x11.bb b/packages/tasks/task-x11.bb index ad5ca3a412..fe8dfff198 100644 --- a/packages/tasks/task-x11.bb +++ b/packages/tasks/task-x11.bb @@ -2,7 +2,7 @@ DESCRIPTION = "The X Window System -- install this task to get a client/server b SECTION = "x11/server" LICENSE = "MIT" PV = "1.0" -PR = "r0" +PR = "r1" # WORK IN PROGRESS -- cgit v1.2.3 From bfa489ee37aa8c752bb5a7981caae1972fbb4329 Mon Sep 17 00:00:00 2001 From: woglinde Date: Fri, 31 Oct 2008 18:33:24 +0100 Subject: glib-2.0-native: fix installation of libgio * because we are not using autotools_stage for all stuff, libgio was missed * patch was provided by Gregoire Gentil --- packages/glib-2.0/glib-2.0-native_2.18.0.bb | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/glib-2.0/glib-2.0-native_2.18.0.bb b/packages/glib-2.0/glib-2.0-native_2.18.0.bb index 5684c5df49..2f34e0f080 100644 --- a/packages/glib-2.0/glib-2.0-native_2.18.0.bb +++ b/packages/glib-2.0/glib-2.0-native_2.18.0.bb @@ -25,6 +25,7 @@ do_stage () { oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR} oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR} oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR} + oe_libinstall -so -C gio libgio-2.0 ${STAGING_LIBDIR} autotools_stage_includes install -d ${STAGING_INCDIR}/glib-2.0/glib install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h -- cgit v1.2.3 From 9bbe04e5e84a731192e12553a41fe21358c331b9 Mon Sep 17 00:00:00 2001 From: woglinde Date: Fri, 31 Oct 2008 18:46:30 +0100 Subject: glib-2.0-native: bump PR --- packages/glib-2.0/glib-2.0-native_2.18.0.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/glib-2.0/glib-2.0-native_2.18.0.bb b/packages/glib-2.0/glib-2.0-native_2.18.0.bb index 2f34e0f080..0fec1533a6 100644 --- a/packages/glib-2.0/glib-2.0-native_2.18.0.bb +++ b/packages/glib-2.0/glib-2.0-native_2.18.0.bb @@ -1,7 +1,7 @@ require glib-2.0_${PV}.bb FILESPATH = "${FILE_DIRNAME}/glib-2.0-${PV}:${FILE_DIRNAME}/files" -PR = "r2" +PR = "r3" inherit native -- cgit v1.2.3 From 4fa13ca8099f9722f8c1c17828584f57a976dd2d Mon Sep 17 00:00:00 2001 From: Steffen Sledz Date: Fri, 31 Oct 2008 23:28:33 +0000 Subject: checksums.ini: Added u-boot checksums (OE#4787). --- conf/checksums.ini | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 9017c2346e..ed33204ff1 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -15150,6 +15150,10 @@ sha256=633d76612d73a7add41a3b90fe5721ea5f4282d52bd8408b9d4fab261443aa6c md5=8b766bb807c1f7c0c02ff798ea5db80e sha256=b4c6367ab85de8f148c903bb25dc69de7a7d7d05f204f58880a16a8b81bf93de +[ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.2.tar.bz2] +md5=f10b6954498bab5d08d0f50de381af50 +sha256=4f32cfd01f0678080f8e98009ba99ce37f1261d842e3af9a6b3add22005a80ca + [http://downloads.sourceforge.net/u-boot/u-boot-1.1.2.tar.bz2] md5=f10b6954498bab5d08d0f50de381af50 sha256=4f32cfd01f0678080f8e98009ba99ce37f1261d842e3af9a6b3add22005a80ca @@ -15174,6 +15178,14 @@ sha256=62192ddf019c5d24f6538b33c9e69b6e5792bf5b0f464c0149061e2f0871108b md5=17aeee76ca4c07887bbfea8a52d40884 sha256=62192ddf019c5d24f6538b33c9e69b6e5792bf5b0f464c0149061e2f0871108b +[ftp://ftp.denx.de/pub/u-boot/u-boot-1.3.0.tar.bz2] +md5=2298f6d6d5c52d42a90c44774ed07751 +sha256=a55d6d46120ea7625a9d2fe594f677690e7dc9e9b3151a6af0ebe25978458608 + +[ftp://ftp.denx.de/pub/u-boot/u-boot-1.3.1.tar.bz2] +md5=8fbd29c7e70c524a42d18b9c3f3a4aa1 +sha256=64811b4ab4ca362b01a3d08f53a2dbbf059e18484b90cb5e21c0365d53b87f77 + [ftp://ftp.denx.de/pub/u-boot/u-boot-1.3.2.tar.bz2] md5=78b1c2722d3907b5fae2cd219dbaf927 sha256=8ab07cd758a1775642629e624f70e376fa8e84a2f879dee4544158d9c90cde2a -- cgit v1.2.3 From 6427ffdc51f1e80ac0496376765260d5d6ce8ca4 Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Fri, 31 Oct 2008 23:30:44 +0000 Subject: checksums.ini: Added several missing checksums (atd, icewm, pxaregs, wwwoffle). --- conf/checksums.ini | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index ed33204ff1..95cee03291 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -1130,6 +1130,10 @@ sha256=3ec786e6df9e1a935aff4848b6989cad8f87c1fa8813dc033b338e18b17138d8 md5=81dbae5162aaa8a398a81424d6631c77 sha256=0d77c73a3c151a7da647dd924f32151e5ee4574530568fd65067882f79cd5a44 +[http://projects.linuxtogo.org/frs/download.php/222/atd-0.80.tar.gz] +md5=b64a8ae8592b4d32ac9baebf0b915c1e +sha256=456d2bf4550a37c70e829b3029acf3cb81f931908d35f1dbade7ec54f4cdb146 + [ftp://ftp.debian.org/debian/pool/main/a/atftp/atftp_0.7-7.diff.gz] md5=03ccc8d178ee956feb46ab970e982e94 sha256=71e8890e709ee77756368b8508f65c6c9bf8c6ed5e1501726ef30e1dc105d4f5 @@ -6918,6 +6922,10 @@ sha256=0138dc364ee23156a58d890a5b2c61685bd91ea0017accf90118b38fef2df1d3 md5=097b12d3f8e0f57a964e4821bc1825ed sha256=96ed51cbaead5bd8c33522be5bf0baac4c051db0a826f764eb8528b2ec0c5497 +[http://downloads.sourceforge.net/icewm/icewm-1.2.30.tar.gz] +md5=8a302c5e629bb81d87cc02004a694ece +sha256=4b802cf77ecf09bc44345f8fba3c11fd08dca0e8272e628b447ecf7289637e1d + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/ico-X11R7.0-1.0.1.tar.bz2] md5=9c63d68a779819ba79e45d9b15d26b1f sha256=9c8a1d037135642ab85391f92332fdfc22ceeb3ad1f2c0c9911ac5a62a12ee7d @@ -12922,6 +12930,10 @@ sha256=c7d82fbe1d008edfb5ae53879de24bb882b2cdbd9ee9aab67389910da499210e md5=11d4a1ba795b2b72476a3f8edecf23bc sha256=d3cce10825519a6e8a98872a90b176c806f6a37cac3cb047c36e0ba159bcf424 +[http://www.mn-logistik.de/unsupported/pxa250/pxaregs.c] +md5=a43baa88842cd5926dbffb6fb87624f6 +sha256=f339b91cd8ab348052c36b36d20033e4bffc3666bc836ff72d5704f025e1c057 + [http://mercury.chem.pitt.edu/~shank/py-libmpdclient-0.10.0.tar.gz] md5=3a26540b7e057f23187b56e85dc82f95 sha256=fad4e6ca8e9e2a9e4bcddc96194db69827164f65b8a35cb326d0c8cd3a870238 @@ -15890,6 +15902,10 @@ sha256=9dcbe3c0006ea63012c5a57720128170bef39b72d8e98e79ccbee202a3e7323f md5=907b0cba8931553d848620ea16f006b9 sha256=cff48f9a87e94672c7a819661a3a5c893ee44e763c6e5775d00aff3de43619b1 +[http://www.gedanken.demon.co.uk/download-wwwoffle/wwwoffle-2.9c.tgz] +md5=50208b5c8d5c125accd18f9760225f9e +sha256=6b134ac08daf1186c1cdd34fea4ad8c4f1ad2f52307db98786e262dc4243256c + [http://biolpc22.york.ac.uk/pub/CVS_HEAD/v1/wx-cvs-Gtk.tar.bz2] md5=cac58d215b73189e8574d1c361e771a6 sha256=1e09f6ad9dd987403f9549c2640680cf932ba00df5afa20a4531e98544b413a5 -- cgit v1.2.3 From 8551ab45b3576b00c564745de7a2dddafe2b8b1c Mon Sep 17 00:00:00 2001 From: Mike Westerhof Date: Fri, 31 Oct 2008 22:13:30 -0500 Subject: SlugOS: set preferred version for hal (newer hal requires a newer udev as well) --- conf/distro/include/slugos.inc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/conf/distro/include/slugos.inc b/conf/distro/include/slugos.inc index 0e58afd243..fdbeb2d04c 100644 --- a/conf/distro/include/slugos.inc +++ b/conf/distro/include/slugos.inc @@ -158,6 +158,9 @@ PREFERRED_VERSION_pango ?= 1.20.5 PREFERRED_VERSION_glib-2.0 ?= 2.16.1 PREFERRED_VERSION_cairo ?= 1.4.8 +# Stay with older hal because of udev dependency +PREFERRED_VERSION_hal ?= 0.5.9 + # Stick with an older gettext and e2fsprogs stuff # and gnutls... (our autotools is too old at the moment) PREFERRED_VERSION_gnutls ?= "1.6.3" -- cgit v1.2.3 From 6f074889f6d4bb71365aee278b49723b7412130f Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 1 Nov 2008 09:39:29 +0100 Subject: beagleboard demo image: include synergy and x11vnc --- packages/images/beagleboard-demo-image.bb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/images/beagleboard-demo-image.bb b/packages/images/beagleboard-demo-image.bb index d746f0d9d0..4a4b33f4d0 100644 --- a/packages/images/beagleboard-demo-image.bb +++ b/packages/images/beagleboard-demo-image.bb @@ -39,6 +39,8 @@ IMAGE_INSTALL = "\ gnome-games \ rt73-firmware zd1211-firmware \ stalonetray \ + synergy \ + x11vnc \ " IMAGE_PREPROCESS_COMMAND = "create_etc_timestamp" -- cgit v1.2.3 From a7ad183cfeaea9d2c9210382a5f38a4943bd6115 Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Sat, 1 Nov 2008 14:35:48 +0000 Subject: checksums.ini: Added checksums for SDL_gfx, kxml2, libhildonfm, libhildonmime, osso-gnome-vfs2, gpsbabel, rxtx and xmlpull. --- conf/checksums.ini | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 95cee03291..03f470e958 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -474,6 +474,10 @@ sha256=d5a168968051536641ab5a3ba5fc234383511c77a8bc5ceb8bed619bdd42e5f9 md5=10f6432ede2b239796f2924bdc7224b4 sha256=6a3ef9f5556a3d75832b2b9138bdf3551dc59994d2849307f88a9dcd9732d16c +[http://www.ferzkopp.net/~aschiffler/Software/SDL_gfx-2.0/SDL_gfx-2.0.17.tar.gz] +md5=a7ab98ad530fdc59a23f7dff502db8d3 +sha256=d08d8477ff1c6639bc7193b76a415f996c98604600e9fa4e718fd4e9283f83f4 + [http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.3.tar.gz] md5=d55826ffbd2bdc48b09cc64a9ed9e59e sha256=2f710b94f547ec7e39844f7872e1fe8d6fe2a434c896cc8a54b5540854bb5a69 @@ -7514,6 +7518,10 @@ sha256=125fcecc9f650dc2ec82db3194d17c0af40b48900204fedb0c695b5fcc5a99e3 md5=c2701d7f8e094b41aa5a7c771b981393 sha256=204156fadfdefb31f6cbd3d0d7e5cb032af40c037a0682c75651c3191de09150 +[http://downloads.sourceforge.net/kxml/kxml2-src-2.3.0.zip] +md5=cb830720148bad0c555a02b27e1e7f9a +sha256=f2441575236be69a460c6a54344b6ba8b8ba03fd0bab242b989f4f0976944cd8 + [http://handhelds.org/~zecke/oe_packages/labyrinth-0.7-zecke1.tar.gz] md5=027e5fd07dd6bd6c1f25161a266a0646 sha256=547088fbbc3c3f4e60544dca8500c5f7097911427fd7dd04ad082db03f117001 @@ -8894,6 +8902,10 @@ sha256=44a7942eaa7ed7f640b3c3b700289f2363bb7264a7443853bdc0786e92ed6346 md5=204be732181d57af01a35ec5fbe072bf sha256=f77ecd176be0c470d25431e2f8868bb78179ff1c52f5dd96bb093b13c2718ae2 +[http://repository.maemo.org/pool/maemo4.0/free/source/libh/libhildonfm/libhildonfm_1.9.46.tar.gz] +md5=2077191776071a94af3194dbeefdab38 +sha256=8df5de457571e93ffd9220b6c45378ffe8742f047d386a3c56e265baeb33607f + [http://repository.maemo.org/pool/maemo4.1/free/libh/libhildonfm/libhildonfm_2.0.5.tar.gz] md5=0196b326a048e4d1a1ac009f71e235ec sha256=5065b98c01d9cbd4f7c5a769e659ce1f81cf3396f7c6e7af7785215cd18d7910 @@ -8910,6 +8922,10 @@ sha256=b2219de48715579d589705cb7b88af8d3dd3cf18de0fd3d799241720b2384bdf md5=f02c47001669ef103a22dbde4aa97d2b sha256=46ad5df524cc74ab728e2a23b4ddc17f2624feb517c2d011b2b32c95ace3ecaf +[http://repository.maemo.org/pool/maemo4.0/free/source/libh/libhildonmime/libhildonmime_1.10.0-1.tar.gz] +md5=1ff70dcec31b796602d6fb9bb0c14837 +sha256=65d47c8678689d04c3bede17bde3aefffa0ce5527f72b1a0c5356fa0588b784d + [http://archive.ubuntu.com/ubuntu/pool/universe/libh/libhildonmime/libhildonmime_1.9.5-1ubuntu1.tar.gz] md5=2320b71819d44dc40a974cb67084f2a7 sha256=6815f0a46de672711866b031c09ed8a94e1cbbe193c6a6b5cb72286ff90cfe54 @@ -11854,6 +11870,10 @@ sha256=1a84b7d4939313e9b7ec0ce8f50934251fe1569e6144931dd323de8ee8dacccd md5=a3752aae572d3a621990d0b1db38a0eb sha256=9cf40c2e07cbc55576bb4b09fc406351533e0b06064e935c73f7c5aedde13b81 +[http://repository.maemo.org/pool/maemo4.0/free/source/o/osso-gnome-vfs2/osso-gnome-vfs2_2.16.3-1osso31.tar.gz] +md5=dc5d48a94d4d41db9e34a6ddf646a355 +sha256=01e4e2331df788bddd1e3453ee490c086d4f669c4cbca7a41ff2c15d3b7d6b84 + [http://repository.maemo.org/pool/maemo/ossw/source/o/osso-gwconnect/osso-gwconnect_0.70.1.tar.gz] md5=e4a87e616807dfd8557663a28990e948 sha256=1bebf4c6adf9d383014bf0da8f133c0dbb6aa420033347e8e1f307f79051bc86 @@ -12438,6 +12458,10 @@ sha256=08a0e072d6a05419a58124db864f0685e6ac96e71b2875bf15ac12714e983b53 md5=a7e4f60a6657dbc434334deb594cc242 sha256=a0aff7f241d74db8fcf42fed4d2c5d7737193a3781faf9a78473ceeab92d152a +[http://www.gpsbabel.org/plan9.php?dl=gpsbabel-1.3.5.tar.gz] +md5=1bea8cd22c24ee9c0cc769770c86a340 +sha256=fd49f87432b707c487805a4291689eaf4a379dceb71c023560ef8ac34f18e76c + [http://www.rpsys.net/openzaurus/patches/archive/pm_changes-r1.patch] md5=e10058b52841d138630b69b954bea0b9 sha256=779561c658ccb190f3a2cd7626e4a229834c5f9b093be8f7a06bbfaf12121b9c @@ -13698,6 +13722,10 @@ sha256=597cefac4535d7f3b752253e5997b3c851c261b26b966a39beb032dcf1d5baa7 md5=3fbb02294a8ca33d4684055adba5ed6f sha256=19590e972b80333e26a6514c34d976c2037138361481a16f27b75e5d33f33a58 +[http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7r2.zip] +md5=9290b4832d46199f8d798a531209640b +sha256=31db3852a86105766758975519b27d262407c96cacad4f34ad0de5aae26addd9 + [http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-4.8.tar.bz2] md5=b8f69ee5a4a2cd195892107be3a3cb29 sha256=de644640cf71a6ce72f27ac6489b65434105fc6c94538c471925a15e2259b796 @@ -17342,6 +17370,10 @@ sha256=e9cb13ed6ae88cdeffe200ea1ec008b2413f182171c9d1ee7dede049f61df473 md5=53af2f87dc096d84f11ca6fbd6748b34 sha256=e86cbfb7d4fcad741751afd2e1304c41af42af3d95d09745cc27fb34200d5b8b +[http://xmlpull.org/v1/download/xmlpull_1_1_3_4c_src.tgz] +md5=34c8a093e5678dd633411dfea88f8558 +sha256=e17aa1a26119966258a3656a262bbba0f0b036eecb6d9bf192cf4b497686f4c3 + [http://www.xmms.org/files/1.2.x/xmms-1.2.10.tar.bz2] md5=03a85cfc5e1877a2e1f7be4fa1d3f63c sha256=ff9eabae2074043294a19ec7beaf0959bd076f6cd60558264faeec08f4a0eb6a -- cgit v1.2.3 From 00b342d97ba15e64c491c8068008619c8ad708b7 Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Sat, 1 Nov 2008 14:36:44 +0000 Subject: gpe-soundbite: Added missing space in LDFLAGS_append. --- packages/gpe-soundbite/gpe-soundbite_1.0.6.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/gpe-soundbite/gpe-soundbite_1.0.6.bb b/packages/gpe-soundbite/gpe-soundbite_1.0.6.bb index a38a721aa7..5297d3250d 100644 --- a/packages/gpe-soundbite/gpe-soundbite_1.0.6.bb +++ b/packages/gpe-soundbite/gpe-soundbite_1.0.6.bb @@ -7,4 +7,4 @@ DESCRIPTION = "GPE audio Recorder" DEPENDS = "gtk+ libgpewidget libglade libgsm gpe-soundserver" SECTION = "gpe/multimedia" PRIORITY = "optional" -LDFLAGS_append = "-Wl,--export-dynamic" +LDFLAGS_append = " -Wl,--export-dynamic" -- cgit v1.2.3 From 6d3e12c5425fea38e1157a8f488e9aab9e479879 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 1 Nov 2008 16:10:08 +0100 Subject: checksums.ini: add links --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 03f470e958..3981473961 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -9942,6 +9942,10 @@ sha256=cfde4a06df9fb4f26f8629d4ed3320ea813ba05a25217ec4ff55bbe5da04f504 md5=841af2540c789e254b8465e07e24c684 sha256=c89f10d42be2a0be8a017e1084897b1aabc5bca76817e9dab43b758dff051c56 +[http://links.twibright.com/download/links-2.1pre30.tar.bz2] +md5=f0f107cc824b71e43f0c6ab620209daf +sha256=f32314d851e86ec463967ddce78d051e3953b529878cbaeecf882c625ad29c75 + [http://www.xora.org.uk/oe/links2.png] md5=477e8787927c634614bac01b44355a33 sha256=eddcd8b8c8698aa621d1a453943892d77b72ed492e0d14e0dbac5c6a57e52f47 -- cgit v1.2.3 From 17a0396a91980ee43fdec12a527716f95a6db14c Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Sat, 1 Nov 2008 16:46:44 +0100 Subject: libserial 0.5.2: add recipe. C++ library supporting serial port programming --- packages/libserial/libserial_0.5.2.bb | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 packages/libserial/libserial_0.5.2.bb diff --git a/packages/libserial/libserial_0.5.2.bb b/packages/libserial/libserial_0.5.2.bb new file mode 100644 index 0000000000..ee7872b300 --- /dev/null +++ b/packages/libserial/libserial_0.5.2.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "C++ library for serial port support." +SECTION = "libs" +LICENSE = "GPL" +HOMEPAGE = "http://libserial.sourceforge.net/mediawiki/index.php/Main_Page" + +SRC_URI = "${SOURCEFORGE_MIRROR}/libserial/libserial-${PV}.tar.gz" + +inherit autotools pkgconfig + +do_stage() { + autotools_stage_all +} + -- cgit v1.2.3 From 7fd785dc8adf10b8dd79f085f9d8b619cb25b8e3 Mon Sep 17 00:00:00 2001 From: Philip Balister Date: Sat, 1 Nov 2008 14:14:47 -0400 Subject: gnuradio : Update gnuradio_svn build * Bump source revision * Do not build usrp1 and usrp2 code * Add patch for NEON Fir filter --- conf/distro/include/sane-srcrevs.inc | 2 +- packages/gnuradio/gnuradio.inc | 7 +++++-- packages/gnuradio/gnuradio_svn.bb | 5 ++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc index aa0f82322d..2013c87272 100644 --- a/conf/distro/include/sane-srcrevs.inc +++ b/conf/distro/include/sane-srcrevs.inc @@ -52,7 +52,7 @@ SRCREV_pn-fso-gpsd ?= "8f82d35ae83fdc00f2c4786257e98551b9dea995" SRCREV_pn-fso-sounds ?= "b24d3c2e66fee10a5e288101cd1b6f5bbd3da7e2" SRCREV_pn-fstests ?= "204" SRCREV_pn-gconf-dbus ?= "641" -SRCREV_pn-gnuradio ?= "9721" +SRCREV_pn-gnuradio ?= "9809" SRCREV_pn-gpe-contacts ?= "9312" SRCREV_pn-gpe-sketchbook ?= "9547" SRCREV_pn-gsm0710muxd ?= "3ff86b129640b647ccba3d86eb243d864671b039" diff --git a/packages/gnuradio/gnuradio.inc b/packages/gnuradio/gnuradio.inc index a084b1cae0..087dde0774 100644 --- a/packages/gnuradio/gnuradio.inc +++ b/packages/gnuradio/gnuradio.inc @@ -2,9 +2,12 @@ DESCRIPTION = "GNU Radio" SECTION = "apps" PRIORITY = "optional" LICENSE = "GPL" -DEPENDS = " guile-native fftwf python libusb virtual/libsdl alsa-lib jack boost cppunit sdcc-native swig-native" +DEPENDS = " guile-native fftwf python virtual/libsdl alsa-lib jack boost cppunit sdcc-native swig-nativei python-numpy" + +RDEPENDS_${PN} = "python-core python-audio python-threading python-codecs python-lang python-textutils python-shell python-pickle python-comp +iler python-pkgutil python-pydoc python-mmap python-netclient python-unittest py +thon-difflib python-pprint python-numpy" -RDEPENDS_${PN} = "python-core python-audio python-threading python-codecs python-lang python-textutils" RDEPENDS_gnuradio-usrp = "python-core" inherit autotools pkgconfig diff --git a/packages/gnuradio/gnuradio_svn.bb b/packages/gnuradio/gnuradio_svn.bb index 3d4f12aa7d..7af4230bc1 100644 --- a/packages/gnuradio/gnuradio_svn.bb +++ b/packages/gnuradio/gnuradio_svn.bb @@ -3,14 +3,13 @@ require gnuradio.inc DEFAULT_PREFERENCE = "-1" PV = "3.1.3+svnr${SRCREV}" -PR = "r4" +PR = "r5" EXTRA_OECONF += "--with-boost=${STAGING_DIR_TARGET}/usr CXXFLAGS=-DBOOST_SP_USE_PTHREADS --disable-usrp1 --disable--usrp2" SRC_URI = "svn://gnuradio.org/svn/gnuradio/;module=trunk;proto=http \ file://no-usrp2.patch;patch=1 \ -# file://no-trellis-doc.patch;patch=1 \ -# file://gnuradio-neon.patch;patch=1;pnum=0 \ + file://gnuradio-neon.patch;patch=1;pnum=0 \ " S="${WORKDIR}/trunk" -- cgit v1.2.3 From b833a7f26a79a6708643b3c729d98d45a88e171c Mon Sep 17 00:00:00 2001 From: Philip Balister Date: Sat, 1 Nov 2008 14:17:32 -0400 Subject: gnuradio : Add patch that adds NEON support. --- packages/gnuradio/gnuradio/gnuradio-neon.patch | 943 +++++++++++++++++++++++++ 1 file changed, 943 insertions(+) create mode 100644 packages/gnuradio/gnuradio/gnuradio-neon.patch diff --git a/packages/gnuradio/gnuradio/gnuradio-neon.patch b/packages/gnuradio/gnuradio/gnuradio-neon.patch new file mode 100644 index 0000000000..3affda547f --- /dev/null +++ b/packages/gnuradio/gnuradio/gnuradio-neon.patch @@ -0,0 +1,943 @@ +Index: gnuradio-core/src/lib/runtime/gr_dispatcher.cc +=================================================================== +--- gnuradio-core/src/lib/runtime/gr_dispatcher.cc (revision 9831) ++++ gnuradio-core/src/lib/runtime/gr_dispatcher.cc (working copy) +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + #ifdef HAVE_SELECT + # ifdef HAVE_SYS_SELECT_H +Index: gnuradio-core/src/lib/filter/dotprod_fff_cortex_a8.c +=================================================================== +--- gnuradio-core/src/lib/filter/dotprod_fff_cortex_a8.c (revision 0) ++++ gnuradio-core/src/lib/filter/dotprod_fff_cortex_a8.c (revision 0) +@@ -0,0 +1,85 @@ ++/* -*- c++ -*- */ ++/* ++ * Copyright 2008 Free Software Foundation, Inc. ++ * ++ * This file is part of GNU Radio ++ * ++ * GNU Radio 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 3, or (at your option) ++ * any later version. ++ * ++ * GNU Radio is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License along ++ * with this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ */ ++ ++#ifdef HAVE_CONFIG_H ++#include ++#endif ++#include ++ ++/*! ++ * \param x any value ++ * \param pow2 must be a power of 2 ++ * \returns \p x rounded down to a multiple of \p pow2. ++ */ ++static inline size_t ++gr_p2_round_down(size_t x, size_t pow2) ++{ ++ return x & -pow2; ++} ++ ++ ++#if 0 ++ ++float ++dotprod_fff_cortex_a8(const float *a, const float *b, size_t n) ++{ ++ float sum = 0; ++ size_t i; ++ for (i = 0; i < n; i++){ ++ sum += a[i] * b[i]; ++ } ++ return sum; ++} ++ ++#else ++ ++/* ++ * preconditions: ++ * ++ * n > 0 and a multiple of 4 ++ * a 4-byte aligned ++ * b 16-byte aligned ++ */ ++float ++dotprod_fff_cortex_a8(const float *a, const float *b, size_t n) ++{ ++ float s = 0; ++ ++ asm ("vmov.f32 q8, #0.0 \n\t" ++ "vmov.f32 q9, #0.0 \n\t" ++ "1: \n\t" ++ "subs %3, %3, #8 \n\t" ++ "vld1.32 {d0,d1,d2,d3}, [%1]! \n\t" ++ "vld1.32 {d4,d5,d6,d7}, [%2]! \n\t" ++ "vmla.f32 q8, q0, q2 \n\t" ++ "vmla.f32 q9, q1, q3 \n\t" ++ "bgt 1b \n\t" ++ "vadd.f32 q8, q8, q9 \n\t" ++ "vpadd.f32 d0, d16, d17 \n\t" ++ "vadd.f32 %0, s0, s1 \n\t" ++ : "=w"(s), "+r"(a), "+r"(b), "+r"(n) ++ :: "q0", "q1", "q2", "q3", "q8", "q9"); ++ ++ return s; ++ ++} ++ ++#endif +Index: gnuradio-core/src/lib/filter/dotprod_fff_cortex_a8.h +=================================================================== +--- gnuradio-core/src/lib/filter/dotprod_fff_cortex_a8.h (revision 0) ++++ gnuradio-core/src/lib/filter/dotprod_fff_cortex_a8.h (revision 0) +@@ -0,0 +1,49 @@ ++/* -*- c++ -*- */ ++/* ++ * Copyright 2008 Free Software Foundation, Inc. ++ * ++ * This file is part of GNU Radio ++ * ++ * GNU Radio 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 3, or (at your option) ++ * any later version. ++ * ++ * GNU Radio is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License along ++ * with this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ */ ++#ifndef INCLUDED_DOTPROD_FFF_CORTEX_A8_H ++#define INCLUDED_DOTPROD_FFF_CORTEX_A8_H ++ ++#include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/*! ++ *
++ *
++ *  preconditions:
++ *
++ *    n > 0 and a multiple of 4
++ *    a   4-byte aligned
++ *    b  16-byte aligned
++ *
++ * 
++ */ ++float ++dotprod_fff_cortex_a8(const float *a, const float *b, size_t n); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++ ++#endif /* INCLUDED_DOTPROD_FFF_CORTEX_A8_H */ +Index: gnuradio-core/src/lib/filter/Makefile.am +=================================================================== +--- gnuradio-core/src/lib/filter/Makefile.am (revision 9831) ++++ gnuradio-core/src/lib/filter/Makefile.am (working copy) +@@ -177,7 +177,16 @@ + powerpc_qa_CODE = \ + qa_dotprod_powerpc.cc + ++cortex_a8_CODE = \ ++ sysconfig_cortex_a8.cc \ ++ gr_fir_sysconfig_cortex_a8.cc \ ++ gr_cpu_cortex_a8.cc \ ++ gr_fir_fff_cortex_a8.cc \ ++ dotprod_fff_cortex_a8.c + ++cortex_a8_qa_CODE = \ ++ qa_dotprod_cortex_a8.cc ++ + # + # include each _CODE entry here... + # +@@ -189,7 +198,9 @@ + $(x86_64_SUBCODE) \ + $(x86_qa_CODE) \ + $(powerpc_CODE) \ +- $(powerpc_qa_CODE) ++ $(powerpc_qa_CODE) \ ++ $(cortex_a8_CODE) \ ++ $(cortex_a8_qa_CODE) + + + EXTRA_DIST = \ +@@ -254,7 +265,12 @@ + libfilter_qa_la_SOURCES = $(libfilter_qa_la_common_SOURCES) $(powerpc_qa_CODE) + endif + ++if MD_CPU_cortex_a8 ++libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(cortex_a8_CODE) ++libfilter_qa_la_SOURCES = $(libfilter_qa_la_common_SOURCES) $(cortex_a8_qa_CODE) ++endif + ++ + grinclude_HEADERS = \ + $(GENERATED_H) \ + complex_dotprod_generic.h \ +@@ -296,6 +312,7 @@ + noinst_HEADERS = \ + assembly.h \ + dotprod_fff_altivec.h \ ++ dotprod_fff_cortex_a8.h \ + gr_fir_scc_simd.h \ + gr_fir_scc_x86.h \ + gr_fir_fcc_simd.h \ +@@ -305,6 +322,7 @@ + gr_fir_ccc_simd.h \ + gr_fir_ccc_x86.h \ + gr_fir_fff_altivec.h \ ++ gr_fir_fff_cortex_a8.h \ + gr_fir_fff_simd.h \ + gr_fir_fff_x86.h \ + gr_fir_fsf_simd.h \ +Index: gnuradio-core/src/lib/filter/gr_fir_sysconfig_cortex_a8.cc +=================================================================== +--- gnuradio-core/src/lib/filter/gr_fir_sysconfig_cortex_a8.cc (revision 0) ++++ gnuradio-core/src/lib/filter/gr_fir_sysconfig_cortex_a8.cc (revision 0) +@@ -0,0 +1,340 @@ ++/* -*- c++ -*- */ ++/* ++ * Copyright 2002,2008 Free Software Foundation, Inc. ++ * ++ * This file is part of GNU Radio ++ * ++ * GNU Radio 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 3, or (at your option) ++ * any later version. ++ * ++ * GNU Radio 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 GNU Radio; see the file COPYING. If not, write to ++ * the Free Software Foundation, Inc., 51 Franklin Street, ++ * Boston, MA 02110-1301, USA. ++ */ ++#ifdef HAVE_CONFIG_H ++#include ++#endif ++#include ++#include ++ ++#include ++#include ++//#include ++#include ++#include ++//#include ++#include ++#include ++#include ++#include ++#include ++//#include ++#include ++#include ++//#include ++#include ++#include ++//#include ++ ++#include ++using std::cerr; ++ ++/* ++ * ---------------------------------------------------------------- ++ * static functions that serve as constructors... ++ * ---------------------------------------------------------------- ++ */ ++ ++#if 0 ++static gr_fir_ccf * ++make_gr_fir_ccf_altivec(const std::vector &taps) ++{ ++ return new gr_fir_ccf_altivec(taps); ++} ++ ++static gr_fir_fcc * ++make_gr_fir_fcc_altivec(const std::vector &taps) ++{ ++ return new gr_fir_fcc_altivec(taps); ++} ++ ++static gr_fir_ccc * ++make_gr_fir_ccc_altivec (const std::vector &taps) ++{ ++ return new gr_fir_ccc_altivec (taps); ++} ++#endif ++ ++static gr_fir_fff * ++make_gr_fir_fff_cortex_a8 (const std::vector &taps) ++{ ++ return new gr_fir_fff_cortex_a8 (taps); ++} ++ ++#if 0 ++static gr_fir_fsf * ++make_gr_fir_fsf_altivec (const std::vector &taps) ++{ ++ return new gr_fir_fsf_altivec (taps); ++} ++ ++static gr_fir_scc * ++make_gr_fir_scc_altivec(const std::vector &taps) ++{ ++ return new gr_fir_scc_altivec(taps); ++} ++#endif ++ ++/* ++ * ---------------------------------------------------------------- ++ * Return instances of the fastest powerpc versions of these classes. ++ * ++ * check CPUID, if has altivec, return altivec version, ++ * else return generic version. ++ * ---------------------------------------------------------------- ++ */ ++ ++gr_fir_ccf * ++gr_fir_sysconfig_cortex_a8::create_gr_fir_ccf (const std::vector &taps) ++{ ++ static bool first = true; ++ ++#if 0 ++ if (gr_cpu::has_altivec ()){ ++ if (first){ ++ cerr << ">>> gr_fir_ccf: using altivec\n"; ++ first = false; ++ } ++ return make_gr_fir_ccf_altivec (taps); ++ } ++#endif ++ ++ if (0 && first){ ++ cerr << ">>> gr_fir_ccf: handing off to parent class\n"; ++ first = false; ++ } ++ return gr_fir_sysconfig_generic::create_gr_fir_ccf (taps); ++} ++ ++gr_fir_fcc * ++gr_fir_sysconfig_cortex_a8::create_gr_fir_fcc (const std::vector &taps) ++{ ++ static bool first = true; ++ ++#if 0 ++ if (gr_cpu::has_altivec ()){ ++ if (first){ ++ cerr << ">>> gr_fir_fcc: using altivec\n"; ++ first = false; ++ } ++ return make_gr_fir_fcc_altivec (taps); ++ } ++#endif ++ ++ if (0 && first){ ++ cerr << ">>> gr_fir_fcc: handing off to parent class\n"; ++ first = false; ++ } ++ return gr_fir_sysconfig_generic::create_gr_fir_fcc (taps); ++} ++ ++gr_fir_ccc * ++gr_fir_sysconfig_cortex_a8::create_gr_fir_ccc (const std::vector &taps) ++{ ++ static bool first = true; ++ ++#if 0 ++ if (gr_cpu::has_altivec ()){ ++ if (first){ ++ cerr << ">>> gr_fir_ccc: using altivec\n"; ++ first = false; ++ } ++ return make_gr_fir_ccc_altivec (taps); ++ } ++#endif ++ ++ if (0 && first){ ++ cerr << ">>> gr_fir_ccc: handing off to parent class\n"; ++ first = false; ++ } ++ return gr_fir_sysconfig_generic::create_gr_fir_ccc (taps); ++} ++ ++gr_fir_fff * ++gr_fir_sysconfig_cortex_a8::create_gr_fir_fff (const std::vector &taps) ++{ ++ static bool first = true; ++ ++ if (gr_cpu::has_cortex_a8 ()){ ++ if (first){ ++ cerr << ">>> gr_fir_fff: using cortex_a8\n"; ++ first = false; ++ } ++ return make_gr_fir_fff_cortex_a8 (taps); ++ } ++ ++ if (0 && first){ ++ cerr << ">>> gr_fir_fff: handing off to parent class\n"; ++ first = false; ++ } ++ return gr_fir_sysconfig_generic::create_gr_fir_fff (taps); ++} ++ ++gr_fir_fsf * ++gr_fir_sysconfig_cortex_a8::create_gr_fir_fsf (const std::vector &taps) ++{ ++ static bool first = true; ++ ++#if 0 ++ if (gr_cpu::has_altivec ()){ ++ if (first){ ++ cerr << ">>> gr_fir_fsf: using altivec\n"; ++ first = false; ++ } ++ return make_gr_fir_fsf_altivec (taps); ++ } ++#endif ++ ++ if (0 && first){ ++ cerr << ">>> gr_fir_fsf: handing off to parent class\n"; ++ first = false; ++ } ++ return gr_fir_sysconfig_generic::create_gr_fir_fsf (taps); ++} ++ ++ ++gr_fir_scc * ++gr_fir_sysconfig_cortex_a8::create_gr_fir_scc (const std::vector &taps) ++{ ++ static bool first = true; ++ ++#if 0 ++ if (gr_cpu::has_altivec ()){ ++ if (first){ ++ cerr << ">>> gr_fir_scc: using altivec\n"; ++ first = false; ++ } ++ return make_gr_fir_scc_altivec (taps); ++ } ++#endif ++ ++ if (0 && first){ ++ cerr << ">>> gr_fir_scc: handing off to parent class\n"; ++ first = false; ++ } ++ return gr_fir_sysconfig_generic::create_gr_fir_scc (taps); ++} ++ ++/* ++ * ---------------------------------------------------------------- ++ * Return info about available implementations ++ * ---------------------------------------------------------------- ++ */ ++ ++void ++gr_fir_sysconfig_cortex_a8::get_gr_fir_ccf_info (std::vector *info) ++{ ++ // invoke parent.. ++ gr_fir_sysconfig_generic::get_gr_fir_ccf_info (info); ++ ++#if 0 ++ // add our stuff... ++ gr_fir_ccf_info t; ++ if (gr_cpu::has_altivec ()){ ++ t.name = "altivec"; ++ t.create = make_gr_fir_ccf_altivec; ++ (*info).push_back (t); ++ } ++#endif ++} ++ ++void ++gr_fir_sysconfig_cortex_a8::get_gr_fir_fcc_info (std::vector *info) ++{ ++ // invoke parent.. ++ gr_fir_sysconfig_generic::get_gr_fir_fcc_info (info); ++ ++#if 0 ++ // add our stuff... ++ gr_fir_fcc_info t; ++ if (gr_cpu::has_altivec ()){ ++ t.name = "altivec"; ++ t.create = make_gr_fir_fcc_altivec; ++ (*info).push_back (t); ++ } ++#endif ++} ++ ++void ++gr_fir_sysconfig_cortex_a8::get_gr_fir_ccc_info (std::vector *info) ++{ ++ // invoke parent.. ++ gr_fir_sysconfig_generic::get_gr_fir_ccc_info (info); ++ ++#if 0 ++ // add our stuff... ++ gr_fir_ccc_info t; ++ if (gr_cpu::has_altivec ()){ ++ t.name = "altivec"; ++ t.create = make_gr_fir_ccc_altivec; ++ (*info).push_back (t); ++ } ++#endif ++} ++ ++void ++gr_fir_sysconfig_cortex_a8::get_gr_fir_fff_info (std::vector *info) ++{ ++ // invoke parent.. ++ gr_fir_sysconfig_generic::get_gr_fir_fff_info (info); ++ ++ // add our stuff... ++ gr_fir_fff_info t; ++ if (gr_cpu::has_cortex_a8 ()){ ++ t.name = "cortex_a8"; ++ t.create = make_gr_fir_fff_cortex_a8; ++ (*info).push_back (t); ++ } ++} ++ ++void ++gr_fir_sysconfig_cortex_a8::get_gr_fir_fsf_info (std::vector *info) ++{ ++ // invoke parent.. ++ gr_fir_sysconfig_generic::get_gr_fir_fsf_info (info); ++ ++#if 0 ++ // add our stuff... ++ gr_fir_fsf_info t; ++ if (gr_cpu::has_altivec ()){ ++ t.name = "altivec"; ++ t.create = make_gr_fir_fsf_altivec; ++ (*info).push_back (t); ++ } ++#endif ++} ++ ++void ++gr_fir_sysconfig_cortex_a8::get_gr_fir_scc_info (std::vector *info) ++{ ++ // invoke parent.. ++ gr_fir_sysconfig_generic::get_gr_fir_scc_info (info); ++ ++#if 0 ++ // add our stuff... ++ gr_fir_scc_info t; ++ if (gr_cpu::has_altivec ()){ ++ t.name = "altivec"; ++ t.create = make_gr_fir_scc_altivec; ++ (*info).push_back (t); ++ } ++#endif ++} +Index: gnuradio-core/src/lib/filter/gr_cpu.h +=================================================================== +--- gnuradio-core/src/lib/filter/gr_cpu.h (revision 9831) ++++ gnuradio-core/src/lib/filter/gr_cpu.h (working copy) +@@ -34,6 +34,7 @@ + static bool has_3dnow (); + static bool has_3dnowext (); + static bool has_altivec (); ++ static bool has_cortex_a8 (); + }; + + #endif /* _GR_CPU_H_ */ +Index: gnuradio-core/src/lib/filter/gr_fir_fff_cortex_a8.h +=================================================================== +--- gnuradio-core/src/lib/filter/gr_fir_fff_cortex_a8.h (revision 0) ++++ gnuradio-core/src/lib/filter/gr_fir_fff_cortex_a8.h (revision 0) +@@ -0,0 +1,45 @@ ++/* -*- c++ -*- */ ++/* ++ * Copyright 2008 Free Software Foundation, Inc. ++ * ++ * This file is part of GNU Radio ++ * ++ * GNU Radio 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 3, or (at your option) ++ * any later version. ++ * ++ * GNU Radio is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License along ++ * with this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ */ ++#ifndef INCLUDED_GR_FIR_FFF_CORTEX_A8_H ++#define INCLUDED_GR_FIR_FFF_CORTEX_A8_H ++ ++#include ++ ++/*! ++ * \brief altivec version of gr_fir_fff ++ */ ++class gr_fir_fff_cortex_a8 : public gr_fir_fff_generic ++{ ++protected: ++ ++ size_t d_naligned_taps; // number of taps (multiple of 4) ++ float *d_aligned_taps; // 16-byte aligned, and zero padded to multiple of 4 ++ ++public: ++ gr_fir_fff_cortex_a8(); ++ gr_fir_fff_cortex_a8(const std::vector &taps); ++ ~gr_fir_fff_cortex_a8(); ++ ++ virtual void set_taps (const std::vector &taps); ++ virtual float filter (const float input[]); ++}; ++ ++#endif /* INCLUDED_GR_FIR_FFF_CORTEX_A*_H */ +Index: gnuradio-core/src/lib/filter/gr_cpu_x86.cc +=================================================================== +--- gnuradio-core/src/lib/filter/gr_cpu_x86.cc (revision 9831) ++++ gnuradio-core/src/lib/filter/gr_cpu_x86.cc (working copy) +@@ -111,3 +111,10 @@ + { + return false; + } ++ ++bool ++gr_cpu::has_cortex_a8 () ++{ ++ return false; ++} ++ +Index: gnuradio-core/src/lib/filter/gr_cpu_cortex_a8.cc +=================================================================== +--- gnuradio-core/src/lib/filter/gr_cpu_cortex_a8.cc (revision 0) ++++ gnuradio-core/src/lib/filter/gr_cpu_cortex_a8.cc (revision 0) +@@ -0,0 +1,59 @@ ++/* -*- c++ -*- */ ++/* ++ * Copyright 2002, 2008 Free Software Foundation, Inc. ++ * ++ * This file is part of GNU Radio ++ * ++ * GNU Radio 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 3, or (at your option) ++ * any later version. ++ * ++ * GNU Radio 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 GNU Radio; see the file COPYING. If not, write to ++ * the Free Software Foundation, Inc., 51 Franklin Street, ++ * Boston, MA 02110-1301, USA. ++ */ ++ ++#include ++ ++bool ++gr_cpu::has_mmx () ++{ ++ return false; ++} ++ ++bool ++gr_cpu::has_sse () ++{ ++ return false; ++} ++ ++bool ++gr_cpu::has_sse2 () ++{ ++ return false; ++} ++ ++bool ++gr_cpu::has_3dnow () ++{ ++ return false; ++} ++ ++bool ++gr_cpu::has_3dnowext () ++{ ++ return false; ++} ++ ++bool ++gr_cpu::has_cortex_a8 () ++{ ++ return true; ++} +Index: gnuradio-core/src/lib/filter/gr_fir_fff_cortex_a8.cc +=================================================================== +--- gnuradio-core/src/lib/filter/gr_fir_fff_cortex_a8.cc (revision 0) ++++ gnuradio-core/src/lib/filter/gr_fir_fff_cortex_a8.cc (revision 0) +@@ -0,0 +1,85 @@ ++/* -*- c++ -*- */ ++/* ++ * Copyright 2008 Free Software Foundation, Inc. ++ * ++ * This file is part of GNU Radio ++ * ++ * GNU Radio 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 3, or (at your option) ++ * any later version. ++ * ++ * GNU Radio is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License along ++ * with this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ */ ++ ++#ifdef HAVE_CONFIG_H ++#include ++#endif ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define FLOATS_PER_VEC 8 ++ ++gr_fir_fff_cortex_a8::gr_fir_fff_cortex_a8() ++ : gr_fir_fff_generic(), ++ d_naligned_taps(0), d_aligned_taps(0) ++{ ++} ++ ++gr_fir_fff_cortex_a8::gr_fir_fff_cortex_a8 (const std::vector &new_taps) ++ : gr_fir_fff_generic(new_taps), ++ d_naligned_taps(0), d_aligned_taps(0) ++{ ++ set_taps(new_taps); ++} ++ ++gr_fir_fff_cortex_a8::~gr_fir_fff_cortex_a8() ++{ ++ if (d_aligned_taps){ ++ free(d_aligned_taps); ++ d_aligned_taps = 0; ++ } ++} ++ ++void ++gr_fir_fff_cortex_a8::set_taps(const std::vector &inew_taps) ++{ ++ gr_fir_fff_generic::set_taps(inew_taps); // call superclass ++ d_naligned_taps = gr_p2_round_up(ntaps(), FLOATS_PER_VEC); ++ ++ if (d_aligned_taps){ ++ free(d_aligned_taps); ++ d_aligned_taps = 0; ++ } ++ void *p; ++ int r = posix_memalign(&p, sizeof(float), d_naligned_taps * sizeof(d_aligned_taps[0])); ++ if (r != 0){ ++ throw std::bad_alloc(); ++ } ++ d_aligned_taps = (float *) p; ++ memcpy(d_aligned_taps, &d_taps[0], ntaps() * sizeof(d_aligned_taps[0])); ++ for (size_t i = ntaps(); i < d_naligned_taps; i++) ++ d_aligned_taps[i] = 0.0; ++} ++ ++ ++float ++gr_fir_fff_cortex_a8::filter (const float input[]) ++{ ++ if (d_naligned_taps == 0) ++ return 0.0; ++ ++ return dotprod_fff_cortex_a8(input, d_aligned_taps, d_naligned_taps); ++} +Index: gnuradio-core/src/lib/filter/qa_dotprod_cortex_a8.cc +=================================================================== +--- gnuradio-core/src/lib/filter/qa_dotprod_cortex_a8.cc (revision 0) ++++ gnuradio-core/src/lib/filter/qa_dotprod_cortex_a8.cc (revision 0) +@@ -0,0 +1,32 @@ ++/* -*- c++ -*- */ ++/* ++ * Copyright 2003 Free Software Foundation, Inc. ++ * ++ * This file is part of GNU Radio ++ * ++ * GNU Radio 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 3, or (at your option) ++ * any later version. ++ * ++ * GNU Radio 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 GNU Radio; see the file COPYING. If not, write to ++ * the Free Software Foundation, Inc., 51 Franklin Street, ++ * Boston, MA 02110-1301, USA. ++ */ ++#include "qa_dotprod.h" ++ ++CppUnit::TestSuite * ++qa_dotprod_suite () ++{ ++ CppUnit::TestSuite *s = new CppUnit::TestSuite ("dotprod"); ++ ++ // empty test suite ++ ++ return s; ++} +Index: gnuradio-core/src/lib/filter/gr_fir_sysconfig_cortex_a8.h +=================================================================== +--- gnuradio-core/src/lib/filter/gr_fir_sysconfig_cortex_a8.h (revision 0) ++++ gnuradio-core/src/lib/filter/gr_fir_sysconfig_cortex_a8.h (revision 0) +@@ -0,0 +1,46 @@ ++/* -*- c++ -*- */ ++/* ++ * Copyright 2002,2008 Free Software Foundation, Inc. ++ * ++ * This file is part of GNU Radio ++ * ++ * GNU Radio 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 3, or (at your option) ++ * any later version. ++ * ++ * GNU Radio 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 GNU Radio; see the file COPYING. If not, write to ++ * the Free Software Foundation, Inc., 51 Franklin Street, ++ * Boston, MA 02110-1301, USA. ++ */ ++#ifndef INCLUDED_GR_FIR_SYSCONFIG_CORTEX_A8_H ++#define INCLUDED_GR_FIR_SYSCONFIG_CORTEX_A8_H ++ ++#include ++ ++class gr_fir_sysconfig_cortex_a8 : public gr_fir_sysconfig_generic { ++public: ++ virtual gr_fir_ccf *create_gr_fir_ccf (const std::vector &taps); ++ virtual gr_fir_fcc *create_gr_fir_fcc (const std::vector &taps); ++ virtual gr_fir_fff *create_gr_fir_fff (const std::vector &taps); ++ virtual gr_fir_fsf *create_gr_fir_fsf (const std::vector &taps); ++ virtual gr_fir_scc *create_gr_fir_scc (const std::vector &taps); ++ virtual gr_fir_ccc *create_gr_fir_ccc (const std::vector &taps); ++//virtual gr_fir_sss *create_gr_fir_sss (const std::vector &taps); ++ ++ virtual void get_gr_fir_ccf_info (std::vector *info); ++ virtual void get_gr_fir_fcc_info (std::vector *info); ++ virtual void get_gr_fir_fff_info (std::vector *info); ++ virtual void get_gr_fir_fsf_info (std::vector *info); ++ virtual void get_gr_fir_scc_info (std::vector *info); ++ virtual void get_gr_fir_ccc_info (std::vector *info); ++//virtual void get_gr_fir_sss_info (std::vector *info); ++}; ++ ++#endif +Index: gnuradio-core/src/lib/filter/sysconfig_cortex_a8.cc +=================================================================== +--- gnuradio-core/src/lib/filter/sysconfig_cortex_a8.cc (revision 0) ++++ gnuradio-core/src/lib/filter/sysconfig_cortex_a8.cc (revision 0) +@@ -0,0 +1,38 @@ ++/* -*- c++ -*- */ ++/* ++ * Copyright 2002,2008 Free Software Foundation, Inc. ++ * ++ * This file is part of GNU Radio ++ * ++ * GNU Radio 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 3, or (at your option) ++ * any later version. ++ * ++ * GNU Radio 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 GNU Radio; see the file COPYING. If not, write to ++ * the Free Software Foundation, Inc., 51 Franklin Street, ++ * Boston, MA 02110-1301, USA. ++ */ ++ ++#ifdef HAVE_CONFIG_H ++#include ++#endif ++#include ++ ++gr_fir_sysconfig * ++gr_fir_sysconfig_singleton () ++{ ++ static gr_fir_sysconfig *singleton = 0; ++ ++ if (singleton) ++ return singleton; ++ ++ singleton = new gr_fir_sysconfig_cortex_a8 (); ++ return singleton; ++} +Index: config/gr_set_md_cpu.m4 +=================================================================== +--- config/gr_set_md_cpu.m4 (revision 9831) ++++ config/gr_set_md_cpu.m4 (working copy) +@@ -35,6 +35,7 @@ + case "$cf_with_md_cpu" in + x86 | i[[3-7]]86) MD_CPU=x86 MD_SUBCPU=x86 ;; + x86_64) MD_CPU=x86 MD_SUBCPU=x86_64 ;; ++ arm) MD_CPU=cortex_a8 ;; + powerpc*) MD_CPU=powerpc ;; + *) MD_CPU=generic ;; + esac +@@ -59,5 +60,6 @@ + AM_CONDITIONAL(MD_CPU_x86, test "$MD_CPU" = "x86") + AM_CONDITIONAL(MD_SUBCPU_x86_64, test "$MD_SUBCPU" = "x86_64") + AM_CONDITIONAL(MD_CPU_powerpc, test "$MD_CPU" = "powerpc") ++ AM_CONDITIONAL(MD_CPU_cortex_a8, test "$MD_CPU" = "cortex_a8") + AM_CONDITIONAL(MD_CPU_generic, test "$MD_CPU" = "generic") + ]) -- cgit v1.2.3 From d099c34191d7c8736a7329a5a73443467e35e54c Mon Sep 17 00:00:00 2001 From: woglinde Date: Sat, 1 Nov 2008 22:00:29 +0100 Subject: findutils: switch EXTRA_OECONF setting for uclibc to += --- packages/findutils/findutils.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/findutils/findutils.inc b/packages/findutils/findutils.inc index e054dd0cc7..7feef27025 100644 --- a/packages/findutils/findutils.inc +++ b/packages/findutils/findutils.inc @@ -11,4 +11,4 @@ inherit autotools gettext # standard functionality. regex.c actually breaks compilation # because it uses __mempcpy, there are other things (TBD: # see diffutils.mk in buildroot) -EXTRA_OECONF_linux-uclibc = "--without-included-regex" +EXTRA_OECONF_linux-uclibc += "--without-included-regex" -- cgit v1.2.3 From 7806a7f622a7d318986ce61e512002441551d961 Mon Sep 17 00:00:00 2001 From: woglinde Date: Sat, 1 Nov 2008 22:01:39 +0100 Subject: findutils: remove install_apend it looks good inside the image dir now --- packages/findutils/findutils_4.2.29.bb | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/findutils/findutils_4.2.29.bb b/packages/findutils/findutils_4.2.29.bb index fcb074c185..d2718785c9 100644 --- a/packages/findutils/findutils_4.2.29.bb +++ b/packages/findutils/findutils_4.2.29.bb @@ -2,11 +2,6 @@ require findutils.inc EXTRA_OECONF += " ac_cv_path_SORT=/usr/bin/sort " -do_install_append () { - mv ${D}${bindir}/find ${D}${bindir}/find.${PN} - mv ${D}${bindir}/xargs ${D}${bindir}/xargs.${PN} -} - pkg_postinst_${PN} () { for i in find xargs; do update-alternatives --install ${bindir}/$i $i $i.${PN} 100; done } -- cgit v1.2.3 From a162fd85ae232c2211e5cad12dfb435a7e04c848 Mon Sep 17 00:00:00 2001 From: woglinde Date: Sat, 1 Nov 2008 22:14:40 +0100 Subject: findutils: update to latest version 4.4, but not enabled yet --- packages/findutils/findutils-native_4.4.bb | 9 +++++++++ packages/findutils/findutils_4.4.bb | 13 +++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 packages/findutils/findutils-native_4.4.bb create mode 100644 packages/findutils/findutils_4.4.bb diff --git a/packages/findutils/findutils-native_4.4.bb b/packages/findutils/findutils-native_4.4.bb new file mode 100644 index 0000000000..1a7b1fe4a8 --- /dev/null +++ b/packages/findutils/findutils-native_4.4.bb @@ -0,0 +1,9 @@ +require findutils.inc + +inherit native + +DEFAULT_PREFERENCE = "-1" + +FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/findutils-${PV}" + +S = "${WORKDIR}/findutils-${PV}" diff --git a/packages/findutils/findutils_4.4.bb b/packages/findutils/findutils_4.4.bb new file mode 100644 index 0000000000..844f206460 --- /dev/null +++ b/packages/findutils/findutils_4.4.bb @@ -0,0 +1,13 @@ +require findutils.inc + +DEFAULT_PREFERENCE = "-1" + +EXTRA_OECONF += " ac_cv_path_SORT=/usr/bin/sort " + +pkg_postinst_${PN} () { + for i in find xargs; do update-alternatives --install ${bindir}/$i $i $i.${PN} 100; done +} + +pkg_prerm_${PN} () { + for i in find xargs; do update-alternatives --remove $i $i.${PN}; done +} -- cgit v1.2.3 From a2332c470608fd94df2118eba9ee59c2143bfb60 Mon Sep 17 00:00:00 2001 From: woglinde Date: Sat, 1 Nov 2008 22:25:09 +0100 Subject: gnuradio: fix depends and rdepends errors sneaked in with the last commit --- packages/gnuradio/gnuradio.inc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/gnuradio/gnuradio.inc b/packages/gnuradio/gnuradio.inc index 087dde0774..51524e43c6 100644 --- a/packages/gnuradio/gnuradio.inc +++ b/packages/gnuradio/gnuradio.inc @@ -2,11 +2,15 @@ DESCRIPTION = "GNU Radio" SECTION = "apps" PRIORITY = "optional" LICENSE = "GPL" -DEPENDS = " guile-native fftwf python virtual/libsdl alsa-lib jack boost cppunit sdcc-native swig-nativei python-numpy" +DEPENDS = " guile-native fftwf python virtual/libsdl alsa-lib jack boost cppunit sdcc-native swig-native python-numpy" -RDEPENDS_${PN} = "python-core python-audio python-threading python-codecs python-lang python-textutils python-shell python-pickle python-comp -iler python-pkgutil python-pydoc python-mmap python-netclient python-unittest py -thon-difflib python-pprint python-numpy" +RDEPENDS_${PN} = "python-core python-audio python-threading \ + python-codecs python-lang python-textutils \ + python-shell python-pickle python-compiler \ + python-pkgutil python-pydoc python-mmap \ + python-netclient python-unittest python-difflib \ + python-pprint python-numpy \ + " RDEPENDS_gnuradio-usrp = "python-core" -- cgit v1.2.3 From 2ca7c850972b2afdab290090823d372dbf6ccb86 Mon Sep 17 00:00:00 2001 From: Mike Westerhof Date: Sat, 1 Nov 2008 16:46:23 -0500 Subject: gnuradio.inc: fix bad line wraps causing bitbake parse errors. --- packages/gnuradio/gnuradio.inc | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/gnuradio/gnuradio.inc b/packages/gnuradio/gnuradio.inc index 087dde0774..f44c18583b 100644 --- a/packages/gnuradio/gnuradio.inc +++ b/packages/gnuradio/gnuradio.inc @@ -4,9 +4,10 @@ PRIORITY = "optional" LICENSE = "GPL" DEPENDS = " guile-native fftwf python virtual/libsdl alsa-lib jack boost cppunit sdcc-native swig-nativei python-numpy" -RDEPENDS_${PN} = "python-core python-audio python-threading python-codecs python-lang python-textutils python-shell python-pickle python-comp -iler python-pkgutil python-pydoc python-mmap python-netclient python-unittest py -thon-difflib python-pprint python-numpy" +RDEPENDS_${PN} = "python-core python-audio python-threading python-codecs python-lang python-textutils \ + python-shell python-pickle python-compiler python-pkgutil python-pydoc python-mmap \ + python-netclient python-unittest python-difflib python-pprint python-numpy \ + " RDEPENDS_gnuradio-usrp = "python-core" @@ -61,6 +62,3 @@ FILES_${PN}-dbg += "${libdir}/python*/site-packages/gnuradio/.debug \ FILES_gnuradio-usrp = "${libdir}/python*/site-packages/usrpm/* \ ${datadir}/usrp/*/*" FILES_gnuradio-usrp-dbg = "${libdir}/python*/site-packages/usrpm/.debug" - - - -- cgit v1.2.3 From 59fbb0c608103b07e86ec0201cefa9c488584820 Mon Sep 17 00:00:00 2001 From: woglinde Date: Sat, 1 Nov 2008 22:51:45 +0100 Subject: findutils: fix mkinstalldirs for the po directroy requested by koen --- packages/findutils/findutils-4.2.29/mkinstalldirs.patch | 14 ++++++++++++++ packages/findutils/findutils_4.2.29.bb | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 packages/findutils/findutils-4.2.29/mkinstalldirs.patch diff --git a/packages/findutils/findutils-4.2.29/mkinstalldirs.patch b/packages/findutils/findutils-4.2.29/mkinstalldirs.patch new file mode 100644 index 0000000000..e82380b1b2 --- /dev/null +++ b/packages/findutils/findutils-4.2.29/mkinstalldirs.patch @@ -0,0 +1,14 @@ +Index: findutils-4.2.29/po/Makefile.in.in +=================================================================== +--- findutils-4.2.29.orig/po/Makefile.in.in 2008-11-01 22:45:48.466060774 +0100 ++++ findutils-4.2.29/po/Makefile.in.in 2008-11-01 22:46:18.000751035 +0100 +@@ -29,8 +29,7 @@ + + INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ +-mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs + + GMSGFMT = @GMSGFMT@ + MSGFMT = @MSGFMT@ diff --git a/packages/findutils/findutils_4.2.29.bb b/packages/findutils/findutils_4.2.29.bb index d2718785c9..6de63af151 100644 --- a/packages/findutils/findutils_4.2.29.bb +++ b/packages/findutils/findutils_4.2.29.bb @@ -1,5 +1,7 @@ require findutils.inc +SRC_URI += "file://mkinstalldirs.patch;patch=1" + EXTRA_OECONF += " ac_cv_path_SORT=/usr/bin/sort " pkg_postinst_${PN} () { -- cgit v1.2.3 From a3ea23c19511f457791fae60eb3848cd57452180 Mon Sep 17 00:00:00 2001 From: woglinde Date: Sat, 1 Nov 2008 22:54:34 +0100 Subject: gnuradio: revert my fixes because mwester pushed it faster This reverts commit a2332c470608fd94df2118eba9ee59c2143bfb60. --- packages/gnuradio/gnuradio.inc | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/gnuradio/gnuradio.inc b/packages/gnuradio/gnuradio.inc index 51524e43c6..087dde0774 100644 --- a/packages/gnuradio/gnuradio.inc +++ b/packages/gnuradio/gnuradio.inc @@ -2,15 +2,11 @@ DESCRIPTION = "GNU Radio" SECTION = "apps" PRIORITY = "optional" LICENSE = "GPL" -DEPENDS = " guile-native fftwf python virtual/libsdl alsa-lib jack boost cppunit sdcc-native swig-native python-numpy" +DEPENDS = " guile-native fftwf python virtual/libsdl alsa-lib jack boost cppunit sdcc-native swig-nativei python-numpy" -RDEPENDS_${PN} = "python-core python-audio python-threading \ - python-codecs python-lang python-textutils \ - python-shell python-pickle python-compiler \ - python-pkgutil python-pydoc python-mmap \ - python-netclient python-unittest python-difflib \ - python-pprint python-numpy \ - " +RDEPENDS_${PN} = "python-core python-audio python-threading python-codecs python-lang python-textutils python-shell python-pickle python-comp +iler python-pkgutil python-pydoc python-mmap python-netclient python-unittest py +thon-difflib python-pprint python-numpy" RDEPENDS_gnuradio-usrp = "python-core" -- cgit v1.2.3 From 64fa2c456c32a9db1e482d7971dcd3923762d527 Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Sun, 2 Nov 2008 03:08:27 +0100 Subject: qi: new recipe. Qi is the next-generation bootloader for Openmoko devices. --- conf/distro/include/sane-srcrevs.inc | 1 + packages/qi/qi.inc | 46 ++++++++++++++++++++++++++++++++++++ packages/qi/qi_git.bb | 7 ++++++ 3 files changed, 54 insertions(+) create mode 100644 packages/qi/qi.inc create mode 100644 packages/qi/qi_git.bb diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc index 2013c87272..3e0af7eb2f 100644 --- a/conf/distro/include/sane-srcrevs.inc +++ b/conf/distro/include/sane-srcrevs.inc @@ -184,6 +184,7 @@ QEMUSRCREV = "4242" SRCREV_pn-qemu-native ?= "${QEMUSRCREV}" SRCREV_pn-qemu-sdk ?= "${QEMUSRCREV}" SRCREV_pn-qemu ?= "${QEMUSRCREV}" +SRCREV_pn-qi ?= "ed52486b43dca91891305b9e832c8366a2742798" SRCREV_pn-remoko = "115" SRCREV_pn-remoko-server = "115" SRCREV_pn-s3c24xx-gpio ?= "4130" diff --git a/packages/qi/qi.inc b/packages/qi/qi.inc new file mode 100644 index 0000000000..ce28508fec --- /dev/null +++ b/packages/qi/qi.inc @@ -0,0 +1,46 @@ +DESCRIPTION = "Qi bootloader w/ Openmoko GTA02 and GTA03 support" +LICENSE = "GPL" +SECTION = "bootloader" +PROVIDES = "virtual/bootloader" +LOCALVERSION = "gitr${SRCREV}" +PV = "0.0.0+${LOCALVERSION}" + +EXTRA_OEMAKE = "" +PARALLEL_MAKE = "" +BUILD_BRANCH ?= "master" + +QI_MACHINES = "s3c2442 s3c6410" + +do_configure() { + echo >config.mk + #sed -i s,@,, Makefile +} + +do_compile () { + gccv=`${CC} -dumpversion` + for mach in ${QI_MACHINES} + do + ${MAKE} clean + ${MAKE} CPU=$mach \ + HOSTCC="${BUILD_CC}" \ + COMPILER_LIB_PATH="${CROSS_DIR}/lib/gcc/${TARGET_SYS}/$gccv/" \ + BUILD_BRANCH="master" \ + BUILD_HEAD="${LOCALVERSION}" + cp -f image/qi-$mach* ${S} + done +} + +do_deploy () { + install -d ${DEPLOY_DIR_IMAGE} + for mach in ${QI_MACHINES} + do + cat qi-$mach-${BUILD_BRANCH}_${LOCALVERSION} >> qi-$mach-${BUILD_BRANCH}_${LOCALVERSION}.udfu + install -m 0644 qi-$mach-${BUILD_BRANCH}_${LOCALVERSION}.udfu ${DEPLOY_DIR_IMAGE}/qi-$mach-${BUILD_BRANCH}-${PV}-${PR}.bin + ln -sf ${DEPLOY_DIR_IMAGE}/qi-${mach}-${PV}-${PR}.bin ${DEPLOY_DIR_IMAGE}/qi-${mach}-${BUILD_BRANCH}-latest.bin + done +} + +do_deploy[dirs] = "${S}" +addtask deploy before do_package after do_install +addtask quilt before do_patch after do_unpack +addtask svnrev before do_patch after do_quilt diff --git a/packages/qi/qi_git.bb b/packages/qi/qi_git.bb new file mode 100644 index 0000000000..37bf9af11f --- /dev/null +++ b/packages/qi/qi_git.bb @@ -0,0 +1,7 @@ +require qi.inc +BUILD_BRANCH = "master" +PR = "r0" + +SRC_URI = "git://git.openmoko.org/git/qi.git;protocol=git;branch=${BUILD_BRANCH}" +S = "${WORKDIR}/git" + -- cgit v1.2.3 From 5b54e0c5a69a74500c48c7578c116e54ec7b6ca7 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sun, 2 Nov 2008 11:33:54 +0100 Subject: firefox, fennec, minimo: marks internal libs with PRIVATE_LIBS --- packages/mozilla/fennec_hg.bb | 8 ++++---- packages/mozilla/firefox.inc | 31 +++++++++++++++++++++++++++++++ packages/mozilla/firefox_3.0.1.bb | 2 +- packages/mozilla/firefox_3.1b1.bb | 2 +- packages/mozilla/minimo_cvs.bb | 31 +++++++++++++++++++++++++++++++ 5 files changed, 68 insertions(+), 6 deletions(-) diff --git a/packages/mozilla/fennec_hg.bb b/packages/mozilla/fennec_hg.bb index 8c6f326f73..ecc2876bec 100644 --- a/packages/mozilla/fennec_hg.bb +++ b/packages/mozilla/fennec_hg.bb @@ -2,12 +2,12 @@ DESCRIPTION = "Mozilla Mobile browser" DEPENDS += "cairo alsa-lib " PV = "0.9+1.0a1" -MOZPV = "1.0a1" -PR = "r0" +MOZPV = "1.0a2pre" +PR = "r1" PE = "1" -SRC_URI = "hg://hg.mozilla.org/;module=mozilla-central;rev=6c2f8bd79cbc \ - hg://hg.mozilla.org/;module=mobile-browser;rev=8f96b58057ad \ +SRC_URI = "hg://hg.mozilla.org/;module=mozilla-central;rev=30a69fb5df8e \ + hg://hg.mozilla.org/;module=mobile-browser;rev=b6dd20dc72fa \ file://jsautocfg.h \ file://jsautocfg-dontoverwrite.patch;patch=1 \ " diff --git a/packages/mozilla/firefox.inc b/packages/mozilla/firefox.inc index 9cc670a9ba..0684214fc6 100644 --- a/packages/mozilla/firefox.inc +++ b/packages/mozilla/firefox.inc @@ -47,3 +47,34 @@ do_stage() { autotools_stage_all } +# We don't build XUL as system shared lib, so we can mark all libs as private +PRIVATE_LIBS = "libnssckbi.so \ + libxpcom.so \ + libplc4.so \ + libssl3.so \ + libfreebl3.so \ + libnss3.so \ + libnspr4.so \ + libmozjs.so \ + libxul.so \ + libplds4.so \ + libnssutil3.so \ + libsqlite3.so \ + libsoftokn3.so \ + libnssdbm3.so \ + libsmime3.so \ + libnullplugin.so \ + libimgicon.so \ + libdbusservice.so \ + libbrowserdirprovider.so \ + libbrowsercomps.so \ + libnptest.so \ + libMyService.so \ + libmozgnome.so \ + libtestdynamic.so \ + libnkgnomevfs.so \ + libxpcomsample.so \ + libunixprintplugin.so \ +" + + diff --git a/packages/mozilla/firefox_3.0.1.bb b/packages/mozilla/firefox_3.0.1.bb index 5d09bb4375..24927c7f3d 100644 --- a/packages/mozilla/firefox_3.0.1.bb +++ b/packages/mozilla/firefox_3.0.1.bb @@ -1,5 +1,5 @@ DEPENDS += "cairo" -PR = "r7" +PR = "r8" SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${PV}/source/firefox-${PV}-source.tar.bz2 \ file://jsautocfg.h \ diff --git a/packages/mozilla/firefox_3.1b1.bb b/packages/mozilla/firefox_3.1b1.bb index eac4adcb75..7a41491ea7 100644 --- a/packages/mozilla/firefox_3.1b1.bb +++ b/packages/mozilla/firefox_3.1b1.bb @@ -2,7 +2,7 @@ DEPENDS += "cairo" PV = "3.0.1+3.1b1" MOZPV = "3.1b1" -PR = "r0" +PR = "r1" SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/${MOZPV}-candidates/build2/source/firefox-${MOZPV}-source.tar.bz2 \ file://jsautocfg.h \ diff --git a/packages/mozilla/minimo_cvs.bb b/packages/mozilla/minimo_cvs.bb index b94dff2ab1..074f0e123b 100644 --- a/packages/mozilla/minimo_cvs.bb +++ b/packages/mozilla/minimo_cvs.bb @@ -12,6 +12,7 @@ MOZDATE = "20070626" PV = "0.02+cvs${MOZDATE}" PE = "1" +PR = "r1" SRC_URI = "cvs://anonymous@${CVSSVR}/cvsroot;module=mozilla;tag=${BRTAG};date=${MOZDATE} \ file://minimo.patch;patch=1 \ @@ -149,5 +150,35 @@ do_install() { install -m 0644 res/html/gopher-unknown.gif ${D}${mozdir}/res/html } +# We don't build XUL as system shared lib, so we can mark all libs as private +PRIVATE_LIBS = "libnssckbi.so \ + libxpcom.so \ + libplc4.so \ + libssl3.so \ + libfreebl3.so \ + libnss3.so \ + libnspr4.so \ + libmozjs.so \ + libxul.so \ + libplds4.so \ + libnssutil3.so \ + libsqlite3.so \ + libsoftokn3.so \ + libnssdbm3.so \ + libsmime3.so \ + libnullplugin.so \ + libimgicon.so \ + libdbusservice.so \ + libbrowserdirprovider.so \ + libbrowsercomps.so \ + libnptest.so \ + libMyService.so \ + libmozgnome.so \ + libtestdynamic.so \ + libnkgnomevfs.so \ + libxpcomsample.so \ + libunixprintplugin.so \ +" + FILES_${PN}-dbg += "${libdir}/mozilla-minimo/.debug*" FILES_${PN} += "${mozdir}" -- cgit v1.2.3 From f9d5621f32f788ba666840426e8fbed8a8ddfb22 Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Sun, 2 Nov 2008 13:59:43 +0100 Subject: python 2.5.2 add cProfile and low level module companion to python-profile --- contrib/python/generate-manifest-2.5.py | 6 +++--- packages/python/python-2.5-manifest.inc | 6 +++--- packages/python/python_2.5.2.bb | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contrib/python/generate-manifest-2.5.py b/contrib/python/generate-manifest-2.5.py index f33ba7e23d..3c81f33057 100755 --- a/contrib/python/generate-manifest-2.5.py +++ b/contrib/python/generate-manifest-2.5.py @@ -13,7 +13,7 @@ VERSION = "2.5.2" BASEREV = 0 __author__ = "Michael 'Mickey' Lauer " -__version__ = "20080722" +__version__ = "20081102" class MakefileMaker: @@ -277,8 +277,8 @@ if __name__ == "__main__": m.addPackage( 0, "python-pprint", "Python Pretty-Print Support", "python-core", "pprint.*" ) - m.addPackage( 0, "python-profile", "Python Basic Profiling Support", "python-core", - "profile.* pstats.*" ) + m.addPackage( 0, "python-profile", "Python Basic Profiling Support", "python-core python-re", + "profile.* pstats.* cProfile.* lib-dynload/_lsprof.so" ) m.addPackage( 0, "python-re", "Python Regular Expression APIs", "python-core", "re.* sre.* sre_compile.* sre_constants* sre_parse.*" ) # _sre is builtin diff --git a/packages/python/python-2.5-manifest.inc b/packages/python/python-2.5-manifest.inc index 4142a4b620..bba1b2f33d 100644 --- a/packages/python/python-2.5-manifest.inc +++ b/packages/python/python-2.5-manifest.inc @@ -1,5 +1,5 @@ # WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. -# Generator: './generate-manifest-2.5.py' Version 20080722 (C) 2002-2008 Michael 'Mickey' Lauer +# Generator: './generate-manifest-2.5.py' Version 20081102 (C) 2002-2008 Michael 'Mickey' Lauer # Visit the Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy @@ -10,8 +10,8 @@ PACKAGES="python-profile python-threading python-distutils python-doctest python DESCRIPTION_python-profile="Python Basic Profiling Support" PR_python-profile="ml0" -RDEPENDS_python-profile="python-core" -FILES_python-profile="${libdir}/python2.5/profile.* ${libdir}/python2.5/pstats.* " +RDEPENDS_python-profile="python-core python-re" +FILES_python-profile="${libdir}/python2.5/profile.* ${libdir}/python2.5/pstats.* ${libdir}/python2.5/cProfile.* ${libdir}/python2.5/lib-dynload/_lsprof.so " DESCRIPTION_python-threading="Python Threading & Synchronization Support" PR_python-threading="ml0" diff --git a/packages/python/python_2.5.2.bb b/packages/python/python_2.5.2.bb index 19dc65b358..26a4ab828c 100644 --- a/packages/python/python_2.5.2.bb +++ b/packages/python/python_2.5.2.bb @@ -6,7 +6,7 @@ PRIORITY = "optional" DEPENDS = "python-native db gdbm openssl readline sqlite3 tcl tk zlib" DEPENDS_sharprom = "python-native db readline zlib gdbm openssl" # bump this on every change in contrib/python/generate-manifest-2.5.py -PR = "ml14" +PR = "ml15" PYTHON_MAJMIN = "2.5" -- cgit v1.2.3 From ae5d55503ac7adc9aa307504486de7a143d1bfbe Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Sun, 2 Nov 2008 14:48:45 +0100 Subject: moko-autorev: reenable openocd and packagekit, remove python-etk for good --- conf/distro/include/moko-autorev.inc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/conf/distro/include/moko-autorev.inc b/conf/distro/include/moko-autorev.inc index 9f5b7403a2..b63b9e0fe5 100644 --- a/conf/distro/include/moko-autorev.inc +++ b/conf/distro/include/moko-autorev.inc @@ -54,14 +54,13 @@ SRCREV_pn-openmoko-today2 ?= "${AUTOREV}" SRCREV_pn-openmoko-today2-folders ?= "${AUTOREV}" SRCREV_pn-openmoko-toolchain-scripts ?= "${AUTOREV}" SRCREV_pn-openmoko-worldclock2 ?= "${AUTOREV}" -#SRCREV_pn-openocd ?= "${AUTOREV}" -#SRCREV_pn-openocd-native ?= "${AUTOREV}" +SRCREV_pn-openocd ?= "${AUTOREV}" +SRCREV_pn-openocd-native ?= "${AUTOREV}" SRCREV_pn-opkg ?= "${AUTOREV}" SRCREV_pn-opkg-native ?= "${AUTOREV}" SRCREV_pn-opkg-sdk ?= "${AUTOREV}" -#SRCREV_pn-packagekit ?= "${AUTOREV}" +SRCREV_pn-packagekit ?= "${AUTOREV}" SRCREV_pn-pyefl-sudoku ?= "${AUTOREV}" -SRCREV_pn-python-etk ?= "${AUTOREV}" SRCREV_pn-python-gsmd ?= "${AUTOREV}" SRCREV_pn-tichy ?= "${AUTOREV}" SRCREV_pn-u-boot-openmoko ?= "${AUTOREV}" -- cgit v1.2.3 From 649e640996329358230716ba375bfb977f8253e3 Mon Sep 17 00:00:00 2001 From: Phil Blundell Date: Sun, 2 Nov 2008 17:22:26 +0000 Subject: epia: repair PACKAGE_EXTRA_ARCHS breakage --- conf/machine/epia.conf | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/machine/epia.conf b/conf/machine/epia.conf index 97d43d7a6d..a6522e9351 100644 --- a/conf/machine/epia.conf +++ b/conf/machine/epia.conf @@ -1,7 +1,6 @@ require conf/machine/x86.conf TARGET_ARCH = "i586" -PACKAGE_EXTRA_ARCHS = "i386 i486" PREFERRED_PROVIDER_virtual/kernel = "linux-epia" OLDEST_KERNEL = "2.6.5" -- cgit v1.2.3 From 8b2452efc012786d33b4b1d702e2c7c593aecc7c Mon Sep 17 00:00:00 2001 From: woglinde Date: Sun, 2 Nov 2008 18:34:21 +0100 Subject: gcc: fix open() with O_CREATE for version 3.4.3 and 3.4.6 * on ubuntu the compiler starting with intreprid yells at using open() with O_CREATE and not settinge a proper filecreationmask * closes bug 4626 reported by Vladimir Bondar with a modified patch * bump PR on all .bb which are needing it --- packages/gcc/gcc-3.4.4.inc | 1 + packages/gcc/gcc-3.4.4/gcc-posix.patch | 11 +++++++++++ packages/gcc/gcc-3.4.6.inc | 1 + packages/gcc/gcc-3.4.6/gcc-posix.patch | 11 +++++++++++ packages/gcc/gcc-cross-sdk_3.4.4.bb | 2 +- packages/gcc/gcc-cross_3.4.4.bb | 2 +- packages/gcc/gcc-native_3.4.4.bb | 2 +- packages/gcc/gcc-native_3.4.6.bb | 2 +- packages/gcc/gcc_3.4.4.bb | 2 +- 9 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 packages/gcc/gcc-3.4.4/gcc-posix.patch create mode 100644 packages/gcc/gcc-3.4.6/gcc-posix.patch diff --git a/packages/gcc/gcc-3.4.4.inc b/packages/gcc/gcc-3.4.4.inc index 34204f10fa..0b5b714e09 100644 --- a/packages/gcc/gcc-3.4.4.inc +++ b/packages/gcc/gcc-3.4.4.inc @@ -22,5 +22,6 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \ file://gcc34-configure.in.patch;patch=1 \ file://gcc34-thumb-support.patch;patch=1 \ file://gcc-cross-fixincl.patch;patch=1 \ + file://gcc-posix.patch;patch=1 \ " SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 " diff --git a/packages/gcc/gcc-3.4.4/gcc-posix.patch b/packages/gcc/gcc-3.4.4/gcc-posix.patch new file mode 100644 index 0000000000..99f813e866 --- /dev/null +++ b/packages/gcc/gcc-3.4.4/gcc-posix.patch @@ -0,0 +1,11 @@ +--- gcc-3.4.6/gcc/collect2.c 2008-10-04 18:17:17.796750393 +0400 ++++ gcc-3.4.6/gcc/collect2.new 2008-10-04 18:24:10.120748711 +0400 +@@ -1534,7 +1534,7 @@ collect_execute (const char *prog, char + if (redir) + { + /* Open response file. */ +- redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT); ++ redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, S_IWUSR); + + /* Duplicate the stdout and stderr file handles + so they can be restored later. */ diff --git a/packages/gcc/gcc-3.4.6.inc b/packages/gcc/gcc-3.4.6.inc index 1afd7a22cb..b1f686b365 100644 --- a/packages/gcc/gcc-3.4.6.inc +++ b/packages/gcc/gcc-3.4.6.inc @@ -16,6 +16,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \ file://always-fixincperm.patch;patch=1 \ file://GCOV_PREFIX_STRIP-cross-profile_3.4.patch;patch=1 \ file://zecke-xgcc-cpp.patch;patch=1 \ + file://gcc-posix.patch;patch=1 \ file://gcc4-mtune-compat.patch;patch=1" SRC_URI += "file://gcc34-configure.in.patch;patch=1" diff --git a/packages/gcc/gcc-3.4.6/gcc-posix.patch b/packages/gcc/gcc-3.4.6/gcc-posix.patch new file mode 100644 index 0000000000..99f813e866 --- /dev/null +++ b/packages/gcc/gcc-3.4.6/gcc-posix.patch @@ -0,0 +1,11 @@ +--- gcc-3.4.6/gcc/collect2.c 2008-10-04 18:17:17.796750393 +0400 ++++ gcc-3.4.6/gcc/collect2.new 2008-10-04 18:24:10.120748711 +0400 +@@ -1534,7 +1534,7 @@ collect_execute (const char *prog, char + if (redir) + { + /* Open response file. */ +- redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT); ++ redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, S_IWUSR); + + /* Duplicate the stdout and stderr file handles + so they can be restored later. */ diff --git a/packages/gcc/gcc-cross-sdk_3.4.4.bb b/packages/gcc/gcc-cross-sdk_3.4.4.bb index b00c86617d..7d78ef44d5 100644 --- a/packages/gcc/gcc-cross-sdk_3.4.4.bb +++ b/packages/gcc/gcc-cross-sdk_3.4.4.bb @@ -1,4 +1,4 @@ -PR = "r5" +PR = "r6" require gcc-${PV}.inc require gcc-cross-sdk.inc diff --git a/packages/gcc/gcc-cross_3.4.4.bb b/packages/gcc/gcc-cross_3.4.4.bb index 515b41628c..e2b20df484 100644 --- a/packages/gcc/gcc-cross_3.4.4.bb +++ b/packages/gcc/gcc-cross_3.4.4.bb @@ -1,4 +1,4 @@ -PR = "r11" +PR = "r12" require gcc-${PV}.inc require gcc-cross.inc diff --git a/packages/gcc/gcc-native_3.4.4.bb b/packages/gcc/gcc-native_3.4.4.bb index 5f39f1bbb3..c3f8106d3a 100644 --- a/packages/gcc/gcc-native_3.4.4.bb +++ b/packages/gcc/gcc-native_3.4.4.bb @@ -1,4 +1,4 @@ -PR = "r8" +PR = "r9" require gcc-${PV}.inc require gcc-configure-target.inc diff --git a/packages/gcc/gcc-native_3.4.6.bb b/packages/gcc/gcc-native_3.4.6.bb index c3f8106d3a..be84e4a0d0 100644 --- a/packages/gcc/gcc-native_3.4.6.bb +++ b/packages/gcc/gcc-native_3.4.6.bb @@ -1,4 +1,4 @@ -PR = "r9" +PR = "r10" require gcc-${PV}.inc require gcc-configure-target.inc diff --git a/packages/gcc/gcc_3.4.4.bb b/packages/gcc/gcc_3.4.4.bb index 5bc3761068..43d55fa601 100644 --- a/packages/gcc/gcc_3.4.4.bb +++ b/packages/gcc/gcc_3.4.4.bb @@ -1,4 +1,4 @@ -PR = "r10" +PR = "r11" require gcc-${PV}.inc require gcc-configure-target.inc -- cgit v1.2.3 From 178007af8cc90afe68c79605bc22de2d8b72bdff Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Sun, 2 Nov 2008 22:29:39 +0100 Subject: python 2.5.2: python-profile depends on python-textutils. closes Openmoko bug #2106 --- contrib/python/generate-manifest-2.5.py | 2 +- packages/python/python-2.5-manifest.inc | 2 +- packages/python/python_2.5.2.bb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/python/generate-manifest-2.5.py b/contrib/python/generate-manifest-2.5.py index 3c81f33057..8054608ce9 100755 --- a/contrib/python/generate-manifest-2.5.py +++ b/contrib/python/generate-manifest-2.5.py @@ -277,7 +277,7 @@ if __name__ == "__main__": m.addPackage( 0, "python-pprint", "Python Pretty-Print Support", "python-core", "pprint.*" ) - m.addPackage( 0, "python-profile", "Python Basic Profiling Support", "python-core python-re", + m.addPackage( 0, "python-profile", "Python Basic Profiling Support", "python-core python-textutils", "profile.* pstats.* cProfile.* lib-dynload/_lsprof.so" ) m.addPackage( 0, "python-re", "Python Regular Expression APIs", "python-core", diff --git a/packages/python/python-2.5-manifest.inc b/packages/python/python-2.5-manifest.inc index bba1b2f33d..6c4440877f 100644 --- a/packages/python/python-2.5-manifest.inc +++ b/packages/python/python-2.5-manifest.inc @@ -10,7 +10,7 @@ PACKAGES="python-profile python-threading python-distutils python-doctest python DESCRIPTION_python-profile="Python Basic Profiling Support" PR_python-profile="ml0" -RDEPENDS_python-profile="python-core python-re" +RDEPENDS_python-profile="python-core python-textutils" FILES_python-profile="${libdir}/python2.5/profile.* ${libdir}/python2.5/pstats.* ${libdir}/python2.5/cProfile.* ${libdir}/python2.5/lib-dynload/_lsprof.so " DESCRIPTION_python-threading="Python Threading & Synchronization Support" diff --git a/packages/python/python_2.5.2.bb b/packages/python/python_2.5.2.bb index 26a4ab828c..b402b974f1 100644 --- a/packages/python/python_2.5.2.bb +++ b/packages/python/python_2.5.2.bb @@ -6,7 +6,7 @@ PRIORITY = "optional" DEPENDS = "python-native db gdbm openssl readline sqlite3 tcl tk zlib" DEPENDS_sharprom = "python-native db readline zlib gdbm openssl" # bump this on every change in contrib/python/generate-manifest-2.5.py -PR = "ml15" +PR = "ml16" PYTHON_MAJMIN = "2.5" -- cgit v1.2.3 From cda792fbe0a54d6d78860ac27794dbfa2be1b28f Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Sun, 2 Nov 2008 22:39:30 +0100 Subject: python-fusil 1.1: new recipe; Python library for fuzzy algorithms. * add to task-python-everything * closes bug #4495 --- packages/python/python-fusil_1.1.bb | 21 +++++++++++++++++++++ packages/tasks/task-python-everything.bb | 3 ++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 packages/python/python-fusil_1.1.bb diff --git a/packages/python/python-fusil_1.1.bb b/packages/python/python-fusil_1.1.bb new file mode 100644 index 0000000000..f6ec3d8d6d --- /dev/null +++ b/packages/python/python-fusil_1.1.bb @@ -0,0 +1,21 @@ +DESCRIPTION = "Fusil is a Python library used to write fuzzing programs." +HOMEPAGE = "http://fusil.hachoir.org/" +SECTION = "devel/python" +LICENSE = "GPLv2" +SRCNAME = "fusil" + +SRC_URI = "http://pypi.python.org/packages/source/f/${SRCNAME}/${SRCNAME}-${PV}.tar.gz" +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit distutils + +RDEPENDS_${PN} = "\ + python-ptrace \ + python-ctypes \ + python-lang \ + python-logging \ + python-datetime \ + python-shell \ + python-resource \ + python-subprocess \ +" diff --git a/packages/tasks/task-python-everything.bb b/packages/tasks/task-python-everything.bb index 6c8e21ebd9..5b0d4a1be6 100644 --- a/packages/tasks/task-python-everything.bb +++ b/packages/tasks/task-python-everything.bb @@ -1,7 +1,7 @@ DESCRIPTION= "Everything Python" HOMEPAGE = "http://www.vanille.de/projects/python.spy" LICENSE = "MIT" -PR = "ml34" +PR = "ml35" RDEPENDS = "\ python-ao \ @@ -17,6 +17,7 @@ RDEPENDS = "\ python-formencode \ python-fpconst \ python-fuse \ + python-fusil \ python-gammu \ python-gmpy \ python-gnosis \ -- cgit v1.2.3 From 2bfbd7904f474550844a5c223d2bdf081d269a50 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sun, 2 Nov 2008 22:59:47 +0100 Subject: linux-omap git: add patch for omap3evm board to make ts behave --- packages/linux/linux-omap/evm-mcspi-ts.diff | 132 ++++++++++++++++++++++++++++ packages/linux/linux-omap_git.bb | 1 + 2 files changed, 133 insertions(+) create mode 100644 packages/linux/linux-omap/evm-mcspi-ts.diff diff --git a/packages/linux/linux-omap/evm-mcspi-ts.diff b/packages/linux/linux-omap/evm-mcspi-ts.diff new file mode 100644 index 0000000000..64d797cf96 --- /dev/null +++ b/packages/linux/linux-omap/evm-mcspi-ts.diff @@ -0,0 +1,132 @@ +From linux-omap-owner@vger.kernel.org Sun Nov 02 21:08:25 2008 +Received: from localhost + ([127.0.0.1] helo=dominion ident=koen) + by dominion.dominion.void with esmtp (Exim 4.69) + (envelope-from ) + id 1KwjFJ-0008Hg-0T + for koen@localhost; Sun, 02 Nov 2008 21:08:25 +0100 +Received: from xs.service.utwente.nl [130.89.5.250] + by dominion with POP3 (fetchmail-6.3.9-rc2) + for (single-drop); Sun, 02 Nov 2008 21:08:25 +0100 (CET) +Received: from mail.service.utwente.nl ([130.89.5.253]) by exchange.service.utwente.nl with Microsoft SMTPSVC(6.0.3790.3959); + Sun, 2 Nov 2008 20:57:16 +0100 +Received: from mx.utwente.nl ([130.89.2.13]) by mail.service.utwente.nl with Microsoft SMTPSVC(6.0.3790.3959); + Sun, 2 Nov 2008 20:57:16 +0100 +Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) + by mx.utwente.nl (8.12.10/SuSE Linux 0.7) with ESMTP id mA2JudEK010968 + for ; Sun, 2 Nov 2008 20:56:40 +0100 +Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand + id S1752819AbYKBT4i (ORCPT ); + Sun, 2 Nov 2008 14:56:38 -0500 +Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752829AbYKBT4i + (ORCPT ); Sun, 2 Nov 2008 14:56:38 -0500 +Received: from fg-out-1718.google.com ([72.14.220.153]:32481 "EHLO + fg-out-1718.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org + with ESMTP id S1752819AbYKBT4h (ORCPT + ); Sun, 2 Nov 2008 14:56:37 -0500 +Received: by fg-out-1718.google.com with SMTP id 19so1869080fgg.17 + for ; Sun, 02 Nov 2008 11:56:33 -0800 (PST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=gamma; + h=domainkey-signature:received:received:from:to:cc:subject:date + :message-id:x-mailer:in-reply-to:references; + bh=Ftvoq8kE3ciPRy7pNy5VLkNnZD8o0HYWIrO1LMS/lAY=; + b=HpEcngDUbAObGNJuQmBIG3SoNHesUL57GluZGlYO7kxFxfH6N8zeHjKuRSk86+mT5s + gMhyCC07wjVp75HnqCtKbOJzNw/8F4ZGbL2lY1LC99+zxHW1JBQv5c3ZaoCVqTw6TuH0 + bQ8Ew2BwHknT3wGA+QcGoMJJs5aw62AhPiyHY= +DomainKey-Signature: a=rsa-sha1; c=nofws; + d=gmail.com; s=gamma; + h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; + b=aio1APZhCIcYIrMY844QkdaQzKw0/yiuaVjqfv52fnft1kafGT2qAS3KfXAc61a9If + sXHbi2fr/r1a7YZJJVGqkJX0WmWTY0OqdhS1lmugP/dXEMHeqaArKATbvxrq9/svb1bV + Vzpkm6sOzLrr54uo+BcZNoxHWqb8W2UrRxuTk= +Received: by 10.103.131.18 with SMTP id i18mr6668205mun.126.1225655793072; + Sun, 02 Nov 2008 11:56:33 -0800 (PST) +Received: from localhost.localdomain ([78.59.134.74]) + by mx.google.com with ESMTPS id g1sm23199635muf.8.2008.11.02.11.56.31 + (version=TLSv1/SSLv3 cipher=RC4-MD5); + Sun, 02 Nov 2008 11:56:31 -0800 (PST) +From: Grazvydas Ignotas +To: linux-omap@vger.kernel.org +Cc: Grazvydas Ignotas +Subject: Re: omap3evm LCD red-tint workaround +Date: Sun, 2 Nov 2008 21:56:19 +0200 +Message-Id: <1225655779-18934-1-git-send-email-notasas@gmail.com> +X-Mailer: git-send-email 1.5.4.3 +In-Reply-To: <57322719-1A5A-45DC-9846-5C0A3B6EF346@student.utwente.nl> +References: <57322719-1A5A-45DC-9846-5C0A3B6EF346@student.utwente.nl> +Sender: linux-omap-owner@vger.kernel.org +Precedence: bulk +List-ID: +X-Mailing-List: linux-omap@vger.kernel.org +X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact servicedesk@icts.utwente.nl for more information. +X-UTwente-MailScanner: Found to be clean +X-UTwente-MailScanner-From: linux-omap-owner@vger.kernel.org +X-Spam-Status: No +X-OriginalArrivalTime: 02 Nov 2008 19:57:16.0876 (UTC) FILETIME=[34FBA0C0:01C93D25] + +> PS: TS is still unusable with the 16x16 pixel resolution +This is also the case for Pandora. The patch below fixes the problem, +but as I have no other boards to test this on, I haven't sent it. +See if it helps you. + + +From 91f3af26bbf751b846e6265d86387e81be7c1364 Mon Sep 17 00:00:00 2001 +From: Grazvydas Ignotas +Date: Tue, 28 Oct 2008 22:01:42 +0200 +Subject: [PATCH] OMAP3: fix McSPI transfers + +Currently on OMAP3 if both write and read is set up for a transfer, +the first byte returned on read is corrupted. Work around this by +disabling channel between reads and writes, instead of transfers. +--- + drivers/spi/omap2_mcspi.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/drivers/spi/omap2_mcspi.c b/drivers/spi/omap2_mcspi.c +index 454a271..4890b6c 100644 +--- a/drivers/spi/omap2_mcspi.c ++++ b/drivers/spi/omap2_mcspi.c +@@ -710,7 +710,6 @@ static void omap2_mcspi_work(struct work_struct *work) + spi = m->spi; + cs = spi->controller_state; + +- omap2_mcspi_set_enable(spi, 1); + list_for_each_entry(t, &m->transfers, transfer_list) { + if (t->tx_buf == NULL && t->rx_buf == NULL && t->len) { + status = -EINVAL; +@@ -741,6 +740,8 @@ static void omap2_mcspi_work(struct work_struct *work) + if (t->len) { + unsigned count; + ++ omap2_mcspi_set_enable(spi, 1); ++ + /* RX_ONLY mode needs dummy data in TX reg */ + if (t->tx_buf == NULL) + __raw_writel(0, cs->base +@@ -752,6 +753,8 @@ static void omap2_mcspi_work(struct work_struct *work) + count = omap2_mcspi_txrx_pio(spi, t); + m->actual_length += count; + ++ omap2_mcspi_set_enable(spi, 0); ++ + if (count != t->len) { + status = -EIO; + break; +@@ -777,8 +780,6 @@ static void omap2_mcspi_work(struct work_struct *work) + if (cs_active) + omap2_mcspi_force_cs(spi, 0); + +- omap2_mcspi_set_enable(spi, 0); +- + m->status = status; + m->complete(m->context); + +-- +1.5.4.3 + +-- +To unsubscribe from this list: send the line "unsubscribe linux-omap" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html + diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb index 6512e101da..2462484dd3 100644 --- a/packages/linux/linux-omap_git.bb +++ b/packages/linux/linux-omap_git.bb @@ -43,6 +43,7 @@ SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \ " SRC_URI_append_omap3evm = " \ + file://evm-mcspi-ts.diff;patch=1 \ " S = "${WORKDIR}/git" -- cgit v1.2.3 From 7b734566697aeb6408b1b7f51bd7112fc4c142e3 Mon Sep 17 00:00:00 2001 From: Mike Westerhof Date: Sun, 2 Nov 2008 20:00:55 -0600 Subject: xorg-lib: xtrans - set ALLOW_EMPTY; fixes dependency problem with SDKs Note: PR not bumped for this change since this is affects very few users. --- packages/xorg-lib/xtrans_1.0.3.bb | 2 ++ packages/xorg-lib/xtrans_1.0.4.bb | 2 ++ packages/xorg-lib/xtrans_1.1.bb | 2 ++ packages/xorg-lib/xtrans_1.2.1.bb | 2 ++ packages/xorg-lib/xtrans_1.2.bb | 2 ++ 5 files changed, 10 insertions(+) diff --git a/packages/xorg-lib/xtrans_1.0.3.bb b/packages/xorg-lib/xtrans_1.0.3.bb index 42cf655a3f..4ddc351919 100644 --- a/packages/xorg-lib/xtrans_1.0.3.bb +++ b/packages/xorg-lib/xtrans_1.0.3.bb @@ -4,4 +4,6 @@ DESCRIPTION = "network API translation layer to insulate X applications and \ libraries from OS network vageries." PE = "1" +ALLOW_EMPTY = "1" + SRC_URI += "file://fix-missing-includepath.patch;patch=1" diff --git a/packages/xorg-lib/xtrans_1.0.4.bb b/packages/xorg-lib/xtrans_1.0.4.bb index be2588b074..3fa509849e 100644 --- a/packages/xorg-lib/xtrans_1.0.4.bb +++ b/packages/xorg-lib/xtrans_1.0.4.bb @@ -4,6 +4,8 @@ DESCRIPTION = "network API translation layer to insulate X applications and \ libraries from OS network vageries." PE = "1" +ALLOW_EMPTY = "1" + XORG_PN = "xtrans" SRC_URI += "file://fix-missing-includepath.patch;patch=1" diff --git a/packages/xorg-lib/xtrans_1.1.bb b/packages/xorg-lib/xtrans_1.1.bb index 42cf655a3f..4ddc351919 100644 --- a/packages/xorg-lib/xtrans_1.1.bb +++ b/packages/xorg-lib/xtrans_1.1.bb @@ -4,4 +4,6 @@ DESCRIPTION = "network API translation layer to insulate X applications and \ libraries from OS network vageries." PE = "1" +ALLOW_EMPTY = "1" + SRC_URI += "file://fix-missing-includepath.patch;patch=1" diff --git a/packages/xorg-lib/xtrans_1.2.1.bb b/packages/xorg-lib/xtrans_1.2.1.bb index 75ba93c783..81464f49bc 100644 --- a/packages/xorg-lib/xtrans_1.2.1.bb +++ b/packages/xorg-lib/xtrans_1.2.1.bb @@ -5,6 +5,8 @@ libraries from OS network vageries." PE = "1" PR = "r0" +ALLOW_EMPTY = "1" + FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/xtrans" RDEPENDS_${PN}-dev = "" diff --git a/packages/xorg-lib/xtrans_1.2.bb b/packages/xorg-lib/xtrans_1.2.bb index 42cf655a3f..4ddc351919 100644 --- a/packages/xorg-lib/xtrans_1.2.bb +++ b/packages/xorg-lib/xtrans_1.2.bb @@ -4,4 +4,6 @@ DESCRIPTION = "network API translation layer to insulate X applications and \ libraries from OS network vageries." PE = "1" +ALLOW_EMPTY = "1" + SRC_URI += "file://fix-missing-includepath.patch;patch=1" -- cgit v1.2.3 From 466fbd2dd38d285a5109278b822646564939dc42 Mon Sep 17 00:00:00 2001 From: Mike Westerhof Date: Sun, 2 Nov 2008 20:04:20 -0600 Subject: xorg-proto: set ALLOW_EMPTY; fixes dependency problem with SDKs Note: PR not bumped for this change since this is affects very few users. --- packages/xorg-proto/xorg-proto-common.inc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/xorg-proto/xorg-proto-common.inc b/packages/xorg-proto/xorg-proto-common.inc index 248bbc7e11..c2b47572cf 100644 --- a/packages/xorg-proto/xorg-proto-common.inc +++ b/packages/xorg-proto/xorg-proto-common.inc @@ -5,6 +5,8 @@ LICENSE = "MIT-X" XORG_PN = "${PN}" +ALLOW_EMPTY = "1" + SRC_URI = "${XORG_MIRROR}/individual/proto/${XORG_PN}-${PV}.tar.bz2" S = "${WORKDIR}/${XORG_PN}-${PV}" -- cgit v1.2.3 From 7ad16584c9ba9e92ed5d08cd71f8a4b1ca53fb94 Mon Sep 17 00:00:00 2001 From: Mike Westerhof Date: Sun, 2 Nov 2008 20:06:40 -0600 Subject: xorg-util: util-macros - set ALLOW_EMPTY; fixes dependency problem with SDKs Note: PR not bumped for this change since this is affects very few users. --- packages/xorg-util/util-macros_1.1.5.bb | 2 ++ packages/xorg-util/util-macros_1.1.6.bb | 2 ++ 2 files changed, 4 insertions(+) diff --git a/packages/xorg-util/util-macros_1.1.5.bb b/packages/xorg-util/util-macros_1.1.5.bb index 22634bffd2..46fc0a8d19 100644 --- a/packages/xorg-util/util-macros_1.1.5.bb +++ b/packages/xorg-util/util-macros_1.1.5.bb @@ -4,4 +4,6 @@ DESCRIPTION = "X autotools macros" PR = "r1" PE = "1" +ALLOW_EMPTY = "1" + SRC_URI += "file://unbreak_cross_compile.patch;patch=1" diff --git a/packages/xorg-util/util-macros_1.1.6.bb b/packages/xorg-util/util-macros_1.1.6.bb index ae656f3707..4775fc6901 100644 --- a/packages/xorg-util/util-macros_1.1.6.bb +++ b/packages/xorg-util/util-macros_1.1.6.bb @@ -2,3 +2,5 @@ require xorg-util-common.inc DESCRIPTION = "X autotools macros" PE = "1" + +ALLOW_EMPTY = "1" -- cgit v1.2.3 From 70bb8ee097d21d8bd53aa2b5a6438e7ef9ce05b6 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Mon, 3 Nov 2008 13:42:35 +0100 Subject: twisted-python: fix packaging of twisted-python-protocols patch by Moritz Venn Signed-off-by: Felix Domke --- packages/python/python-twisted_2.5.0.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/python/python-twisted_2.5.0.bb b/packages/python/python-twisted_2.5.0.bb index e085e81eb6..ccd3e26101 100644 --- a/packages/python/python-twisted_2.5.0.bb +++ b/packages/python/python-twisted_2.5.0.bb @@ -37,7 +37,7 @@ FILES_python-twisted-test = " \ " FILES_python-twisted-protocols = " \ - ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/protocols/ \ + ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/ \ " FILES_python-twisted-zsh = " \ -- cgit v1.2.3 From d14249e3783e1bb02dc3975f27418ef43d09a25f Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Mon, 3 Nov 2008 12:49:57 -0200 Subject: replace remaining DEBPV variables with EXTENDPV --- classes/package.bbclass | 2 +- packages/linux-libc-headers/linux-libc-headers.inc | 2 +- packages/net-snmp/net-snmp_5.4.1.bb | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/classes/package.bbclass b/classes/package.bbclass index 8db000b23a..8b7d6494ea 100644 --- a/classes/package.bbclass +++ b/classes/package.bbclass @@ -459,7 +459,7 @@ python populate_packages () { for pkg in package_list: rdepends = explode_deps(bb.data.getVar('RDEPENDS_' + pkg, d, 0) or bb.data.getVar('RDEPENDS', d, 0) or "") - remstr = "${PN} (= ${DEBPV})" + remstr = "${PN} (= ${EXTENDPV})" if main_is_empty and remstr in rdepends: rdepends.remove(remstr) for l in dangling_links[pkg]: diff --git a/packages/linux-libc-headers/linux-libc-headers.inc b/packages/linux-libc-headers/linux-libc-headers.inc index b49e855ed1..dc0267697f 100644 --- a/packages/linux-libc-headers/linux-libc-headers.inc +++ b/packages/linux-libc-headers/linux-libc-headers.inc @@ -3,7 +3,7 @@ SECTION = "devel" LICENSE = "GPL" RDEPENDS_${PN}-dev = "" -RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${DEBPV})" +RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPV})" do_install_append() { rm -rf ${D}${includedir}/scsi diff --git a/packages/net-snmp/net-snmp_5.4.1.bb b/packages/net-snmp/net-snmp_5.4.1.bb index a5ef24869e..d900019a0a 100644 --- a/packages/net-snmp/net-snmp_5.4.1.bb +++ b/packages/net-snmp/net-snmp_5.4.1.bb @@ -4,8 +4,8 @@ LICENSE = "BSD" DEPENDS = "openssl" RDEPENDS_${PN}-server += "net-snmp-mibs" RDEPENDS_${PN}-client += "net-snmp-mibs" -RDEPENDS_${PN}-dev = "net-snmp-client (= ${DEBPV}) net-snmp-server (= ${DEBPV})" -RRECOMMENDS_${PN}-dbg = "net-snmp-client (= ${DEBPV}) net-snmp-server (= ${DEBPV})" +RDEPENDS_${PN}-dev = "net-snmp-client (= ${EXTENDPV}) net-snmp-server (= ${EXTENDPV})" +RRECOMMENDS_${PN}-dbg = "net-snmp-client (= ${EXTENDPV}) net-snmp-server (= ${EXTENDPV})" PR = "r1" -- cgit v1.2.3 From f23ab98cc706d521722a6ff70afd639588b5d91e Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Fri, 31 Oct 2008 19:25:27 -0200 Subject: libvncserver_0.9.1: fix building using libtool 2.2.4 To allow building using new libtool the whole source needed to be updated. To make it easier we've updated all building scripts using autoreconf and dropping previous included libtool m4 script from acinclude.m4. --- packages/vnc/libvncserver/autoreconf.patch | 113983 ++++++++++++++++++++++++++ packages/vnc/libvncserver_0.9.1.bb | 3 +- 2 files changed, 113985 insertions(+), 1 deletion(-) create mode 100644 packages/vnc/libvncserver/autoreconf.patch diff --git a/packages/vnc/libvncserver/autoreconf.patch b/packages/vnc/libvncserver/autoreconf.patch new file mode 100644 index 0000000000..f13b4d0d50 --- /dev/null +++ b/packages/vnc/libvncserver/autoreconf.patch @@ -0,0 +1,113983 @@ +diff -Nur LibVNCServer-0.9.1.orig/Makefile.in LibVNCServer-0.9.1/Makefile.in +--- LibVNCServer-0.9.1.orig/Makefile.in 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/Makefile.in 2008-10-31 18:46:27.000000000 -0200 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.9.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004, 2005 Free Software Foundation, Inc. ++# 2003, 2004, 2005, 2006 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. +@@ -15,15 +15,11 @@ + @SET_MAKE@ + + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = . + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -37,20 +33,20 @@ + POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ ++subdir = . + DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \ + $(srcdir)/LibVNCServer.spec.in $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/libvncserver-config.in \ + $(srcdir)/rfbconfig.h.in $(top_srcdir)/configure AUTHORS \ + COPYING ChangeLog INSTALL NEWS TODO compile config.guess \ + config.sub depcomp install-sh ltmain.sh missing +-subdir = . + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) + am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ +- configure.lineno configure.status.lineno ++ configure.lineno config.status.lineno + mkinstalldirs = $(install_sh) -d + CONFIG_HEADER = rfbconfig.h + CONFIG_CLEAN_FILES = libvncserver-config LibVNCServer.spec +@@ -61,10 +57,11 @@ + DIST_SOURCES = + RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ +- install-exec-recursive install-info-recursive \ +- install-recursive installcheck-recursive installdirs-recursive \ +- pdf-recursive ps-recursive uninstall-info-recursive \ +- uninstall-recursive ++ install-dvi-recursive install-exec-recursive \ ++ install-html-recursive install-info-recursive \ ++ install-pdf-recursive install-ps-recursive install-recursive \ ++ installcheck-recursive installdirs-recursive pdf-recursive \ ++ ps-recursive uninstall-recursive + am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; + am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ +@@ -73,6 +70,8 @@ + am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; + includeHEADERS_INSTALL = $(INSTALL_HEADER) + HEADERS = $(include_HEADERS) ++RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ ++ distclean-recursive maintainer-clean-recursive + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +@@ -87,8 +86,6 @@ + distuninstallcheck_listfiles = find . -type f -print + distcleancheck_listfiles = find . -type f -print + ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -103,57 +100,38 @@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CRYPT_LIBS = @CRYPT_LIBS@ +-CXX = @CXX@ +-CXXCPP = @CXXCPP@ +-CXXDEPMODE = @CXXDEPMODE@ +-CXXFLAGS = @CXXFLAGS@ +-CYGIPC_FALSE = @CYGIPC_FALSE@ +-CYGIPC_TRUE = @CYGIPC_TRUE@ + CYGPATH_W = @CYGPATH_W@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-ECHO = @ECHO@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ +-F77 = @F77@ +-FFLAGS = @FFLAGS@ +-HAVE_LIBJPEG_FALSE = @HAVE_LIBJPEG_FALSE@ +-HAVE_LIBJPEG_TRUE = @HAVE_LIBJPEG_TRUE@ +-HAVE_LIBPTHREAD_FALSE = @HAVE_LIBPTHREAD_FALSE@ +-HAVE_LIBPTHREAD_TRUE = @HAVE_LIBPTHREAD_TRUE@ +-HAVE_LIBSDL_FALSE = @HAVE_LIBSDL_FALSE@ +-HAVE_LIBSDL_TRUE = @HAVE_LIBSDL_TRUE@ +-HAVE_LIBZ_FALSE = @HAVE_LIBZ_FALSE@ +-HAVE_LIBZ_TRUE = @HAVE_LIBZ_TRUE@ +-HAVE_MP3LAME_FALSE = @HAVE_MP3LAME_FALSE@ +-HAVE_MP3LAME_TRUE = @HAVE_MP3LAME_TRUE@ +-HAVE_RPM_FALSE = @HAVE_RPM_FALSE@ +-HAVE_RPM_TRUE = @HAVE_RPM_TRUE@ +-HAVE_SYSTEM_LIBVNCSERVER_FALSE = @HAVE_SYSTEM_LIBVNCSERVER_FALSE@ +-HAVE_SYSTEM_LIBVNCSERVER_TRUE = @HAVE_SYSTEM_LIBVNCSERVER_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++FGREP = @FGREP@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ +-LINUX_FALSE = @LINUX_FALSE@ +-LINUX_TRUE = @LINUX_TRUE@ ++LIPO = @LIPO@ + LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MINGW_FALSE = @MINGW_FALSE@ +-MINGW_TRUE = @MINGW_TRUE@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ + OBJEXT = @OBJEXT@ +-OSX_FALSE = @OSX_FALSE@ +-OSX_TRUE = @OSX_TRUE@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ +@@ -165,6 +143,7 @@ + RPMSOURCEDIR = @RPMSOURCEDIR@ + SDL_CFLAGS = @SDL_CFLAGS@ + SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + SSL_LIBS = @SSL_LIBS@ +@@ -172,25 +151,17 @@ + SYSTEM_LIBVNCSERVER_CFLAGS = @SYSTEM_LIBVNCSERVER_CFLAGS@ + SYSTEM_LIBVNCSERVER_LIBS = @SYSTEM_LIBVNCSERVER_LIBS@ + VERSION = @VERSION@ +-WITH_FFMPEG_FALSE = @WITH_FFMPEG_FALSE@ +-WITH_FFMPEG_TRUE = @WITH_FFMPEG_TRUE@ +-WITH_TIGHTVNC_FILETRANSFER_FALSE = @WITH_TIGHTVNC_FILETRANSFER_FALSE@ +-WITH_TIGHTVNC_FILETRANSFER_TRUE = @WITH_TIGHTVNC_FILETRANSFER_TRUE@ + WSOCKLIB = @WSOCKLIB@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_F77 = @ac_ct_F77@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ +@@ -202,28 +173,40 @@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = $(prefix)/include/rfb + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + with_ffmpeg = @with_ffmpeg@ + SUBDIRS = libvncserver examples contrib libvncclient vncterm classes client_examples test + DIST_SUBDIRS = libvncserver examples contrib libvncclient vncterm classes client_examples test +@@ -242,15 +225,15 @@ + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ +- echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ +- cd $(srcdir) && $(AUTOMAKE) --gnu \ ++ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ ++ cd $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu Makefile ++ $(AUTOMAKE) --foreign Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -273,7 +256,7 @@ + rfbconfig.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ +- $(MAKE) stamp-h1; \ ++ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + + stamp-h1: $(srcdir)/rfbconfig.h.in $(top_builddir)/config.status +@@ -292,7 +275,7 @@ + cd $(top_builddir) && $(SHELL) ./config.status $@ + install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) +- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" ++ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ +@@ -318,10 +301,9 @@ + + distclean-libtool: + -rm -f libtool +-uninstall-info-am: + install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) +- test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)" ++ test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ +@@ -368,8 +350,7 @@ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +-mostlyclean-recursive clean-recursive distclean-recursive \ +-maintainer-clean-recursive: ++$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ +@@ -471,24 +452,22 @@ + + distdir: $(DISTFILES) + $(am__remove_distdir) +- mkdir $(distdir) +- $(mkdir_p) $(distdir)/. $(distdir)/rfb +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ test -d $(distdir) || mkdir $(distdir) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -502,7 +481,7 @@ + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ +- || $(mkdir_p) "$(distdir)/$$subdir" \ ++ || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ +@@ -510,6 +489,8 @@ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ ++ am__remove_distdir=: \ ++ am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ +@@ -517,7 +498,7 @@ + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ +- ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ ++ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) + dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz +@@ -592,7 +573,7 @@ + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ +- sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' ++ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' + distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ +@@ -617,7 +598,7 @@ + installdirs: installdirs-recursive + installdirs-am: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done + install: install-recursive + install-exec: install-exec-recursive +@@ -665,12 +646,20 @@ + + install-data-am: install-includeHEADERS + ++install-dvi: install-dvi-recursive ++ + install-exec-am: install-binSCRIPTS + ++install-html: install-html-recursive ++ + install-info: install-info-recursive + + install-man: + ++install-pdf: install-pdf-recursive ++ ++install-ps: install-ps-recursive ++ + installcheck-am: + + maintainer-clean: maintainer-clean-recursive +@@ -691,28 +680,28 @@ + + ps-am: + +-uninstall-am: uninstall-binSCRIPTS uninstall-includeHEADERS \ +- uninstall-info-am ++uninstall-am: uninstall-binSCRIPTS uninstall-includeHEADERS + +-uninstall-info: uninstall-info-recursive ++.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ ++ install-strip + +-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ +- check-am clean clean-generic clean-libtool clean-recursive \ +- ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ +- dist-shar dist-tarZ dist-zip distcheck distclean \ ++.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ ++ all all-am am--refresh check check-am clean clean-generic \ ++ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ ++ dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ +- distclean-recursive distclean-tags distcleancheck distdir \ +- distuninstallcheck dvi dvi-am html html-am info info-am \ +- install install-am install-binSCRIPTS install-data \ +- install-data-am install-exec install-exec-am \ +- install-includeHEADERS install-info install-info-am \ +- install-man install-strip installcheck installcheck-am \ +- installdirs installdirs-am maintainer-clean \ +- maintainer-clean-generic maintainer-clean-recursive \ +- mostlyclean mostlyclean-generic mostlyclean-libtool \ +- mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ ++ distclean-tags distcleancheck distdir distuninstallcheck dvi \ ++ dvi-am html html-am info info-am install install-am \ ++ install-binSCRIPTS install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-includeHEADERS install-info \ ++ install-info-am install-man install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs installdirs-am maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-generic \ ++ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-binSCRIPTS \ +- uninstall-includeHEADERS uninstall-info-am ++ uninstall-includeHEADERS + + + $(PACKAGE)-$(VERSION).tar.gz: dist +diff -Nur LibVNCServer-0.9.1.orig/acinclude.m4 LibVNCServer-0.9.1/acinclude.m4 +--- LibVNCServer-0.9.1.orig/acinclude.m4 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/acinclude.m4 2008-10-31 18:46:13.000000000 -0200 +@@ -601,6401 +601,3 @@ + AS_VAR_POPDEF([_DEF])dnl + AS_VAR_POPDEF([_OUT])dnl + ],[PACKAGE="$PACKAGE"])]) +- +-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +-## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +-## Free Software Foundation, Inc. +-## Originally by Gordon Matzigkeit , 1996 +-## +-## 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 48 AC_PROG_LIBTOOL +- +- +-# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +-# ----------------------------------------------------------- +-# If this macro is not defined by Autoconf, define it here. +-m4_ifdef([AC_PROVIDE_IFELSE], +- [], +- [m4_define([AC_PROVIDE_IFELSE], +- [m4_ifdef([AC_PROVIDE_$1], +- [$2], [$3])])]) +- +- +-# AC_PROG_LIBTOOL +-# --------------- +-AC_DEFUN([AC_PROG_LIBTOOL], +-[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +-dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +-dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. +- AC_PROVIDE_IFELSE([AC_PROG_CXX], +- [AC_LIBTOOL_CXX], +- [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX +- ])]) +-dnl And a similar setup for Fortran 77 support +- AC_PROVIDE_IFELSE([AC_PROG_F77], +- [AC_LIBTOOL_F77], +- [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +-])]) +- +-dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +-dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +-dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. +- AC_PROVIDE_IFELSE([AC_PROG_GCJ], +- [AC_LIBTOOL_GCJ], +- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], +- [AC_LIBTOOL_GCJ], +- [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], +- [AC_LIBTOOL_GCJ], +- [ifdef([AC_PROG_GCJ], +- [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) +- ifdef([A][M_PROG_GCJ], +- [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) +- ifdef([LT_AC_PROG_GCJ], +- [define([LT_AC_PROG_GCJ], +- defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +-])])# AC_PROG_LIBTOOL +- +- +-# _AC_PROG_LIBTOOL +-# ---------------- +-AC_DEFUN([_AC_PROG_LIBTOOL], +-[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +-AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +-AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +-AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl +- +-# This can be used to rebuild libtool when needed +-LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" +- +-# Always use our own libtool. +-LIBTOOL='$(SHELL) $(top_builddir)/libtool' +-AC_SUBST(LIBTOOL)dnl +- +-# Prevent multiple expansion +-define([AC_PROG_LIBTOOL], []) +-])# _AC_PROG_LIBTOOL +- +- +-# AC_LIBTOOL_SETUP +-# ---------------- +-AC_DEFUN([AC_LIBTOOL_SETUP], +-[AC_PREREQ(2.50)dnl +-AC_REQUIRE([AC_ENABLE_SHARED])dnl +-AC_REQUIRE([AC_ENABLE_STATIC])dnl +-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +-AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_PROG_LD])dnl +-AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +-AC_REQUIRE([AC_PROG_NM])dnl +- +-AC_REQUIRE([AC_PROG_LN_S])dnl +-AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +-# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +-AC_REQUIRE([AC_OBJEXT])dnl +-AC_REQUIRE([AC_EXEEXT])dnl +-dnl +- +-AC_LIBTOOL_SYS_MAX_CMD_LEN +-AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +-AC_LIBTOOL_OBJDIR +- +-AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +-_LT_AC_PROG_ECHO_BACKSLASH +- +-case $host_os in +-aix3*) +- # AIX sometimes has problems with the GCC collect2 program. For some +- # reason, if we set the COLLECT_NAMES environment variable, the problems +- # vanish in a puff of smoke. +- if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +- fi +- ;; +-esac +- +-# Sed substitution that helps us do robust quoting. It backslashifies +-# metacharacters that are still active within double-quoted strings. +-Xsed='sed -e 1s/^X//' +-[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] +- +-# Same as above, but do not quote variable references. +-[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] +- +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +- +-# Sed substitution to avoid accidental globbing in evaled expressions +-no_glob_subst='s/\*/\\\*/g' +- +-# Constants: +-rm="rm -f" +- +-# Global variables: +-default_ofile=libtool +-can_build_shared=yes +- +-# All known linkers require a `.a' archive for static linking (except MSVC, +-# which needs '.lib'). +-libext=a +-ltmain="$ac_aux_dir/ltmain.sh" +-ofile="$default_ofile" +-with_gnu_ld="$lt_cv_prog_gnu_ld" +- +-AC_CHECK_TOOL(AR, ar, false) +-AC_CHECK_TOOL(RANLIB, ranlib, :) +-AC_CHECK_TOOL(STRIP, strip, :) +- +-old_CC="$CC" +-old_CFLAGS="$CFLAGS" +- +-# Set sane defaults for various variables +-test -z "$AR" && AR=ar +-test -z "$AR_FLAGS" && AR_FLAGS=cru +-test -z "$AS" && AS=as +-test -z "$CC" && CC=cc +-test -z "$LTCC" && LTCC=$CC +-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +-test -z "$DLLTOOL" && DLLTOOL=dlltool +-test -z "$LD" && LD=ld +-test -z "$LN_S" && LN_S="ln -s" +-test -z "$MAGIC_CMD" && MAGIC_CMD=file +-test -z "$NM" && NM=nm +-test -z "$SED" && SED=sed +-test -z "$OBJDUMP" && OBJDUMP=objdump +-test -z "$RANLIB" && RANLIB=: +-test -z "$STRIP" && STRIP=: +-test -z "$ac_objext" && ac_objext=o +- +-# Determine commands to create old-style static archives. +-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +-old_postinstall_cmds='chmod 644 $oldlib' +-old_postuninstall_cmds= +- +-if test -n "$RANLIB"; then +- case $host_os in +- openbsd*) +- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" +- ;; +- *) +- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" +- ;; +- esac +- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +-fi +- +-_LT_CC_BASENAME([$compiler]) +- +-# Only perform the check for file, if the check method requires it +-case $deplibs_check_method in +-file_magic*) +- if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- AC_PATH_MAGIC +- fi +- ;; +-esac +- +-AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +-AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +-enable_win32_dll=yes, enable_win32_dll=no) +- +-AC_ARG_ENABLE([libtool-lock], +- [AC_HELP_STRING([--disable-libtool-lock], +- [avoid locking (might break parallel builds)])]) +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +- +-AC_ARG_WITH([pic], +- [AC_HELP_STRING([--with-pic], +- [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], +- [pic_mode="$withval"], +- [pic_mode=default]) +-test -z "$pic_mode" && pic_mode=default +- +-# Use C for the default configuration in the libtool script +-tagname= +-AC_LIBTOOL_LANG_C_CONFIG +-_LT_AC_TAGCONFIG +-])# AC_LIBTOOL_SETUP +- +- +-# _LT_AC_SYS_COMPILER +-# ------------------- +-AC_DEFUN([_LT_AC_SYS_COMPILER], +-[AC_REQUIRE([AC_PROG_CC])dnl +- +-# If no C compiler was specified, use CC. +-LTCC=${LTCC-"$CC"} +- +-# If no C compiler flags were specified, use CFLAGS. +-LTCFLAGS=${LTCFLAGS-"$CFLAGS"} +- +-# Allow CC to be a program name with arguments. +-compiler=$CC +-])# _LT_AC_SYS_COMPILER +- +- +-# _LT_CC_BASENAME(CC) +-# ------------------- +-# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +-AC_DEFUN([_LT_CC_BASENAME], +-[for cc_temp in $1""; do +- case $cc_temp in +- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; +- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; +- \-*) ;; +- *) break;; +- esac +-done +-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +-]) +- +- +-# _LT_COMPILER_BOILERPLATE +-# ------------------------ +-# Check for compiler boilerplate output or warnings with +-# the simple compiler test code. +-AC_DEFUN([_LT_COMPILER_BOILERPLATE], +-[ac_outfile=conftest.$ac_objext +-printf "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_compiler_boilerplate=`cat conftest.err` +-$rm conftest* +-])# _LT_COMPILER_BOILERPLATE +- +- +-# _LT_LINKER_BOILERPLATE +-# ---------------------- +-# Check for linker boilerplate output or warnings with +-# the simple link test code. +-AC_DEFUN([_LT_LINKER_BOILERPLATE], +-[ac_outfile=conftest.$ac_objext +-printf "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_linker_boilerplate=`cat conftest.err` +-$rm conftest* +-])# _LT_LINKER_BOILERPLATE +- +- +-# _LT_AC_SYS_LIBPATH_AIX +-# ---------------------- +-# Links a minimal program and checks the executable +-# for the system default hardcoded library path. In most cases, +-# this is /usr/lib:/lib, but when the MPI compilers are used +-# the location of the communication and MPI libs are included too. +-# If we don't find anything, use the default library path according +-# to the aix ld manual. +-AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +-[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` +-# Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi],[]) +-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +-])# _LT_AC_SYS_LIBPATH_AIX +- +- +-# _LT_AC_SHELL_INIT(ARG) +-# ---------------------- +-AC_DEFUN([_LT_AC_SHELL_INIT], +-[ifdef([AC_DIVERSION_NOTICE], +- [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], +- [AC_DIVERT_PUSH(NOTICE)]) +-$1 +-AC_DIVERT_POP +-])# _LT_AC_SHELL_INIT +- +- +-# _LT_AC_PROG_ECHO_BACKSLASH +-# -------------------------- +-# Add some code to the start of the generated configure script which +-# will find an echo command which doesn't interpret backslashes. +-AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +-[_LT_AC_SHELL_INIT([ +-# Check that we are running under the correct shell. +-SHELL=${CONFIG_SHELL-/bin/sh} +- +-case X$ECHO in +-X*--fallback-echo) +- # Remove one level of quotation (which was required for Make). +- ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` +- ;; +-esac +- +-echo=${ECHO-echo} +-if test "X[$]1" = X--no-reexec; then +- # Discard the --no-reexec flag, and continue. +- shift +-elif test "X[$]1" = X--fallback-echo; then +- # Avoid inline document here, it may be left over +- : +-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then +- # Yippee, $echo works! +- : +-else +- # Restart under the correct shell. +- exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +-fi +- +-if test "X[$]1" = X--fallback-echo; then +- # used as fallback echo +- shift +- cat </dev/null 2>&1 && unset CDPATH +- +-if test -z "$ECHO"; then +-if test "X${echo_test_string+set}" != Xset; then +-# find a string as large as possible, as long as the shell can cope with it +- for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do +- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... +- if (echo_test_string=`eval $cmd`) 2>/dev/null && +- echo_test_string=`eval $cmd` && +- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null +- then +- break +- fi +- done +-fi +- +-if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- : +-else +- # The Solaris, AIX, and Digital Unix default echo programs unquote +- # backslashes. This makes it impossible to quote backslashes using +- # echo "$something" | sed 's/\\/\\\\/g' +- # +- # So, first we look for a working echo in the user's PATH. +- +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for dir in $PATH /usr/ucb; do +- IFS="$lt_save_ifs" +- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && +- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- echo="$dir/echo" +- break +- fi +- done +- IFS="$lt_save_ifs" +- +- if test "X$echo" = Xecho; then +- # We didn't find a better echo, so look for alternatives. +- if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # This shell has a builtin print -r that does the trick. +- echo='print -r' +- elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && +- test "X$CONFIG_SHELL" != X/bin/ksh; then +- # If we have ksh, try running configure again with it. +- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +- export ORIGINAL_CONFIG_SHELL +- CONFIG_SHELL=/bin/ksh +- export CONFIG_SHELL +- exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} +- else +- # Try using printf. +- echo='printf %s\n' +- if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # Cool, printf works +- : +- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL +- export CONFIG_SHELL +- SHELL="$CONFIG_SHELL" +- export SHELL +- echo="$CONFIG_SHELL [$]0 --fallback-echo" +- elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- echo="$CONFIG_SHELL [$]0 --fallback-echo" +- else +- # maybe with a smaller string... +- prev=: +- +- for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do +- if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null +- then +- break +- fi +- prev="$cmd" +- done +- +- if test "$prev" != 'sed 50q "[$]0"'; then +- echo_test_string=`eval $prev` +- export echo_test_string +- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} +- else +- # Oops. We lost completely, so just stick with echo. +- echo=echo +- fi +- fi +- fi +- fi +-fi +-fi +- +-# Copy echo and quote the copy suitably for passing to libtool from +-# the Makefile, instead of quoting the original, which is used later. +-ECHO=$echo +-if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then +- ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +-fi +- +-AC_SUBST(ECHO) +-])])# _LT_AC_PROG_ECHO_BACKSLASH +- +- +-# _LT_AC_LOCK +-# ----------- +-AC_DEFUN([_LT_AC_LOCK], +-[AC_ARG_ENABLE([libtool-lock], +- [AC_HELP_STRING([--disable-libtool-lock], +- [avoid locking (might break parallel builds)])]) +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +- +-# Some flags need to be propagated to the compiler or linker for good +-# libtool support. +-case $host in +-ia64-*-hpux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.$ac_objext` in +- *ELF-32*) +- HPUX_IA64_MODE="32" +- ;; +- *ELF-64*) +- HPUX_IA64_MODE="64" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '[#]line __oline__ "configure"' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- if test "$lt_cv_prog_gnu_ld" = yes; then +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -melf32bsmip" +- ;; +- *N32*) +- LD="${LD-ld} -melf32bmipn32" +- ;; +- *64-bit*) +- LD="${LD-ld} -melf64bmip" +- ;; +- esac +- else +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -32" +- ;; +- *N32*) +- LD="${LD-ld} -n32" +- ;; +- *64-bit*) +- LD="${LD-ld} -64" +- ;; +- esac +- fi +- fi +- rm -rf conftest* +- ;; +- +-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.o` in +- *32-bit*) +- case $host in +- x86_64-*linux*) +- LD="${LD-ld} -m elf_i386" +- ;; +- ppc64-*linux*|powerpc64-*linux*) +- LD="${LD-ld} -m elf32ppclinux" +- ;; +- s390x-*linux*) +- LD="${LD-ld} -m elf_s390" +- ;; +- sparc64-*linux*) +- LD="${LD-ld} -m elf32_sparc" +- ;; +- esac +- ;; +- *64-bit*) +- case $host in +- x86_64-*linux*) +- LD="${LD-ld} -m elf_x86_64" +- ;; +- ppc*-*linux*|powerpc*-*linux*) +- LD="${LD-ld} -m elf64ppc" +- ;; +- s390*-*linux*) +- LD="${LD-ld} -m elf64_s390" +- ;; +- sparc*-*linux*) +- LD="${LD-ld} -m elf64_sparc" +- ;; +- esac +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- +-*-*-sco3.2v5*) +- # On SCO OpenServer 5, we need -belf to get full-featured binaries. +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -belf" +- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, +- [AC_LANG_PUSH(C) +- AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) +- AC_LANG_POP]) +- if test x"$lt_cv_cc_needs_belf" != x"yes"; then +- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +- CFLAGS="$SAVE_CFLAGS" +- fi +- ;; +-sparc*-*solaris*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.o` in +- *64-bit*) +- case $lt_cv_prog_gnu_ld in +- yes*) LD="${LD-ld} -m elf64_sparc" ;; +- *) LD="${LD-ld} -64" ;; +- esac +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- +-AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +-[*-*-cygwin* | *-*-mingw* | *-*-pw32*) +- AC_CHECK_TOOL(DLLTOOL, dlltool, false) +- AC_CHECK_TOOL(AS, as, false) +- AC_CHECK_TOOL(OBJDUMP, objdump, false) +- ;; +- ]) +-esac +- +-need_locks="$enable_libtool_lock" +- +-])# _LT_AC_LOCK +- +- +-# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +-# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +-# ---------------------------------------------------------------- +-# Check whether the given compiler option works +-AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +-[AC_REQUIRE([LT_AC_PROG_SED]) +-AC_CACHE_CHECK([$1], [$2], +- [$2=no +- ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- lt_compiler_flag="$3" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- # The option is referenced via a variable to avoid confusing sed. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) +- (eval "$lt_compile" 2>conftest.err) +- ac_status=$? +- cat conftest.err >&AS_MESSAGE_LOG_FD +- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD +- if (exit $ac_status) && test -s "$ac_outfile"; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then +- $2=yes +- fi +- fi +- $rm conftest* +-]) +- +-if test x"[$]$2" = xyes; then +- ifelse([$5], , :, [$5]) +-else +- ifelse([$6], , :, [$6]) +-fi +-])# AC_LIBTOOL_COMPILER_OPTION +- +- +-# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +-# [ACTION-SUCCESS], [ACTION-FAILURE]) +-# ------------------------------------------------------------ +-# Check whether the given compiler option works +-AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +-[AC_CACHE_CHECK([$1], [$2], +- [$2=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $3" +- printf "$lt_simple_link_test_code" > conftest.$ac_ext +- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then +- # The linker can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- # Append any errors to the config.log. +- cat conftest.err 1>&AS_MESSAGE_LOG_FD +- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if diff conftest.exp conftest.er2 >/dev/null; then +- $2=yes +- fi +- else +- $2=yes +- fi +- fi +- $rm conftest* +- LDFLAGS="$save_LDFLAGS" +-]) +- +-if test x"[$]$2" = xyes; then +- ifelse([$4], , :, [$4]) +-else +- ifelse([$5], , :, [$5]) +-fi +-])# AC_LIBTOOL_LINKER_OPTION +- +- +-# AC_LIBTOOL_SYS_MAX_CMD_LEN +-# -------------------------- +-AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +-[# find the maximum length of command line arguments +-AC_MSG_CHECKING([the maximum length of command line arguments]) +-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl +- i=0 +- teststring="ABCD" +- +- case $build_os in +- msdosdjgpp*) +- # On DJGPP, this test can blow up pretty badly due to problems in libc +- # (any single argument exceeding 2000 bytes causes a buffer overrun +- # during glob expansion). Even if it were fixed, the result of this +- # check would be larger than it should be. +- lt_cv_sys_max_cmd_len=12288; # 12K is about right +- ;; +- +- gnu*) +- # Under GNU Hurd, this test is not required because there is +- # no limit to the length of command line arguments. +- # Libtool will interpret -1 as no limit whatsoever +- lt_cv_sys_max_cmd_len=-1; +- ;; +- +- cygwin* | mingw*) +- # On Win9x/ME, this test blows up -- it succeeds, but takes +- # about 5 minutes as the teststring grows exponentially. +- # Worse, since 9x/ME are not pre-emptively multitasking, +- # you end up with a "frozen" computer, even though with patience +- # the test eventually succeeds (with a max line length of 256k). +- # Instead, let's just punt: use the minimum linelength reported by +- # all of the supported platforms: 8192 (on NT/2K/XP). +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- amigaos*) +- # On AmigaOS with pdksh, this test takes hours, literally. +- # So we just punt and use a minimum line length of 8192. +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) +- # This has been around since 386BSD, at least. Likely further. +- if test -x /sbin/sysctl; then +- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` +- elif test -x /usr/sbin/sysctl; then +- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` +- else +- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs +- fi +- # And add a safety zone +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` +- ;; +- +- interix*) +- # We know the value 262144 and hardcode it with a safety zone (like BSD) +- lt_cv_sys_max_cmd_len=196608 +- ;; +- +- osf*) +- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure +- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not +- # nice to cause kernel panics so lets avoid the loop below. +- # First set a reasonable default. +- lt_cv_sys_max_cmd_len=16384 +- # +- if test -x /sbin/sysconfig; then +- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in +- *1*) lt_cv_sys_max_cmd_len=-1 ;; +- esac +- fi +- ;; +- sco3.2v5*) +- lt_cv_sys_max_cmd_len=102400 +- ;; +- sysv5* | sco5v6* | sysv4.2uw2*) +- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` +- if test -n "$kargmax"; then +- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` +- else +- lt_cv_sys_max_cmd_len=32768 +- fi +- ;; +- *) +- # If test is not a shell built-in, we'll probably end up computing a +- # maximum length that is only half of the actual maximum length, but +- # we can't tell. +- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} +- while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ +- = "XX$teststring") >/dev/null 2>&1 && +- new_result=`expr "X$teststring" : ".*" 2>&1` && +- lt_cv_sys_max_cmd_len=$new_result && +- test $i != 17 # 1/2 MB should be enough +- do +- i=`expr $i + 1` +- teststring=$teststring$teststring +- done +- teststring= +- # Add a significant safety factor because C++ compilers can tack on massive +- # amounts of additional arguments before passing them to the linker. +- # It appears as though 1/2 is a usable value. +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` +- ;; +- esac +-]) +-if test -n $lt_cv_sys_max_cmd_len ; then +- AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +-else +- AC_MSG_RESULT(none) +-fi +-])# AC_LIBTOOL_SYS_MAX_CMD_LEN +- +- +-# _LT_AC_CHECK_DLFCN +-# ------------------ +-AC_DEFUN([_LT_AC_CHECK_DLFCN], +-[AC_CHECK_HEADERS(dlfcn.h)dnl +-])# _LT_AC_CHECK_DLFCN +- +- +-# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +-# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +-# --------------------------------------------------------------------- +-AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +-[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +-if test "$cross_compiling" = yes; then : +- [$4] +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif +- +-#include +- +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif +- +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif +- +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif +- +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; +- +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } +- else +- puts (dlerror ()); +- +- exit (status); +-}] +-EOF +- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) $1 ;; +- x$lt_dlneed_uscore) $2 ;; +- x$lt_dlunknown|x*) $3 ;; +- esac +- else : +- # compilation failed +- $3 +- fi +-fi +-rm -fr conftest* +-])# _LT_AC_TRY_DLOPEN_SELF +- +- +-# AC_LIBTOOL_DLOPEN_SELF +-# ---------------------- +-AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +-[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +-if test "x$enable_dlopen" != xyes; then +- enable_dlopen=unknown +- enable_dlopen_self=unknown +- enable_dlopen_self_static=unknown +-else +- lt_cv_dlopen=no +- lt_cv_dlopen_libs= +- +- case $host_os in +- beos*) +- lt_cv_dlopen="load_add_on" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ;; +- +- mingw* | pw32*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; +- +- cygwin*) +- lt_cv_dlopen="dlopen" +- lt_cv_dlopen_libs= +- ;; +- +- darwin*) +- # if libdl is installed we need to link against it +- AC_CHECK_LIB([dl], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ +- lt_cv_dlopen="dyld" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ]) +- ;; +- +- *) +- AC_CHECK_FUNC([shl_load], +- [lt_cv_dlopen="shl_load"], +- [AC_CHECK_LIB([dld], [shl_load], +- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], +- [AC_CHECK_FUNC([dlopen], +- [lt_cv_dlopen="dlopen"], +- [AC_CHECK_LIB([dl], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], +- [AC_CHECK_LIB([svld], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], +- [AC_CHECK_LIB([dld], [dld_link], +- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) +- ]) +- ]) +- ]) +- ]) +- ]) +- ;; +- esac +- +- if test "x$lt_cv_dlopen" != xno; then +- enable_dlopen=yes +- else +- enable_dlopen=no +- fi +- +- case $lt_cv_dlopen in +- dlopen) +- save_CPPFLAGS="$CPPFLAGS" +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" +- +- save_LDFLAGS="$LDFLAGS" +- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" +- +- save_LIBS="$LIBS" +- LIBS="$lt_cv_dlopen_libs $LIBS" +- +- AC_CACHE_CHECK([whether a program can dlopen itself], +- lt_cv_dlopen_self, [dnl +- _LT_AC_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, +- lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) +- ]) +- +- if test "x$lt_cv_dlopen_self" = xyes; then +- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" +- AC_CACHE_CHECK([whether a statically linked program can dlopen itself], +- lt_cv_dlopen_self_static, [dnl +- _LT_AC_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, +- lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) +- ]) +- fi +- +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac +- +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; +- esac +- +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac +-fi +-])# AC_LIBTOOL_DLOPEN_SELF +- +- +-# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +-# --------------------------------- +-# Check to see if options -c and -o are simultaneously supported by compiler +-AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +-[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], +- [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], +- [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no +- $rm -r conftest 2>/dev/null +- mkdir conftest +- cd conftest +- mkdir out +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- lt_compiler_flag="-o out/conftest2.$ac_objext" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) +- (eval "$lt_compile" 2>out/conftest.err) +- ac_status=$? +- cat out/conftest.err >&AS_MESSAGE_LOG_FD +- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD +- if (exit $ac_status) && test -s out/conftest2.$ac_objext +- then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp +- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 +- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then +- _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes +- fi +- fi +- chmod u+w . 2>&AS_MESSAGE_LOG_FD +- $rm conftest* +- # SGI C++ compiler will create directory out/ii_files/ for +- # template instantiation +- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files +- $rm out/* && rmdir out +- cd .. +- rmdir conftest +- $rm conftest* +-]) +-])# AC_LIBTOOL_PROG_CC_C_O +- +- +-# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +-# ----------------------------------------- +-# Check to see if we can do hard links to lock some files if needed +-AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +-[AC_REQUIRE([_LT_AC_LOCK])dnl +- +-hard_links="nottested" +-if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- AC_MSG_CHECKING([if we can lock with hard links]) +- hard_links=yes +- $rm conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- AC_MSG_RESULT([$hard_links]) +- if test "$hard_links" = no; then +- AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) +- need_locks=warn +- fi +-else +- need_locks=no +-fi +-])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS +- +- +-# AC_LIBTOOL_OBJDIR +-# ----------------- +-AC_DEFUN([AC_LIBTOOL_OBJDIR], +-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +-[rm -f .libs 2>/dev/null +-mkdir .libs 2>/dev/null +-if test -d .libs; then +- lt_cv_objdir=.libs +-else +- # MS-DOS does not allow filenames that begin with a dot. +- lt_cv_objdir=_libs +-fi +-rmdir .libs 2>/dev/null]) +-objdir=$lt_cv_objdir +-])# AC_LIBTOOL_OBJDIR +- +- +-# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +-# ---------------------------------------------- +-# Check hardcoding attributes. +-AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +-[AC_MSG_CHECKING([how to hardcode library paths into programs]) +-_LT_AC_TAGVAR(hardcode_action, $1)= +-if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ +- test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ +- test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then +- +- # We can hardcode non-existant directories. +- if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && +- test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then +- # Linking always hardcodes the temporary library directory. +- _LT_AC_TAGVAR(hardcode_action, $1)=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- _LT_AC_TAGVAR(hardcode_action, $1)=immediate +- fi +-else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +-fi +-AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) +- +-if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless +-fi +-])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH +- +- +-# AC_LIBTOOL_SYS_LIB_STRIP +-# ------------------------ +-AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +-[striplib= +-old_striplib= +-AC_MSG_CHECKING([whether stripping libraries is possible]) +-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- AC_MSG_RESULT([yes]) +-else +-# FIXME - insert some real tests, host_os isn't really good enough +- case $host_os in +- darwin*) +- if test -n "$STRIP" ; then +- striplib="$STRIP -x" +- AC_MSG_RESULT([yes]) +- else +- AC_MSG_RESULT([no]) +-fi +- ;; +- *) +- AC_MSG_RESULT([no]) +- ;; +- esac +-fi +-])# AC_LIBTOOL_SYS_LIB_STRIP +- +- +-# AC_LIBTOOL_SYS_DYNAMIC_LINKER +-# ----------------------------- +-# PORTME Fill in your ld.so characteristics +-AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +-[AC_MSG_CHECKING([dynamic linker characteristics]) +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-shrext_cmds=".so" +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then +- # if the path contains ";" then we assume it to be the separator +- # otherwise default to the standard path separator (i.e. ":") - it is +- # assumed that no part of a normal pathname contains ";" but that should +- # okay in the real world where ";" in dirpaths is itself problematic. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +-else +- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +-fi +-need_lib_prefix=unknown +-hardcode_into_libs=no +- +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-need_version=unknown +- +-case $host_os in +-aix3*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' +- shlibpath_var=LIBPATH +- +- # AIX 3 has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- +-aix4* | aix5*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- hardcode_into_libs=yes +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- else +- # With GCC up to 2.95.x, collect2 would create an import file +- # for dependence libraries. The import file would start with +- # the line `#! .'. This would cause the generated library to +- # depend on `.', always an invalid library. This was fixed in +- # development snapshots of GCC prior to 3.0. +- case $host_os in +- aix4 | aix4.[[01]] | aix4.[[01]].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then +- : +- else +- can_build_shared=no +- fi +- ;; +- esac +- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct +- # soname into executable. Probably we can add versioning support to +- # collect2, so additional links can be useful in future. +- if test "$aix_use_runtimelinking" = yes; then +- # If using run time linking (on AIX 4.2 or later) use lib.so +- # instead of lib.a to let people know that these are not +- # typical AIX shared libraries. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- else +- # We preserve .a as extension for shared libraries through AIX4.2 +- # and later when we are not doing run time linking. +- library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}${shared_ext}$major' +- fi +- shlibpath_var=LIBPATH +- fi +- ;; +- +-amigaos*) +- library_names_spec='$libname.ixlibrary $libname.a' +- # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' +- ;; +- +-beos*) +- library_names_spec='${libname}${shared_ext}' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; +- +-bsdi[[45]]*) +- version_type=linux +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" +- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- # the default ld.so.conf also contains /usr/contrib/lib and +- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow +- # libtool to hard-code these into programs +- ;; +- +-cygwin* | mingw* | pw32*) +- version_type=windows +- shrext_cmds=".dll" +- need_version=no +- need_lib_prefix=no +- +- case $GCC,$host_os in +- yes,cygwin* | yes,mingw* | yes,pw32*) +- library_names_spec='$libname.dll.a' +- # DLL is installed to $(libdir)/../bin by postinstall_cmds +- postinstall_cmds='base_file=`basename \${file}`~ +- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname~ +- chmod a+x \$dldir/$dlname' +- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $rm \$dlpath' +- shlibpath_overrides_runpath=yes +- +- case $host_os in +- cygwin*) +- # Cygwin DLLs use 'cyg' prefix rather than 'lib' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" +- ;; +- mingw*) +- # MinGW DLLs use traditional 'lib' prefix +- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then +- # It is most probably a Windows format PATH printed by +- # mingw gcc, but we are running on Cygwin. Gcc prints its search +- # path with ; separators, and with drive letters. We can handle the +- # drive letters (cygwin fileutils understands them), so leave them, +- # especially as we might pass files found there to a mingw objdump, +- # which wouldn't understand a cygwinified path. Ahh. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +- ;; +- pw32*) +- # pw32 DLLs use 'pw' prefix rather than 'lib' +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- ;; +- esac +- ;; +- +- *) +- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' +- ;; +- esac +- dynamic_linker='Win32 ld.exe' +- # FIXME: first we should search . and the directory the executable is in +- shlibpath_var=PATH +- ;; +- +-darwin* | rhapsody*) +- dynamic_linker="$host_os dyld" +- version_type=darwin +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' +- soname_spec='${libname}${release}${major}$shared_ext' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. +- if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` +- else +- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' +- fi +- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' +- ;; +- +-dgux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-freebsd1*) +- dynamic_linker=no +- ;; +- +-kfreebsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- +-freebsd* | dragonfly*) +- # DragonFly does not have aout. When/if they implement a new +- # versioning mechanism, adjust this. +- if test -x /usr/bin/objformat; then +- objformat=`/usr/bin/objformat` +- else +- case $host_os in +- freebsd[[123]]*) objformat=aout ;; +- *) objformat=elf ;; +- esac +- fi +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- need_version=no +- need_lib_prefix=no +- ;; +- freebsd-*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' +- need_version=yes +- ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2*) +- shlibpath_overrides_runpath=yes +- ;; +- freebsd3.[[01]]* | freebsdelf3.[[01]]*) +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ +- freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- freebsd*) # from 4.6 on +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- esac +- ;; +- +-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- ;; +- +-hpux9* | hpux10* | hpux11*) +- # Give a soname corresponding to the major version so that dld.sl refuses to +- # link against other versions. +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- case $host_cpu in +- ia64*) +- shrext_cmds='.so' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.so" +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- if test "X$HPUX_IA64_MODE" = X32; then +- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" +- else +- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" +- fi +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- hppa*64*) +- shrext_cmds='.sl' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- *) +- shrext_cmds='.sl' +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- esac +- # HP-UX runs *really* slowly unless shared libraries are mode 555. +- postinstall_cmds='chmod 555 $lib' +- ;; +- +-interix3*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- +-irix5* | irix6* | nonstopux*) +- case $host_os in +- nonstopux*) version_type=nonstopux ;; +- *) +- if test "$lt_cv_prog_gnu_ld" = yes; then +- version_type=linux +- else +- version_type=irix +- fi ;; +- esac +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' +- case $host_os in +- irix5* | nonstopux*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") +- libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") +- libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") +- libsuff=64 shlibsuff=64 libmagic=64-bit;; +- *) libsuff= shlibsuff= libmagic=never-match;; +- esac +- ;; +- esac +- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" +- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" +- hardcode_into_libs=yes +- ;; +- +-# No shared lib support for Linux oldld, aout, or coff. +-linux*oldld* | linux*aout* | linux*coff*) +- dynamic_linker=no +- ;; +- +-# This must be Linux ELF. +-linux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- # This implies no fast_install, which is unacceptable. +- # Some rework will be needed to allow for fast_install +- # before this can be enabled. +- hardcode_into_libs=yes +- +- # Append ld.so.conf contents to the search path +- if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" +- fi +- +- # We used to test for /lib/ld.so.1 and disable shared libraries on +- # powerpc, because MkLinux only supported shared libraries with the +- # GNU dynamic linker. Since this was broken with cross compilers, +- # most powerpc-linux boxes support dynamic linking these days and +- # people can always --disable-shared, the test was removed, and we +- # assume the GNU/Linux dynamic linker is in use. +- dynamic_linker='GNU/Linux ld.so' +- ;; +- +-knetbsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- +-netbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='NetBSD ld.elf_so' +- fi +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- +-newsos6) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-nto-qnx*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-openbsd*) +- version_type=sunos +- sys_lib_dlsearch_path_spec="/usr/lib" +- need_lib_prefix=no +- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. +- case $host_os in +- openbsd3.3 | openbsd3.3.*) need_version=yes ;; +- *) need_version=no ;; +- esac +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case $host_os in +- openbsd2.[[89]] | openbsd2.[[89]].*) +- shlibpath_overrides_runpath=no +- ;; +- *) +- shlibpath_overrides_runpath=yes +- ;; +- esac +- else +- shlibpath_overrides_runpath=yes +- fi +- ;; +- +-os2*) +- libname_spec='$name' +- shrext_cmds=".dll" +- need_lib_prefix=no +- library_names_spec='$libname${shared_ext} $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; +- +-osf3* | osf4* | osf5*) +- version_type=osf +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" +- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +- ;; +- +-solaris*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; +- +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; +- +-sysv4 | sysv4.3*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no +- need_lib_prefix=no +- export_dynamic_flag_spec='${wl}-Blargedynsym' +- runpath_var=LD_RUN_PATH +- ;; +- siemens) +- need_lib_prefix=no +- ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' +- ;; +- esac +- ;; +- +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux +- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' +- soname_spec='$libname${shared_ext}.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; +- +-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) +- version_type=freebsd-elf +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- if test "$with_gnu_ld" = yes; then +- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' +- shlibpath_overrides_runpath=no +- else +- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' +- shlibpath_overrides_runpath=yes +- case $host_os in +- sco3.2v5*) +- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" +- ;; +- esac +- fi +- sys_lib_dlsearch_path_spec='/usr/lib' +- ;; +- +-uts4*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-*) +- dynamic_linker=no +- ;; +-esac +-AC_MSG_RESULT([$dynamic_linker]) +-test "$dynamic_linker" = no && can_build_shared=no +- +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi +-])# AC_LIBTOOL_SYS_DYNAMIC_LINKER +- +- +-# _LT_AC_TAGCONFIG +-# ---------------- +-AC_DEFUN([_LT_AC_TAGCONFIG], +-[AC_ARG_WITH([tags], +- [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], +- [include additional configurations @<:@automatic@:>@])], +- [tagnames="$withval"]) +- +-if test -f "$ltmain" && test -n "$tagnames"; then +- if test ! -f "${ofile}"; then +- AC_MSG_WARN([output file `$ofile' does not exist]) +- fi +- +- if test -z "$LTCC"; then +- eval "`$SHELL ${ofile} --config | grep '^LTCC='`" +- if test -z "$LTCC"; then +- AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) +- else +- AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) +- fi +- fi +- if test -z "$LTCFLAGS"; then +- eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" +- fi +- +- # Extract list of available tagged configurations in $ofile. +- # Note that this assumes the entire list is on one line. +- available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` +- +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for tagname in $tagnames; do +- IFS="$lt_save_ifs" +- # Check whether tagname contains only valid characters +- case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in +- "") ;; +- *) AC_MSG_ERROR([invalid tag name: $tagname]) +- ;; +- esac +- +- if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null +- then +- AC_MSG_ERROR([tag name \"$tagname\" already exists]) +- fi +- +- # Update the list of available tags. +- if test -n "$tagname"; then +- echo appending configuration tag \"$tagname\" to $ofile +- +- case $tagname in +- CXX) +- if test -n "$CXX" && ( test "X$CXX" != "Xno" && +- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || +- (test "X$CXX" != "Xg++"))) ; then +- AC_LIBTOOL_LANG_CXX_CONFIG +- else +- tagname="" +- fi +- ;; +- +- F77) +- if test -n "$F77" && test "X$F77" != "Xno"; then +- AC_LIBTOOL_LANG_F77_CONFIG +- else +- tagname="" +- fi +- ;; +- +- GCJ) +- if test -n "$GCJ" && test "X$GCJ" != "Xno"; then +- AC_LIBTOOL_LANG_GCJ_CONFIG +- else +- tagname="" +- fi +- ;; +- +- RC) +- AC_LIBTOOL_LANG_RC_CONFIG +- ;; +- +- *) +- AC_MSG_ERROR([Unsupported tag name: $tagname]) +- ;; +- esac +- +- # Append the new tag name to the list of available tags. +- if test -n "$tagname" ; then +- available_tags="$available_tags $tagname" +- fi +- fi +- done +- IFS="$lt_save_ifs" +- +- # Now substitute the updated list of available tags. +- if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then +- mv "${ofile}T" "$ofile" +- chmod +x "$ofile" +- else +- rm -f "${ofile}T" +- AC_MSG_ERROR([unable to update list of available tagged configurations.]) +- fi +-fi +-])# _LT_AC_TAGCONFIG +- +- +-# AC_LIBTOOL_DLOPEN +-# ----------------- +-# enable checks for dlopen support +-AC_DEFUN([AC_LIBTOOL_DLOPEN], +- [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +-])# AC_LIBTOOL_DLOPEN +- +- +-# AC_LIBTOOL_WIN32_DLL +-# -------------------- +-# declare package support for building win32 DLLs +-AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +-[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +-])# AC_LIBTOOL_WIN32_DLL +- +- +-# AC_ENABLE_SHARED([DEFAULT]) +-# --------------------------- +-# implement the --enable-shared flag +-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +-AC_DEFUN([AC_ENABLE_SHARED], +-[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +-AC_ARG_ENABLE([shared], +- [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], +- [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], +- [p=${PACKAGE-default} +- case $enableval in +- yes) enable_shared=yes ;; +- no) enable_shared=no ;; +- *) +- enable_shared=no +- # Look at the argument we got. We use all the common list separators. +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for pkg in $enableval; do +- IFS="$lt_save_ifs" +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi +- done +- IFS="$lt_save_ifs" +- ;; +- esac], +- [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +-])# AC_ENABLE_SHARED +- +- +-# AC_DISABLE_SHARED +-# ----------------- +-# set the default shared flag to --disable-shared +-AC_DEFUN([AC_DISABLE_SHARED], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-AC_ENABLE_SHARED(no) +-])# AC_DISABLE_SHARED +- +- +-# AC_ENABLE_STATIC([DEFAULT]) +-# --------------------------- +-# implement the --enable-static flag +-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +-AC_DEFUN([AC_ENABLE_STATIC], +-[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +-AC_ARG_ENABLE([static], +- [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], +- [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], +- [p=${PACKAGE-default} +- case $enableval in +- yes) enable_static=yes ;; +- no) enable_static=no ;; +- *) +- enable_static=no +- # Look at the argument we got. We use all the common list separators. +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for pkg in $enableval; do +- IFS="$lt_save_ifs" +- if test "X$pkg" = "X$p"; then +- enable_static=yes +- fi +- done +- IFS="$lt_save_ifs" +- ;; +- esac], +- [enable_static=]AC_ENABLE_STATIC_DEFAULT) +-])# AC_ENABLE_STATIC +- +- +-# AC_DISABLE_STATIC +-# ----------------- +-# set the default static flag to --disable-static +-AC_DEFUN([AC_DISABLE_STATIC], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-AC_ENABLE_STATIC(no) +-])# AC_DISABLE_STATIC +- +- +-# AC_ENABLE_FAST_INSTALL([DEFAULT]) +-# --------------------------------- +-# implement the --enable-fast-install flag +-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +-AC_DEFUN([AC_ENABLE_FAST_INSTALL], +-[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +-AC_ARG_ENABLE([fast-install], +- [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], +- [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], +- [p=${PACKAGE-default} +- case $enableval in +- yes) enable_fast_install=yes ;; +- no) enable_fast_install=no ;; +- *) +- enable_fast_install=no +- # Look at the argument we got. We use all the common list separators. +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for pkg in $enableval; do +- IFS="$lt_save_ifs" +- if test "X$pkg" = "X$p"; then +- enable_fast_install=yes +- fi +- done +- IFS="$lt_save_ifs" +- ;; +- esac], +- [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +-])# AC_ENABLE_FAST_INSTALL +- +- +-# AC_DISABLE_FAST_INSTALL +-# ----------------------- +-# set the default to --disable-fast-install +-AC_DEFUN([AC_DISABLE_FAST_INSTALL], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-AC_ENABLE_FAST_INSTALL(no) +-])# AC_DISABLE_FAST_INSTALL +- +- +-# AC_LIBTOOL_PICMODE([MODE]) +-# -------------------------- +-# implement the --with-pic flag +-# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +-AC_DEFUN([AC_LIBTOOL_PICMODE], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-pic_mode=ifelse($#,1,$1,default) +-])# AC_LIBTOOL_PICMODE +- +- +-# AC_PROG_EGREP +-# ------------- +-# This is predefined starting with Autoconf 2.54, so this conditional +-# definition can be removed once we require Autoconf 2.54 or later. +-m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +-[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], +- [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 +- then ac_cv_prog_egrep='grep -E' +- else ac_cv_prog_egrep='egrep' +- fi]) +- EGREP=$ac_cv_prog_egrep +- AC_SUBST([EGREP]) +-])]) +- +- +-# AC_PATH_TOOL_PREFIX +-# ------------------- +-# find a file program which can recognise shared library +-AC_DEFUN([AC_PATH_TOOL_PREFIX], +-[AC_REQUIRE([AC_PROG_EGREP])dnl +-AC_MSG_CHECKING([for $1]) +-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +-[case $MAGIC_CMD in +-[[\\/*] | ?:[\\/]*]) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +-*) +- lt_save_MAGIC_CMD="$MAGIC_CMD" +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +-dnl $ac_dummy forces splitting on constant user-supplied paths. +-dnl POSIX.2 word splitting is done only on the output of word expansions, +-dnl not every word. This closes a longstanding sh security hole. +- ac_dummy="ifelse([$2], , $PATH, [$2])" +- for ac_dir in $ac_dummy; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/$1; then +- lt_cv_path_MAGIC_CMD="$ac_dir/$1" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- $EGREP "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 +- +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org +- +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$lt_save_ifs" +- MAGIC_CMD="$lt_save_MAGIC_CMD" +- ;; +-esac]) +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- AC_MSG_RESULT($MAGIC_CMD) +-else +- AC_MSG_RESULT(no) +-fi +-])# AC_PATH_TOOL_PREFIX +- +- +-# AC_PATH_MAGIC +-# ------------- +-# find a file program which can recognise a shared library +-AC_DEFUN([AC_PATH_MAGIC], +-[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +-if test -z "$lt_cv_path_MAGIC_CMD"; then +- if test -n "$ac_tool_prefix"; then +- AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) +- else +- MAGIC_CMD=: +- fi +-fi +-])# AC_PATH_MAGIC +- +- +-# AC_PROG_LD +-# ---------- +-# find the pathname to the GNU or non-GNU linker +-AC_DEFUN([AC_PROG_LD], +-[AC_ARG_WITH([gnu-ld], +- [AC_HELP_STRING([--with-gnu-ld], +- [assume the C compiler uses GNU ld @<:@default=no@:>@])], +- [test "$withval" = no || with_gnu_ld=yes], +- [with_gnu_ld=no]) +-AC_REQUIRE([LT_AC_PROG_SED])dnl +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-ac_prog=ld +-if test "$GCC" = yes; then +- # Check if gcc -print-prog-name=ld gives a path. +- AC_MSG_CHECKING([for ld used by $CC]) +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [[\\/]]* | ?:[[\\/]]*) +- re_direlt='/[[^/]][[^/]]*/\.\./' +- # Canonicalize the pathname of ld +- ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` +- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD="$ac_prog" +- ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown +- ;; +- esac +-elif test "$with_gnu_ld" = yes; then +- AC_MSG_CHECKING([for GNU ld]) +-else +- AC_MSG_CHECKING([for non-GNU ld]) +-fi +-AC_CACHE_VAL(lt_cv_path_LD, +-[if test -z "$LD"; then +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +- lt_cv_path_LD="$ac_dir/$ac_prog" +- # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some variants of GNU ld only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then +- case $host_cpu in +- i*86 ) +- # Not sure whether the presence of OpenBSD here was a mistake. +- # Let's accept both of them until this is cleared up. +- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +- ;; +- esac +- else +- lt_cv_deplibs_check_method=pass_all +- fi +- ;; +- +-gnu*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-hpux10.20* | hpux11*) +- lt_cv_file_magic_cmd=/usr/bin/file +- case $host_cpu in +- ia64*) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' +- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so +- ;; +- hppa*64*) +- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] +- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl +- ;; +- *) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' +- lt_cv_file_magic_test_file=/usr/lib/libc.sl +- ;; +- esac +- ;; +- +-interix3*) +- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' +- ;; +- +-irix5* | irix6* | nonstopux*) +- case $LD in +- *-32|*"-32 ") libmagic=32-bit;; +- *-n32|*"-n32 ") libmagic=N32;; +- *-64|*"-64 ") libmagic=64-bit;; +- *) libmagic=never-match;; +- esac +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-# This must be Linux ELF. +-linux*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' +- fi +- ;; +- +-newos6*) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libnls.so +- ;; +- +-nto-qnx*) +- lt_cv_deplibs_check_method=unknown +- ;; +- +-openbsd*) +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' +- fi +- ;; +- +-osf3* | osf4* | osf5*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-solaris*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sysv4 | sysv4.3*) +- case $host_vendor in +- motorola) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` +- ;; +- ncr) +- lt_cv_deplibs_check_method=pass_all +- ;; +- sequent) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' +- ;; +- sni) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- siemens) +- lt_cv_deplibs_check_method=pass_all +- ;; +- pc) +- lt_cv_deplibs_check_method=pass_all +- ;; +- esac +- ;; +- +-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) +- lt_cv_deplibs_check_method=pass_all +- ;; +-esac +-]) +-file_magic_cmd=$lt_cv_file_magic_cmd +-deplibs_check_method=$lt_cv_deplibs_check_method +-test -z "$deplibs_check_method" && deplibs_check_method=unknown +-])# AC_DEPLIBS_CHECK_METHOD +- +- +-# AC_PROG_NM +-# ---------- +-# find the pathname to a BSD-compatible name lister +-AC_DEFUN([AC_PROG_NM], +-[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +-[if test -n "$NM"; then +- # Let the user override the test. +- lt_cv_path_NM="$NM" +-else +- lt_nm_to_check="${ac_tool_prefix}nm" +- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then +- lt_nm_to_check="$lt_nm_to_check nm" +- fi +- for lt_tmp_nm in $lt_nm_to_check; do +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- tmp_nm="$ac_dir/$lt_tmp_nm" +- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then +- # Check to see if the nm accepts a BSD-compat flag. +- # Adding the `sed 1q' prevents false positives on HP-UX, which says: +- # nm: unknown option "B" ignored +- # Tru64's nm complains that /dev/null is an invalid object file +- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in +- */dev/null* | *'Invalid file or object type'*) +- lt_cv_path_NM="$tmp_nm -B" +- break +- ;; +- *) +- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in +- */dev/null*) +- lt_cv_path_NM="$tmp_nm -p" +- break +- ;; +- *) +- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but +- continue # so that we can try to find one that supports BSD flags +- ;; +- esac +- ;; +- esac +- fi +- done +- IFS="$lt_save_ifs" +- done +- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +-fi]) +-NM="$lt_cv_path_NM" +-])# AC_PROG_NM +- +- +-# AC_CHECK_LIBM +-# ------------- +-# check for math library +-AC_DEFUN([AC_CHECK_LIBM], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-LIBM= +-case $host in +-*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) +- # These system don't have libm, or don't need it +- ;; +-*-ncr-sysv4.3*) +- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") +- AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") +- ;; +-*) +- AC_CHECK_LIB(m, cos, LIBM="-lm") +- ;; +-esac +-])# AC_CHECK_LIBM +- +- +-# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +-# ----------------------------------- +-# sets LIBLTDL to the link flags for the libltdl convenience library and +-# LTDLINCL to the include flags for the libltdl header and adds +-# --enable-ltdl-convenience to the configure arguments. Note that +-# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +-# it is assumed to be `libltdl'. LIBLTDL will be prefixed with +-# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' +-# (note the single quotes!). If your package is not flat and you're not +-# using automake, define top_builddir and top_srcdir appropriately in +-# the Makefiles. +-AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +- case $enable_ltdl_convenience in +- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; +- "") enable_ltdl_convenience=yes +- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; +- esac +- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la +- LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) +- # For backwards non-gettext consistent compatibility... +- INCLTDL="$LTDLINCL" +-])# AC_LIBLTDL_CONVENIENCE +- +- +-# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +-# ----------------------------------- +-# sets LIBLTDL to the link flags for the libltdl installable library and +-# LTDLINCL to the include flags for the libltdl header and adds +-# --enable-ltdl-install to the configure arguments. Note that +-# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +-# and an installed libltdl is not found, it is assumed to be `libltdl'. +-# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with +-# '${top_srcdir}/' (note the single quotes!). If your package is not +-# flat and you're not using automake, define top_builddir and top_srcdir +-# appropriately in the Makefiles. +-# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +-AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +- AC_CHECK_LIB(ltdl, lt_dlinit, +- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], +- [if test x"$enable_ltdl_install" = xno; then +- AC_MSG_WARN([libltdl not installed, but installation disabled]) +- else +- enable_ltdl_install=yes +- fi +- ]) +- if test x"$enable_ltdl_install" = x"yes"; then +- ac_configure_args="$ac_configure_args --enable-ltdl-install" +- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la +- LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) +- else +- ac_configure_args="$ac_configure_args --enable-ltdl-install=no" +- LIBLTDL="-lltdl" +- LTDLINCL= +- fi +- # For backwards non-gettext consistent compatibility... +- INCLTDL="$LTDLINCL" +-])# AC_LIBLTDL_INSTALLABLE +- +- +-# AC_LIBTOOL_CXX +-# -------------- +-# enable support for C++ libraries +-AC_DEFUN([AC_LIBTOOL_CXX], +-[AC_REQUIRE([_LT_AC_LANG_CXX]) +-])# AC_LIBTOOL_CXX +- +- +-# _LT_AC_LANG_CXX +-# --------------- +-AC_DEFUN([_LT_AC_LANG_CXX], +-[AC_REQUIRE([AC_PROG_CXX]) +-AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +-])# _LT_AC_LANG_CXX +- +-# _LT_AC_PROG_CXXCPP +-# ------------------ +-AC_DEFUN([_LT_AC_PROG_CXXCPP], +-[ +-AC_REQUIRE([AC_PROG_CXX]) +-if test -n "$CXX" && ( test "X$CXX" != "Xno" && +- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || +- (test "X$CXX" != "Xg++"))) ; then +- AC_PROG_CXXCPP +-fi +-])# _LT_AC_PROG_CXXCPP +- +-# AC_LIBTOOL_F77 +-# -------------- +-# enable support for Fortran 77 libraries +-AC_DEFUN([AC_LIBTOOL_F77], +-[AC_REQUIRE([_LT_AC_LANG_F77]) +-])# AC_LIBTOOL_F77 +- +- +-# _LT_AC_LANG_F77 +-# --------------- +-AC_DEFUN([_LT_AC_LANG_F77], +-[AC_REQUIRE([AC_PROG_F77]) +-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +-])# _LT_AC_LANG_F77 +- +- +-# AC_LIBTOOL_GCJ +-# -------------- +-# enable support for GCJ libraries +-AC_DEFUN([AC_LIBTOOL_GCJ], +-[AC_REQUIRE([_LT_AC_LANG_GCJ]) +-])# AC_LIBTOOL_GCJ +- +- +-# _LT_AC_LANG_GCJ +-# --------------- +-AC_DEFUN([_LT_AC_LANG_GCJ], +-[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], +- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], +- [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], +- [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], +- [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], +- [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +-])# _LT_AC_LANG_GCJ +- +- +-# AC_LIBTOOL_RC +-# ------------- +-# enable support for Windows resource files +-AC_DEFUN([AC_LIBTOOL_RC], +-[AC_REQUIRE([LT_AC_PROG_RC]) +-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +-])# AC_LIBTOOL_RC +- +- +-# AC_LIBTOOL_LANG_C_CONFIG +-# ------------------------ +-# Ensure that the configuration vars for the C compiler are +-# suitably defined. Those variables are subsequently used by +-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +-AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +-AC_DEFUN([_LT_AC_LANG_C_CONFIG], +-[lt_save_CC="$CC" +-AC_LANG_PUSH(C) +- +-# Source file extension for C test sources. +-ac_ext=c +- +-# Object file extension for compiled C test sources. +-objext=o +-_LT_AC_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="int some_variable = 0;\n" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='int main(){return(0);}\n' +- +-_LT_AC_SYS_COMPILER +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... +-AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +-AC_LIBTOOL_PROG_COMPILER_PIC($1) +-AC_LIBTOOL_PROG_CC_C_O($1) +-AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +-AC_LIBTOOL_PROG_LD_SHLIBS($1) +-AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +-AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +-AC_LIBTOOL_SYS_LIB_STRIP +-AC_LIBTOOL_DLOPEN_SELF +- +-# Report which library types will actually be built +-AC_MSG_CHECKING([if libtool supports shared libraries]) +-AC_MSG_RESULT([$can_build_shared]) +- +-AC_MSG_CHECKING([whether to build shared libraries]) +-test "$can_build_shared" = "no" && enable_shared=no +- +-# On AIX, shared libraries and static libraries use the same namespace, and +-# are all built from PIC. +-case $host_os in +-aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; +- +-aix4* | aix5*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +-esac +-AC_MSG_RESULT([$enable_shared]) +- +-AC_MSG_CHECKING([whether to build static libraries]) +-# Make sure either enable_shared or enable_static is yes. +-test "$enable_shared" = yes || enable_static=yes +-AC_MSG_RESULT([$enable_static]) +- +-AC_LIBTOOL_CONFIG($1) +- +-AC_LANG_POP +-CC="$lt_save_CC" +-])# AC_LIBTOOL_LANG_C_CONFIG +- +- +-# AC_LIBTOOL_LANG_CXX_CONFIG +-# -------------------------- +-# Ensure that the configuration vars for the C compiler are +-# suitably defined. Those variables are subsequently used by +-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +-AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +-AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +-[AC_LANG_PUSH(C++) +-AC_REQUIRE([AC_PROG_CXX]) +-AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +- +-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +-_LT_AC_TAGVAR(allow_undefined_flag, $1)= +-_LT_AC_TAGVAR(always_export_symbols, $1)=no +-_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +-_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +-_LT_AC_TAGVAR(hardcode_direct, $1)=no +-_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +-_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +-_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +-_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +-_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +-_LT_AC_TAGVAR(hardcode_automatic, $1)=no +-_LT_AC_TAGVAR(module_cmds, $1)= +-_LT_AC_TAGVAR(module_expsym_cmds, $1)= +-_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +-_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_AC_TAGVAR(no_undefined_flag, $1)= +-_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +-_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- +-# Dependencies to place before and after the object being linked: +-_LT_AC_TAGVAR(predep_objects, $1)= +-_LT_AC_TAGVAR(postdep_objects, $1)= +-_LT_AC_TAGVAR(predeps, $1)= +-_LT_AC_TAGVAR(postdeps, $1)= +-_LT_AC_TAGVAR(compiler_lib_search_path, $1)= +- +-# Source file extension for C++ test sources. +-ac_ext=cpp +- +-# Object file extension for compiled C++ test sources. +-objext=o +-_LT_AC_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="int some_variable = 0;\n" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n' +- +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. +-_LT_AC_SYS_COMPILER +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-# Allow CC to be a program name with arguments. +-lt_save_CC=$CC +-lt_save_LD=$LD +-lt_save_GCC=$GCC +-GCC=$GXX +-lt_save_with_gnu_ld=$with_gnu_ld +-lt_save_path_LD=$lt_cv_path_LD +-if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then +- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +-else +- $as_unset lt_cv_prog_gnu_ld +-fi +-if test -n "${lt_cv_path_LDCXX+set}"; then +- lt_cv_path_LD=$lt_cv_path_LDCXX +-else +- $as_unset lt_cv_path_LD +-fi +-test -z "${LDCXX+set}" || LD=$LDCXX +-CC=${CXX-"c++"} +-compiler=$CC +-_LT_AC_TAGVAR(compiler, $1)=$CC +-_LT_CC_BASENAME([$compiler]) +- +-# We don't want -fno-exception wen compiling C++ code, so set the +-# no_builtin_flag separately +-if test "$GXX" = yes; then +- _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +-else +- _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +-fi +- +-if test "$GXX" = yes; then +- # Set up default GNU C++ configuration +- +- AC_PROG_LD +- +- # Check if GNU C++ uses GNU ld as the underlying linker, since the +- # archiving commands below assume that GNU ld is being used. +- if test "$with_gnu_ld" = yes; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- +- # If archive_cmds runs LD, not CC, wlarc should be empty +- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to +- # investigate it a little bit more. (MM) +- wlarc='${wl}' +- +- # ancient GNU ld didn't support --whole-archive et. al. +- if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ +- grep 'no-whole-archive' > /dev/null; then +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- else +- with_gnu_ld=no +- wlarc= +- +- # A generic and very simple default shared library creation +- # command for GNU C++ for the case where it uses the native +- # linker, instead of GNU ld. If possible, this setting should +- # overridden to take advantage of the native linker features on +- # the platform it is being used on. +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' +- fi +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' +- +-else +- GXX=no +- with_gnu_ld=no +- wlarc= +-fi +- +-# PORTME: fill in a description of your system's C++ link characteristics +-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +-_LT_AC_TAGVAR(ld_shlibs, $1)=yes +-case $host_os in +- aix3*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- aix4* | aix5*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- aix_use_runtimelinking=no +- +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) +- for ld_flag in $LDFLAGS; do +- case $ld_flag in +- *-brtl*) +- aix_use_runtimelinking=yes +- break +- ;; +- esac +- done +- ;; +- esac +- +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi +- +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. +- +- _LT_AC_TAGVAR(archive_cmds, $1)='' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- +- if test "$GXX" = yes; then +- case $host_os in aix4.[[012]]|aix4.[[012]].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && \ +- strings "$collect2name" | grep resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- else +- # We have old collect2 +- _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +- fi +- ;; +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +- # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi +- +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to export. +- _LT_AC_TAGVAR(always_export_symbols, $1)=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' +- # Determine the default libpath from the value encoded in an empty executable. +- _LT_AC_SYS_LIBPATH_AIX +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" +- else +- # Determine the default libpath from the value encoded in an empty executable. +- _LT_AC_SYS_LIBPATH_AIX +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' +- # Exported symbols can be pulled into shared objects from archives +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes +- # This is similar to how AIX traditionally builds its shared libraries. +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +- fi +- fi +- ;; +- +- beos*) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- chorus*) +- case $cc_basename in +- *) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- cygwin* | mingw* | pw32*) +- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, +- # as there is no search path for DLLs. +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_AC_TAGVAR(always_export_symbols, $1)=no +- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- +- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- darwin* | rhapsody*) +- case $host_os in +- rhapsody* | darwin1.[[012]]) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' +- ;; +- *) # Darwin 1.3 on +- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- else +- case ${MACOSX_DEPLOYMENT_TARGET} in +- 10.[[012]]) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- ;; +- 10.*) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' +- ;; +- esac +- fi +- ;; +- esac +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_automatic, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- +- if test "$GXX" = yes ; then +- lt_int_apple_cc_single_mod=no +- output_verbose_link_cmd='echo' +- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then +- lt_int_apple_cc_single_mod=yes +- fi +- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' +- fi +- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds +- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- else +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- fi +- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- else +- case $cc_basename in +- xlc*) +- output_verbose_link_cmd='echo' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' +- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- ;; +- *) +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- fi +- ;; +- +- dgux*) +- case $cc_basename in +- ec++*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- ghcx*) +- # Green Hills C++ Compiler +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- freebsd[[12]]*) +- # C++ shared libraries reported to be fairly broken before switch to ELF +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- freebsd-elf*) +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- ;; +- freebsd* | kfreebsd*-gnu | dragonfly*) +- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF +- # conventions +- _LT_AC_TAGVAR(ld_shlibs, $1)=yes +- ;; +- gnu*) +- ;; +- hpux9*) +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, +- # but as the default +- # location of the library. +- +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- aCC*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- *) +- if test "$GXX" = yes; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- else +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- hpux10*|hpux11*) +- if test $with_gnu_ld = no; then +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- case $host_cpu in +- hppa*64*|ia64*) +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' +- ;; +- *) +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- ;; +- esac +- fi +- case $host_cpu in +- hppa*64*|ia64*) +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- *) +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, +- # but as the default +- # location of the library. +- ;; +- esac +- +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- aCC*) +- case $host_cpu in +- hppa*64*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- ia64*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- *) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- esac +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- *) +- if test "$GXX" = yes; then +- if test $with_gnu_ld = no; then +- case $host_cpu in +- hppa*64*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- ia64*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- *) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- esac +- fi +- else +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- interix3*) +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. +- # Instead, shared libraries are loaded at an image base (0x10000000 by +- # default) and relocated if they conflict, which is a slow very memory +- # consuming and fragmenting process. To avoid this, we pick a random, +- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link +- # time. Moving up from 0x10000000 also allows more sbrk(2) space. +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- ;; +- irix5* | irix6*) +- case $cc_basename in +- CC*) +- # SGI C++ +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- +- # Archives containing C++ object files must be created using +- # "CC -ar", where "CC" is the IRIX C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' +- ;; +- *) +- if test "$GXX" = yes; then +- if test "$with_gnu_ld" = no; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' +- fi +- fi +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- esac +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- ;; +- linux*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- +- # Archives containing C++ object files must be created using +- # "CC -Bstatic", where "CC" is the KAI C++ compiler. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' +- ;; +- icpc*) +- # Intel C++ +- with_gnu_ld=yes +- # version 8.0 and above of icpc choke on multiply defined symbols +- # if we add $predep_objects and $postdep_objects, however 7.1 and +- # earlier do not add the objects themselves. +- case `$CC -V 2>&1` in +- *"Version 7."*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- ;; +- *) # Version 8.0 or newer +- tmp_idyn= +- case $host_cpu in +- ia64*) tmp_idyn=' -i_dynamic';; +- esac +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- ;; +- esac +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +- ;; +- pgCC*) +- # Portland Group C++ compiler +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' +- ;; +- cxx*) +- # Compaq C++ +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' +- +- runpath_var=LD_RUN_PATH +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- esac +- ;; +- lynxos*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- m88k*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- mvs*) +- case $cc_basename in +- cxx*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' +- wlarc= +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- fi +- # Workaround some broken pre-1.5 toolchains +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' +- ;; +- openbsd2*) +- # C++ shared libraries are fairly broken +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- openbsd*) +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- fi +- output_verbose_link_cmd='echo' +- ;; +- osf3*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Archives containing C++ object files must be created using +- # "CC -Bstatic", where "CC" is the KAI C++ compiler. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' +- +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- cxx*) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- *) +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' +- +- else +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- osf4* | osf5*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Archives containing C++ object files must be created using +- # the KAI C++ compiler. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- cxx*) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ +- echo "-hidden">> $lib.exp~ +- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ +- $rm $lib.exp' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- *) +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' +- +- else +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- psos*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- sunos4*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.x +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- lcc*) +- # Lucid +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- solaris*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.2, 5.x and Centerline C++ +- _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes +- _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) +- # The C++ compiler is used as linker so we must use $wl +- # flag to pass the commands to the underlying system +- # linker. We must also pass each convience library through +- # to the system linker between allextract/defaultextract. +- # The C++ compiler will combine linker options so we +- # cannot just pass the convience library names through +- # without $wl. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' +- ;; +- esac +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- +- output_verbose_link_cmd='echo' +- +- # Archives containing C++ object files must be created using +- # "CC -xar", where "CC" is the Sun C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' +- ;; +- gcx*) +- # Green Hills C++ Compiler +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- +- # The C++ compiler must be used to create the archive. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' +- ;; +- *) +- # GNU C++ compiler with Solaris linker +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' +- if $CC --version | grep -v '^2\.7' > /dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" +- else +- # g++ 2.7 appears to require `-G' NOT `-shared' on this +- # platform. +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" +- fi +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' +- fi +- ;; +- esac +- ;; +- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) +- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var='LD_RUN_PATH' +- +- case $cc_basename in +- CC*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- ;; +- sysv5* | sco3.2v5* | sco5v6*) +- # Note: We can NOT use -z defs as we might desire, because we do not +- # link with -lc, and that would cause any symbols used from libc to +- # always be unresolved, which means just about no library would +- # ever link correctly. If we're not using GNU ld we use -z text +- # though, which does catch some bad symbols but isn't as heavy-handed +- # as -z defs. +- # For security reasons, it is highly recommended that you always +- # use absolute paths for naming shared libraries, and exclude the +- # DT_RUNPATH tag from executables and libraries. But doing so +- # requires that you compile everything twice, which is a pain. +- # So that behaviour is only enabled if SCOABSPATH is set to a +- # non-empty value in the environment. Most likely only useful for +- # creating official distributions of packages. +- # This is a hack until libtool officially supports absolute path +- # names for shared libraries. +- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' +- runpath_var='LD_RUN_PATH' +- +- case $cc_basename in +- CC*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- ;; +- tandem*) +- case $cc_basename in +- NCC*) +- # NonStop-UX NCC 3.20 +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- vxworks*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +-esac +-AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +-test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no +- +-_LT_AC_TAGVAR(GCC, $1)="$GXX" +-_LT_AC_TAGVAR(LD, $1)="$LD" +- +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... +-AC_LIBTOOL_POSTDEP_PREDEP($1) +-AC_LIBTOOL_PROG_COMPILER_PIC($1) +-AC_LIBTOOL_PROG_CC_C_O($1) +-AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +-AC_LIBTOOL_PROG_LD_SHLIBS($1) +-AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +-AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +- +-AC_LIBTOOL_CONFIG($1) +- +-AC_LANG_POP +-CC=$lt_save_CC +-LDCXX=$LD +-LD=$lt_save_LD +-GCC=$lt_save_GCC +-with_gnu_ldcxx=$with_gnu_ld +-with_gnu_ld=$lt_save_with_gnu_ld +-lt_cv_path_LDCXX=$lt_cv_path_LD +-lt_cv_path_LD=$lt_save_path_LD +-lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +-lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +-])# AC_LIBTOOL_LANG_CXX_CONFIG +- +-# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +-# ------------------------------------ +-# Figure out "hidden" library dependencies from verbose +-# compiler output when linking a shared library. +-# Parse the compiler output and extract the necessary +-# objects, libraries and library flags. +-AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +-dnl we can't use the lt_simple_compile_test_code here, +-dnl because it contains code intended for an executable, +-dnl not a library. It's possible we should let each +-dnl tag define a new lt_????_link_test_code variable, +-dnl but it's only used here... +-ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" +-ifelse([$1], [], +-[#! $SHELL +- +-# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +-# NOTE: Changes made to this file will be lost: look at ltmain.sh. +-# +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. +-# +-# This file is part of GNU Libtool: +-# Originally by Gordon Matzigkeit , 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 +-# the Free Software Foundation; either version 2 of the License, or +-# (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, but +-# WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +-# General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-# +-# 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. +- +-# A sed program that does not truncate output. +-SED=$lt_SED +- +-# Sed that helps us avoid accidentally triggering echo(1) options like -n. +-Xsed="$SED -e 1s/^X//" +- +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +- +-# The names of the tagged configurations supported by this script. +-available_tags= +- +-# ### BEGIN LIBTOOL CONFIG], +-[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) +- +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +- +-# Shell to use when invoking shell scripts. +-SHELL=$lt_SHELL +- +-# Whether or not to build shared libraries. +-build_libtool_libs=$enable_shared +- +-# Whether or not to build static libraries. +-build_old_libs=$enable_static +- +-# Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) +- +-# Whether or not to disallow shared libs when runtime libs are static +-allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) +- +-# Whether or not to optimize for fast installation. +-fast_install=$enable_fast_install +- +-# The host system. +-host_alias=$host_alias +-host=$host +-host_os=$host_os +- +-# The build system. +-build_alias=$build_alias +-build=$build +-build_os=$build_os +- +-# An echo program that does not interpret backslashes. +-echo=$lt_echo +- +-# The archiver. +-AR=$lt_AR +-AR_FLAGS=$lt_AR_FLAGS +- +-# A C compiler. +-LTCC=$lt_LTCC +- +-# LTCC compiler flags. +-LTCFLAGS=$lt_LTCFLAGS +- +-# A language-specific compiler. +-CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) +- +-# Is the compiler the GNU C compiler? +-with_gcc=$_LT_AC_TAGVAR(GCC, $1) +- +-# An ERE matcher. +-EGREP=$lt_EGREP +- +-# The linker used to build libraries. +-LD=$lt_[]_LT_AC_TAGVAR(LD, $1) +- +-# Whether we need hard or soft links. +-LN_S=$lt_LN_S +- +-# A BSD-compatible nm program. +-NM=$lt_NM +- +-# A symbol stripping program +-STRIP=$lt_STRIP +- +-# Used to examine libraries when file_magic_cmd begins "file" +-MAGIC_CMD=$MAGIC_CMD +- +-# Used on cygwin: DLL creation program. +-DLLTOOL="$DLLTOOL" +- +-# Used on cygwin: object dumper. +-OBJDUMP="$OBJDUMP" +- +-# Used on cygwin: assembler. +-AS="$AS" +- +-# The name of the directory that contains temporary libtool files. +-objdir=$objdir +- +-# How to create reloadable object files. +-reload_flag=$lt_reload_flag +-reload_cmds=$lt_reload_cmds +- +-# How to pass a linker flag through the compiler. +-wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) +- +-# Object file suffix (normally "o"). +-objext="$ac_objext" +- +-# Old archive suffix (normally "a"). +-libext="$libext" +- +-# Shared library suffix (normally ".so"). +-shrext_cmds='$shrext_cmds' +- +-# Executable file suffix (normally ""). +-exeext="$exeext" +- +-# Additional compiler flags for building library objects. +-pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +-pic_mode=$pic_mode +- +-# What is the maximum length of a command? +-max_cmd_len=$lt_cv_sys_max_cmd_len +- +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) +- +-# Must we lock files when doing compilation? +-need_locks=$lt_need_locks +- +-# Do we need the lib prefix for modules? +-need_lib_prefix=$need_lib_prefix +- +-# Do we need a version for libraries? +-need_version=$need_version +- +-# Whether dlopen is supported. +-dlopen_support=$enable_dlopen +- +-# Whether dlopen of programs is supported. +-dlopen_self=$enable_dlopen_self +- +-# Whether dlopen of statically linked programs is supported. +-dlopen_self_static=$enable_dlopen_self_static +- +-# Compiler flag to prevent dynamic linking. +-link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) +- +-# Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) +- +-# Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) +- +-# Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) +- +-# Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) +- +-# Library versioning type. +-version_type=$version_type +- +-# Format of library name prefix. +-libname_spec=$lt_libname_spec +- +-# List of archive names. First name is the real one, the rest are links. +-# The last name is the one that the linker finds with -lNAME. +-library_names_spec=$lt_library_names_spec +- +-# The coded name of the library, if different from the real name. +-soname_spec=$lt_soname_spec +- +-# Commands used to build and install an old-style archive. +-RANLIB=$lt_RANLIB +-old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +-old_postinstall_cmds=$lt_old_postinstall_cmds +-old_postuninstall_cmds=$lt_old_postuninstall_cmds +- +-# Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) +- +-# Create a temporary old-style archive to link instead of a shared archive. +-old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) +- +-# Commands used to build and install a shared archive. +-archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +-archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +-postinstall_cmds=$lt_postinstall_cmds +-postuninstall_cmds=$lt_postuninstall_cmds +- +-# Commands used to build a loadable module (assumed same as above if empty) +-module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +-module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) +- +-# Commands to strip libraries. +-old_striplib=$lt_old_striplib +-striplib=$lt_striplib +- +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) +- +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) +- +-# The library search path used internally by the compiler when linking +-# a shared library. +-compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) +- +-# Method to check whether dependent libraries are shared objects. +-deplibs_check_method=$lt_deplibs_check_method +- +-# Command to use when deplibs_check_method == file_magic. +-file_magic_cmd=$lt_file_magic_cmd +- +-# Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) +- +-# Flag that forces no undefined symbols. +-no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) +- +-# Commands used to finish a libtool library installation in a directory. +-finish_cmds=$lt_finish_cmds +- +-# Same as above, but a single script fragment to be evaled but not shown. +-finish_eval=$lt_finish_eval +- +-# Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe +- +-# Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl +- +-# Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address +- +-# This is the shared library runtime path variable. +-runpath_var=$runpath_var +- +-# This is the shared library path variable. +-shlibpath_var=$shlibpath_var +- +-# Is shlibpath searched before the hard-coded library search path? +-shlibpath_overrides_runpath=$shlibpath_overrides_runpath +- +-# How to hardcode a shared library path into an executable. +-hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) +- +-# Whether we should hardcode library paths into libraries. +-hardcode_into_libs=$hardcode_into_libs +- +-# Flag to hardcode \$libdir into a binary during linking. +-# This must work even if \$libdir does not exist. +-hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) +- +-# If ld is used when linking, flag to hardcode \$libdir into +-# a binary during linking. This must work even if \$libdir does +-# not exist. +-hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) +- +-# Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) +- +-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +-# resulting binary. +-hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) +- +-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +-# resulting binary. +-hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) +- +-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +-# the resulting binary. +-hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) +- +-# Set to yes if building a shared library automatically hardcodes DIR into the library +-# and all subsequent libraries and executables linked against it. +-hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) +- +-# Variables whose values should be saved in libtool wrapper scripts and +-# restored at relink time. +-variables_saved_for_relink="$variables_saved_for_relink" +- +-# Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) +- +-# Compile-time system search path for libraries +-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec +- +-# Run-time system search path for libraries +-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec +- +-# Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" +- +-# Set to yes if exported symbols are required. +-always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) +- +-# The commands to list exported symbols. +-export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) +- +-# The commands to extract the exported symbol list from a shared archive. +-extract_expsyms_cmds=$lt_extract_expsyms_cmds +- +-# Symbols that should not be listed in the preloaded symbols. +-exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) +- +-# Symbols that must always be exported. +-include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) +- +-ifelse([$1],[], +-[# ### END LIBTOOL CONFIG], +-[# ### END LIBTOOL TAG CONFIG: $tagname]) +- +-__EOF__ +- +-ifelse([$1],[], [ +- case $host_os in +- aix3*) +- cat <<\EOF >> "$cfgfile" +- +-# AIX sometimes has problems with the GCC collect2 program. For some +-# reason, if we set the COLLECT_NAMES environment variable, the problems +-# vanish in a puff of smoke. +-if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +-fi +-EOF +- ;; +- esac +- +- # We use sed instead of cat because bash on DJGPP gets confused if +- # if finds mixed CR/LF and LF-only lines. Since sed operates in +- # text mode, it properly converts lines to CR/LF. This bash problem +- # is reportedly fixed, but why not run on old versions too? +- sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) +- +- mv -f "$cfgfile" "$ofile" || \ +- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") +- chmod +x "$ofile" +-]) +-else +- # If there is no Makefile yet, we rely on a make rule to execute +- # `config.status --recheck' to rerun these tests and create the +- # libtool script then. +- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` +- if test -f "$ltmain_in"; then +- test -f Makefile && make "$ltmain" +- fi +-fi +-])# AC_LIBTOOL_CONFIG +- +- +-# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +-# ------------------------------------------- +-AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +-[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +- +-_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +- +-if test "$GCC" = yes; then +- _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +- +- AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], +- lt_cv_prog_compiler_rtti_exceptions, +- [-fno-rtti -fno-exceptions], [], +- [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +-fi +-])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI +- +- +-# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +-# --------------------------------- +-AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +-[AC_REQUIRE([AC_CANONICAL_HOST]) +-AC_REQUIRE([AC_PROG_NM]) +-AC_REQUIRE([AC_OBJEXT]) +-# Check for command to grab the raw symbol name followed by C symbol from nm. +-AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +-[ +-# These are sane defaults that work on at least a few old systems. +-# [They come from Ultrix. What could be older than Ultrix?!! ;)] +- +-# Character class describing NM global symbol codes. +-symcode='[[BCDEGRST]]' +- +-# Regexp to match symbols that can be accessed directly from C. +-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' +- +-# Transform an extracted symbol line into a proper C declaration +-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" +- +-# Transform an extracted symbol line into symbol name and symbol address +-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- +-# Define system-specific variables. +-case $host_os in +-aix*) +- symcode='[[BCDT]]' +- ;; +-cygwin* | mingw* | pw32*) +- symcode='[[ABCDGISTW]]' +- ;; +-hpux*) # Its linker distinguishes data from code symbols +- if test "$host_cpu" = ia64; then +- symcode='[[ABCDEGRST]]' +- fi +- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- ;; +-linux*) +- if test "$host_cpu" = ia64; then +- symcode='[[ABCDGIRSTW]]' +- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- fi +- ;; +-irix* | nonstopux*) +- symcode='[[BCDEGRST]]' +- ;; +-osf*) +- symcode='[[BCDEGQRST]]' +- ;; +-solaris*) +- symcode='[[BDRT]]' +- ;; +-sco3.2v5*) +- symcode='[[DT]]' +- ;; +-sysv4.2uw2*) +- symcode='[[DT]]' +- ;; +-sysv5* | sco5v6* | unixware* | OpenUNIX*) +- symcode='[[ABDT]]' +- ;; +-sysv4) +- symcode='[[DFNSTU]]' +- ;; +-esac +- +-# Handle CRLF in mingw tool chain +-opt_cr= +-case $build_os in +-mingw*) +- opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp +- ;; +-esac +- +-# If we're using GNU nm, then use its standard symbol codes. +-case `$NM -V 2>&1` in +-*GNU* | *'with BFD'*) +- symcode='[[ABCDGIRSTW]]' ;; +-esac +- +-# Try without a prefix undercore, then with it. +-for ac_symprfx in "" "_"; do +- +- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. +- symxfrm="\\1 $ac_symprfx\\2 \\2" +- +- # Write the raw and C identifiers. +- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" +- +- # Check to see that the pipe works correctly. +- pipe_works=no +- +- rm -f conftest* +- cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then +- # Try sorting and uniquifying the output. +- if sort "$nlist" | uniq > "$nlist"T; then +- mv -f "$nlist"T "$nlist" +- else +- rm -f "$nlist"T +- fi +- +- # Make sure that we snagged all the symbols we need. +- if grep ' nm_test_var$' "$nlist" >/dev/null; then +- if grep ' nm_test_func$' "$nlist" >/dev/null; then +- cat < conftest.$ac_ext +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-EOF +- # Now generate the symbol file. +- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' +- +- cat <> conftest.$ac_ext +-#if defined (__STDC__) && __STDC__ +-# define lt_ptr_t void * +-#else +-# define lt_ptr_t char * +-# define const +-#endif +- +-/* The mapping between symbol names and symbols. */ +-const struct { +- const char *name; +- lt_ptr_t address; +-} +-lt_preloaded_symbols[[]] = +-{ +-EOF +- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext +- cat <<\EOF >> conftest.$ac_ext +- {0, (lt_ptr_t) 0} +-}; +- +-#ifdef __cplusplus +-} +-#endif +-EOF +- # Now try linking the two files. +- mv conftest.$ac_objext conftstm.$ac_objext +- lt_save_LIBS="$LIBS" +- lt_save_CFLAGS="$CFLAGS" +- LIBS="conftstm.$ac_objext" +- CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" +- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then +- pipe_works=yes +- fi +- LIBS="$lt_save_LIBS" +- CFLAGS="$lt_save_CFLAGS" +- else +- echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD +- fi +- else +- echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD +- fi +- else +- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD +- fi +- else +- echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD +- cat conftest.$ac_ext >&5 +- fi +- rm -f conftest* conftst* +- +- # Do not use the global_symbol_pipe unless it works. +- if test "$pipe_works" = yes; then +- break +- else +- lt_cv_sys_global_symbol_pipe= +- fi +-done +-]) +-if test -z "$lt_cv_sys_global_symbol_pipe"; then +- lt_cv_sys_global_symbol_to_cdecl= +-fi +-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then +- AC_MSG_RESULT(failed) +-else +- AC_MSG_RESULT(ok) +-fi +-]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +- +- +-# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +-# --------------------------------------- +-AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +-[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +-_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +-_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= +- +-AC_MSG_CHECKING([for $compiler option to produce PIC]) +- ifelse([$1],[CXX],[ +- # C++ specific cases for pic, static, wl, etc. +- if test "$GXX" = yes; then +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' +- +- case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; +- amigaos*) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' +- ;; +- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- mingw* | os2* | pw32*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' +- ;; +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' +- ;; +- *djgpp*) +- # DJGPP does not support shared libraries at all +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +- ;; +- interix3*) +- # Interix 3.x gcc -fpic/-fPIC options generate broken code. +- # Instead, we relocate shared libraries at runtime. +- ;; +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic +- fi +- ;; +- hpux*) +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case $host_cpu in +- hppa*64*|ia64*) +- ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- else +- case $host_os in +- aix4* | aix5*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- else +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- chorus*) +- case $cc_basename in +- cxch68*) +- # Green Hills C++ Compiler +- # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" +- ;; +- esac +- ;; +- darwin*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- case $cc_basename in +- xlc*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- ;; +- esac +- ;; +- dgux*) +- case $cc_basename in +- ec++*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- ;; +- ghcx*) +- # Green Hills C++ Compiler +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- *) +- ;; +- esac +- ;; +- freebsd* | kfreebsd*-gnu | dragonfly*) +- # FreeBSD uses GNU C++ +- ;; +- hpux9* | hpux10* | hpux11*) +- case $cc_basename in +- CC*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' +- if test "$host_cpu" != ia64; then +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- fi +- ;; +- aCC*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- ;; +- esac +- ;; +- *) +- ;; +- esac +- ;; +- interix*) +- # This is c89, which is MS Visual C++ (no shared libs) +- # Anyone wants to do a port? +- ;; +- irix5* | irix6* | nonstopux*) +- case $cc_basename in +- CC*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- # CC pic flag -KPIC is the default. +- ;; +- *) +- ;; +- esac +- ;; +- linux*) +- case $cc_basename in +- KCC*) +- # KAI C++ Compiler +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- icpc* | ecpc*) +- # Intel C++ +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- pgCC*) +- # Portland Group C++ compiler. +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- cxx*) +- # Compaq C++ +- # Make sure the PIC flag is empty. It appears that all Alpha +- # Linux and Compaq Tru64 Unix objects are PIC. +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- *) +- ;; +- esac +- ;; +- lynxos*) +- ;; +- m88k*) +- ;; +- mvs*) +- case $cc_basename in +- cxx*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' +- ;; +- *) +- ;; +- esac +- ;; +- netbsd*) +- ;; +- osf3* | osf4* | osf5*) +- case $cc_basename in +- KCC*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- cxx*) +- # Digital/Compaq C++ +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # Make sure the PIC flag is empty. It appears that all Alpha +- # Linux and Compaq Tru64 Unix objects are PIC. +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- *) +- ;; +- esac +- ;; +- psos*) +- ;; +- solaris*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.2, 5.x and Centerline C++ +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- ;; +- gcx*) +- # Green Hills C++ Compiler +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' +- ;; +- *) +- ;; +- esac +- ;; +- sunos4*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.x +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- lcc*) +- # Lucid +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- *) +- ;; +- esac +- ;; +- tandem*) +- case $cc_basename in +- NCC*) +- # NonStop-UX NCC 3.20 +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- ;; +- *) +- ;; +- esac +- ;; +- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) +- case $cc_basename in +- CC*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- esac +- ;; +- vxworks*) +- ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; +- esac +- fi +-], +-[ +- if test "$GCC" = yes; then +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' +- +- case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; +- +- amigaos*) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' +- ;; +- +- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- +- mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' +- ;; +- +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' +- ;; +- +- interix3*) +- # Interix 3.x gcc -fpic/-fPIC options generate broken code. +- # Instead, we relocate shared libraries at runtime. +- ;; +- +- msdosdjgpp*) +- # Just because we use GCC doesn't mean we suddenly get shared libraries +- # on systems that don't support them. +- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- enable_shared=no +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic +- fi +- ;; +- +- hpux*) +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- ;; +- +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- else +- # PORTME Check for flag to pass linker flags through the system compiler. +- case $host_os in +- aix*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- else +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- darwin*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- case $cc_basename in +- xlc*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- ;; +- esac +- ;; +- +- mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' +- ;; +- +- hpux9* | hpux10* | hpux11*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- ;; +- esac +- # Is there a better lt_prog_compiler_static that works with the bundled CC? +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' +- ;; +- +- irix5* | irix6* | nonstopux*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # PIC (with -KPIC) is the default. +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- +- newsos6) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- linux*) +- case $cc_basename in +- icc* | ecc*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- pgcc* | pgf77* | pgf90* | pgf95*) +- # Portland Group compilers (*not* the Pentium gcc compiler, +- # which looks to be a dead project) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- ccc*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # All Alpha code is PIC. +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- esac +- ;; +- +- osf3* | osf4* | osf5*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # All OSF/1 code is PIC. +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- +- solaris*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- case $cc_basename in +- f77* | f90* | f95*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; +- esac +- ;; +- +- sunos4*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- sysv4 | sysv4.2uw2* | sysv4.3*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec ;then +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; +- +- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- unicos*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; +- +- uts4*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; +- esac +- fi +-]) +-AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) +- +-# +-# Check to make sure the PIC flag actually works. +-# +-if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then +- AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], +- _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), +- [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], +- [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in +- "" | " "*) ;; +- *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; +- esac], +- [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +-fi +-case $host_os in +- # For platforms which do not support PIC, -DPIC is meaningless: +- *djgpp*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +- ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" +- ;; +-esac +- +-# +-# Check to make sure the static flag actually works. +-# +-wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" +-AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], +- _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), +- $lt_tmp_static_flag, +- [], +- [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) +-]) +- +- +-# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +-# ------------------------------------ +-# See if the linker supports building shared libraries. +-AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +-[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +-ifelse([$1],[CXX],[ +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- case $host_os in +- aix4* | aix5*) +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' +- else +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' +- fi +- ;; +- pw32*) +- _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" +- ;; +- cygwin* | mingw*) +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' +- ;; +- *) +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- ;; +- esac +-],[ +- runpath_var= +- _LT_AC_TAGVAR(allow_undefined_flag, $1)= +- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- _LT_AC_TAGVAR(archive_cmds, $1)= +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)= +- _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= +- _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +- _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +- _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +- _LT_AC_TAGVAR(hardcode_automatic, $1)=no +- _LT_AC_TAGVAR(module_cmds, $1)= +- _LT_AC_TAGVAR(module_expsym_cmds, $1)= +- _LT_AC_TAGVAR(always_export_symbols, $1)=no +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- # include_expsyms should be a list of space-separated symbols to be *always* +- # included in the symbol list +- _LT_AC_TAGVAR(include_expsyms, $1)= +- # exclude_expsyms can be an extended regexp of symbols to exclude +- # it will be wrapped by ` (' and `)$', so one must not match beginning or +- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +- # as well as any symbol that contains `d'. +- _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" +- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +- # platforms (ab)use it in PIC code, but their linkers get confused if +- # the symbol is explicitly referenced. Since portable code cannot +- # rely on this symbol name, it's probably fine to never include it in +- # preloaded symbol tables. +- extract_expsyms_cmds= +- # Just being paranoid about ensuring that cc_basename is set. +- _LT_CC_BASENAME([$compiler]) +- case $host_os in +- cygwin* | mingw* | pw32*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- if test "$GCC" != yes; then +- with_gnu_ld=no +- fi +- ;; +- interix*) +- # we just hope/assume this is gcc and not c89 (= MSVC++) +- with_gnu_ld=yes +- ;; +- openbsd*) +- with_gnu_ld=no +- ;; +- esac +- +- _LT_AC_TAGVAR(ld_shlibs, $1)=yes +- if test "$with_gnu_ld" = yes; then +- # If archive_cmds runs LD, not CC, wlarc should be empty +- wlarc='${wl}' +- +- # Set some defaults for GNU ld with shared library support. These +- # are reset later if shared libraries are not supported. Putting them +- # here allows them to be overridden if necessary. +- runpath_var=LD_RUN_PATH +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- supports_anon_versioning=no +- case `$LD -v 2>/dev/null` in +- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 +- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... +- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... +- *\ 2.11.*) ;; # other 2.11 versions +- *) supports_anon_versioning=yes ;; +- esac +- +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix3* | aix4* | aix5*) +- # On AIX/PPC, the GNU linker is very broken +- if test "$host_cpu" != ia64; then +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- cat <&2 +- +-*** Warning: the GNU linker, at least up to release 2.9.1, is reported +-*** to be unable to reliably create shared libraries on AIX. +-*** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to modify your PATH +-*** so that a non-GNU linker is found, and then restart. +- +-EOF +- fi +- ;; +- +- amigaos*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- +- # Samuel A. Falvo II reports +- # that the semantics of dynamic libraries on AmigaOS, at least up +- # to version 4, is to share data among multiple programs linked +- # with the same dynamic library. Since this doesn't match the +- # behavior of shared libraries on other platforms, we can't use +- # them. +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- beos*) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- cygwin* | mingw* | pw32*) +- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, +- # as there is no search path for DLLs. +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_AC_TAGVAR(always_export_symbols, $1)=no +- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' +- +- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- interix3*) +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. +- # Instead, shared libraries are loaded at an image base (0x10000000 by +- # default) and relocated if they conflict, which is a slow very memory +- # consuming and fragmenting process. To avoid this, we pick a random, +- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link +- # time. Moving up from 0x10000000 also allows more sbrk(2) space. +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- ;; +- +- linux*) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- tmp_addflag= +- case $cc_basename,$host_cpu in +- pgcc*) # Portland Group C compiler +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag' +- ;; +- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag -Mnomain' ;; +- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 +- tmp_addflag=' -i_dynamic' ;; +- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 +- tmp_addflag=' -i_dynamic -nofor_main' ;; +- ifc* | ifort*) # Intel Fortran compiler +- tmp_addflag=' -nofor_main' ;; +- esac +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- +- if test $supports_anon_versioning = yes; then +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- $echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +- fi +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- fi +- ;; +- +- solaris*) +- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- cat <&2 +- +-*** Warning: The releases 2.8.* of the GNU linker cannot reliably +-*** create shared libraries on Solaris systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.9.1 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-EOF +- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) +- case `$LD -v 2>&1` in +- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- cat <<_LT_EOF 1>&2 +- +-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +-*** reliably create shared libraries on SCO systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-_LT_EOF +- ;; +- *) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- +- sunos4*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- wlarc= +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- *) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- +- if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then +- runpath_var= +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- else +- # PORTME fill in a description of your system's linker (not GNU ld) +- case $host_os in +- aix3*) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_AC_TAGVAR(always_export_symbols, $1)=yes +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' +- # Note: this linker hardcodes the directories in LIBPATH if there +- # are no directories specified by -L. +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then +- # Neither direct hardcoding nor static linking is supported with a +- # broken collect2. +- _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported +- fi +- ;; +- +- aix4* | aix5*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' +- else +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' +- fi +- aix_use_runtimelinking=no +- +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) +- for ld_flag in $LDFLAGS; do +- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +- aix_use_runtimelinking=yes +- break +- fi +- done +- ;; +- esac +- +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi +- +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. +- +- _LT_AC_TAGVAR(archive_cmds, $1)='' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- +- if test "$GCC" = yes; then +- case $host_os in aix4.[[012]]|aix4.[[012]].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && \ +- strings "$collect2name" | grep resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- else +- # We have old collect2 +- _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +- fi +- ;; +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +- # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi +- +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to export. +- _LT_AC_TAGVAR(always_export_symbols, $1)=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' +- # Determine the default libpath from the value encoded in an empty executable. +- _LT_AC_SYS_LIBPATH_AIX +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" +- else +- # Determine the default libpath from the value encoded in an empty executable. +- _LT_AC_SYS_LIBPATH_AIX +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' +- # Exported symbols can be pulled into shared objects from archives +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes +- # This is similar to how AIX traditionally builds its shared libraries. +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +- fi +- fi +- ;; +- +- amigaos*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- # see comment about different semantics on the GNU ld section +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- bsdi[[45]]*) +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic +- ;; +- +- cygwin* | mingw* | pw32*) +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' +- # The linker will automatically build a .lib file if we build a DLL. +- _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' +- # FIXME: Should let the user specify the lib program. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' +- _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' +- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- ;; +- +- darwin* | rhapsody*) +- case $host_os in +- rhapsody* | darwin1.[[012]]) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' +- ;; +- *) # Darwin 1.3 on +- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- else +- case ${MACOSX_DEPLOYMENT_TARGET} in +- 10.[[012]]) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- ;; +- 10.*) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' +- ;; +- esac +- fi +- ;; +- esac +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_automatic, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- if test "$GCC" = yes ; then +- output_verbose_link_cmd='echo' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' +- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- else +- case $cc_basename in +- xlc*) +- output_verbose_link_cmd='echo' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' +- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- ;; +- *) +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- fi +- ;; +- +- dgux*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- freebsd1*) +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +- # support. Future versions do this automatically, but an explicit c++rt0.o +- # does not break anything, and helps significantly (at the cost of a little +- # extra space). +- freebsd2.2*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- # Unfortunately, older versions of FreeBSD 2 do not have this feature. +- freebsd2*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd* | kfreebsd*-gnu | dragonfly*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- hpux9*) +- if test "$GCC" = yes; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- fi +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- ;; +- +- hpux10*) +- if test "$GCC" = yes -a "$with_gnu_ld" = no; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +- fi +- if test "$with_gnu_ld" = no; then +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- fi +- ;; +- +- hpux11*) +- if test "$GCC" = yes -a "$with_gnu_ld" = no; then +- case $host_cpu in +- hppa*64*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- else +- case $host_cpu in +- hppa*64*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- fi +- if test "$with_gnu_ld" = no; then +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- case $host_cpu in +- hppa*64*|ia64*) +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- *) +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- ;; +- esac +- fi +- ;; +- +- irix5* | irix6* | nonstopux*) +- if test "$GCC" = yes; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' +- fi +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +- fi +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- newsos6) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- openbsd*) +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- else +- case $host_os in +- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- ;; +- *) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- ;; +- +- os2*) +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +- _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +- ;; +- +- osf3*) +- if test "$GCC" = yes; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- ;; +- +- osf4* | osf5*) # as osf3* with the addition of -msym flag +- if test "$GCC" = yes; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- else +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ +- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' +- +- # Both c and cxx compiler support -rpath directly +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- fi +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- ;; +- +- solaris*) +- _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' +- if test "$GCC" = yes; then +- wlarc='${wl}' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' +- else +- wlarc='' +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- fi +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) +- # The compiler driver will combine linker options so we +- # cannot just pass the convience library names through +- # without $wl, iff we do not link with $LD. +- # Luckily, gcc supports the same syntax we need for Sun Studio. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- case $wlarc in +- '') +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; +- *) +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; +- esac ;; +- esac +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- sunos4*) +- if test "x$host_vendor" = xsequent; then +- # Use $CC to link under sequent, because it throws in some extra .o +- # files that make .init and .fini sections work. +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +- fi +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- sysv4) +- case $host_vendor in +- sni) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? +- ;; +- siemens) +- ## LD is ld it makes a PLAMLIB +- ## CC just makes a GrossModule. +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- ;; +- motorola) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie +- ;; +- esac +- runpath_var='LD_RUN_PATH' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- sysv4.3*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- _LT_AC_TAGVAR(ld_shlibs, $1)=yes +- fi +- ;; +- +- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*) +- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var='LD_RUN_PATH' +- +- if test "$GCC" = yes; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; +- +- sysv5* | sco3.2v5* | sco5v6*) +- # Note: We can NOT use -z defs as we might desire, because we do not +- # link with -lc, and that would cause any symbols used from libc to +- # always be unresolved, which means just about no library would +- # ever link correctly. If we're not using GNU ld we use -z text +- # though, which does catch some bad symbols but isn't as heavy-handed +- # as -z defs. +- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' +- runpath_var='LD_RUN_PATH' +- +- if test "$GCC" = yes; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; +- +- uts4*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- *) +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- fi +-]) +-AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +-test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no +- +-# +-# Do we need to explicitly link libc? +-# +-case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +-x|xyes) +- # Assume -lc should be added +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes +- +- if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $_LT_AC_TAGVAR(archive_cmds, $1) in +- *'~'*) +- # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- AC_MSG_CHECKING([whether -lc should be explicitly linked in]) +- $rm conftest* +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- if AC_TRY_EVAL(ac_compile) 2>conftest.err; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) +- pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)= +- if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) +- then +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- else +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes +- fi +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +- $rm conftest* +- AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) +- ;; +- esac +- fi +- ;; +-esac +-])# AC_LIBTOOL_PROG_LD_SHLIBS +- +- +-# _LT_AC_FILE_LTDLL_C +-# ------------------- +-# Be careful that the start marker always follows a newline. +-AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +-# /* ltdll.c starts here */ +-# #define WIN32_LEAN_AND_MEAN +-# #include +-# #undef WIN32_LEAN_AND_MEAN +-# #include +-# +-# #ifndef __CYGWIN__ +-# # ifdef __CYGWIN32__ +-# # define __CYGWIN__ __CYGWIN32__ +-# # endif +-# #endif +-# +-# #ifdef __cplusplus +-# extern "C" { +-# #endif +-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +-# #ifdef __cplusplus +-# } +-# #endif +-# +-# #ifdef __CYGWIN__ +-# #include +-# DECLARE_CYGWIN_DLL( DllMain ); +-# #endif +-# HINSTANCE __hDllInstance_base; +-# +-# BOOL APIENTRY +-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +-# { +-# __hDllInstance_base = hInst; +-# return TRUE; +-# } +-# /* ltdll.c ends here */ +-])# _LT_AC_FILE_LTDLL_C +- +- +-# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +-# --------------------------------- +-AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) +- +- +-# old names +-AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +-AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +-AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +-AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +-AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +-AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +-AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) +- +-# This is just to silence aclocal about the macro not being used +-ifelse([AC_DISABLE_FAST_INSTALL]) +- +-AC_DEFUN([LT_AC_PROG_GCJ], +-[AC_CHECK_TOOL(GCJ, gcj, no) +- test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" +- AC_SUBST(GCJFLAGS) +-]) +- +-AC_DEFUN([LT_AC_PROG_RC], +-[AC_CHECK_TOOL(RC, windres, no) +-]) +- +-############################################################ +-# NOTE: This macro has been submitted for inclusion into # +-# GNU Autoconf as AC_PROG_SED. When it is available in # +-# a released version of Autoconf we should remove this # +-# macro and use it instead. # +-############################################################ +-# LT_AC_PROG_SED +-# -------------- +-# Check for a fully-functional sed program, that truncates +-# as few characters as possible. Prefer GNU sed if found. +-AC_DEFUN([LT_AC_PROG_SED], +-[AC_MSG_CHECKING([for a sed that does not truncate output]) +-AC_CACHE_VAL(lt_cv_path_SED, +-[# Loop through the user's path and test for sed and gsed. +-# Then use that list of sed's as ones to test for truncation. +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for lt_ac_prog in sed gsed; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then +- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" +- fi +- done +- done +-done +-lt_ac_max=0 +-lt_ac_count=0 +-# Add /usr/xpg4/bin/sed as it is typically found on Solaris +-# along with /bin/sed that truncates output. +-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do +- test ! -f $lt_ac_sed && continue +- cat /dev/null > conftest.in +- lt_ac_count=0 +- echo $ECHO_N "0123456789$ECHO_C" >conftest.in +- # Check for GNU sed and select it if it is found. +- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then +- lt_cv_path_SED=$lt_ac_sed +- break +- fi +- while true; do +- cat conftest.in conftest.in >conftest.tmp +- mv conftest.tmp conftest.in +- cp conftest.in conftest.nl +- echo >>conftest.nl +- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break +- cmp -s conftest.out conftest.nl || break +- # 10000 chars as input seems more than enough +- test $lt_ac_count -gt 10 && break +- lt_ac_count=`expr $lt_ac_count + 1` +- if test $lt_ac_count -gt $lt_ac_max; then +- lt_ac_max=$lt_ac_count +- lt_cv_path_SED=$lt_ac_sed +- fi +- done +-done +-]) +-SED=$lt_cv_path_SED +-AC_MSG_RESULT([$SED]) +-]) +diff -Nur LibVNCServer-0.9.1.orig/aclocal.m4 LibVNCServer-0.9.1/aclocal.m4 +--- LibVNCServer-0.9.1.orig/aclocal.m4 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/aclocal.m4 2008-10-31 18:46:23.000000000 -0200 +@@ -1,7 +1,7 @@ +-# generated automatically by aclocal 1.9.5 -*- Autoconf -*- ++# generated automatically by aclocal 1.10 -*- Autoconf -*- + + # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +-# 2005 Free Software Foundation, Inc. ++# 2005, 2006 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. +@@ -11,7 +11,7911 @@ + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + +-# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. ++m4_if(m4_PACKAGE_VERSION, [2.61],, ++[m4_fatal([this file was generated for autoconf 2.61. ++You have another version of autoconf. If you want to use that, ++you should regenerate the build system entirely.], [63])]) ++ ++# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- ++# ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, ++# 2006, 2007, 2008 Free Software Foundation, Inc. ++# Written by Gordon Matzigkeit, 1996 ++# ++# 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. ++ ++m4_define([_LT_COPYING], [dnl ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, ++# 2006, 2007, 2008 Free Software Foundation, Inc. ++# Written by Gordon Matzigkeit, 1996 ++# ++# This file is part of GNU Libtool. ++# ++# GNU Libtool is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License as ++# published by the Free Software Foundation; either version 2 of ++# the License, or (at your option) any later version. ++# ++# As a special exception to the GNU General Public License, ++# if you distribute this file as part of a program or library that ++# is built using GNU Libtool, you may include this file under the ++# same distribution terms that you use for the rest of that program. ++# ++# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy ++# can be downloaded from http://www.gnu.org/licenses/gpl.html, or ++# obtained by writing to the Free Software Foundation, Inc., ++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++]) ++ ++# serial 56 LT_INIT ++ ++ ++# LT_PREREQ(VERSION) ++# ------------------ ++# Complain and exit if this libtool version is less that VERSION. ++m4_defun([LT_PREREQ], ++[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, ++ [m4_default([$3], ++ [m4_fatal([Libtool version $1 or higher is required], ++ 63)])], ++ [$2])]) ++ ++ ++# _LT_CHECK_BUILDDIR ++# ------------------ ++# Complain if the absolute build directory name contains unusual characters ++m4_defun([_LT_CHECK_BUILDDIR], ++[case `pwd` in ++ *\ * | *\ *) ++ AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; ++esac ++]) ++ ++ ++# LT_INIT([OPTIONS]) ++# ------------------ ++AC_DEFUN([LT_INIT], ++[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT ++AC_BEFORE([$0], [LT_LANG])dnl ++AC_BEFORE([$0], [LT_OUTPUT])dnl ++AC_BEFORE([$0], [LTDL_INIT])dnl ++m4_require([_LT_CHECK_BUILDDIR])dnl ++ ++dnl Autoconf doesn't catch unexpanded LT_ macros by default: ++m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl ++m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl ++dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 ++dnl unless we require an AC_DEFUNed macro: ++AC_REQUIRE([LTOPTIONS_VERSION])dnl ++AC_REQUIRE([LTSUGAR_VERSION])dnl ++AC_REQUIRE([LTVERSION_VERSION])dnl ++AC_REQUIRE([LTOBSOLETE_VERSION])dnl ++m4_require([_LT_PROG_LTMAIN])dnl ++ ++dnl Parse OPTIONS ++_LT_SET_OPTIONS([$0], [$1]) ++ ++# This can be used to rebuild libtool when needed ++LIBTOOL_DEPS="$ltmain" ++ ++# Always use our own libtool. ++LIBTOOL='$(SHELL) $(top_builddir)' ++LIBTOOL="$LIBTOOL/$host_alias-libtool" ++AC_SUBST(LIBTOOL)dnl ++ ++_LT_SETUP ++ ++# Only expand once: ++m4_define([LT_INIT]) ++])# LT_INIT ++ ++# Old names: ++AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) ++AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_PROG_LIBTOOL], []) ++dnl AC_DEFUN([AM_PROG_LIBTOOL], []) ++ ++ ++# _LT_CC_BASENAME(CC) ++# ------------------- ++# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. ++m4_defun([_LT_CC_BASENAME], ++[for cc_temp in $1""; do ++ case $cc_temp in ++ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; ++ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++]) ++ ++ ++# _LT_FILEUTILS_DEFAULTS ++# ---------------------- ++# It is okay to use these file commands and assume they have been set ++# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. ++m4_defun([_LT_FILEUTILS_DEFAULTS], ++[: ${CP="cp -f"} ++: ${MV="mv -f"} ++: ${RM="rm -f"} ++])# _LT_FILEUTILS_DEFAULTS ++ ++ ++# _LT_SETUP ++# --------- ++m4_defun([_LT_SETUP], ++[AC_REQUIRE([AC_CANONICAL_HOST])dnl ++AC_REQUIRE([AC_CANONICAL_BUILD])dnl ++_LT_DECL([], [host_alias], [0], [The host system])dnl ++_LT_DECL([], [host], [0])dnl ++_LT_DECL([], [host_os], [0])dnl ++dnl ++_LT_DECL([], [build_alias], [0], [The build system])dnl ++_LT_DECL([], [build], [0])dnl ++_LT_DECL([], [build_os], [0])dnl ++dnl ++AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([LT_PATH_LD])dnl ++AC_REQUIRE([LT_PATH_NM])dnl ++dnl ++AC_REQUIRE([AC_PROG_LN_S])dnl ++test -z "$LN_S" && LN_S="ln -s" ++_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl ++dnl ++AC_REQUIRE([LT_CMD_MAX_LEN])dnl ++_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl ++_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl ++dnl ++m4_require([_LT_FILEUTILS_DEFAULTS])dnl ++m4_require([_LT_CHECK_SHELL_FEATURES])dnl ++m4_require([_LT_CMD_RELOAD])dnl ++m4_require([_LT_CHECK_MAGIC_METHOD])dnl ++m4_require([_LT_CMD_OLD_ARCHIVE])dnl ++m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl ++ ++_LT_CONFIG_LIBTOOL_INIT([ ++# See if we are running on zsh, and set the options which allow our ++# commands through without removal of \ escapes INIT. ++if test -n "\${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++fi ++]) ++if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++fi ++ ++_LT_CHECK_OBJDIR ++ ++m4_require([_LT_TAG_COMPILER])dnl ++_LT_PROG_ECHO_BACKSLASH ++ ++case $host_os in ++aix3*) ++ # AIX sometimes has problems with the GCC collect2 program. For some ++ # reason, if we set the COLLECT_NAMES environment variable, the problems ++ # vanish in a puff of smoke. ++ if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++ fi ++ ;; ++esac ++ ++# Sed substitution that helps us do robust quoting. It backslashifies ++# metacharacters that are still active within double-quoted strings. ++sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' ++ ++# Same as above, but do not quote variable references. ++double_quote_subst='s/\([["`\\]]\)/\\\1/g' ++ ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++ ++# Sed substitution to delay expansion of an escaped single quote. ++delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' ++ ++# Sed substitution to avoid accidental globbing in evaled expressions ++no_glob_subst='s/\*/\\\*/g' ++ ++# Global variables: ++ofile=${host_alias}-libtool ++can_build_shared=yes ++ ++# All known linkers require a `.a' archive for static linking (except MSVC, ++# which needs '.lib'). ++libext=a ++ ++with_gnu_ld="$lt_cv_prog_gnu_ld" ++ ++old_CC="$CC" ++old_CFLAGS="$CFLAGS" ++ ++# Set sane defaults for various variables ++test -z "$CC" && CC=cc ++test -z "$LTCC" && LTCC=$CC ++test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS ++test -z "$LD" && LD=ld ++test -z "$ac_objext" && ac_objext=o ++ ++_LT_CC_BASENAME([$compiler]) ++ ++# Only perform the check for file, if the check method requires it ++test -z "$MAGIC_CMD" && MAGIC_CMD=file ++case $deplibs_check_method in ++file_magic*) ++ if test "$file_magic_cmd" = '$MAGIC_CMD'; then ++ _LT_PATH_MAGIC ++ fi ++ ;; ++esac ++ ++# Use C for the default configuration in the libtool script ++LT_SUPPORTED_TAG([CC]) ++_LT_LANG_C_CONFIG ++_LT_LANG_DEFAULT_CONFIG ++_LT_CONFIG_COMMANDS ++])# _LT_SETUP ++ ++ ++# _LT_PROG_LTMAIN ++# --------------- ++# Note that this code is called both from `configure', and `config.status' ++# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, ++# `config.status' has no value for ac_aux_dir unless we are using Automake, ++# so we pass a copy along to make sure it has a sensible value anyway. ++m4_defun([_LT_PROG_LTMAIN], ++[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl ++_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ++ltmain="$ac_aux_dir/ltmain.sh" ++])# _LT_PROG_LTMAIN ++ ++ ++ ++# So that we can recreate a full libtool script including additional ++# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS ++# in macros and then make a single call at the end using the `libtool' ++# label. ++ ++ ++# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) ++# ---------------------------------------- ++# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. ++m4_define([_LT_CONFIG_LIBTOOL_INIT], ++[m4_ifval([$1], ++ [m4_append([_LT_OUTPUT_LIBTOOL_INIT], ++ [$1 ++])])]) ++ ++# Initialize. ++m4_define([_LT_OUTPUT_LIBTOOL_INIT]) ++ ++ ++# _LT_CONFIG_LIBTOOL([COMMANDS]) ++# ------------------------------ ++# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. ++m4_define([_LT_CONFIG_LIBTOOL], ++[m4_ifval([$1], ++ [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], ++ [$1 ++])])]) ++ ++# Initialize. ++m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) ++ ++ ++# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) ++# ----------------------------------------------------- ++m4_defun([_LT_CONFIG_SAVE_COMMANDS], ++[_LT_CONFIG_LIBTOOL([$1]) ++_LT_CONFIG_LIBTOOL_INIT([$2]) ++]) ++ ++ ++# _LT_FORMAT_COMMENT([COMMENT]) ++# ----------------------------- ++# Add leading comment marks to the start of each line, and a trailing ++# full-stop to the whole comment if one is not present already. ++m4_define([_LT_FORMAT_COMMENT], ++[m4_ifval([$1], [ ++m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], ++ [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) ++)]) ++ ++ ++ ++ ++ ++# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) ++# ------------------------------------------------------------------- ++# CONFIGNAME is the name given to the value in the libtool script. ++# VARNAME is the (base) name used in the configure script. ++# VALUE may be 0, 1 or 2 for a computed quote escaped value based on ++# VARNAME. Any other value will be used directly. ++m4_define([_LT_DECL], ++[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], ++ [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], ++ [m4_ifval([$1], [$1], [$2])]) ++ lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) ++ m4_ifval([$4], ++ [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) ++ lt_dict_add_subkey([lt_decl_dict], [$2], ++ [tagged?], [m4_ifval([$5], [yes], [no])])]) ++]) ++ ++ ++# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) ++# -------------------------------------------------------- ++m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) ++ ++ ++# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) ++# ------------------------------------------------ ++m4_define([lt_decl_tag_varnames], ++[_lt_decl_filter([tagged?], [yes], $@)]) ++ ++ ++# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) ++# --------------------------------------------------------- ++m4_define([_lt_decl_filter], ++[m4_case([$#], ++ [0], [m4_fatal([$0: too few arguments: $#])], ++ [1], [m4_fatal([$0: too few arguments: $#: $1])], ++ [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], ++ [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], ++ [lt_dict_filter([lt_decl_dict], $@)])[]dnl ++]) ++ ++ ++# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) ++# -------------------------------------------------- ++m4_define([lt_decl_quote_varnames], ++[_lt_decl_filter([value], [1], $@)]) ++ ++ ++# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) ++# --------------------------------------------------- ++m4_define([lt_decl_dquote_varnames], ++[_lt_decl_filter([value], [2], $@)]) ++ ++ ++# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) ++# --------------------------------------------------- ++m4_define([lt_decl_varnames_tagged], ++[_$0(m4_quote(m4_default([$1], [[, ]])), ++ m4_quote(m4_if([$2], [], ++ m4_quote(lt_decl_tag_varnames), ++ m4_quote(m4_shift($@)))), ++ m4_split(m4_normalize(m4_quote(_LT_TAGS))))]) ++m4_define([_lt_decl_varnames_tagged], [lt_combine([$1], [$2], [_], $3)]) ++ ++ ++# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) ++# ------------------------------------------------ ++m4_define([lt_decl_all_varnames], ++[_$0(m4_quote(m4_default([$1], [[, ]])), ++ m4_if([$2], [], ++ m4_quote(lt_decl_varnames), ++ m4_quote(m4_shift($@))))[]dnl ++]) ++m4_define([_lt_decl_all_varnames], ++[lt_join($@, lt_decl_varnames_tagged([$1], ++ lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ++]) ++ ++ ++# _LT_CONFIG_STATUS_DECLARE([VARNAME]) ++# ------------------------------------ ++# Quote a variable value, and forward it to `config.status' so that its ++# declaration there will have the same value as in `configure'. VARNAME ++# must have a single quote delimited value for this to work. ++m4_define([_LT_CONFIG_STATUS_DECLARE], ++[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) ++ ++ ++# _LT_CONFIG_STATUS_DECLARATIONS ++# ------------------------------ ++# We delimit libtool config variables with single quotes, so when ++# we write them to config.status, we have to be sure to quote all ++# embedded single quotes properly. In configure, this macro expands ++# each variable declared with _LT_DECL (and _LT_TAGDECL) into: ++# ++# ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' ++m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], ++[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), ++ [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) ++ ++ ++# _LT_LIBTOOL_TAGS ++# ---------------- ++# Output comment and list of tags supported by the script ++m4_defun([_LT_LIBTOOL_TAGS], ++[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl ++available_tags="_LT_TAGS"dnl ++]) ++ ++ ++# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) ++# ----------------------------------- ++# Extract the dictionary values for VARNAME (optionally with TAG) and ++# expand to a commented shell variable setting: ++# ++# # Some comment about what VAR is for. ++# visible_name=$lt_internal_name ++m4_define([_LT_LIBTOOL_DECLARE], ++[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], ++ [description])))[]dnl ++m4_pushdef([_libtool_name], ++ m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl ++m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), ++ [0], [_libtool_name=[$]$1], ++ [1], [_libtool_name=$lt_[]$1], ++ [2], [_libtool_name=$lt_[]$1], ++ [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl ++m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ++]) ++ ++ ++# _LT_LIBTOOL_CONFIG_VARS ++# ----------------------- ++# Produce commented declarations of non-tagged libtool config variables ++# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' ++# script. Tagged libtool config variables (even for the LIBTOOL CONFIG ++# section) are produced by _LT_LIBTOOL_TAG_VARS. ++m4_defun([_LT_LIBTOOL_CONFIG_VARS], ++[m4_foreach([_lt_var], ++ m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), ++ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) ++ ++ ++# _LT_LIBTOOL_TAG_VARS(TAG) ++# ------------------------- ++m4_define([_LT_LIBTOOL_TAG_VARS], ++[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), ++ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) ++ ++ ++# _LT_TAGVAR(VARNAME, [TAGNAME]) ++# ------------------------------ ++m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) ++ ++ ++# _LT_CONFIG_COMMANDS ++# ------------------- ++# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of ++# variables for single and double quote escaping we saved from calls ++# to _LT_DECL, we can put quote escaped variables declarations ++# into `config.status', and then the shell code to quote escape them in ++# for loops in `config.status'. Finally, any additional code accumulated ++# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. ++m4_defun([_LT_CONFIG_COMMANDS], ++[AC_PROVIDE_IFELSE([LT_OUTPUT], ++ dnl If the libtool generation code has been placed in $CONFIG_LT, ++ dnl instead of duplicating it all over again into config.status, ++ dnl then we will have config.status run $CONFIG_LT later, so it ++ dnl needs to know what name is stored there: ++ [AC_CONFIG_COMMANDS([libtool], ++ [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], ++ dnl If the libtool generation code is destined for config.status, ++ dnl expand the accumulated commands and init code now: ++ [AC_CONFIG_COMMANDS([libtool], ++ [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ++])#_LT_CONFIG_COMMANDS ++ ++ ++# Initialize. ++m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], ++[ ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++sed_quote_subst='$sed_quote_subst' ++double_quote_subst='$double_quote_subst' ++delay_variable_subst='$delay_variable_subst' ++_LT_CONFIG_STATUS_DECLARATIONS ++LTCC='$LTCC' ++LTCFLAGS='$LTCFLAGS' ++compiler='$compiler_DEFAULT' ++ ++# Quote evaled strings. ++for var in lt_decl_all_varnames([[ \ ++]], lt_decl_quote_varnames); do ++ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in ++ *[[\\\\\\\`\\"\\\$]]*) ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ++ ;; ++ *) ++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ++ ;; ++ esac ++done ++ ++# Double-quote double-evaled strings. ++for var in lt_decl_all_varnames([[ \ ++]], lt_decl_dquote_varnames); do ++ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in ++ *[[\\\\\\\`\\"\\\$]]*) ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ++ ;; ++ *) ++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ++ ;; ++ esac ++done ++ ++# Fix-up fallback echo if it was mangled by the above quoting rules. ++case \$lt_ECHO in ++*'\\\[$]0 --fallback-echo"')dnl " ++ lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` ++ ;; ++esac ++ ++_LT_OUTPUT_LIBTOOL_INIT ++]) ++ ++ ++# LT_OUTPUT ++# --------- ++# This macro allows early generation of the libtool script (before ++# AC_OUTPUT is called), incase it is used in configure for compilation ++# tests. ++AC_DEFUN([LT_OUTPUT], ++[: ${CONFIG_LT=./config.lt} ++AC_MSG_NOTICE([creating $CONFIG_LT]) ++cat >"$CONFIG_LT" <<_LTEOF ++#! $SHELL ++# Generated by $as_me. ++# Run this file to recreate a libtool stub with the current configuration. ++ ++lt_cl_silent=false ++SHELL=\${CONFIG_SHELL-$SHELL} ++_LTEOF ++ ++cat >>"$CONFIG_LT" <<\_LTEOF ++AS_SHELL_SANITIZE ++_AS_PREPARE ++ ++exec AS_MESSAGE_FD>&1 ++exec AS_MESSAGE_LOG_FD>>config.log ++{ ++ echo ++ AS_BOX([Running $as_me.]) ++} >&AS_MESSAGE_LOG_FD ++ ++lt_cl_help="\ ++\`$as_me' creates a local libtool stub from the current configuration, ++for use in further configure time tests before the real libtool is ++generated. ++ ++Usage: $[0] [[OPTIONS]] ++ ++ -h, --help print this help, then exit ++ -V, --version print version number, then exit ++ -q, --quiet do not print progress messages ++ -d, --debug don't remove temporary files ++ ++Report bugs to ." ++ ++lt_cl_version="\ ++m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl ++m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) ++configured by $[0], generated by m4_PACKAGE_STRING. ++ ++Copyright (C) 2008 Free Software Foundation, Inc. ++This config.lt script is free software; the Free Software Foundation ++gives unlimited permision to copy, distribute and modify it." ++ ++while test $[#] != 0 ++do ++ case $[1] in ++ --version | --v* | -V ) ++ echo "$lt_cl_version"; exit 0 ;; ++ --help | --h* | -h ) ++ echo "$lt_cl_help"; exit 0 ;; ++ --debug | --d* | -d ) ++ debug=: ;; ++ --quiet | --q* | --silent | --s* | -q ) ++ lt_cl_silent=: ;; ++ ++ -*) AC_MSG_ERROR([unrecognized option: $[1] ++Try \`$[0] --help' for more information.]) ;; ++ ++ *) AC_MSG_ERROR([unrecognized argument: $[1] ++Try \`$[0] --help' for more information.]) ;; ++ esac ++ shift ++done ++ ++if $lt_cl_silent; then ++ exec AS_MESSAGE_FD>/dev/null ++fi ++_LTEOF ++ ++cat >>"$CONFIG_LT" <<_LTEOF ++_LT_OUTPUT_LIBTOOL_COMMANDS_INIT ++_LTEOF ++ ++cat >>"$CONFIG_LT" <<\_LTEOF ++AC_MSG_NOTICE([creating $ofile]) ++_LT_OUTPUT_LIBTOOL_COMMANDS ++AS_EXIT(0) ++_LTEOF ++chmod +x "$CONFIG_LT" ++ ++# configure is writing to config.log, but config.lt does its own redirection, ++# appending to config.log, which fails on DOS, as config.log is still kept ++# open by configure. Here we exec the FD to /dev/null, effectively closing ++# config.log, so it can be properly (re)opened and appended to by config.lt. ++if test "$no_create" != yes; then ++ lt_cl_success=: ++ test "$silent" = yes && ++ lt_config_lt_args="$lt_config_lt_args --quiet" ++ exec AS_MESSAGE_LOG_FD>/dev/null ++ $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false ++ exec AS_MESSAGE_LOG_FD>>config.log ++ $lt_cl_success || AS_EXIT(1) ++fi ++])# LT_OUTPUT ++ ++ ++# _LT_CONFIG(TAG) ++# --------------- ++# If TAG is the built-in tag, create an initial libtool script with a ++# default configuration from the untagged config vars. Otherwise add code ++# to config.status for appending the configuration named by TAG from the ++# matching tagged config vars. ++m4_defun([_LT_CONFIG], ++[m4_require([_LT_FILEUTILS_DEFAULTS])dnl ++_LT_CONFIG_SAVE_COMMANDS([ ++ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl ++ m4_if(_LT_TAG, [C], [ ++ # See if we are running on zsh, and set the options which allow our ++ # commands through without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ ++ cfgfile="${ofile}T" ++ trap "$RM \"$cfgfile\"; exit 1" 1 2 15 ++ $RM "$cfgfile" ++ ++ cat <<_LT_EOF >> "$cfgfile" ++#! $SHELL ++ ++# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. ++# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++# NOTE: Changes made to this file will be lost: look at ltmain.sh. ++# ++_LT_COPYING ++_LT_LIBTOOL_TAGS ++ ++# ### BEGIN LIBTOOL CONFIG ++_LT_LIBTOOL_CONFIG_VARS ++_LT_LIBTOOL_TAG_VARS ++# ### END LIBTOOL CONFIG ++ ++_LT_EOF ++ ++ case $host_os in ++ aix3*) ++ cat <<\_LT_EOF >> "$cfgfile" ++# AIX sometimes has problems with the GCC collect2 program. For some ++# reason, if we set the COLLECT_NAMES environment variable, the problems ++# vanish in a puff of smoke. ++if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++fi ++_LT_EOF ++ ;; ++ esac ++ ++ _LT_PROG_LTMAIN ++ ++ # We use sed instead of cat because bash on DJGPP gets confused if ++ # if finds mixed CR/LF and LF-only lines. Since sed operates in ++ # text mode, it properly converts lines to CR/LF. This bash problem ++ # is reportedly fixed, but why not run on old versions too? ++ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) ++ ++ _LT_PROG_XSI_SHELLFNS ++ ++ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) ++ ++ mv -f "$cfgfile" "$ofile" || ++ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") ++ chmod +x "$ofile" ++], ++[cat <<_LT_EOF >> "$ofile" ++ ++dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded ++dnl in a comment (ie after a #). ++# ### BEGIN LIBTOOL TAG CONFIG: $1 ++_LT_LIBTOOL_TAG_VARS(_LT_TAG) ++# ### END LIBTOOL TAG CONFIG: $1 ++_LT_EOF ++])dnl /m4_if ++], ++[m4_if([$1], [], [ ++ PACKAGE='$PACKAGE' ++ VERSION='$VERSION' ++ TIMESTAMP='$TIMESTAMP' ++ RM='$RM' ++ ofile='$ofile'], []) ++])dnl /_LT_CONFIG_SAVE_COMMANDS ++])# _LT_CONFIG ++ ++ ++# LT_SUPPORTED_TAG(TAG) ++# --------------------- ++# Trace this macro to discover what tags are supported by the libtool ++# --tag option, using: ++# autoconf --trace 'LT_SUPPORTED_TAG:$1' ++AC_DEFUN([LT_SUPPORTED_TAG], []) ++ ++ ++# C support is built-in for now ++m4_define([_LT_LANG_C_enabled], []) ++m4_define([_LT_TAGS], []) ++ ++ ++# LT_LANG(LANG) ++# ------------- ++# Enable libtool support for the given language if not already enabled. ++AC_DEFUN([LT_LANG], ++[AC_BEFORE([$0], [LT_OUTPUT])dnl ++m4_case([$1], ++ [C], [_LT_LANG(C)], ++ [C++], [_LT_LANG(CXX)], ++ [Java], [_LT_LANG(GCJ)], ++ [Fortran 77], [_LT_LANG(F77)], ++ [Fortran], [_LT_LANG(FC)], ++ [Windows Resource], [_LT_LANG(RC)], ++ [m4_ifdef([_LT_LANG_]$1[_CONFIG], ++ [_LT_LANG($1)], ++ [m4_fatal([$0: unsupported language: "$1"])])])dnl ++])# LT_LANG ++ ++ ++# _LT_LANG(LANGNAME) ++# ------------------ ++m4_defun([_LT_LANG], ++[m4_ifdef([_LT_LANG_]$1[_enabled], [], ++ [LT_SUPPORTED_TAG([$1])dnl ++ m4_append([_LT_TAGS], [$1 ])dnl ++ m4_define([_LT_LANG_]$1[_enabled], [])dnl ++ _LT_LANG_$1_CONFIG($1)])dnl ++])# _LT_LANG ++ ++ ++# _LT_LANG_DEFAULT_CONFIG ++# ----------------------- ++m4_defun([_LT_LANG_DEFAULT_CONFIG], ++[AC_PROVIDE_IFELSE([AC_PROG_CXX], ++ [LT_LANG(CXX)], ++ [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) ++ ++AC_PROVIDE_IFELSE([AC_PROG_F77], ++ [LT_LANG(F77)], ++ [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) ++ ++AC_PROVIDE_IFELSE([AC_PROG_FC], ++ [LT_LANG(FC)], ++ [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) ++ ++dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal ++dnl pulling things in needlessly. ++AC_PROVIDE_IFELSE([AC_PROG_GCJ], ++ [LT_LANG(GCJ)], ++ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], ++ [LT_LANG(GCJ)], ++ [AC_PROVIDE_IFELSE([LT_PROG_GCJ], ++ [LT_LANG(GCJ)], ++ [m4_ifdef([AC_PROG_GCJ], ++ [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) ++ m4_ifdef([A][M_PROG_GCJ], ++ [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) ++ m4_ifdef([LT_PROG_GCJ], ++ [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) ++ ++AC_PROVIDE_IFELSE([LT_PROG_RC], ++ [LT_LANG(RC)], ++ [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ++])# _LT_LANG_DEFAULT_CONFIG ++ ++# Obsolete macros: ++AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) ++AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) ++AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) ++AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LIBTOOL_CXX], []) ++dnl AC_DEFUN([AC_LIBTOOL_F77], []) ++dnl AC_DEFUN([AC_LIBTOOL_FC], []) ++dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) ++ ++ ++# _LT_TAG_COMPILER ++# ---------------- ++m4_defun([_LT_TAG_COMPILER], ++[AC_REQUIRE([AC_PROG_CC])dnl ++ ++_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl ++_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl ++_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl ++_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++])# _LT_TAG_COMPILER ++ ++ ++# _LT_COMPILER_BOILERPLATE ++# ------------------------ ++# Check for compiler boilerplate output or warnings with ++# the simple compiler test code. ++m4_defun([_LT_COMPILER_BOILERPLATE], ++[m4_require([_LT_DECL_SED])dnl ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$RM conftest* ++])# _LT_COMPILER_BOILERPLATE ++ ++ ++# _LT_LINKER_BOILERPLATE ++# ---------------------- ++# Check for linker boilerplate output or warnings with ++# the simple link test code. ++m4_defun([_LT_LINKER_BOILERPLATE], ++[m4_require([_LT_DECL_SED])dnl ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$RM -r conftest* ++])# _LT_LINKER_BOILERPLATE ++ ++# _LT_REQUIRED_DARWIN_CHECKS ++# ------------------------- ++m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ ++ case $host_os in ++ rhapsody* | darwin*) ++ AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) ++ AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) ++ AC_CHECK_TOOL([LIPO], [lipo], [:]) ++ AC_CHECK_TOOL([OTOOL], [otool], [:]) ++ AC_CHECK_TOOL([OTOOL64], [otool64], [:]) ++ _LT_DECL([], [DSYMUTIL], [1], ++ [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) ++ _LT_DECL([], [NMEDIT], [1], ++ [Tool to change global to local symbols on Mac OS X]) ++ _LT_DECL([], [LIPO], [1], ++ [Tool to manipulate fat objects and archives on Mac OS X]) ++ _LT_DECL([], [OTOOL], [1], ++ [ldd/readelf like tool for Mach-O binaries on Mac OS X]) ++ _LT_DECL([], [OTOOL64], [1], ++ [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) ++ ++ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], ++ [lt_cv_apple_cc_single_mod=no ++ if test -z "${LT_MULTI_MODULE}"; then ++ # By default we will add the -single_module flag. You can override ++ # by either setting the environment variable LT_MULTI_MODULE ++ # non-empty at configure time, or by adding -multi_module to the ++ # link flags. ++ rm -rf libconftest.dylib* ++ echo "int foo(void){return 1;}" > conftest.c ++ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ ++-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD ++ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ ++ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err ++ _lt_result=$? ++ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then ++ lt_cv_apple_cc_single_mod=yes ++ else ++ cat conftest.err >&AS_MESSAGE_LOG_FD ++ fi ++ rm -rf libconftest.dylib* ++ rm -f conftest.* ++ fi]) ++ AC_CACHE_CHECK([for -exported_symbols_list linker flag], ++ [lt_cv_ld_exported_symbols_list], ++ [lt_cv_ld_exported_symbols_list=no ++ save_LDFLAGS=$LDFLAGS ++ echo "_main" > conftest.sym ++ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], ++ [lt_cv_ld_exported_symbols_list=yes], ++ [lt_cv_ld_exported_symbols_list=no]) ++ LDFLAGS="$save_LDFLAGS" ++ ]) ++ case $host_os in ++ rhapsody* | darwin1.[[012]]) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; ++ darwin1.*) ++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; ++ darwin*) # darwin 5.x on ++ # if running on 10.5 or later, the deployment target defaults ++ # to the OS version, if on x86, and 10.4, the deployment ++ # target defaults to 10.4. Don't you love it? ++ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in ++ 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; ++ 10.[[012]]*) ++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; ++ 10.*) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; ++ esac ++ ;; ++ esac ++ if test "$lt_cv_apple_cc_single_mod" = "yes"; then ++ _lt_dar_single_mod='$single_module' ++ fi ++ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then ++ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' ++ else ++ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ fi ++ if test "$DSYMUTIL" != ":"; then ++ _lt_dsymutil='~$DSYMUTIL $lib || :' ++ else ++ _lt_dsymutil= ++ fi ++ ;; ++ esac ++]) ++ ++ ++# _LT_DARWIN_LINKER_FEATURES ++# -------------------------- ++# Checks for linker and compiler features on darwin ++m4_defun([_LT_DARWIN_LINKER_FEATURES], ++[ ++ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) ++ _LT_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_TAGVAR(hardcode_direct, $1)=no ++ _LT_TAGVAR(hardcode_automatic, $1)=yes ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='' ++ _LT_TAGVAR(link_all_deplibs, $1)=yes ++ _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" ++ if test "$GCC" = "yes"; then ++ output_verbose_link_cmd=echo ++ _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" ++ _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" ++ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" ++ _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" ++ m4_if([$1], [CXX], ++[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then ++ _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" ++ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" ++ fi ++],[]) ++ else ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++]) ++ ++# _LT_SYS_MODULE_PATH_AIX ++# ----------------------- ++# Links a minimal program and checks the executable ++# for the system default hardcoded library path. In most cases, ++# this is /usr/lib:/lib, but when the MPI compilers are used ++# the location of the communication and MPI libs are included too. ++# If we don't find anything, use the default library path according ++# to the aix ld manual. ++m4_defun([_LT_SYS_MODULE_PATH_AIX], ++[m4_require([_LT_DECL_SED])dnl ++AC_LINK_IFELSE(AC_LANG_PROGRAM,[ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi],[]) ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++])# _LT_SYS_MODULE_PATH_AIX ++ ++ ++# _LT_SHELL_INIT(ARG) ++# ------------------- ++m4_define([_LT_SHELL_INIT], ++[ifdef([AC_DIVERSION_NOTICE], ++ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], ++ [AC_DIVERT_PUSH(NOTICE)]) ++$1 ++AC_DIVERT_POP ++])# _LT_SHELL_INIT ++ ++ ++# _LT_PROG_ECHO_BACKSLASH ++# ----------------------- ++# Add some code to the start of the generated configure script which ++# will find an echo command which doesn't interpret backslashes. ++m4_defun([_LT_PROG_ECHO_BACKSLASH], ++[_LT_SHELL_INIT([ ++# Check that we are running under the correct shell. ++SHELL=${CONFIG_SHELL-/bin/sh} ++ ++case X$lt_ECHO in ++X*--fallback-echo) ++ # Remove one level of quotation (which was required for Make). ++ ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ++ ;; ++esac ++ ++ECHO=${lt_ECHO-echo} ++if test "X[$]1" = X--no-reexec; then ++ # Discard the --no-reexec flag, and continue. ++ shift ++elif test "X[$]1" = X--fallback-echo; then ++ # Avoid inline document here, it may be left over ++ : ++elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then ++ # Yippee, $ECHO works! ++ : ++else ++ # Restart under the correct shell. ++ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} ++fi ++ ++if test "X[$]1" = X--fallback-echo; then ++ # used as fallback echo ++ shift ++ cat <<_LT_EOF ++[$]* ++_LT_EOF ++ exit 0 ++fi ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++if test -z "$lt_ECHO"; then ++ if test "X${echo_test_string+set}" != Xset; then ++ # find a string as large as possible, as long as the shell can cope with it ++ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do ++ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... ++ if { echo_test_string=`eval $cmd`; } 2>/dev/null && ++ { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null ++ then ++ break ++ fi ++ done ++ fi ++ ++ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ : ++ else ++ # The Solaris, AIX, and Digital Unix default echo programs unquote ++ # backslashes. This makes it impossible to quote backslashes using ++ # echo "$something" | sed 's/\\/\\\\/g' ++ # ++ # So, first we look for a working echo in the user's PATH. ++ ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for dir in $PATH /usr/ucb; do ++ IFS="$lt_save_ifs" ++ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && ++ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ ECHO="$dir/echo" ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ++ if test "X$ECHO" = Xecho; then ++ # We didn't find a better echo, so look for alternatives. ++ if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ # This shell has a builtin print -r that does the trick. ++ ECHO='print -r' ++ elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && ++ test "X$CONFIG_SHELL" != X/bin/ksh; then ++ # If we have ksh, try running configure again with it. ++ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} ++ export ORIGINAL_CONFIG_SHELL ++ CONFIG_SHELL=/bin/ksh ++ export CONFIG_SHELL ++ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} ++ else ++ # Try using printf. ++ ECHO='printf %s\n' ++ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ # Cool, printf works ++ : ++ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL ++ export CONFIG_SHELL ++ SHELL="$CONFIG_SHELL" ++ export SHELL ++ ECHO="$CONFIG_SHELL [$]0 --fallback-echo" ++ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ ECHO="$CONFIG_SHELL [$]0 --fallback-echo" ++ else ++ # maybe with a smaller string... ++ prev=: ++ ++ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do ++ if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null ++ then ++ break ++ fi ++ prev="$cmd" ++ done ++ ++ if test "$prev" != 'sed 50q "[$]0"'; then ++ echo_test_string=`eval $prev` ++ export echo_test_string ++ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} ++ else ++ # Oops. We lost completely, so just stick with echo. ++ ECHO=echo ++ fi ++ fi ++ fi ++ fi ++ fi ++fi ++ ++# Copy echo and quote the copy suitably for passing to libtool from ++# the Makefile, instead of quoting the original, which is used later. ++lt_ECHO=$ECHO ++if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ++ lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" ++fi ++ ++AC_SUBST(lt_ECHO) ++]) ++_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) ++_LT_DECL([], [ECHO], [1], ++ [An echo program that does not interpret backslashes]) ++])# _LT_PROG_ECHO_BACKSLASH ++ ++ ++# _LT_ENABLE_LOCK ++# --------------- ++m4_defun([_LT_ENABLE_LOCK], ++[AC_ARG_ENABLE([libtool-lock], ++ [AS_HELP_STRING([--disable-libtool-lock], ++ [avoid locking (might break parallel builds)])]) ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++ ++# Some flags need to be propagated to the compiler or linker for good ++# libtool support. ++case $host in ++ia64-*-hpux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *ELF-32*) ++ HPUX_IA64_MODE="32" ++ ;; ++ *ELF-64*) ++ HPUX_IA64_MODE="64" ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++*-*-irix6*) ++ # Find out which ABI we are using. ++ echo '[#]line __oline__ "configure"' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -melf32bsmip" ++ ;; ++ *N32*) ++ LD="${LD-ld} -melf32bmipn32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -melf64bmip" ++ ;; ++ esac ++ else ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -32" ++ ;; ++ *N32*) ++ LD="${LD-ld} -n32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -64" ++ ;; ++ esac ++ fi ++ fi ++ rm -rf conftest* ++ ;; ++ ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ ++s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.o` in ++ *32-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_i386_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_i386" ++ ;; ++ ppc64-*linux*|powerpc64-*linux*) ++ LD="${LD-ld} -m elf32ppclinux" ++ ;; ++ s390x-*linux*) ++ LD="${LD-ld} -m elf_s390" ++ ;; ++ sparc64-*linux*) ++ LD="${LD-ld} -m elf32_sparc" ++ ;; ++ esac ++ ;; ++ *64-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_x86_64_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_x86_64" ++ ;; ++ ppc*-*linux*|powerpc*-*linux*) ++ LD="${LD-ld} -m elf64ppc" ++ ;; ++ s390*-*linux*|s390*-*tpf*) ++ LD="${LD-ld} -m elf64_s390" ++ ;; ++ sparc*-*linux*) ++ LD="${LD-ld} -m elf64_sparc" ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++ ++*-*-sco3.2v5*) ++ # On SCO OpenServer 5, we need -belf to get full-featured binaries. ++ SAVE_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -belf" ++ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, ++ [AC_LANG_PUSH(C) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) ++ AC_LANG_POP]) ++ if test x"$lt_cv_cc_needs_belf" != x"yes"; then ++ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf ++ CFLAGS="$SAVE_CFLAGS" ++ fi ++ ;; ++sparc*-*solaris*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.o` in ++ *64-bit*) ++ case $lt_cv_prog_gnu_ld in ++ yes*) LD="${LD-ld} -m elf64_sparc" ;; ++ *) ++ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then ++ LD="${LD-ld} -64" ++ fi ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++esac ++ ++need_locks="$enable_libtool_lock" ++])# _LT_ENABLE_LOCK ++ ++ ++# _LT_CMD_OLD_ARCHIVE ++# ------------------- ++m4_defun([_LT_CMD_OLD_ARCHIVE], ++[AC_CHECK_TOOL(AR, ar, false) ++test -z "$AR" && AR=ar ++test -z "$AR_FLAGS" && AR_FLAGS=cru ++_LT_DECL([], [AR], [1], [The archiver]) ++_LT_DECL([], [AR_FLAGS], [1]) ++ ++AC_CHECK_TOOL(STRIP, strip, :) ++test -z "$STRIP" && STRIP=: ++_LT_DECL([], [STRIP], [1], [A symbol stripping program]) ++ ++AC_CHECK_TOOL(RANLIB, ranlib, :) ++test -z "$RANLIB" && RANLIB=: ++_LT_DECL([], [RANLIB], [1], ++ [Commands used to install an old-style archive]) ++ ++# Determine commands to create old-style static archives. ++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' ++old_postinstall_cmds='chmod 644 $oldlib' ++old_postuninstall_cmds= ++ ++if test -n "$RANLIB"; then ++ case $host_os in ++ openbsd*) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ++ ;; ++ *) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ++ ;; ++ esac ++ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" ++fi ++_LT_DECL([], [old_postinstall_cmds], [2]) ++_LT_DECL([], [old_postuninstall_cmds], [2]) ++_LT_TAGDECL([], [old_archive_cmds], [2], ++ [Commands used to build an old-style archive]) ++])# _LT_CMD_OLD_ARCHIVE ++ ++ ++# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, ++# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) ++# ---------------------------------------------------------------- ++# Check whether the given compiler option works ++AC_DEFUN([_LT_COMPILER_OPTION], ++[m4_require([_LT_FILEUTILS_DEFAULTS])dnl ++m4_require([_LT_DECL_SED])dnl ++AC_CACHE_CHECK([$1], [$2], ++ [$2=no ++ m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$3" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&AS_MESSAGE_LOG_FD ++ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ $2=yes ++ fi ++ fi ++ $RM conftest* ++]) ++ ++if test x"[$]$2" = xyes; then ++ m4_if([$5], , :, [$5]) ++else ++ m4_if([$6], , :, [$6]) ++fi ++])# _LT_COMPILER_OPTION ++ ++# Old name: ++AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) ++ ++ ++# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, ++# [ACTION-SUCCESS], [ACTION-FAILURE]) ++# ---------------------------------------------------- ++# Check whether the given linker option works ++AC_DEFUN([_LT_LINKER_OPTION], ++[m4_require([_LT_FILEUTILS_DEFAULTS])dnl ++m4_require([_LT_DECL_SED])dnl ++AC_CACHE_CHECK([$1], [$2], ++ [$2=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $3" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&AS_MESSAGE_LOG_FD ++ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ $2=yes ++ fi ++ else ++ $2=yes ++ fi ++ fi ++ $RM -r conftest* ++ LDFLAGS="$save_LDFLAGS" ++]) ++ ++if test x"[$]$2" = xyes; then ++ m4_if([$4], , :, [$4]) ++else ++ m4_if([$5], , :, [$5]) ++fi ++])# _LT_LINKER_OPTION ++ ++# Old name: ++AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) ++ ++ ++# LT_CMD_MAX_LEN ++#--------------- ++AC_DEFUN([LT_CMD_MAX_LEN], ++[AC_REQUIRE([AC_CANONICAL_HOST])dnl ++# find the maximum length of command line arguments ++AC_MSG_CHECKING([the maximum length of command line arguments]) ++AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl ++ i=0 ++ teststring="ABCD" ++ ++ case $build_os in ++ msdosdjgpp*) ++ # On DJGPP, this test can blow up pretty badly due to problems in libc ++ # (any single argument exceeding 2000 bytes causes a buffer overrun ++ # during glob expansion). Even if it were fixed, the result of this ++ # check would be larger than it should be. ++ lt_cv_sys_max_cmd_len=12288; # 12K is about right ++ ;; ++ ++ gnu*) ++ # Under GNU Hurd, this test is not required because there is ++ # no limit to the length of command line arguments. ++ # Libtool will interpret -1 as no limit whatsoever ++ lt_cv_sys_max_cmd_len=-1; ++ ;; ++ ++ cygwin* | mingw*) ++ # On Win9x/ME, this test blows up -- it succeeds, but takes ++ # about 5 minutes as the teststring grows exponentially. ++ # Worse, since 9x/ME are not pre-emptively multitasking, ++ # you end up with a "frozen" computer, even though with patience ++ # the test eventually succeeds (with a max line length of 256k). ++ # Instead, let's just punt: use the minimum linelength reported by ++ # all of the supported platforms: 8192 (on NT/2K/XP). ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ amigaos*) ++ # On AmigaOS with pdksh, this test takes hours, literally. ++ # So we just punt and use a minimum line length of 8192. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) ++ # This has been around since 386BSD, at least. Likely further. ++ if test -x /sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` ++ elif test -x /usr/sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` ++ else ++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs ++ fi ++ # And add a safety zone ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ ;; ++ ++ interix*) ++ # We know the value 262144 and hardcode it with a safety zone (like BSD) ++ lt_cv_sys_max_cmd_len=196608 ++ ;; ++ ++ osf*) ++ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure ++ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not ++ # nice to cause kernel panics so lets avoid the loop below. ++ # First set a reasonable default. ++ lt_cv_sys_max_cmd_len=16384 ++ # ++ if test -x /sbin/sysconfig; then ++ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in ++ *1*) lt_cv_sys_max_cmd_len=-1 ;; ++ esac ++ fi ++ ;; ++ sco3.2v5*) ++ lt_cv_sys_max_cmd_len=102400 ++ ;; ++ sysv5* | sco5v6* | sysv4.2uw2*) ++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` ++ if test -n "$kargmax"; then ++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` ++ else ++ lt_cv_sys_max_cmd_len=32768 ++ fi ++ ;; ++ *) ++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` ++ if test -n "$lt_cv_sys_max_cmd_len"; then ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ else ++ # Make teststring a little bigger before we do anything with it. ++ # a 1K string should be a reasonable start. ++ for i in 1 2 3 4 5 6 7 8 ; do ++ teststring=$teststring$teststring ++ done ++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} ++ # If test is not a shell built-in, we'll probably end up computing a ++ # maximum length that is only half of the actual maximum length, but ++ # we can't tell. ++ while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ ++ = "XX$teststring$teststring"; } >/dev/null 2>&1 && ++ test $i != 17 # 1/2 MB should be enough ++ do ++ i=`expr $i + 1` ++ teststring=$teststring$teststring ++ done ++ # Only check the string length outside the loop. ++ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` ++ teststring= ++ # Add a significant safety factor because C++ compilers can tack on ++ # massive amounts of additional arguments before passing them to the ++ # linker. It appears as though 1/2 is a usable value. ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ++ fi ++ ;; ++ esac ++]) ++if test -n $lt_cv_sys_max_cmd_len ; then ++ AC_MSG_RESULT($lt_cv_sys_max_cmd_len) ++else ++ AC_MSG_RESULT(none) ++fi ++max_cmd_len=$lt_cv_sys_max_cmd_len ++_LT_DECL([], [max_cmd_len], [0], ++ [What is the maximum length of a command?]) ++])# LT_CMD_MAX_LEN ++ ++# Old name: ++AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) ++ ++ ++# _LT_HEADER_DLFCN ++# ---------------- ++m4_defun([_LT_HEADER_DLFCN], ++[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ++])# _LT_HEADER_DLFCN ++ ++ ++# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, ++# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) ++# ---------------------------------------------------------------- ++m4_defun([_LT_TRY_DLOPEN_SELF], ++[m4_require([_LT_HEADER_DLFCN])dnl ++if test "$cross_compiling" = yes; then : ++ [$4] ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext <<_LT_EOF ++[#line __oline__ "configure" ++#include "confdefs.h" ++ ++#if HAVE_DLFCN_H ++#include ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif ++ ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ exit (status); ++}] ++_LT_EOF ++ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) $1 ;; ++ x$lt_dlneed_uscore) $2 ;; ++ x$lt_dlunknown|x*) $3 ;; ++ esac ++ else : ++ # compilation failed ++ $3 ++ fi ++fi ++rm -fr conftest* ++])# _LT_TRY_DLOPEN_SELF ++ ++ ++# LT_SYS_DLOPEN_SELF ++# ------------------ ++AC_DEFUN([LT_SYS_DLOPEN_SELF], ++[m4_require([_LT_HEADER_DLFCN])dnl ++if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++ lt_cv_dlopen=no ++ lt_cv_dlopen_libs= ++ ++ case $host_os in ++ beos*) ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; ++ ++ mingw* | pw32*) ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ cygwin*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ darwin*) ++ # if libdl is installed we need to link against it ++ AC_CHECK_LIB([dl], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ ++ lt_cv_dlopen="dyld" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ]) ++ ;; ++ ++ *) ++ AC_CHECK_FUNC([shl_load], ++ [lt_cv_dlopen="shl_load"], ++ [AC_CHECK_LIB([dld], [shl_load], ++ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], ++ [AC_CHECK_FUNC([dlopen], ++ [lt_cv_dlopen="dlopen"], ++ [AC_CHECK_LIB([dl], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], ++ [AC_CHECK_LIB([svld], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], ++ [AC_CHECK_LIB([dld], [dld_link], ++ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ++ ]) ++ ]) ++ ]) ++ ]) ++ ]) ++ ;; ++ esac ++ ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ else ++ enable_dlopen=no ++ fi ++ ++ case $lt_cv_dlopen in ++ dlopen) ++ save_CPPFLAGS="$CPPFLAGS" ++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++ ++ save_LDFLAGS="$LDFLAGS" ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ ++ save_LIBS="$LIBS" ++ LIBS="$lt_cv_dlopen_libs $LIBS" ++ ++ AC_CACHE_CHECK([whether a program can dlopen itself], ++ lt_cv_dlopen_self, [dnl ++ _LT_TRY_DLOPEN_SELF( ++ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, ++ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ++ ]) ++ ++ if test "x$lt_cv_dlopen_self" = xyes; then ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" ++ AC_CACHE_CHECK([whether a statically linked program can dlopen itself], ++ lt_cv_dlopen_self_static, [dnl ++ _LT_TRY_DLOPEN_SELF( ++ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, ++ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ++ ]) ++ fi ++ ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ ;; ++ esac ++ ++ case $lt_cv_dlopen_self in ++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; ++ *) enable_dlopen_self=unknown ;; ++ esac ++ ++ case $lt_cv_dlopen_self_static in ++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; ++ *) enable_dlopen_self_static=unknown ;; ++ esac ++fi ++_LT_DECL([dlopen_support], [enable_dlopen], [0], ++ [Whether dlopen is supported]) ++_LT_DECL([dlopen_self], [enable_dlopen_self], [0], ++ [Whether dlopen of programs is supported]) ++_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], ++ [Whether dlopen of statically linked programs is supported]) ++])# LT_SYS_DLOPEN_SELF ++ ++# Old name: ++AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) ++ ++ ++# _LT_COMPILER_C_O([TAGNAME]) ++# --------------------------- ++# Check to see if options -c and -o are simultaneously supported by compiler. ++# This macro does not hard code the compiler like AC_PROG_CC_C_O. ++m4_defun([_LT_COMPILER_C_O], ++[m4_require([_LT_DECL_SED])dnl ++m4_require([_LT_FILEUTILS_DEFAULTS])dnl ++m4_require([_LT_TAG_COMPILER])dnl ++AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], ++ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], ++ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no ++ $RM -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&AS_MESSAGE_LOG_FD ++ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes ++ fi ++ fi ++ chmod u+w . 2>&AS_MESSAGE_LOG_FD ++ $RM conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files ++ $RM out/* && rmdir out ++ cd .. ++ $RM -r conftest ++ $RM conftest* ++]) ++_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], ++ [Does compiler simultaneously support -c and -o options?]) ++])# _LT_COMPILER_C_O ++ ++ ++# _LT_COMPILER_FILE_LOCKS([TAGNAME]) ++# ---------------------------------- ++# Check to see if we can do hard links to lock some files if needed ++m4_defun([_LT_COMPILER_FILE_LOCKS], ++[m4_require([_LT_ENABLE_LOCK])dnl ++m4_require([_LT_FILEUTILS_DEFAULTS])dnl ++_LT_COMPILER_C_O([$1]) ++ ++hard_links="nottested" ++if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ AC_MSG_CHECKING([if we can lock with hard links]) ++ hard_links=yes ++ $RM conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ AC_MSG_RESULT([$hard_links]) ++ if test "$hard_links" = no; then ++ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ++])# _LT_COMPILER_FILE_LOCKS ++ ++ ++# _LT_CHECK_OBJDIR ++# ---------------- ++m4_defun([_LT_CHECK_OBJDIR], ++[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], ++[rm -f .libs 2>/dev/null ++mkdir .libs 2>/dev/null ++if test -d .libs; then ++ lt_cv_objdir=.libs ++else ++ # MS-DOS does not allow filenames that begin with a dot. ++ lt_cv_objdir=_libs ++fi ++rmdir .libs 2>/dev/null]) ++objdir=$lt_cv_objdir ++_LT_DECL([], [objdir], [0], ++ [The name of the directory that contains temporary libtool files])dnl ++m4_pattern_allow([LT_OBJDIR])dnl ++AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", ++ [Define to the sub-directory in which libtool stores uninstalled libraries.]) ++])# _LT_CHECK_OBJDIR ++ ++ ++# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) ++# -------------------------------------- ++# Check hardcoding attributes. ++m4_defun([_LT_LINKER_HARDCODE_LIBPATH], ++[AC_MSG_CHECKING([how to hardcode library paths into programs]) ++_LT_TAGVAR(hardcode_action, $1)= ++if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || ++ test -n "$_LT_TAGVAR(runpath_var, $1)" || ++ test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then ++ ++ # We can hardcode non-existent directories. ++ if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && ++ test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then ++ # Linking always hardcodes the temporary library directory. ++ _LT_TAGVAR(hardcode_action, $1)=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ _LT_TAGVAR(hardcode_action, $1)=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ _LT_TAGVAR(hardcode_action, $1)=unsupported ++fi ++AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) ++ ++if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || ++ test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++_LT_TAGDECL([], [hardcode_action], [0], ++ [How to hardcode a shared library path into an executable]) ++])# _LT_LINKER_HARDCODE_LIBPATH ++ ++ ++# _LT_CMD_STRIPLIB ++# ---------------- ++m4_defun([_LT_CMD_STRIPLIB], ++[m4_require([_LT_DECL_EGREP]) ++striplib= ++old_striplib= ++AC_MSG_CHECKING([whether stripping libraries is possible]) ++if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then ++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" ++ test -z "$striplib" && striplib="$STRIP --strip-unneeded" ++ AC_MSG_RESULT([yes]) ++else ++# FIXME - insert some real tests, host_os isn't really good enough ++ case $host_os in ++ darwin*) ++ if test -n "$STRIP" ; then ++ striplib="$STRIP -x" ++ old_striplib="$STRIP -S" ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ fi ++ ;; ++ *) ++ AC_MSG_RESULT([no]) ++ ;; ++ esac ++fi ++_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) ++_LT_DECL([], [striplib], [1]) ++])# _LT_CMD_STRIPLIB ++ ++ ++# _LT_SYS_DYNAMIC_LINKER([TAG]) ++# ----------------------------- ++# PORTME Fill in your ld.so characteristics ++m4_defun([_LT_SYS_DYNAMIC_LINKER], ++[AC_REQUIRE([AC_CANONICAL_HOST])dnl ++m4_require([_LT_DECL_EGREP])dnl ++m4_require([_LT_FILEUTILS_DEFAULTS])dnl ++m4_require([_LT_DECL_SED])dnl ++AC_MSG_CHECKING([dynamic linker characteristics]) ++m4_if([$1], ++ [], [ ++if test "$GCC" = yes; then ++ case $host_os in ++ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; ++ *) lt_awk_arg="/^libraries:/" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then ++ # if the path contains ";" then we assume it to be the separator ++ # otherwise default to the standard path separator (i.e. ":") - it is ++ # assumed that no part of a normal pathname contains ";" but that should ++ # okay in the real world where ";" in dirpaths is itself problematic. ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ # Ok, now we have the path, separated by spaces, we can step through it ++ # and add multilib dir if necessary. ++ lt_tmp_lt_search_path_spec= ++ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` ++ for lt_sys_path in $lt_search_path_spec; do ++ if test -d "$lt_sys_path/$lt_multi_os_dir"; then ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" ++ else ++ test -d "$lt_sys_path" && \ ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" ++ fi ++ done ++ lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' ++BEGIN {RS=" "; FS="/|\n";} { ++ lt_foo=""; ++ lt_count=0; ++ for (lt_i = NF; lt_i > 0; lt_i--) { ++ if ($lt_i != "" && $lt_i != ".") { ++ if ($lt_i == "..") { ++ lt_count++; ++ } else { ++ if (lt_count == 0) { ++ lt_foo="/" $lt_i lt_foo; ++ } else { ++ lt_count--; ++ } ++ } ++ } ++ } ++ if (lt_foo != "") { lt_freq[[lt_foo]]++; } ++ if (lt_freq[[lt_foo]] == 1) { print lt_foo; } ++}'` ++ sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` ++else ++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++fi]) ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix[[4-9]]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[[01]] | aix4.[[01]].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; ++ ++amigaos*) ++ case $host_cpu in ++ powerpc) ++ # Since July 2007 AmigaOS4 officially supports .so libraries. ++ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ ;; ++ m68k) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ ;; ++ esac ++ ;; ++ ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[[45]]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no ++ ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname~ ++ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then ++ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; ++ fi' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $RM \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; ++ ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; ++ ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++m4_if([$1], [],[ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++freebsd1*) ++ dynamic_linker=no ++ ;; ++ ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[[123]]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[[01]]* | freebsdelf3.[[01]]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ ++ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ postinstall_cmds='chmod 555 $lib' ++ ;; ++ ++interix[[3-9]]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ # Some binutils ld are patched to set DT_RUNPATH ++ save_LDFLAGS=$LDFLAGS ++ save_libdir=$libdir ++ eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ ++ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], ++ [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], ++ [shlibpath_overrides_runpath=yes])]) ++ LDFLAGS=$save_LDFLAGS ++ libdir=$save_libdir ++ ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes ++ ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++*nto* | *qnx*) ++ version_type=qnx ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='ldqnx.so' ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[[89]] | openbsd2.[[89]].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++tpf*) ++ # TPF is a cross-target only. Preferred cross-host = GNU/Linux. ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++*) ++ dynamic_linker=no ++ ;; ++esac ++AC_MSG_RESULT([$dynamic_linker]) ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then ++ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" ++fi ++if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then ++ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" ++fi ++ ++_LT_DECL([], [variables_saved_for_relink], [1], ++ [Variables whose values should be saved in libtool wrapper scripts and ++ restored at link time]) ++_LT_DECL([], [need_lib_prefix], [0], ++ [Do we need the "lib" prefix for modules?]) ++_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) ++_LT_DECL([], [version_type], [0], [Library versioning type]) ++_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) ++_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) ++_LT_DECL([], [shlibpath_overrides_runpath], [0], ++ [Is shlibpath searched before the hard-coded library search path?]) ++_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) ++_LT_DECL([], [library_names_spec], [1], ++ [[List of archive names. First name is the real one, the rest are links. ++ The last name is the one that the linker finds with -lNAME]]) ++_LT_DECL([], [soname_spec], [1], ++ [[The coded name of the library, if different from the real name]]) ++_LT_DECL([], [postinstall_cmds], [2], ++ [Command to use after installation of a shared archive]) ++_LT_DECL([], [postuninstall_cmds], [2], ++ [Command to use after uninstallation of a shared archive]) ++_LT_DECL([], [finish_cmds], [2], ++ [Commands used to finish a libtool library installation in a directory]) ++_LT_DECL([], [finish_eval], [1], ++ [[As "finish_cmds", except a single script fragment to be evaled but ++ not shown]]) ++_LT_DECL([], [hardcode_into_libs], [0], ++ [Whether we should hardcode library paths into libraries]) ++_LT_DECL([], [sys_lib_search_path_spec], [2], ++ [Compile-time system search path for libraries]) ++_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], ++ [Run-time system search path for libraries]) ++])# _LT_SYS_DYNAMIC_LINKER ++ ++ ++# _LT_PATH_TOOL_PREFIX(TOOL) ++# -------------------------- ++# find a file program which can recognize shared library ++AC_DEFUN([_LT_PATH_TOOL_PREFIX], ++[m4_require([_LT_DECL_EGREP])dnl ++AC_MSG_CHECKING([for $1]) ++AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, ++[case $MAGIC_CMD in ++[[\\/*] | ?:[\\/]*]) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++dnl $ac_dummy forces splitting on constant user-supplied paths. ++dnl POSIX.2 word splitting is done only on the output of word expansions, ++dnl not every word. This closes a longstanding sh security hole. ++ ac_dummy="m4_if([$2], , $PATH, [$2])" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/$1; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/$1" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++_LT_EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac]) ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ AC_MSG_RESULT($MAGIC_CMD) ++else ++ AC_MSG_RESULT(no) ++fi ++_LT_DECL([], [MAGIC_CMD], [0], ++ [Used to examine libraries when file_magic_cmd begins with "file"])dnl ++])# _LT_PATH_TOOL_PREFIX ++ ++# Old name: ++AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) ++ ++ ++# _LT_PATH_MAGIC ++# -------------- ++# find a file program which can recognize a shared library ++m4_defun([_LT_PATH_MAGIC], ++[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) ++if test -z "$lt_cv_path_MAGIC_CMD"; then ++ if test -n "$ac_tool_prefix"; then ++ _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) ++ else ++ MAGIC_CMD=: ++ fi ++fi ++])# _LT_PATH_MAGIC ++ ++ ++# LT_PATH_LD ++# ---------- ++# find the pathname to the GNU or non-GNU linker ++AC_DEFUN([LT_PATH_LD], ++[AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([AC_CANONICAL_HOST])dnl ++AC_REQUIRE([AC_CANONICAL_BUILD])dnl ++m4_require([_LT_DECL_SED])dnl ++m4_require([_LT_DECL_EGREP])dnl ++ ++AC_ARG_WITH([gnu-ld], ++ [AS_HELP_STRING([--with-gnu-ld], ++ [assume the C compiler uses GNU ld @<:@default=no@:>@])], ++ [test "$withval" = no || with_gnu_ld=yes], ++ [with_gnu_ld=no])dnl ++ ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ AC_MSG_CHECKING([for ld used by $CC]) ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [[\\/]]* | ?:[[\\/]]*) ++ re_direlt='/[[^/]][[^/]]*/\.\./' ++ # Canonicalize the pathname of ld ++ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` ++ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown ++ ;; ++ esac ++elif test "$with_gnu_ld" = yes; then ++ AC_MSG_CHECKING([for GNU ld]) ++else ++ AC_MSG_CHECKING([for non-GNU ld]) ++fi ++AC_CACHE_VAL(lt_cv_path_LD, ++[if test -z "$LD"; then ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ lt_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some variants of GNU ld only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ else ++ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' ++ fi ++ ;; ++ ++darwin* | rhapsody*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++freebsd* | dragonfly*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then ++ case $host_cpu in ++ i*86 ) ++ # Not sure whether the presence of OpenBSD here was a mistake. ++ # Let's accept both of them until this is cleared up. ++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ++ ;; ++ esac ++ else ++ lt_cv_deplibs_check_method=pass_all ++ fi ++ ;; ++ ++gnu*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++hpux10.20* | hpux11*) ++ lt_cv_file_magic_cmd=/usr/bin/file ++ case $host_cpu in ++ ia64*) ++ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' ++ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ++ ;; ++ hppa*64*) ++ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] ++ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ++ ;; ++ *) ++ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' ++ lt_cv_file_magic_test_file=/usr/lib/libc.sl ++ ;; ++ esac ++ ;; ++ ++interix[[3-9]]*) ++ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $LD in ++ *-32|*"-32 ") libmagic=32-bit;; ++ *-n32|*"-n32 ") libmagic=N32;; ++ *-64|*"-64 ") libmagic=64-bit;; ++ *) libmagic=never-match;; ++ esac ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' ++ fi ++ ;; ++ ++newos6*) ++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=/usr/lib/libnls.so ++ ;; ++ ++*nto* | *qnx*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++openbsd*) ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' ++ fi ++ ;; ++ ++osf3* | osf4* | osf5*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++rdos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++solaris*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++sysv4 | sysv4.3*) ++ case $host_vendor in ++ motorola) ++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ++ ;; ++ ncr) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ sequent) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ++ ;; ++ sni) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" ++ lt_cv_file_magic_test_file=/lib/libc.so ++ ;; ++ siemens) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ pc) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ esac ++ ;; ++ ++tpf*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++esac ++]) ++file_magic_cmd=$lt_cv_file_magic_cmd ++deplibs_check_method=$lt_cv_deplibs_check_method ++test -z "$deplibs_check_method" && deplibs_check_method=unknown ++ ++_LT_DECL([], [deplibs_check_method], [1], ++ [Method to check whether dependent libraries are shared objects]) ++_LT_DECL([], [file_magic_cmd], [1], ++ [Command to use when deplibs_check_method == "file_magic"]) ++])# _LT_CHECK_MAGIC_METHOD ++ ++ ++# LT_PATH_NM ++# ---------- ++# find the pathname to a BSD- or MS-compatible name lister ++AC_DEFUN([LT_PATH_NM], ++[AC_REQUIRE([AC_PROG_CC])dnl ++AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, ++[if test -n "$NM"; then ++ # Let the user override the test. ++ lt_cv_path_NM="$NM" ++else ++ lt_nm_to_check="${ac_tool_prefix}nm" ++ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then ++ lt_nm_to_check="$lt_nm_to_check nm" ++ fi ++ for lt_tmp_nm in $lt_nm_to_check; do ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ tmp_nm="$ac_dir/$lt_tmp_nm" ++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then ++ # Check to see if the nm accepts a BSD-compat flag. ++ # Adding the `sed 1q' prevents false positives on HP-UX, which says: ++ # nm: unknown option "B" ignored ++ # Tru64's nm complains that /dev/null is an invalid object file ++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in ++ */dev/null* | *'Invalid file or object type'*) ++ lt_cv_path_NM="$tmp_nm -B" ++ break ++ ;; ++ *) ++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in ++ */dev/null*) ++ lt_cv_path_NM="$tmp_nm -p" ++ break ++ ;; ++ *) ++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ done ++ IFS="$lt_save_ifs" ++ done ++ : ${lt_cv_path_NM=no} ++fi]) ++if test "$lt_cv_path_NM" != "no"; then ++ NM="$lt_cv_path_NM" ++else ++ # Didn't find any BSD compatible name lister, look for dumpbin. ++ AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) ++ AC_SUBST([DUMPBIN]) ++ if test "$DUMPBIN" != ":"; then ++ NM="$DUMPBIN" ++ fi ++fi ++test -z "$NM" && NM=nm ++AC_SUBST([NM]) ++_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl ++ ++AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], ++ [lt_cv_nm_interface="BSD nm" ++ echo "int some_variable = 0;" > conftest.$ac_ext ++ (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval "$ac_compile" 2>conftest.err) ++ cat conftest.err >&AS_MESSAGE_LOG_FD ++ (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) ++ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) ++ cat conftest.err >&AS_MESSAGE_LOG_FD ++ (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) ++ cat conftest.out >&AS_MESSAGE_LOG_FD ++ if $GREP 'External.*some_variable' conftest.out > /dev/null; then ++ lt_cv_nm_interface="MS dumpbin" ++ fi ++ rm -f conftest*]) ++])# LT_PATH_NM ++ ++# Old names: ++AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) ++AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AM_PROG_NM], []) ++dnl AC_DEFUN([AC_PROG_NM], []) ++ ++ ++# LT_LIB_M ++# -------- ++# check for math library ++AC_DEFUN([LT_LIB_M], ++[AC_REQUIRE([AC_CANONICAL_HOST])dnl ++LIBM= ++case $host in ++*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) ++ # These system don't have libm, or don't need it ++ ;; ++*-ncr-sysv4.3*) ++ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") ++ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ++ ;; ++*) ++ AC_CHECK_LIB(m, cos, LIBM="-lm") ++ ;; ++esac ++AC_SUBST([LIBM]) ++])# LT_LIB_M ++ ++# Old name: ++AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_CHECK_LIBM], []) ++ ++ ++# _LT_COMPILER_NO_RTTI([TAGNAME]) ++# ------------------------------- ++m4_defun([_LT_COMPILER_NO_RTTI], ++[m4_require([_LT_TAG_COMPILER])dnl ++ ++_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= ++ ++if test "$GCC" = yes; then ++ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ++ ++ _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], ++ lt_cv_prog_compiler_rtti_exceptions, ++ [-fno-rtti -fno-exceptions], [], ++ [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) ++fi ++_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], ++ [Compiler flag to turn off builtin functions]) ++])# _LT_COMPILER_NO_RTTI ++ ++ ++# _LT_CMD_GLOBAL_SYMBOLS ++# ---------------------- ++m4_defun([_LT_CMD_GLOBAL_SYMBOLS], ++[AC_REQUIRE([AC_CANONICAL_HOST])dnl ++AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([LT_PATH_NM])dnl ++AC_REQUIRE([LT_PATH_LD])dnl ++m4_require([_LT_DECL_SED])dnl ++m4_require([_LT_DECL_EGREP])dnl ++m4_require([_LT_TAG_COMPILER])dnl ++ ++# Check for command to grab the raw symbol name followed by C symbol from nm. ++AC_MSG_CHECKING([command to parse $NM output from $compiler object]) ++AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], ++[ ++# These are sane defaults that work on at least a few old systems. ++# [They come from Ultrix. What could be older than Ultrix?!! ;)] ++ ++# Character class describing NM global symbol codes. ++symcode='[[BCDEGRST]]' ++ ++# Regexp to match symbols that can be accessed directly from C. ++sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' ++ ++# Define system-specific variables. ++case $host_os in ++aix*) ++ symcode='[[BCDT]]' ++ ;; ++cygwin* | mingw* | pw32*) ++ symcode='[[ABCDGISTW]]' ++ ;; ++hpux*) ++ if test "$host_cpu" = ia64; then ++ symcode='[[ABCDEGRST]]' ++ fi ++ ;; ++irix* | nonstopux*) ++ symcode='[[BCDEGRST]]' ++ ;; ++osf*) ++ symcode='[[BCDEGQRST]]' ++ ;; ++solaris*) ++ symcode='[[BDRT]]' ++ ;; ++sco3.2v5*) ++ symcode='[[DT]]' ++ ;; ++sysv4.2uw2*) ++ symcode='[[DT]]' ++ ;; ++sysv5* | sco5v6* | unixware* | OpenUNIX*) ++ symcode='[[ABDT]]' ++ ;; ++sysv4) ++ symcode='[[DFNSTU]]' ++ ;; ++esac ++ ++# If we're using GNU nm, then use its standard symbol codes. ++case `$NM -V 2>&1` in ++*GNU* | *'with BFD'*) ++ symcode='[[ABCDGIRSTW]]' ;; ++esac ++ ++# Transform an extracted symbol line into a proper C declaration. ++# Some systems (esp. on ia64) link data and code symbols differently, ++# so use this general approach. ++lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ ++# Transform an extracted symbol line into symbol name and symbol address ++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" ++ ++# Handle CRLF in mingw tool chain ++opt_cr= ++case $build_os in ++mingw*) ++ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ++ ;; ++esac ++ ++# Try without a prefix underscore, then with it. ++for ac_symprfx in "" "_"; do ++ ++ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. ++ symxfrm="\\1 $ac_symprfx\\2 \\2" ++ ++ # Write the raw and C identifiers. ++ if test "$lt_cv_nm_interface" = "MS dumpbin"; then ++ # Fake it for dumpbin and say T for any non-static function ++ # and D for any global variable. ++ # Also find C++ and __fastcall symbols from MSVC++, ++ # which start with @ or ?. ++ lt_cv_sys_global_symbol_pipe="$AWK ['"\ ++" {last_section=section; section=\$ 3};"\ ++" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ ++" \$ 0!~/External *\|/{next};"\ ++" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ ++" {if(hide[section]) next};"\ ++" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ ++" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ ++" s[1]~/^[@?]/{print s[1], s[1]; next};"\ ++" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ ++" ' prfx=^$ac_symprfx]" ++ else ++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" ++ fi ++ ++ # Check to see that the pipe works correctly. ++ pipe_works=no ++ ++ rm -f conftest* ++ cat > conftest.$ac_ext <<_LT_EOF ++#ifdef __cplusplus ++extern "C" { ++#endif ++char nm_test_var; ++void nm_test_func(void); ++void nm_test_func(void){} ++#ifdef __cplusplus ++} ++#endif ++int main(){nm_test_var='a';nm_test_func();return(0);} ++_LT_EOF ++ ++ if AC_TRY_EVAL(ac_compile); then ++ # Now try to grab the symbols. ++ nlist=conftest.nm ++ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then ++ # Try sorting and uniquifying the output. ++ if sort "$nlist" | uniq > "$nlist"T; then ++ mv -f "$nlist"T "$nlist" ++ else ++ rm -f "$nlist"T ++ fi ++ ++ # Make sure that we snagged all the symbols we need. ++ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then ++ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then ++ cat <<_LT_EOF > conftest.$ac_ext ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++_LT_EOF ++ # Now generate the symbol file. ++ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' ++ ++ cat <<_LT_EOF >> conftest.$ac_ext ++ ++/* The mapping between symbol names and symbols. */ ++const struct { ++ const char *name; ++ void *address; ++} ++lt__PROGRAM__LTX_preloaded_symbols[[]] = ++{ ++ { "@PROGRAM@", (void *) 0 }, ++_LT_EOF ++ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext ++ cat <<\_LT_EOF >> conftest.$ac_ext ++ {0, (void *) 0} ++}; ++ ++/* This works around a problem in FreeBSD linker */ ++#ifdef FREEBSD_WORKAROUND ++static const void *lt_preloaded_setup() { ++ return lt__PROGRAM__LTX_preloaded_symbols; ++} ++#endif ++ ++#ifdef __cplusplus ++} ++#endif ++_LT_EOF ++ # Now try linking the two files. ++ mv conftest.$ac_objext conftstm.$ac_objext ++ lt_save_LIBS="$LIBS" ++ lt_save_CFLAGS="$CFLAGS" ++ LIBS="conftstm.$ac_objext" ++ CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" ++ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then ++ pipe_works=yes ++ fi ++ LIBS="$lt_save_LIBS" ++ CFLAGS="$lt_save_CFLAGS" ++ else ++ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD ++ fi ++ else ++ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD ++ fi ++ else ++ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD ++ fi ++ else ++ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD ++ cat conftest.$ac_ext >&5 ++ fi ++ rm -rf conftest* conftst* ++ ++ # Do not use the global_symbol_pipe unless it works. ++ if test "$pipe_works" = yes; then ++ break ++ else ++ lt_cv_sys_global_symbol_pipe= ++ fi ++done ++]) ++if test -z "$lt_cv_sys_global_symbol_pipe"; then ++ lt_cv_sys_global_symbol_to_cdecl= ++fi ++if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then ++ AC_MSG_RESULT(failed) ++else ++ AC_MSG_RESULT(ok) ++fi ++ ++_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], ++ [Take the output of nm and produce a listing of raw symbols and C names]) ++_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], ++ [Transform the output of nm in a proper C declaration]) ++_LT_DECL([global_symbol_to_c_name_address], ++ [lt_cv_sys_global_symbol_to_c_name_address], [1], ++ [Transform the output of nm in a C name address pair]) ++_LT_DECL([global_symbol_to_c_name_address_lib_prefix], ++ [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], ++ [Transform the output of nm in a C name address pair when lib prefix is needed]) ++]) # _LT_CMD_GLOBAL_SYMBOLS ++ ++ ++# _LT_COMPILER_PIC([TAGNAME]) ++# --------------------------- ++m4_defun([_LT_COMPILER_PIC], ++[m4_require([_LT_TAG_COMPILER])dnl ++_LT_TAGVAR(lt_prog_compiler_wl, $1)= ++_LT_TAGVAR(lt_prog_compiler_pic, $1)= ++_LT_TAGVAR(lt_prog_compiler_static, $1)= ++ ++AC_MSG_CHECKING([for $compiler option to produce PIC]) ++m4_if([$1], [CXX], [ ++ # C++ specific cases for pic, static, wl, etc. ++ if test "$GXX" = yes; then ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ m68k) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ esac ++ ;; ++ ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ mingw* | cygwin* | os2* | pw32*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ m4_if([$1], [GCJ], [], ++ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ++ ;; ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ++ ;; ++ *djgpp*) ++ # DJGPP does not support shared libraries at all ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)= ++ ;; ++ interix[[3-9]]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic ++ fi ++ ;; ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ ;; ++ *) ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac ++ ;; ++ *qnx* | *nto*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ++ ;; ++ *) ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac ++ else ++ case $host_os in ++ aix[[4-9]]*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ else ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ chorus*) ++ case $cc_basename in ++ cxch68*) ++ # Green Hills C++ Compiler ++ # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ++ ;; ++ esac ++ ;; ++ dgux*) ++ case $cc_basename in ++ ec++*) ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ ;; ++ ghcx*) ++ # Green Hills C++ Compiler ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ freebsd* | dragonfly*) ++ # FreeBSD uses GNU C++ ++ ;; ++ hpux9* | hpux10* | hpux11*) ++ case $cc_basename in ++ CC*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ++ if test "$host_cpu" != ia64; then ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ++ fi ++ ;; ++ aCC*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ++ ;; ++ esac ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ interix*) ++ # This is c89, which is MS Visual C++ (no shared libs) ++ # Anyone wants to do a port? ++ ;; ++ irix5* | irix6* | nonstopux*) ++ case $cc_basename in ++ CC*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ # CC pic flag -KPIC is the default. ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ KCC*) ++ # KAI C++ Compiler ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ icpc* | ecpc* ) ++ # Intel C++ ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ ;; ++ pgCC* | pgcpp*) ++ # Portland Group C++ compiler ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ cxx*) ++ # Compaq C++ ++ # Make sure the PIC flag is empty. It appears that all Alpha ++ # Linux and Compaq Tru64 Unix objects are PIC. ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)= ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ xlc* | xlC*) ++ # IBM XL 8.0 on PPC ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ lynxos*) ++ ;; ++ m88k*) ++ ;; ++ mvs*) ++ case $cc_basename in ++ cxx*) ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ netbsd*) ++ ;; ++ *qnx* | *nto*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ++ ;; ++ osf3* | osf4* | osf5*) ++ case $cc_basename in ++ KCC*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ ;; ++ cxx*) ++ # Digital/Compaq C++ ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # Make sure the PIC flag is empty. It appears that all Alpha ++ # Linux and Compaq Tru64 Unix objects are PIC. ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)= ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ psos*) ++ ;; ++ solaris*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.2, 5.x and Centerline C++ ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ++ ;; ++ gcx*) ++ # Green Hills C++ Compiler ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ sunos4*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.x ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ lcc*) ++ # Lucid ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ case $cc_basename in ++ CC*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ esac ++ ;; ++ tandem*) ++ case $cc_basename in ++ NCC*) ++ # NonStop-UX NCC 3.20 ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ vxworks*) ++ ;; ++ *) ++ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ ;; ++ esac ++ fi ++], ++[ ++ if test "$GCC" = yes; then ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ m68k) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ esac ++ ;; ++ ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ m4_if([$1], [GCJ], [], ++ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ++ ;; ++ ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ++ ;; ++ ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac ++ ;; ++ ++ interix[[3-9]]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ enable_shared=no ++ ;; ++ ++ *nto* | *qnx*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic ++ fi ++ ;; ++ ++ *) ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac ++ else ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ else ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ m4_if([$1], [GCJ], [], ++ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # PIC (with -KPIC) is the default. ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ icc* | ecc* | ifort*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ccc*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # All Alpha code is PIC. ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ xl*) ++ # IBM XL C 8.0/Fortran 10.1 on PPC ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ ++ newsos6) ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ++ *nto* | *qnx*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ++ ;; ++ ++ osf3* | osf4* | osf5*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # All OSF/1 code is PIC. ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ ++ rdos*) ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ ++ solaris*) ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; ++ *) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; ++ esac ++ ;; ++ ++ sunos4*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ fi ++ ;; ++ ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ++ unicos*) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ ;; ++ ++ uts4*) ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ++ *) ++ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ ;; ++ esac ++ fi ++]) ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)= ++ ;; ++ *) ++ _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ++ ;; ++esac ++AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) ++_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], ++ [How to pass a linker flag through the compiler]) ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then ++ _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], ++ [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], ++ [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], ++ [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in ++ "" | " "*) ;; ++ *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; ++ esac], ++ [_LT_TAGVAR(lt_prog_compiler_pic, $1)= ++ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) ++fi ++_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], ++ [Additional compiler flags for building library objects]) ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" ++_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], ++ _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), ++ $lt_tmp_static_flag, ++ [], ++ [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) ++_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], ++ [Compiler flag to prevent dynamic linking]) ++])# _LT_COMPILER_PIC ++ ++ ++# _LT_LINKER_SHLIBS([TAGNAME]) ++# ---------------------------- ++# See if the linker supports building shared libraries. ++m4_defun([_LT_LINKER_SHLIBS], ++[AC_REQUIRE([LT_PATH_LD])dnl ++AC_REQUIRE([LT_PATH_NM])dnl ++m4_require([_LT_FILEUTILS_DEFAULTS])dnl ++m4_require([_LT_DECL_EGREP])dnl ++m4_require([_LT_DECL_SED])dnl ++m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl ++m4_require([_LT_TAG_COMPILER])dnl ++AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ++m4_if([$1], [CXX], [ ++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ case $host_os in ++ aix[[4-9]]*) ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then ++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ else ++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ fi ++ ;; ++ pw32*) ++ _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ++ ;; ++ cygwin* | mingw*) ++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' ++ ;; ++ *) ++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ ;; ++ esac ++ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ++], [ ++ runpath_var= ++ _LT_TAGVAR(allow_undefined_flag, $1)= ++ _LT_TAGVAR(always_export_symbols, $1)=no ++ _LT_TAGVAR(archive_cmds, $1)= ++ _LT_TAGVAR(archive_expsym_cmds, $1)= ++ _LT_TAGVAR(compiler_needs_object, $1)=no ++ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)= ++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ _LT_TAGVAR(hardcode_automatic, $1)=no ++ _LT_TAGVAR(hardcode_direct, $1)=no ++ _LT_TAGVAR(hardcode_direct_absolute, $1)=no ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= ++ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= ++ _LT_TAGVAR(hardcode_libdir_separator, $1)= ++ _LT_TAGVAR(hardcode_minus_L, $1)=no ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported ++ _LT_TAGVAR(inherit_rpath, $1)=no ++ _LT_TAGVAR(link_all_deplibs, $1)=unknown ++ _LT_TAGVAR(module_cmds, $1)= ++ _LT_TAGVAR(module_expsym_cmds, $1)= ++ _LT_TAGVAR(old_archive_from_new_cmds, $1)= ++ _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= ++ _LT_TAGVAR(thread_safe_flag_spec, $1)= ++ _LT_TAGVAR(whole_archive_flag_spec, $1)= ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ _LT_TAGVAR(include_expsyms, $1)= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ # Exclude shared library initialization/finalization symbols. ++dnl Note also adjust exclude_expsyms for C++ above. ++ extract_expsyms_cmds= ++ ++ case $host_os in ++ cygwin* | mingw* | pw32*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no ++ ;; ++ esac ++ ++ _LT_TAGVAR(ld_shlibs, $1)=yes ++ if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' ++ ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then ++ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ _LT_TAGVAR(whole_archive_flag_spec, $1)= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>&1` in ++ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac ++ ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix[[3-9]]*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. ++ ++_LT_EOF ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='' ++ ;; ++ m68k) ++ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_TAGVAR(hardcode_minus_L, $1)=yes ++ ;; ++ esac ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, ++ # as there is no search path for DLLs. ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_TAGVAR(always_export_symbols, $1)=no ++ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ interix[[3-9]]*) ++ _LT_TAGVAR(hardcode_direct, $1)=no ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ ++ gnu* | linux* | tpf* | k*bsd*-gnu) ++ tmp_diet=no ++ if test "$host_os" = linux-dietlibc; then ++ case $cc_basename in ++ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) ++ esac ++ fi ++ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ ++ && test "$tmp_diet" = no ++ then ++ tmp_addflag= ++ tmp_sharedflag='-shared' ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) ++ tmp_sharedflag='-qmkshrobj' ++ tmp_addflag= ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ _LT_TAGVAR(compiler_needs_object, $1)=yes ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ esac ++ _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ ++ if test "x$supports_anon_versioning" = xyes; then ++ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ ++ case $cc_basename in ++ xlf*) ++ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= ++ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' ++ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' ++ if test "x$supports_anon_versioning" = xyes; then ++ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' ++ fi ++ ;; ++ esac ++ else ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; ++ ++ solaris*) ++ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ # For security reasons, it is highly recommended that you always ++ # use absolute paths for naming shared libraries, and exclude the ++ # DT_RUNPATH tag from executables and libraries. But doing so ++ # requires that you compile everything twice, which is a pain. ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ sunos4*) ++ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ *) ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ++ if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then ++ runpath_var= ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)= ++ _LT_TAGVAR(whole_archive_flag_spec, $1)= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_TAGVAR(always_export_symbols, $1)=yes ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ _LT_TAGVAR(hardcode_minus_L, $1)=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ _LT_TAGVAR(hardcode_direct, $1)=unsupported ++ fi ++ ;; ++ ++ aix[[4-9]]*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then ++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ else ++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ _LT_TAGVAR(archive_cmds, $1)='' ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_TAGVAR(link_all_deplibs, $1)=yes ++ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[[012]]|aix4.[[012]].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && ++ strings "$collect2name" | $GREP resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ _LT_TAGVAR(hardcode_direct, $1)=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ _LT_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ _LT_TAGVAR(always_export_symbols, $1)=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ _LT_TAGVAR(allow_undefined_flag, $1)='-berok' ++ # Determine the default libpath from the value encoded in an ++ # empty executable. ++ _LT_SYS_MODULE_PATH_AIX ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' ++ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" ++ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an ++ # empty executable. ++ _LT_SYS_MODULE_PATH_AIX ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' ++ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' ++ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='' ++ ;; ++ m68k) ++ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_TAGVAR(hardcode_minus_L, $1)=yes ++ ;; ++ esac ++ ;; ++ ++ bsdi[[45]]*) ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' ++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' ++ # FIXME: Should let the user specify the lib program. ++ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' ++ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ ;; ++ ++ darwin* | rhapsody*) ++ _LT_DARWIN_LINKER_FEATURES($1) ++ ;; ++ ++ dgux*) ++ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ freebsd1*) ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2*) ++ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ hpux9*) ++ if test "$GCC" = yes; then ++ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ _LT_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ ;; ++ ++ hpux10*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ _LT_TAGVAR(hardcode_minus_L, $1)=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ _LT_TAGVAR(hardcode_direct, $1)=no ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ *) ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ _LT_TAGVAR(hardcode_minus_L, $1)=yes ++ ;; ++ esac ++ fi ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ # Try to use the -exported_symbol ld option, if it does not ++ # work, assume that -exports_file does not work either and ++ # implicitly export all symbols. ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" ++ AC_LINK_IFELSE(int foo(void) {}, ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' ++ ) ++ LDFLAGS="$save_LDFLAGS" ++ else ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' ++ fi ++ _LT_TAGVAR(archive_cmds_need_lc, $1)='no' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_TAGVAR(inherit_rpath, $1)=yes ++ _LT_TAGVAR(link_all_deplibs, $1)=yes ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ newsos6) ++ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ *nto* | *qnx*) ++ ;; ++ ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ else ++ case $host_os in ++ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) ++ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ ;; ++ *) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ os2*) ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; ++ ++ osf3*) ++ if test "$GCC" = yes; then ++ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ _LT_TAGVAR(archive_cmds_need_lc, $1)='no' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ ;; ++ ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ else ++ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ ++ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' ++ ++ # Both c and cxx compiler support -rpath directly ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ++ fi ++ _LT_TAGVAR(archive_cmds_need_lc, $1)='no' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ ;; ++ ++ solaris*) ++ _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ++ else ++ case `$CC -V 2>&1` in ++ *"Compilers 5.0"*) ++ wlarc='' ++ _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ++ ;; ++ *) ++ wlarc='${wl}' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ++ ;; ++ esac ++ fi ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ case $host_os in ++ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ _LT_TAGVAR(link_all_deplibs, $1)=yes ++ ;; ++ ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ sysv4) ++ case $host_vendor in ++ sni) ++ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' ++ _LT_TAGVAR(hardcode_direct, $1)=no ++ ;; ++ motorola) ++ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ sysv4.3*) ++ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ _LT_TAGVAR(ld_shlibs, $1)=yes ++ fi ++ ;; ++ ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) ++ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' ++ _LT_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_TAGVAR(link_all_deplibs, $1)=yes ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ uts4*) ++ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ *) ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ++ if test x$host_vendor = xsni; then ++ case $host in ++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ++ ;; ++ esac ++ fi ++ fi ++]) ++AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) ++test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no ++ ++_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld ++ ++_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl ++_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl ++_LT_DECL([], [extract_expsyms_cmds], [2], ++ [The commands to extract the exported symbol list from a shared archive]) ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in ++x|xyes) ++ # Assume -lc should be added ++ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $_LT_TAGVAR(archive_cmds, $1) in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ AC_MSG_CHECKING([whether -lc should be explicitly linked in]) ++ $RM conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) ++ pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) ++ _LT_TAGVAR(allow_undefined_flag, $1)= ++ if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) ++ then ++ _LT_TAGVAR(archive_cmds_need_lc, $1)=no ++ else ++ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes ++ fi ++ _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $RM conftest* ++ AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) ++ ;; ++ esac ++ fi ++ ;; ++esac ++ ++_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], ++ [Whether or not to add -lc for building shared libraries]) ++_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], ++ [enable_shared_with_static_runtimes], [0], ++ [Whether or not to disallow shared libs when runtime libs are static]) ++_LT_TAGDECL([], [export_dynamic_flag_spec], [1], ++ [Compiler flag to allow reflexive dlopens]) ++_LT_TAGDECL([], [whole_archive_flag_spec], [1], ++ [Compiler flag to generate shared objects directly from archives]) ++_LT_TAGDECL([], [compiler_needs_object], [1], ++ [Whether the compiler copes with passing no objects directly]) ++_LT_TAGDECL([], [old_archive_from_new_cmds], [2], ++ [Create an old-style archive from a shared archive]) ++_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], ++ [Create a temporary old-style archive to link instead of a shared archive]) ++_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) ++_LT_TAGDECL([], [archive_expsym_cmds], [2]) ++_LT_TAGDECL([], [module_cmds], [2], ++ [Commands used to build a loadable module if different from building ++ a shared archive.]) ++_LT_TAGDECL([], [module_expsym_cmds], [2]) ++_LT_TAGDECL([], [with_gnu_ld], [1], ++ [Whether we are building with GNU ld or not]) ++_LT_TAGDECL([], [allow_undefined_flag], [1], ++ [Flag that allows shared libraries with undefined symbols to be built]) ++_LT_TAGDECL([], [no_undefined_flag], [1], ++ [Flag that enforces no undefined symbols]) ++_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], ++ [Flag to hardcode $libdir into a binary during linking. ++ This must work even if $libdir does not exist]) ++_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], ++ [[If ld is used when linking, flag to hardcode $libdir into a binary ++ during linking. This must work even if $libdir does not exist]]) ++_LT_TAGDECL([], [hardcode_libdir_separator], [1], ++ [Whether we need a single "-rpath" flag with a separated argument]) ++_LT_TAGDECL([], [hardcode_direct], [0], ++ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes ++ DIR into the resulting binary]) ++_LT_TAGDECL([], [hardcode_direct_absolute], [0], ++ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes ++ DIR into the resulting binary and the resulting library dependency is ++ "absolute", i.e impossible to change by setting ${shlibpath_var} if the ++ library is relocated]) ++_LT_TAGDECL([], [hardcode_minus_L], [0], ++ [Set to "yes" if using the -LDIR flag during linking hardcodes DIR ++ into the resulting binary]) ++_LT_TAGDECL([], [hardcode_shlibpath_var], [0], ++ [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR ++ into the resulting binary]) ++_LT_TAGDECL([], [hardcode_automatic], [0], ++ [Set to "yes" if building a shared library automatically hardcodes DIR ++ into the library and all subsequent libraries and executables linked ++ against it]) ++_LT_TAGDECL([], [inherit_rpath], [0], ++ [Set to yes if linker adds runtime paths of dependent libraries ++ to runtime path list]) ++_LT_TAGDECL([], [link_all_deplibs], [0], ++ [Whether libtool must link a program against all its dependency libraries]) ++_LT_TAGDECL([], [fix_srcfile_path], [1], ++ [Fix the shell variable $srcfile for the compiler]) ++_LT_TAGDECL([], [always_export_symbols], [0], ++ [Set to "yes" if exported symbols are required]) ++_LT_TAGDECL([], [export_symbols_cmds], [2], ++ [The commands to list exported symbols]) ++_LT_TAGDECL([], [exclude_expsyms], [1], ++ [Symbols that should not be listed in the preloaded symbols]) ++_LT_TAGDECL([], [include_expsyms], [1], ++ [Symbols that must always be exported]) ++_LT_TAGDECL([], [prelink_cmds], [2], ++ [Commands necessary for linking programs (against libraries) with templates]) ++_LT_TAGDECL([], [file_list_spec], [1], ++ [Specify filename containing input files]) ++dnl FIXME: Not yet implemented ++dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], ++dnl [Compiler flag to generate thread safe objects]) ++])# _LT_LINKER_SHLIBS ++ ++ ++# _LT_LANG_C_CONFIG([TAG]) ++# ------------------------ ++# Ensure that the configuration variables for a C compiler are suitably ++# defined. These variables are subsequently used by _LT_CONFIG to write ++# the compiler configuration to `libtool'. ++m4_defun([_LT_LANG_C_CONFIG], ++[m4_require([_LT_DECL_EGREP])dnl ++lt_save_CC="$CC" ++AC_LANG_PUSH(C) ++ ++# Source file extension for C test sources. ++ac_ext=c ++ ++# Object file extension for compiled C test sources. ++objext=o ++_LT_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(){return(0);}' ++ ++_LT_TAG_COMPILER ++# Save the default compiler, since it gets overwritten when the other ++# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. ++compiler_DEFAULT=$CC ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE ++ ++if test -n "$compiler"; then ++ _LT_COMPILER_NO_RTTI($1) ++ _LT_COMPILER_PIC($1) ++ _LT_COMPILER_C_O($1) ++ _LT_COMPILER_FILE_LOCKS($1) ++ _LT_LINKER_SHLIBS($1) ++ _LT_SYS_DYNAMIC_LINKER($1) ++ _LT_LINKER_HARDCODE_LIBPATH($1) ++ LT_SYS_DLOPEN_SELF ++ _LT_CMD_STRIPLIB ++ ++ # Report which library types will actually be built ++ AC_MSG_CHECKING([if libtool supports shared libraries]) ++ AC_MSG_RESULT([$can_build_shared]) ++ ++ AC_MSG_CHECKING([whether to build shared libraries]) ++ test "$can_build_shared" = "no" && enable_shared=no ++ ++ # On AIX, shared libraries and static libraries use the same namespace, and ++ # are all built from PIC. ++ case $host_os in ++ aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' ++ fi ++ ;; ++ ++ aix[[4-9]]*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++ esac ++ AC_MSG_RESULT([$enable_shared]) ++ ++ AC_MSG_CHECKING([whether to build static libraries]) ++ # Make sure either enable_shared or enable_static is yes. ++ test "$enable_shared" = yes || enable_static=yes ++ AC_MSG_RESULT([$enable_static]) ++ ++ _LT_CONFIG($1) ++fi ++AC_LANG_POP ++CC="$lt_save_CC" ++])# _LT_LANG_C_CONFIG ++ ++ ++# _LT_PROG_CXX ++# ------------ ++# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ ++# compiler, we have our own version here. ++m4_defun([_LT_PROG_CXX], ++[ ++pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) ++AC_PROG_CXX ++if test -n "$CXX" && ( test "X$CXX" != "Xno" && ++ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || ++ (test "X$CXX" != "Xg++"))) ; then ++ AC_PROG_CXXCPP ++else ++ _lt_caught_CXX_error=yes ++fi ++popdef([AC_MSG_ERROR]) ++])# _LT_PROG_CXX ++ ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([_LT_PROG_CXX], []) ++ ++ ++# _LT_LANG_CXX_CONFIG([TAG]) ++# -------------------------- ++# Ensure that the configuration variables for a C++ compiler are suitably ++# defined. These variables are subsequently used by _LT_CONFIG to write ++# the compiler configuration to `libtool'. ++m4_defun([_LT_LANG_CXX_CONFIG], ++[AC_REQUIRE([_LT_PROG_CXX])dnl ++m4_require([_LT_FILEUTILS_DEFAULTS])dnl ++m4_require([_LT_DECL_EGREP])dnl ++ ++AC_LANG_PUSH(C++) ++_LT_TAGVAR(archive_cmds_need_lc, $1)=no ++_LT_TAGVAR(allow_undefined_flag, $1)= ++_LT_TAGVAR(always_export_symbols, $1)=no ++_LT_TAGVAR(archive_expsym_cmds, $1)= ++_LT_TAGVAR(compiler_needs_object, $1)=no ++_LT_TAGVAR(export_dynamic_flag_spec, $1)= ++_LT_TAGVAR(hardcode_direct, $1)=no ++_LT_TAGVAR(hardcode_direct_absolute, $1)=no ++_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= ++_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= ++_LT_TAGVAR(hardcode_libdir_separator, $1)= ++_LT_TAGVAR(hardcode_minus_L, $1)=no ++_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported ++_LT_TAGVAR(hardcode_automatic, $1)=no ++_LT_TAGVAR(inherit_rpath, $1)=no ++_LT_TAGVAR(module_cmds, $1)= ++_LT_TAGVAR(module_expsym_cmds, $1)= ++_LT_TAGVAR(link_all_deplibs, $1)=unknown ++_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++_LT_TAGVAR(no_undefined_flag, $1)= ++_LT_TAGVAR(whole_archive_flag_spec, $1)= ++_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no ++ ++# Source file extension for C++ test sources. ++ac_ext=cpp ++ ++# Object file extension for compiled C++ test sources. ++objext=o ++_LT_TAGVAR(objext, $1)=$objext ++ ++# No sense in running all these tests if we already determined that ++# the CXX compiler isn't working. Some variables (like enable_shared) ++# are currently assumed to apply to all compilers on this platform, ++# and will be corrupted by setting them based on a non-working compiler. ++if test "$_lt_caught_CXX_error" != yes; then ++ # Code to be used in simple compile tests ++ lt_simple_compile_test_code="int some_variable = 0;" ++ ++ # Code to be used in simple link tests ++ lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' ++ ++ # ltmain only uses $CC for tagged configurations so make sure $CC is set. ++ _LT_TAG_COMPILER ++ ++ # save warnings/boilerplate of simple test code ++ _LT_COMPILER_BOILERPLATE ++ _LT_LINKER_BOILERPLATE ++ ++ # Allow CC to be a program name with arguments. ++ lt_save_CC=$CC ++ lt_save_LD=$LD ++ lt_save_GCC=$GCC ++ GCC=$GXX ++ lt_save_with_gnu_ld=$with_gnu_ld ++ lt_save_path_LD=$lt_cv_path_LD ++ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then ++ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx ++ else ++ $as_unset lt_cv_prog_gnu_ld ++ fi ++ if test -n "${lt_cv_path_LDCXX+set}"; then ++ lt_cv_path_LD=$lt_cv_path_LDCXX ++ else ++ $as_unset lt_cv_path_LD ++ fi ++ test -z "${LDCXX+set}" || LD=$LDCXX ++ CC=${CXX-"c++"} ++ compiler=$CC ++ _LT_TAGVAR(compiler, $1)=$CC ++ _LT_CC_BASENAME([$compiler]) ++ ++ if test -n "$compiler"; then ++ # We don't want -fno-exception when compiling C++ code, so set the ++ # no_builtin_flag separately ++ if test "$GXX" = yes; then ++ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ++ else ++ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= ++ fi ++ ++ if test "$GXX" = yes; then ++ # Set up default GNU C++ configuration ++ ++ LT_PATH_LD ++ ++ # Check if GNU C++ uses GNU ld as the underlying linker, since the ++ # archiving commands below assume that GNU ld is being used. ++ if test "$with_gnu_ld" = yes; then ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to ++ # investigate it a little bit more. (MM) ++ wlarc='${wl}' ++ ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if eval "`$CC -print-prog-name=ld` --help 2>&1" | ++ $GREP 'no-whole-archive' > /dev/null; then ++ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ _LT_TAGVAR(whole_archive_flag_spec, $1)= ++ fi ++ else ++ with_gnu_ld=no ++ wlarc= ++ ++ # A generic and very simple default shared library creation ++ # command for GNU C++ for the case where it uses the native ++ # linker, instead of GNU ld. If possible, this setting should ++ # overridden to take advantage of the native linker features on ++ # the platform it is being used on. ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' ++ fi ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' ++ ++ else ++ GXX=no ++ with_gnu_ld=no ++ wlarc= ++ fi ++ ++ # PORTME: fill in a description of your system's C++ link characteristics ++ AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ++ _LT_TAGVAR(ld_shlibs, $1)=yes ++ case $host_os in ++ aix3*) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ aix[[4-9]]*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) ++ for ld_flag in $LDFLAGS; do ++ case $ld_flag in ++ *-brtl*) ++ aix_use_runtimelinking=yes ++ break ++ ;; ++ esac ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ _LT_TAGVAR(archive_cmds, $1)='' ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_TAGVAR(link_all_deplibs, $1)=yes ++ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' ++ ++ if test "$GXX" = yes; then ++ case $host_os in aix4.[[012]]|aix4.[[012]].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && ++ strings "$collect2name" | $GREP resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ _LT_TAGVAR(hardcode_direct, $1)=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ _LT_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)= ++ fi ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to ++ # export. ++ _LT_TAGVAR(always_export_symbols, $1)=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ _LT_TAGVAR(allow_undefined_flag, $1)='-berok' ++ # Determine the default libpath from the value encoded in an empty ++ # executable. ++ _LT_SYS_MODULE_PATH_AIX ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" ++ ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' ++ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" ++ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an ++ # empty executable. ++ _LT_SYS_MODULE_PATH_AIX ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' ++ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' ++ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes ++ # This is similar to how AIX traditionally builds its shared ++ # libraries. ++ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ chorus*) ++ case $cc_basename in ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, ++ # as there is no search path for DLLs. ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_TAGVAR(always_export_symbols, $1)=no ++ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ ++ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ darwin* | rhapsody*) ++ _LT_DARWIN_LINKER_FEATURES($1) ++ ;; ++ ++ dgux*) ++ case $cc_basename in ++ ec++*) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ghcx*) ++ # Green Hills C++ Compiler ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ ++ freebsd[[12]]*) ++ # C++ shared libraries reported to be fairly broken before ++ # switch to ELF ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ++ freebsd-elf*) ++ _LT_TAGVAR(archive_cmds_need_lc, $1)=no ++ ;; ++ ++ freebsd* | dragonfly*) ++ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF ++ # conventions ++ _LT_TAGVAR(ld_shlibs, $1)=yes ++ ;; ++ ++ gnu*) ++ ;; ++ ++ hpux9*) ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ++ case $cc_basename in ++ CC*) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ aCC*) ++ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ hpux10*|hpux11*) ++ if test $with_gnu_ld = no; then ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ ;; ++ *) ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ ;; ++ esac ++ fi ++ case $host_cpu in ++ hppa*64*|ia64*) ++ _LT_TAGVAR(hardcode_direct, $1)=no ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ *) ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes ++ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ;; ++ esac ++ ++ case $cc_basename in ++ CC*) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ aCC*) ++ case $host_cpu in ++ hppa*64*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ *) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ esac ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ if test $with_gnu_ld = no; then ++ case $host_cpu in ++ hppa*64*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ *) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ esac ++ fi ++ else ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ interix[[3-9]]*) ++ _LT_TAGVAR(hardcode_direct, $1)=no ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ irix5* | irix6*) ++ case $cc_basename in ++ CC*) ++ # SGI C++ ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -ar", where "CC" is the IRIX C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ if test "$with_gnu_ld" = no; then ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' ++ fi ++ fi ++ _LT_TAGVAR(link_all_deplibs, $1)=yes ++ ;; ++ esac ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_TAGVAR(inherit_rpath, $1)=yes ++ ;; ++ ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ++ ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -Bstatic", where "CC" is the KAI C++ compiler. ++ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ++ ;; ++ icpc* | ecpc* ) ++ # Intel C++ ++ with_gnu_ld=yes ++ # version 8.0 and above of icpc choke on multiply defined symbols ++ # if we add $predep_objects and $postdep_objects, however 7.1 and ++ # earlier do not add the objects themselves. ++ case `$CC -V 2>&1` in ++ *"Version 7."*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ;; ++ *) # Version 8.0 or newer ++ tmp_idyn= ++ case $host_cpu in ++ ia64*) tmp_idyn=' -i_dynamic';; ++ esac ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ;; ++ esac ++ _LT_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ++ ;; ++ pgCC* | pgcpp*) ++ # Portland Group C++ compiler ++ case `$CC -V` in ++ *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) ++ _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ ++ rm -rf $tpldir~ ++ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ ++ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' ++ _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ ++ rm -rf $tpldir~ ++ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ ++ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ ++ $RANLIB $oldlib' ++ _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ ++ rm -rf $tpldir~ ++ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ ++ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ ++ rm -rf $tpldir~ ++ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ ++ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ++ ;; ++ *) # Version 6 will use weak symbols ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ++ ;; ++ esac ++ ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ ;; ++ cxx*) ++ # Compaq C++ ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' ++ ++ runpath_var=LD_RUN_PATH ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ++ ;; ++ xl*) ++ # IBM XL 8.0 on PPC, with GNU ld ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ if test "x$supports_anon_versioning" = xyes; then ++ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ _LT_TAGVAR(compiler_needs_object, $1)=yes ++ ++ # Not sure whether something based on ++ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 ++ # would be better. ++ output_verbose_link_cmd='echo' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -xar", where "CC" is the Sun C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ ++ lynxos*) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ++ m88k*) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ++ mvs*) ++ case $cc_basename in ++ cxx*) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' ++ wlarc= ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ fi ++ # Workaround some broken pre-1.5 toolchains ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ++ ;; ++ ++ *nto* | *qnx*) ++ _LT_TAGVAR(ld_shlibs, $1)=yes ++ ;; ++ ++ openbsd2*) ++ # C++ shared libraries are fairly broken ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ _LT_TAGVAR(hardcode_direct, $1)=yes ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ fi ++ output_verbose_link_cmd=echo ++ else ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ osf3* | osf4* | osf5*) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' ++ ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Archives containing C++ object files must be created using ++ # the KAI C++ compiler. ++ case $host in ++ osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; ++ *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; ++ esac ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ cxx*) ++ case $host in ++ osf3*) ++ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ ;; ++ *) ++ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ ++ echo "-hidden">> $lib.exp~ ++ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ ++ $RM $lib.exp' ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ++ ;; ++ esac ++ ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ++ ;; ++ *) ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ case $host in ++ osf3*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ ;; ++ *) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ ;; ++ esac ++ ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' ++ ++ else ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ psos*) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ++ sunos4*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.x ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ lcc*) ++ # Lucid ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ ++ solaris*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.2, 5.x and Centerline C++ ++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes ++ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' ++ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' ++ ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ case $host_os in ++ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ++ ;; ++ esac ++ _LT_TAGVAR(link_all_deplibs, $1)=yes ++ ++ output_verbose_link_cmd='echo' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -xar", where "CC" is the Sun C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ++ ;; ++ gcx*) ++ # Green Hills C++ Compiler ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ ++ # The C++ compiler must be used to create the archive. ++ _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ++ ;; ++ *) ++ # GNU C++ compiler with Solaris linker ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' ++ if $CC --version | $GREP -v '^2\.7' > /dev/null; then ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' ++ else ++ # g++ 2.7 appears to require `-G' NOT `-shared' on this ++ # platform. ++ _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' ++ fi ++ ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' ++ case $host_os in ++ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; ++ *) ++ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ ;; ++ ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) ++ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ runpath_var='LD_RUN_PATH' ++ ++ case $cc_basename in ++ CC*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' ++ _LT_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' ++ _LT_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_TAGVAR(link_all_deplibs, $1)=yes ++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ case $cc_basename in ++ CC*) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ ;; ++ ++ tandem*) ++ case $cc_basename in ++ NCC*) ++ # NonStop-UX NCC 3.20 ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ ++ vxworks*) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ++ AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) ++ test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no ++ ++ _LT_TAGVAR(GCC, $1)="$GXX" ++ _LT_TAGVAR(LD, $1)="$LD" ++ ++ ## CAVEAT EMPTOR: ++ ## There is no encapsulation within the following macros, do not change ++ ## the running order or otherwise move them around unless you know exactly ++ ## what you are doing... ++ _LT_SYS_HIDDEN_LIBDEPS($1) ++ _LT_COMPILER_PIC($1) ++ _LT_COMPILER_C_O($1) ++ _LT_COMPILER_FILE_LOCKS($1) ++ _LT_LINKER_SHLIBS($1) ++ _LT_SYS_DYNAMIC_LINKER($1) ++ _LT_LINKER_HARDCODE_LIBPATH($1) ++ ++ _LT_CONFIG($1) ++ fi # test -n "$compiler" ++ ++ CC=$lt_save_CC ++ LDCXX=$LD ++ LD=$lt_save_LD ++ GCC=$lt_save_GCC ++ with_gnu_ld=$lt_save_with_gnu_ld ++ lt_cv_path_LDCXX=$lt_cv_path_LD ++ lt_cv_path_LD=$lt_save_path_LD ++ lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld ++ lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ++fi # test "$_lt_caught_CXX_error" != yes ++ ++AC_LANG_POP ++])# _LT_LANG_CXX_CONFIG ++ ++ ++# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) ++# --------------------------------- ++# Figure out "hidden" library dependencies from verbose ++# compiler output when linking a shared library. ++# Parse the compiler output and extract the necessary ++# objects, libraries and library flags. ++m4_defun([_LT_SYS_HIDDEN_LIBDEPS], ++[m4_require([_LT_FILEUTILS_DEFAULTS])dnl ++# Dependencies to place before and after the object being linked: ++_LT_TAGVAR(predep_objects, $1)= ++_LT_TAGVAR(postdep_objects, $1)= ++_LT_TAGVAR(predeps, $1)= ++_LT_TAGVAR(postdeps, $1)= ++_LT_TAGVAR(compiler_lib_search_path, $1)= ++ ++dnl we can't use the lt_simple_compile_test_code here, ++dnl because it contains code intended for an executable, ++dnl not a library. It's possible we should let each ++dnl tag define a new lt_????_link_test_code variable, ++dnl but it's only used here... ++m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF ++int a; ++void foo (void) { a = 0; } ++_LT_EOF ++], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF ++class Foo ++{ ++public: ++ Foo (void) { a = 0; } ++private: ++ int a; ++}; ++_LT_EOF ++], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF ++ subroutine foo ++ implicit none ++ integer*4 a ++ a=0 ++ return ++ end ++_LT_EOF ++], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF ++ subroutine foo ++ implicit none ++ integer a ++ a=0 ++ return ++ end ++_LT_EOF ++], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF ++public class foo { ++ private int a; ++ public void bar (void) { ++ a = 0; ++ } ++}; ++_LT_EOF ++]) ++dnl Parse the compiler output and extract the necessary ++dnl objects, libraries and library flags. ++if AC_TRY_EVAL(ac_compile); then ++ # Parse the compiler output and extract the necessary ++ # objects, libraries and library flags. ++ ++ # Sentinel used to keep track of whether or not we are before ++ # the conftest object file. ++ pre_test_object_deps_done=no ++ ++ for p in `eval "$output_verbose_link_cmd"`; do ++ case $p in ++ ++ -L* | -R* | -l*) ++ # Some compilers place space between "-{L,R}" and the path. ++ # Remove the space. ++ if test $p = "-L" || ++ test $p = "-R"; then ++ prev=$p ++ continue ++ else ++ prev= ++ fi ++ ++ if test "$pre_test_object_deps_done" = no; then ++ case $p in ++ -L* | -R*) ++ # Internal compiler library paths should come after those ++ # provided the user. The postdeps already come after the ++ # user supplied libs so there is no need to process them. ++ if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then ++ _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" ++ else ++ _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" ++ fi ++ ;; ++ # The "-l" case would never come before the object being ++ # linked, so don't bother handling this case. ++ esac ++ else ++ if test -z "$_LT_TAGVAR(postdeps, $1)"; then ++ _LT_TAGVAR(postdeps, $1)="${prev}${p}" ++ else ++ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" ++ fi ++ fi ++ ;; ++ ++ *.$objext) ++ # This assumes that the test object file only shows up ++ # once in the compiler output. ++ if test "$p" = "conftest.$objext"; then ++ pre_test_object_deps_done=yes ++ continue ++ fi ++ ++ if test "$pre_test_object_deps_done" = no; then ++ if test -z "$_LT_TAGVAR(predep_objects, $1)"; then ++ _LT_TAGVAR(predep_objects, $1)="$p" ++ else ++ _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" ++ fi ++ else ++ if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then ++ _LT_TAGVAR(postdep_objects, $1)="$p" ++ else ++ _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" ++ fi ++ fi ++ ;; ++ ++ *) ;; # Ignore the rest. ++ ++ esac ++ done ++ ++ # Clean up. ++ rm -f a.out a.exe ++else ++ echo "libtool.m4: error: problem compiling $1 test program" ++fi ++ ++$RM -f confest.$objext ++ ++# PORTME: override above test on systems where it is broken ++m4_if([$1], [CXX], ++[case $host_os in ++interix[[3-9]]*) ++ # Interix 3.5 installs completely hosed .la files for C++, so rather than ++ # hack all around it, let's just trust "g++" to DTRT. ++ _LT_TAGVAR(predep_objects,$1)= ++ _LT_TAGVAR(postdep_objects,$1)= ++ _LT_TAGVAR(postdeps,$1)= ++ ;; ++ ++linux*) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac ++ ++ if test "$solaris_use_stlport4" != yes; then ++ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' ++ fi ++ ;; ++ esac ++ ;; ++ ++solaris*) ++ case $cc_basename in ++ CC*) ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac ++ ++ # Adding this requires a known-good setup of shared libraries for ++ # Sun compiler versions before 5.6, else PIC objects from an old ++ # archive will be linked into the output, leading to subtle bugs. ++ if test "$solaris_use_stlport4" != yes; then ++ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' ++ fi ++ ;; ++ esac ++ ;; ++esac ++]) ++ ++case " $_LT_TAGVAR(postdeps, $1) " in ++*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; ++esac ++ _LT_TAGVAR(compiler_lib_search_dirs, $1)= ++if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then ++ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` ++fi ++_LT_TAGDECL([], [compiler_lib_search_dirs], [1], ++ [The directories searched by this compiler when creating a shared library]) ++_LT_TAGDECL([], [predep_objects], [1], ++ [Dependencies to place before and after the objects being linked to ++ create a shared library]) ++_LT_TAGDECL([], [postdep_objects], [1]) ++_LT_TAGDECL([], [predeps], [1]) ++_LT_TAGDECL([], [postdeps], [1]) ++_LT_TAGDECL([], [compiler_lib_search_path], [1], ++ [The library search path used internally by the compiler when linking ++ a shared library]) ++])# _LT_SYS_HIDDEN_LIBDEPS ++ ++ ++# _LT_PROG_F77 ++# ------------ ++# Since AC_PROG_F77 is broken, in that it returns the empty string ++# if there is no fortran compiler, we have our own version here. ++m4_defun([_LT_PROG_F77], ++[ ++pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) ++AC_PROG_F77 ++if test -z "$F77" || test "X$F77" = "Xno"; then ++ _lt_disable_F77=yes ++fi ++popdef([AC_MSG_ERROR]) ++])# _LT_PROG_F77 ++ ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([_LT_PROG_F77], []) ++ ++ ++# _LT_LANG_F77_CONFIG([TAG]) ++# -------------------------- ++# Ensure that the configuration variables for a Fortran 77 compiler are ++# suitably defined. These variables are subsequently used by _LT_CONFIG ++# to write the compiler configuration to `libtool'. ++m4_defun([_LT_LANG_F77_CONFIG], ++[AC_REQUIRE([_LT_PROG_F77])dnl ++AC_LANG_PUSH(Fortran 77) ++ ++_LT_TAGVAR(archive_cmds_need_lc, $1)=no ++_LT_TAGVAR(allow_undefined_flag, $1)= ++_LT_TAGVAR(always_export_symbols, $1)=no ++_LT_TAGVAR(archive_expsym_cmds, $1)= ++_LT_TAGVAR(export_dynamic_flag_spec, $1)= ++_LT_TAGVAR(hardcode_direct, $1)=no ++_LT_TAGVAR(hardcode_direct_absolute, $1)=no ++_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= ++_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= ++_LT_TAGVAR(hardcode_libdir_separator, $1)= ++_LT_TAGVAR(hardcode_minus_L, $1)=no ++_LT_TAGVAR(hardcode_automatic, $1)=no ++_LT_TAGVAR(inherit_rpath, $1)=no ++_LT_TAGVAR(module_cmds, $1)= ++_LT_TAGVAR(module_expsym_cmds, $1)= ++_LT_TAGVAR(link_all_deplibs, $1)=unknown ++_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++_LT_TAGVAR(no_undefined_flag, $1)= ++_LT_TAGVAR(whole_archive_flag_spec, $1)= ++_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no ++ ++# Source file extension for f77 test sources. ++ac_ext=f ++ ++# Object file extension for compiled f77 test sources. ++objext=o ++_LT_TAGVAR(objext, $1)=$objext ++ ++# No sense in running all these tests if we already determined that ++# the F77 compiler isn't working. Some variables (like enable_shared) ++# are currently assumed to apply to all compilers on this platform, ++# and will be corrupted by setting them based on a non-working compiler. ++if test "$_lt_disable_F77" != yes; then ++ # Code to be used in simple compile tests ++ lt_simple_compile_test_code="\ ++ subroutine t ++ return ++ end ++" ++ ++ # Code to be used in simple link tests ++ lt_simple_link_test_code="\ ++ program t ++ end ++" ++ ++ # ltmain only uses $CC for tagged configurations so make sure $CC is set. ++ _LT_TAG_COMPILER ++ ++ # save warnings/boilerplate of simple test code ++ _LT_COMPILER_BOILERPLATE ++ _LT_LINKER_BOILERPLATE ++ ++ # Allow CC to be a program name with arguments. ++ lt_save_CC="$CC" ++ lt_save_GCC=$GCC ++ CC=${F77-"f77"} ++ compiler=$CC ++ _LT_TAGVAR(compiler, $1)=$CC ++ _LT_CC_BASENAME([$compiler]) ++ GCC=$G77 ++ if test -n "$compiler"; then ++ AC_MSG_CHECKING([if libtool supports shared libraries]) ++ AC_MSG_RESULT([$can_build_shared]) ++ ++ AC_MSG_CHECKING([whether to build shared libraries]) ++ test "$can_build_shared" = "no" && enable_shared=no ++ ++ # On AIX, shared libraries and static libraries use the same namespace, and ++ # are all built from PIC. ++ case $host_os in ++ aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' ++ fi ++ ;; ++ aix[[4-9]]*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++ esac ++ AC_MSG_RESULT([$enable_shared]) ++ ++ AC_MSG_CHECKING([whether to build static libraries]) ++ # Make sure either enable_shared or enable_static is yes. ++ test "$enable_shared" = yes || enable_static=yes ++ AC_MSG_RESULT([$enable_static]) ++ ++ _LT_TAGVAR(GCC, $1)="$G77" ++ _LT_TAGVAR(LD, $1)="$LD" ++ ++ ## CAVEAT EMPTOR: ++ ## There is no encapsulation within the following macros, do not change ++ ## the running order or otherwise move them around unless you know exactly ++ ## what you are doing... ++ _LT_COMPILER_PIC($1) ++ _LT_COMPILER_C_O($1) ++ _LT_COMPILER_FILE_LOCKS($1) ++ _LT_LINKER_SHLIBS($1) ++ _LT_SYS_DYNAMIC_LINKER($1) ++ _LT_LINKER_HARDCODE_LIBPATH($1) ++ ++ _LT_CONFIG($1) ++ fi # test -n "$compiler" ++ ++ GCC=$lt_save_GCC ++ CC="$lt_save_CC" ++fi # test "$_lt_disable_F77" != yes ++ ++AC_LANG_POP ++])# _LT_LANG_F77_CONFIG ++ ++ ++# _LT_PROG_FC ++# ----------- ++# Since AC_PROG_FC is broken, in that it returns the empty string ++# if there is no fortran compiler, we have our own version here. ++m4_defun([_LT_PROG_FC], ++[ ++pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) ++AC_PROG_FC ++if test -z "$FC" || test "X$FC" = "Xno"; then ++ _lt_disable_FC=yes ++fi ++popdef([AC_MSG_ERROR]) ++])# _LT_PROG_FC ++ ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([_LT_PROG_FC], []) ++ ++ ++# _LT_LANG_FC_CONFIG([TAG]) ++# ------------------------- ++# Ensure that the configuration variables for a Fortran compiler are ++# suitably defined. These variables are subsequently used by _LT_CONFIG ++# to write the compiler configuration to `libtool'. ++m4_defun([_LT_LANG_FC_CONFIG], ++[AC_REQUIRE([_LT_PROG_FC])dnl ++AC_LANG_PUSH(Fortran) ++ ++_LT_TAGVAR(archive_cmds_need_lc, $1)=no ++_LT_TAGVAR(allow_undefined_flag, $1)= ++_LT_TAGVAR(always_export_symbols, $1)=no ++_LT_TAGVAR(archive_expsym_cmds, $1)= ++_LT_TAGVAR(export_dynamic_flag_spec, $1)= ++_LT_TAGVAR(hardcode_direct, $1)=no ++_LT_TAGVAR(hardcode_direct_absolute, $1)=no ++_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= ++_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= ++_LT_TAGVAR(hardcode_libdir_separator, $1)= ++_LT_TAGVAR(hardcode_minus_L, $1)=no ++_LT_TAGVAR(hardcode_automatic, $1)=no ++_LT_TAGVAR(inherit_rpath, $1)=no ++_LT_TAGVAR(module_cmds, $1)= ++_LT_TAGVAR(module_expsym_cmds, $1)= ++_LT_TAGVAR(link_all_deplibs, $1)=unknown ++_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++_LT_TAGVAR(no_undefined_flag, $1)= ++_LT_TAGVAR(whole_archive_flag_spec, $1)= ++_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no ++ ++# Source file extension for fc test sources. ++ac_ext=${ac_fc_srcext-f} ++ ++# Object file extension for compiled fc test sources. ++objext=o ++_LT_TAGVAR(objext, $1)=$objext ++ ++# No sense in running all these tests if we already determined that ++# the FC compiler isn't working. Some variables (like enable_shared) ++# are currently assumed to apply to all compilers on this platform, ++# and will be corrupted by setting them based on a non-working compiler. ++if test "$_lt_disable_FC" != yes; then ++ # Code to be used in simple compile tests ++ lt_simple_compile_test_code="\ ++ subroutine t ++ return ++ end ++" ++ ++ # Code to be used in simple link tests ++ lt_simple_link_test_code="\ ++ program t ++ end ++" ++ ++ # ltmain only uses $CC for tagged configurations so make sure $CC is set. ++ _LT_TAG_COMPILER ++ ++ # save warnings/boilerplate of simple test code ++ _LT_COMPILER_BOILERPLATE ++ _LT_LINKER_BOILERPLATE ++ ++ # Allow CC to be a program name with arguments. ++ lt_save_CC="$CC" ++ lt_save_GCC=$GCC ++ CC=${FC-"f95"} ++ compiler=$CC ++ GCC=$ac_cv_fc_compiler_gnu ++ ++ _LT_TAGVAR(compiler, $1)=$CC ++ _LT_CC_BASENAME([$compiler]) ++ ++ if test -n "$compiler"; then ++ AC_MSG_CHECKING([if libtool supports shared libraries]) ++ AC_MSG_RESULT([$can_build_shared]) ++ ++ AC_MSG_CHECKING([whether to build shared libraries]) ++ test "$can_build_shared" = "no" && enable_shared=no ++ ++ # On AIX, shared libraries and static libraries use the same namespace, and ++ # are all built from PIC. ++ case $host_os in ++ aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' ++ fi ++ ;; ++ aix[[4-9]]*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++ esac ++ AC_MSG_RESULT([$enable_shared]) ++ ++ AC_MSG_CHECKING([whether to build static libraries]) ++ # Make sure either enable_shared or enable_static is yes. ++ test "$enable_shared" = yes || enable_static=yes ++ AC_MSG_RESULT([$enable_static]) ++ ++ _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" ++ _LT_TAGVAR(LD, $1)="$LD" ++ ++ ## CAVEAT EMPTOR: ++ ## There is no encapsulation within the following macros, do not change ++ ## the running order or otherwise move them around unless you know exactly ++ ## what you are doing... ++ _LT_SYS_HIDDEN_LIBDEPS($1) ++ _LT_COMPILER_PIC($1) ++ _LT_COMPILER_C_O($1) ++ _LT_COMPILER_FILE_LOCKS($1) ++ _LT_LINKER_SHLIBS($1) ++ _LT_SYS_DYNAMIC_LINKER($1) ++ _LT_LINKER_HARDCODE_LIBPATH($1) ++ ++ _LT_CONFIG($1) ++ fi # test -n "$compiler" ++ ++ GCC=$lt_save_GCC ++ CC="$lt_save_CC" ++fi # test "$_lt_disable_FC" != yes ++ ++AC_LANG_POP ++])# _LT_LANG_FC_CONFIG ++ ++ ++# _LT_LANG_GCJ_CONFIG([TAG]) ++# -------------------------- ++# Ensure that the configuration variables for the GNU Java Compiler compiler ++# are suitably defined. These variables are subsequently used by _LT_CONFIG ++# to write the compiler configuration to `libtool'. ++m4_defun([_LT_LANG_GCJ_CONFIG], ++[AC_REQUIRE([LT_PROG_GCJ])dnl ++AC_LANG_SAVE ++ ++# Source file extension for Java test sources. ++ac_ext=java ++ ++# Object file extension for compiled Java test sources. ++objext=o ++_LT_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="class foo {}" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_TAG_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++lt_save_GCC=$GCC ++GCC=yes ++CC=${GCJ-"gcj"} ++compiler=$CC ++_LT_TAGVAR(compiler, $1)=$CC ++_LT_TAGVAR(LD, $1)="$LD" ++_LT_CC_BASENAME([$compiler]) ++ ++# GCJ did not exist at the time GCC didn't implicitly link libc in. ++_LT_TAGVAR(archive_cmds_need_lc, $1)=no ++ ++_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++ ++if test -n "$compiler"; then ++ _LT_COMPILER_NO_RTTI($1) ++ _LT_COMPILER_PIC($1) ++ _LT_COMPILER_C_O($1) ++ _LT_COMPILER_FILE_LOCKS($1) ++ _LT_LINKER_SHLIBS($1) ++ _LT_LINKER_HARDCODE_LIBPATH($1) ++ ++ _LT_CONFIG($1) ++fi ++ ++AC_LANG_RESTORE ++ ++GCC=$lt_save_GCC ++CC="$lt_save_CC" ++])# _LT_LANG_GCJ_CONFIG ++ ++ ++# _LT_LANG_RC_CONFIG([TAG]) ++# ------------------------- ++# Ensure that the configuration variables for the Windows resource compiler ++# are suitably defined. These variables are subsequently used by _LT_CONFIG ++# to write the compiler configuration to `libtool'. ++m4_defun([_LT_LANG_RC_CONFIG], ++[AC_REQUIRE([LT_PROG_RC])dnl ++AC_LANG_SAVE ++ ++# Source file extension for RC test sources. ++ac_ext=rc ++ ++# Object file extension for compiled RC test sources. ++objext=o ++_LT_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code="$lt_simple_compile_test_code" ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_TAG_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++lt_save_GCC=$GCC ++GCC= ++CC=${RC-"windres"} ++compiler=$CC ++_LT_TAGVAR(compiler, $1)=$CC ++_LT_CC_BASENAME([$compiler]) ++_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes ++ ++if test -n "$compiler"; then ++ : ++ _LT_CONFIG($1) ++fi ++ ++GCC=$lt_save_GCC ++AC_LANG_RESTORE ++CC="$lt_save_CC" ++])# _LT_LANG_RC_CONFIG ++ ++ ++# LT_PROG_GCJ ++# ----------- ++AC_DEFUN([LT_PROG_GCJ], ++[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], ++ [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], ++ [AC_CHECK_TOOL(GCJ, gcj,) ++ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" ++ AC_SUBST(GCJFLAGS)])])[]dnl ++]) ++ ++# Old name: ++AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([LT_AC_PROG_GCJ], []) ++ ++ ++# LT_PROG_RC ++# ---------- ++AC_DEFUN([LT_PROG_RC], ++[AC_CHECK_TOOL(RC, windres,) ++]) ++ ++# Old name: ++AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([LT_AC_PROG_RC], []) ++ ++ ++# _LT_DECL_EGREP ++# -------------- ++# If we don't have a new enough Autoconf to choose the best grep ++# available, choose the one first in the user's PATH. ++m4_defun([_LT_DECL_EGREP], ++[AC_REQUIRE([AC_PROG_EGREP])dnl ++AC_REQUIRE([AC_PROG_FGREP])dnl ++test -z "$GREP" && GREP=grep ++_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) ++_LT_DECL([], [EGREP], [1], [An ERE matcher]) ++_LT_DECL([], [FGREP], [1], [A literal string matcher]) ++dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too ++AC_SUBST([GREP]) ++]) ++ ++ ++# _LT_DECL_SED ++# ------------ ++# Check for a fully-functional sed program, that truncates ++# as few characters as possible. Prefer GNU sed if found. ++m4_defun([_LT_DECL_SED], ++[AC_PROG_SED ++test -z "$SED" && SED=sed ++Xsed="$SED -e 1s/^X//" ++_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) ++_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], ++ [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ++])# _LT_DECL_SED ++ ++m4_ifndef([AC_PROG_SED], [ ++# NOTE: This macro has been submitted for inclusion into # ++# GNU Autoconf as AC_PROG_SED. When it is available in # ++# a released version of Autoconf we should remove this # ++# macro and use it instead. # ++ ++m4_defun([AC_PROG_SED], ++[AC_MSG_CHECKING([for a sed that does not truncate output]) ++AC_CACHE_VAL(lt_cv_path_SED, ++[# Loop through the user's path and test for sed and gsed. ++# Then use that list of sed's as ones to test for truncation. ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for lt_ac_prog in sed gsed; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then ++ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" ++ fi ++ done ++ done ++done ++IFS=$as_save_IFS ++lt_ac_max=0 ++lt_ac_count=0 ++# Add /usr/xpg4/bin/sed as it is typically found on Solaris ++# along with /bin/sed that truncates output. ++for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do ++ test ! -f $lt_ac_sed && continue ++ cat /dev/null > conftest.in ++ lt_ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >conftest.in ++ # Check for GNU sed and select it if it is found. ++ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then ++ lt_cv_path_SED=$lt_ac_sed ++ break ++ fi ++ while true; do ++ cat conftest.in conftest.in >conftest.tmp ++ mv conftest.tmp conftest.in ++ cp conftest.in conftest.nl ++ echo >>conftest.nl ++ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break ++ cmp -s conftest.out conftest.nl || break ++ # 10000 chars as input seems more than enough ++ test $lt_ac_count -gt 10 && break ++ lt_ac_count=`expr $lt_ac_count + 1` ++ if test $lt_ac_count -gt $lt_ac_max; then ++ lt_ac_max=$lt_ac_count ++ lt_cv_path_SED=$lt_ac_sed ++ fi ++ done ++done ++]) ++SED=$lt_cv_path_SED ++AC_SUBST([SED]) ++AC_MSG_RESULT([$SED]) ++])#AC_PROG_SED ++])#m4_ifndef ++ ++# Old name: ++AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([LT_AC_PROG_SED], []) ++ ++ ++# _LT_CHECK_SHELL_FEATURES ++# ------------------------ ++# Find out whether the shell is Bourne or XSI compatible, ++# or has some other useful features. ++m4_defun([_LT_CHECK_SHELL_FEATURES], ++[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) ++# Try some XSI features ++xsi_shell=no ++( _lt_dummy="a/b/c" ++ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ ++ = c,a/b,, \ ++ && eval 'test $(( 1 + 1 )) -eq 2 \ ++ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ ++ && xsi_shell=yes ++AC_MSG_RESULT([$xsi_shell]) ++_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) ++ ++AC_MSG_CHECKING([whether the shell understands "+="]) ++lt_shell_append=no ++( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ ++ >/dev/null 2>&1 \ ++ && lt_shell_append=yes ++AC_MSG_RESULT([$lt_shell_append]) ++_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) ++ ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ lt_unset=unset ++else ++ lt_unset=false ++fi ++_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl ++ ++# test EBCDIC or ASCII ++case `echo X|tr X '\101'` in ++ A) # ASCII based system ++ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr ++ lt_SP2NL='tr \040 \012' ++ lt_NL2SP='tr \015\012 \040\040' ++ ;; ++ *) # EBCDIC based system ++ lt_SP2NL='tr \100 \n' ++ lt_NL2SP='tr \r\n \100\100' ++ ;; ++esac ++_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl ++_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ++])# _LT_CHECK_SHELL_FEATURES ++ ++ ++# _LT_PROG_XSI_SHELLFNS ++# --------------------- ++# Bourne and XSI compatible variants of some useful shell functions. ++m4_defun([_LT_PROG_XSI_SHELLFNS], ++[case $xsi_shell in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++} ++ ++# func_basename file ++func_basename () ++{ ++ func_basename_result="${1##*/}" ++} ++ ++# func_dirname_and_basename file append nondir_replacement ++# perform func_basename and func_dirname in a single function ++# call: ++# dirname: Compute the dirname of FILE. If nonempty, ++# add APPEND to the result, otherwise set result ++# to NONDIR_REPLACEMENT. ++# value returned in "$func_dirname_result" ++# basename: Compute filename of FILE. ++# value retuned in "$func_basename_result" ++# Implementation must be kept synchronized with func_dirname ++# and func_basename. For efficiency, we do not delegate to ++# those functions but instead duplicate the functionality here. ++func_dirname_and_basename () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++ func_basename_result="${1##*/}" ++} ++ ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++func_stripname () ++{ ++ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are ++ # positional parameters, so assign one to ordinary parameter first. ++ func_stripname_result=${3} ++ func_stripname_result=${func_stripname_result#"${1}"} ++ func_stripname_result=${func_stripname_result%"${2}"} ++} ++ ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=${1%%=*} ++ func_opt_split_arg=${1#*=} ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ case ${1} in ++ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; ++ *) func_lo2o_result=${1} ;; ++ esac ++} ++ ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=${1%.*}.lo ++} ++ ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=$(( $[*] )) ++} ++ ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=${#1} ++} ++ ++_LT_EOF ++ ;; ++ *) # Bourne compatible functions. ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ # Extract subdirectory from the argument. ++ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` ++ if test "X$func_dirname_result" = "X${1}"; then ++ func_dirname_result="${3}" ++ else ++ func_dirname_result="$func_dirname_result${2}" ++ fi ++} ++ ++# func_basename file ++func_basename () ++{ ++ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` ++} ++ ++dnl func_dirname_and_basename ++dnl A portable version of this function is already defined in general.m4sh ++dnl so there is no need for it here. ++ ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++# func_strip_suffix prefix name ++func_stripname () ++{ ++ case ${2} in ++ .*) func_stripname_result=`$ECHO "X${3}" \ ++ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; ++ *) func_stripname_result=`$ECHO "X${3}" \ ++ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; ++ esac ++} ++ ++# sed scripts: ++my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' ++my_sed_long_arg='1s/^-[[^=]]*=//' ++ ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` ++ func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` ++} ++ ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` ++} ++ ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=`expr "$[@]"` ++} ++ ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` ++} ++ ++_LT_EOF ++esac ++ ++case $lt_shell_append in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$[1]+=\$[2]" ++} ++_LT_EOF ++ ;; ++ *) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$[1]=\$$[1]\$[2]" ++} ++ ++_LT_EOF ++ ;; ++ esac ++]) ++ ++# Helper functions for option handling. -*- Autoconf -*- ++# ++# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. ++# Written by Gary V. Vaughan, 2004 ++# ++# 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 ltoptions.m4 ++ ++# This is to help aclocal find these macros, as it can't see m4_define. ++AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) ++ ++ ++# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) ++# ------------------------------------------ ++m4_define([_LT_MANGLE_OPTION], ++[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) ++ ++ ++# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) ++# --------------------------------------- ++# Set option OPTION-NAME for macro MACRO-NAME, and if there is a ++# matching handler defined, dispatch to it. Other OPTION-NAMEs are ++# saved as a flag. ++m4_define([_LT_SET_OPTION], ++[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl ++m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), ++ _LT_MANGLE_DEFUN([$1], [$2]), ++ [m4_warning([Unknown $1 option `$2'])])[]dnl ++]) ++ ++ ++# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) ++# ------------------------------------------------------------ ++# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. ++m4_define([_LT_IF_OPTION], ++[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) ++ ++ ++# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) ++# ------------------------------------------------------- ++# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME ++# are set. ++m4_define([_LT_UNLESS_OPTIONS], ++[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), ++ [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), ++ [m4_define([$0_found])])])[]dnl ++m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ++])[]dnl ++]) ++ ++ ++# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) ++# ---------------------------------------- ++# OPTION-LIST is a space-separated list of Libtool options associated ++# with MACRO-NAME. If any OPTION has a matching handler declared with ++# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about ++# the unknown option and exit. ++m4_defun([_LT_SET_OPTIONS], ++[# Set options ++m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), ++ [_LT_SET_OPTION([$1], _LT_Option)]) ++ ++m4_if([$1],[LT_INIT],[ ++ dnl ++ dnl Simply set some default values (i.e off) if boolean options were not ++ dnl specified: ++ _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ++ ]) ++ _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ++ ]) ++ dnl ++ dnl If no reference was made to various pairs of opposing options, then ++ dnl we run the default mode handler for the pair. For example, if neither ++ dnl `shared' nor `disable-shared' was passed, we enable building of shared ++ dnl archives by default: ++ _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) ++ _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) ++ _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) ++ _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], ++ [_LT_ENABLE_FAST_INSTALL]) ++ ]) ++])# _LT_SET_OPTIONS ++ ++ ++ ++# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) ++# ----------------------------------------- ++m4_define([_LT_MANGLE_DEFUN], ++[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) ++ ++ ++# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) ++# ----------------------------------------------- ++m4_define([LT_OPTION_DEFINE], ++[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ++])# LT_OPTION_DEFINE ++ ++ ++# dlopen ++# ------ ++LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ++]) ++ ++AU_DEFUN([AC_LIBTOOL_DLOPEN], ++[_LT_SET_OPTION([LT_INIT], [dlopen]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you ++put the `dlopen' option into LT_INIT's first parameter.]) ++]) ++ ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) ++ ++ ++# win32-dll ++# --------- ++# Declare package support for building win32 dll's. ++LT_OPTION_DEFINE([LT_INIT], [win32-dll], ++[enable_win32_dll=yes ++ ++case $host in ++*-*-cygwin* | *-*-mingw* | *-*-pw32*) ++ AC_CHECK_TOOL(AS, as, false) ++ AC_CHECK_TOOL(DLLTOOL, dlltool, false) ++ AC_CHECK_TOOL(OBJDUMP, objdump, false) ++ ;; ++esac ++ ++test -z "$AS" && AS=as ++_LT_DECL([], [AS], [0], [Assembler program])dnl ++ ++test -z "$DLLTOOL" && DLLTOOL=dlltool ++_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl ++ ++test -z "$OBJDUMP" && OBJDUMP=objdump ++_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl ++])# win32-dll ++ ++AU_DEFUN([AC_LIBTOOL_WIN32_DLL], ++[AC_REQUIRE([AC_CANONICAL_HOST])dnl ++_LT_SET_OPTION([LT_INIT], [win32-dll]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you ++put the `win32-dll' option into LT_INIT's first parameter.]) ++]) ++ ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) ++ ++ ++# _LT_ENABLE_SHARED([DEFAULT]) ++# ---------------------------- ++# implement the --enable-shared flag, and supports the `shared' and ++# `disable-shared' LT_INIT options. ++# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. ++m4_define([_LT_ENABLE_SHARED], ++[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl ++AC_ARG_ENABLE([shared], ++ [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], ++ [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], ++ [p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_shared=yes ;; ++ no) enable_shared=no ;; ++ *) ++ enable_shared=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_shared=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac], ++ [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) ++ ++ _LT_DECL([build_libtool_libs], [enable_shared], [0], ++ [Whether or not to build shared libraries]) ++])# _LT_ENABLE_SHARED ++ ++LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) ++LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) ++ ++# Old names: ++AC_DEFUN([AC_ENABLE_SHARED], ++[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ++]) ++ ++AC_DEFUN([AC_DISABLE_SHARED], ++[_LT_SET_OPTION([LT_INIT], [disable-shared]) ++]) ++ ++AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) ++AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) ++ ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AM_ENABLE_SHARED], []) ++dnl AC_DEFUN([AM_DISABLE_SHARED], []) ++ ++ ++ ++# _LT_ENABLE_STATIC([DEFAULT]) ++# ---------------------------- ++# implement the --enable-static flag, and support the `static' and ++# `disable-static' LT_INIT options. ++# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. ++m4_define([_LT_ENABLE_STATIC], ++[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl ++AC_ARG_ENABLE([static], ++ [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], ++ [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], ++ [p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_static=yes ;; ++ no) enable_static=no ;; ++ *) ++ enable_static=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_static=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac], ++ [enable_static=]_LT_ENABLE_STATIC_DEFAULT) ++ ++ _LT_DECL([build_old_libs], [enable_static], [0], ++ [Whether or not to build static libraries]) ++])# _LT_ENABLE_STATIC ++ ++LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) ++LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) ++ ++# Old names: ++AC_DEFUN([AC_ENABLE_STATIC], ++[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ++]) ++ ++AC_DEFUN([AC_DISABLE_STATIC], ++[_LT_SET_OPTION([LT_INIT], [disable-static]) ++]) ++ ++AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) ++AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) ++ ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AM_ENABLE_STATIC], []) ++dnl AC_DEFUN([AM_DISABLE_STATIC], []) ++ ++ ++ ++# _LT_ENABLE_FAST_INSTALL([DEFAULT]) ++# ---------------------------------- ++# implement the --enable-fast-install flag, and support the `fast-install' ++# and `disable-fast-install' LT_INIT options. ++# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. ++m4_define([_LT_ENABLE_FAST_INSTALL], ++[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl ++AC_ARG_ENABLE([fast-install], ++ [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], ++ [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], ++ [p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_fast_install=yes ;; ++ no) enable_fast_install=no ;; ++ *) ++ enable_fast_install=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_fast_install=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac], ++ [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) ++ ++_LT_DECL([fast_install], [enable_fast_install], [0], ++ [Whether or not to optimize for fast installation])dnl ++])# _LT_ENABLE_FAST_INSTALL ++ ++LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) ++LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) ++ ++# Old names: ++AU_DEFUN([AC_ENABLE_FAST_INSTALL], ++[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you put ++the `fast-install' option into LT_INIT's first parameter.]) ++]) ++ ++AU_DEFUN([AC_DISABLE_FAST_INSTALL], ++[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you put ++the `disable-fast-install' option into LT_INIT's first parameter.]) ++]) ++ ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) ++dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) ++ ++ ++# _LT_WITH_PIC([MODE]) ++# -------------------- ++# implement the --with-pic flag, and support the `pic-only' and `no-pic' ++# LT_INIT options. ++# MODE is either `yes' or `no'. If omitted, it defaults to `both'. ++m4_define([_LT_WITH_PIC], ++[AC_ARG_WITH([pic], ++ [AS_HELP_STRING([--with-pic], ++ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], ++ [pic_mode="$withval"], ++ [pic_mode=default]) ++ ++test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) ++ ++_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ++])# _LT_WITH_PIC ++ ++LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) ++LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) ++ ++# Old name: ++AU_DEFUN([AC_LIBTOOL_PICMODE], ++[_LT_SET_OPTION([LT_INIT], [pic-only]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you ++put the `pic-only' option into LT_INIT's first parameter.]) ++]) ++ ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ++ ++ ++m4_define([_LTDL_MODE], []) ++LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], ++ [m4_define([_LTDL_MODE], [nonrecursive])]) ++LT_OPTION_DEFINE([LTDL_INIT], [recursive], ++ [m4_define([_LTDL_MODE], [recursive])]) ++LT_OPTION_DEFINE([LTDL_INIT], [subproject], ++ [m4_define([_LTDL_MODE], [subproject])]) ++ ++m4_define([_LTDL_TYPE], []) ++LT_OPTION_DEFINE([LTDL_INIT], [installable], ++ [m4_define([_LTDL_TYPE], [installable])]) ++LT_OPTION_DEFINE([LTDL_INIT], [convenience], ++ [m4_define([_LTDL_TYPE], [convenience])]) ++ ++# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- ++# ++# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. ++# Written by Gary V. Vaughan, 2004 ++# ++# 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 ltsugar.m4 ++ ++# This is to help aclocal find these macros, as it can't see m4_define. ++AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) ++ ++ ++# lt_join(SEP, ARG1, [ARG2...]) ++# ----------------------------- ++# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their ++# associated separator. ++# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier ++# versions in m4sugar had bugs. ++m4_define([lt_join], ++[m4_if([$#], [1], [], ++ [$#], [2], [[$2]], ++ [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) ++m4_define([_lt_join], ++[m4_if([$#$2], [2], [], ++ [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) ++ ++ ++# lt_car(LIST) ++# lt_cdr(LIST) ++# ------------ ++# Manipulate m4 lists. ++# These macros are necessary as long as will still need to support ++# Autoconf-2.59 which quotes differently. ++m4_define([lt_car], [[$1]]) ++m4_define([lt_cdr], ++[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], ++ [$#], 1, [], ++ [m4_dquote(m4_shift($@))])]) ++m4_define([lt_unquote], $1) ++ ++ ++# lt_append(MACRO-NAME, STRING, [SEPARATOR]) ++# ------------------------------------------ ++# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. ++# Note that neither SEPARATOR nor STRING are expanded; they are appended ++# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). ++# No SEPARATOR is output if MACRO-NAME was previously undefined (different ++# than defined and empty). ++# ++# This macro is needed until we can rely on Autoconf 2.62, since earlier ++# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. ++m4_define([lt_append], ++[m4_define([$1], ++ m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) ++ ++ ++ ++# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) ++# ---------------------------------------------------------- ++# Produce a SEP delimited list of all paired combinations of elements of ++# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list ++# has the form PREFIXmINFIXSUFFIXn. ++m4_define([lt_combine], ++[m4_if([$2], [], [], ++ [m4_if([$4], [], [], ++ [lt_join(m4_quote(m4_default([$1], [[, ]])), ++ lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_prefix, [$2], ++ [m4_foreach(_Lt_suffix, lt_car([m4_shiftn(3, $@)]), ++ [_Lt_prefix[]$3[]_Lt_suffix ])])))))])])dnl ++]) ++ ++ ++# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) ++# ----------------------------------------------------------------------- ++# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited ++# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. ++m4_define([lt_if_append_uniq], ++[m4_ifdef([$1], ++ [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], ++ [lt_append([$1], [$2], [$3])$4], ++ [$5])], ++ [lt_append([$1], [$2], [$3])$4])]) ++ ++ ++# lt_dict_add(DICT, KEY, VALUE) ++# ----------------------------- ++m4_define([lt_dict_add], ++[m4_define([$1($2)], [$3])]) ++ ++ ++# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) ++# -------------------------------------------- ++m4_define([lt_dict_add_subkey], ++[m4_define([$1($2:$3)], [$4])]) ++ ++ ++# lt_dict_fetch(DICT, KEY, [SUBKEY]) ++# ---------------------------------- ++m4_define([lt_dict_fetch], ++[m4_ifval([$3], ++ m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), ++ m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) ++ ++ ++# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) ++# ----------------------------------------------------------------- ++m4_define([lt_if_dict_fetch], ++[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], ++ [$5], ++ [$6])]) ++ ++ ++# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) ++# -------------------------------------------------------------- ++m4_define([lt_dict_filter], ++[m4_if([$5], [], [], ++ [lt_join(m4_quote(m4_default([$4], [[, ]])), ++ lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), ++ [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ++]) ++ ++# ltversion.m4 -- version numbers -*- Autoconf -*- ++# ++# Copyright (C) 2004 Free Software Foundation, Inc. ++# Written by Scott James Remnant, 2004 ++# ++# 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. ++ ++# Generated from ltversion.in. ++ ++# serial 2976 ltversion.m4 ++# This file is part of GNU Libtool ++ ++m4_define([LT_PACKAGE_VERSION], [2.2.4]) ++m4_define([LT_PACKAGE_REVISION], [1.2976]) ++ ++AC_DEFUN([LTVERSION_VERSION], ++[macro_version='2.2.4' ++macro_revision='1.2976' ++_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) ++_LT_DECL(, macro_revision, 0) ++]) ++ ++# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- ++# ++# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. ++# Written by Scott James Remnant, 2004. ++# ++# 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 lt~obsolete.m4 ++ ++# These exist entirely to fool aclocal when bootstrapping libtool. ++# ++# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) ++# which have later been changed to m4_define as they aren't part of the ++# exported API, or moved to Autoconf or Automake where they belong. ++# ++# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN ++# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us ++# using a macro with the same name in our local m4/libtool.m4 it'll ++# pull the old libtool.m4 in (it doesn't see our shiny new m4_define ++# and doesn't know about Autoconf macros at all.) ++# ++# So we provide this file, which has a silly filename so it's always ++# included after everything else. This provides aclocal with the ++# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything ++# because those macros already exist, or will be overwritten later. ++# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. ++# ++# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. ++# Yes, that means every name once taken will need to remain here until ++# we give up compatibility with versions before 1.7, at which point ++# we need to keep only those names which we still refer to. ++ ++# This is to help aclocal find these macros, as it can't see m4_define. ++AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) ++ ++m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) ++m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) ++m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) ++m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) ++m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) ++m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) ++m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) ++m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) ++m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) ++m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) ++m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) ++m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) ++m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) ++m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) ++m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) ++m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) ++m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) ++m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) ++m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) ++m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) ++m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) ++m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) ++m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) ++m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) ++m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) ++m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) ++m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) ++m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) ++m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) ++m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) ++m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) ++m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) ++m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) ++m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) ++m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) ++m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) ++m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) ++m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) ++m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) ++m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) ++m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) ++m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) ++m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) ++m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) ++m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) ++m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) ++m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) ++m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) ++m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) ++m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) ++m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) ++m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) ++m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) ++m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) ++m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) ++ ++# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -21,14 +7925,29 @@ + # ---------------------------- + # Automake X.Y traces this macro to ensure aclocal.m4 has been + # generated from the m4 files accompanying Automake X.Y. +-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) ++# (This private macro should not be called outside this file.) ++AC_DEFUN([AM_AUTOMAKE_VERSION], ++[am__api_version='1.10' ++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.10], [], ++ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ++]) ++ ++# _AM_AUTOCONF_VERSION(VERSION) ++# ----------------------------- ++# aclocal traces this macro to find the Autoconf version. ++# This is a private macro too. Using m4_define simplifies ++# the logic in aclocal, which can simply ignore this definition. ++m4_define([_AM_AUTOCONF_VERSION], []) + + # AM_SET_CURRENT_AUTOMAKE_VERSION + # ------------------------------- +-# Call AM_AUTOMAKE_VERSION so it can be traced. ++# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. + # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. + AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +- [AM_AUTOMAKE_VERSION([1.9.5])]) ++[AM_AUTOMAKE_VERSION([1.10])dnl ++_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)]) + + # AM_AUX_DIR_EXPAND -*- Autoconf -*- + +@@ -85,14 +8004,14 @@ + + # AM_CONDITIONAL -*- Autoconf -*- + +-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 ++# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 + # 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 7 ++# serial 8 + + # AM_CONDITIONAL(NAME, SHELL-CONDITION) + # ------------------------------------- +@@ -101,8 +8020,10 @@ + [AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +-AC_SUBST([$1_TRUE]) +-AC_SUBST([$1_FALSE]) ++AC_SUBST([$1_TRUE])dnl ++AC_SUBST([$1_FALSE])dnl ++_AM_SUBST_NOTMAKE([$1_TRUE])dnl ++_AM_SUBST_NOTMAKE([$1_FALSE])dnl + if $2; then + $1_TRUE= + $1_FALSE='#' +@@ -116,15 +8037,14 @@ + Usually this means the macro was only invoked conditionally.]]) + fi])]) + +- +-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 ++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + # 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 8 ++# serial 9 + + # 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, +@@ -152,6 +8072,7 @@ + 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=]) + +@@ -217,6 +8138,7 @@ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +@@ -269,7 +8191,8 @@ + AMDEPBACKSLASH='\' + fi + AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +-AC_SUBST([AMDEPBACKSLASH]) ++AC_SUBST([AMDEPBACKSLASH])dnl ++_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl + ]) + + # Generate code to set up dependency tracking. -*- Autoconf -*- +@@ -294,8 +8217,9 @@ + # 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. +- # So let's grep whole file. +- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue +@@ -354,8 +8278,8 @@ + + # Do all the work for Automake. -*- Autoconf -*- + +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +-# Free Software Foundation, Inc. ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ++# 2005, 2006 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -378,16 +8302,20 @@ + # 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.58])dnl ++[AC_PREREQ([2.60])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 + AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl +-# test to see if srcdir already configured +-if test "`cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) ++ fi + fi + + # test whether we have cygpath +@@ -407,6 +8335,9 @@ + 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_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 + +@@ -442,6 +8373,10 @@ + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + 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 + ]) + ]) + +@@ -477,7 +8412,7 @@ + # Define $install_sh. + AC_DEFUN([AM_PROG_INSTALL_SH], + [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +-install_sh=${install_sh-"$am_aux_dir/install-sh"} ++install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} + AC_SUBST(install_sh)]) + + # Copyright (C) 2003, 2005 Free Software Foundation, Inc. +@@ -555,14 +8490,14 @@ + + # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 ++# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 + # 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 ++# serial 5 + + # AM_MISSING_PROG(NAME, PROGRAM) + # ------------------------------ +@@ -578,6 +8513,7 @@ + # If it does, 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 + test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" + # Use eval to expand $SHELL + if eval "$MISSING --run true"; then +@@ -588,7 +8524,7 @@ + fi + ]) + +-# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ++# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -596,60 +8532,23 @@ + + # AM_PROG_MKDIR_P + # --------------- +-# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +-# +-# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +-# created by `make install' are always world readable, even if the +-# installer happens to have an overly restrictive umask (e.g. 077). +-# This was a mistake. There are at least two reasons why we must not +-# use `-m 0755': +-# - it causes special bits like SGID to be ignored, +-# - it may be too restrictive (some setups expect 775 directories). +-# +-# Do not use -m 0755 and let people choose whatever they expect by +-# setting umask. +-# +-# We cannot accept any implementation of `mkdir' that recognizes `-p'. +-# Some implementations (such as Solaris 8's) are not thread-safe: if a +-# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +-# concurrently, both version can detect that a/ is missing, but only +-# one can create it and the other will error out. Consequently we +-# restrict ourselves to GNU make (using the --version option ensures +-# this.) ++# Check for `mkdir -p'. + AC_DEFUN([AM_PROG_MKDIR_P], +-[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then +- # We used to keeping the `.' as first argument, in order to +- # allow $(mkdir_p) to be used without argument. As in +- # $(mkdir_p) $(somedir) +- # where $(somedir) is conditionally defined. However this is wrong +- # for two reasons: +- # 1. if the package is installed by a user who cannot write `.' +- # make install will fail, +- # 2. the above comment should most certainly read +- # $(mkdir_p) $(DESTDIR)$(somedir) +- # so it does not work when $(somedir) is undefined and +- # $(DESTDIR) is not. +- # To support the latter case, we have to write +- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), +- # so the `.' trick is pointless. +- mkdir_p='mkdir -p --' +-else +- # On NextStep and OpenStep, the `mkdir' command does not +- # recognize any option. It will interpret all options as +- # directories to create, and then abort because `.' already +- # exists. +- for d in ./-p ./--version; +- do +- test -d $d && rmdir $d +- done +- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. +- if test -f "$ac_aux_dir/mkinstalldirs"; then +- mkdir_p='$(mkinstalldirs)' +- else +- mkdir_p='$(install_sh) -d' +- fi +-fi +-AC_SUBST([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 -*- + +@@ -761,9 +8660,21 @@ + if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) + fi +-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + AC_SUBST([INSTALL_STRIP_PROGRAM])]) + ++# Copyright (C) 2006 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_SUBST_NOTMAKE(VARIABLE) ++# --------------------------- ++# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in. ++# This macro is traced by Automake. ++AC_DEFUN([_AM_SUBST_NOTMAKE]) ++ + # Check how to create a tarball. -*- Autoconf -*- + + # Copyright (C) 2004, 2005 Free Software Foundation, Inc. +diff -Nur LibVNCServer-0.9.1.orig/autom4te.cache/output.0 LibVNCServer-0.9.1/autom4te.cache/output.0 +--- LibVNCServer-0.9.1.orig/autom4te.cache/output.0 1969-12-31 21:00:00.000000000 -0300 ++++ LibVNCServer-0.9.1/autom4te.cache/output.0 2008-10-31 18:46:23.000000000 -0200 +@@ -0,0 +1,22643 @@ ++@%:@! /bin/sh ++@%:@ Guess values for system-dependent variables and create Makefiles. ++@%:@ Generated by GNU Autoconf 2.61 for LibVNCServer 0.9.1. ++@%:@ ++@%:@ Report bugs to . ++@%:@ ++@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++@%:@ 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ++@%:@ This configure script is free software; the Free Software Foundation ++@%:@ gives unlimited permission to copy, distribute and modify it. ++## --------------------- ## ++## M4sh Initialization. ## ++## --------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh ++fi ++ ++# Support unset when possible. ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ as_unset=unset ++else ++ as_unset=false ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ ++# Work around bugs in pre-3.0 UWIN ksh. ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++for as_var in \ ++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ ++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ ++ LC_TELEPHONE LC_TIME ++do ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then ++ eval $as_var=C; export $as_var ++ else ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ fi ++done ++ ++# Required to use basename. ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++ ++# Name of the executable. ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# CDPATH. ++$as_unset CDPATH ++ ++ ++if test "x$CONFIG_SHELL" = x; then ++ if (eval ":") 2>/dev/null; then ++ as_have_required=yes ++else ++ as_have_required=no ++fi ++ ++ if test $as_have_required = yes && (eval ": ++(as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0) || { (exit 1); exit 1; } ++ ++( ++ as_lineno_1=\$LINENO ++ as_lineno_2=\$LINENO ++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && ++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ++") 2> /dev/null; then ++ : ++else ++ as_candidate_shells= ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ case $as_dir in ++ /*) ++ for as_base in sh bash ksh sh5; do ++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base" ++ done;; ++ esac ++done ++IFS=$as_save_IFS ++ ++ ++ for as_shell in $as_candidate_shells $SHELL; do ++ # Try only shells that exist, to save several forks. ++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && ++ { ("$as_shell") 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++_ASEOF ++}; then ++ CONFIG_SHELL=$as_shell ++ as_have_required=yes ++ if { "$as_shell" 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++(as_func_return () { ++ (exit $1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = "$1" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test $exitcode = 0) || { (exit 1); exit 1; } ++ ++( ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } ++ ++_ASEOF ++}; then ++ break ++fi ++ ++fi ++ ++ done ++ ++ if test "x$CONFIG_SHELL" != x; then ++ for as_var in BASH_ENV ENV ++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ done ++ export CONFIG_SHELL ++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} ++fi ++ ++ ++ if test $as_have_required = no; then ++ echo This script requires a shell more modern than all the ++ echo shells that I found on your system. Please install a ++ echo modern shell, or manually run the script under such a ++ echo shell if you do have one. ++ { (exit 1); exit 1; } ++fi ++ ++ ++fi ++ ++fi ++ ++ ++ ++(eval "as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0") || { ++ echo No shell found that supports shell functions. ++ echo Please tell autoconf@gnu.org about your system, ++ echo including any error possibly output before this ++ echo message ++} ++ ++ ++ ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { ++ ++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO ++ # uniformly replaced by the line number. The first 'sed' inserts a ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. ++ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | ++ sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno ++ N ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ ++ t loop ++ s/-\n.*// ++ ' >$as_me.lineno && ++ chmod +x "$as_me.lineno" || ++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 ++ { (exit 1); exit 1; }; } ++ ++ # Don't try to exec as it changes $[0], causing all sort of problems ++ # (the dirname of $[0] is not the place where we might find the ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" ++ # Exit status is that of the last command. ++ exit ++} ++ ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi ++echo >conf$$.file ++if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -p' ++elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++else ++ as_ln_s='cp -p' ++fi ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null ++ ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p=: ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' ++fi ++as_executable_p=$as_test_x ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++ ++ ++ ++# Check that we are running under the correct shell. ++SHELL=${CONFIG_SHELL-/bin/sh} ++ ++case X$lt_ECHO in ++X*--fallback-echo) ++ # Remove one level of quotation (which was required for Make). ++ ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` ++ ;; ++esac ++ ++ECHO=${lt_ECHO-echo} ++if test "X$1" = X--no-reexec; then ++ # Discard the --no-reexec flag, and continue. ++ shift ++elif test "X$1" = X--fallback-echo; then ++ # Avoid inline document here, it may be left over ++ : ++elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then ++ # Yippee, $ECHO works! ++ : ++else ++ # Restart under the correct shell. ++ exec $SHELL "$0" --no-reexec ${1+"$@"} ++fi ++ ++if test "X$1" = X--fallback-echo; then ++ # used as fallback echo ++ shift ++ cat <<_LT_EOF ++$* ++_LT_EOF ++ exit 0 ++fi ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++if test -z "$lt_ECHO"; then ++ if test "X${echo_test_string+set}" != Xset; then ++ # find a string as large as possible, as long as the shell can cope with it ++ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do ++ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... ++ if { echo_test_string=`eval $cmd`; } 2>/dev/null && ++ { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null ++ then ++ break ++ fi ++ done ++ fi ++ ++ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ : ++ else ++ # The Solaris, AIX, and Digital Unix default echo programs unquote ++ # backslashes. This makes it impossible to quote backslashes using ++ # echo "$something" | sed 's/\\/\\\\/g' ++ # ++ # So, first we look for a working echo in the user's PATH. ++ ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for dir in $PATH /usr/ucb; do ++ IFS="$lt_save_ifs" ++ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && ++ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ ECHO="$dir/echo" ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ++ if test "X$ECHO" = Xecho; then ++ # We didn't find a better echo, so look for alternatives. ++ if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ # This shell has a builtin print -r that does the trick. ++ ECHO='print -r' ++ elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && ++ test "X$CONFIG_SHELL" != X/bin/ksh; then ++ # If we have ksh, try running configure again with it. ++ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} ++ export ORIGINAL_CONFIG_SHELL ++ CONFIG_SHELL=/bin/ksh ++ export CONFIG_SHELL ++ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} ++ else ++ # Try using printf. ++ ECHO='printf %s\n' ++ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ # Cool, printf works ++ : ++ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL ++ export CONFIG_SHELL ++ SHELL="$CONFIG_SHELL" ++ export SHELL ++ ECHO="$CONFIG_SHELL $0 --fallback-echo" ++ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ ECHO="$CONFIG_SHELL $0 --fallback-echo" ++ else ++ # maybe with a smaller string... ++ prev=: ++ ++ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do ++ if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null ++ then ++ break ++ fi ++ prev="$cmd" ++ done ++ ++ if test "$prev" != 'sed 50q "$0"'; then ++ echo_test_string=`eval $prev` ++ export echo_test_string ++ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} ++ else ++ # Oops. We lost completely, so just stick with echo. ++ ECHO=echo ++ fi ++ fi ++ fi ++ fi ++ fi ++fi ++ ++# Copy echo and quote the copy suitably for passing to libtool from ++# the Makefile, instead of quoting the original, which is used later. ++lt_ECHO=$ECHO ++if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ++ lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" ++fi ++ ++ ++ ++ ++exec 7<&0 &1 ++ ++# Name of the host. ++# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, ++# so uname gets run too. ++ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` ++ ++# ++# Initializations. ++# ++ac_default_prefix=/usr/local ++ac_clean_files= ++ac_config_libobj_dir=. ++LIB@&t@OBJS= ++cross_compiling=no ++subdirs= ++MFLAGS= ++MAKEFLAGS= ++SHELL=${CONFIG_SHELL-/bin/sh} ++ ++# Identity of this package. ++PACKAGE_NAME='LibVNCServer' ++PACKAGE_TARNAME='libvncserver' ++PACKAGE_VERSION='0.9.1' ++PACKAGE_STRING='LibVNCServer 0.9.1' ++PACKAGE_BUGREPORT='http://sourceforge.net/projects/libvncserver' ++ ++# Factoring default headers for most tests. ++ac_includes_default="\ ++#include ++#ifdef HAVE_SYS_TYPES_H ++# include ++#endif ++#ifdef HAVE_SYS_STAT_H ++# include ++#endif ++#ifdef STDC_HEADERS ++# include ++# include ++#else ++# ifdef HAVE_STDLIB_H ++# include ++# endif ++#endif ++#ifdef HAVE_STRING_H ++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H ++# include ++# endif ++# include ++#endif ++#ifdef HAVE_STRINGS_H ++# include ++#endif ++#ifdef HAVE_INTTYPES_H ++# include ++#endif ++#ifdef HAVE_STDINT_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H ++# include ++#endif" ++ ++ac_subst_vars='SHELL ++PATH_SEPARATOR ++PACKAGE_NAME ++PACKAGE_TARNAME ++PACKAGE_VERSION ++PACKAGE_STRING ++PACKAGE_BUGREPORT ++exec_prefix ++prefix ++program_transform_name ++bindir ++sbindir ++libexecdir ++datarootdir ++datadir ++sysconfdir ++sharedstatedir ++localstatedir ++includedir ++oldincludedir ++docdir ++infodir ++htmldir ++dvidir ++pdfdir ++psdir ++libdir ++localedir ++mandir ++DEFS ++ECHO_C ++ECHO_N ++ECHO_T ++LIBS ++build_alias ++host_alias ++target_alias ++INSTALL_PROGRAM ++INSTALL_SCRIPT ++INSTALL_DATA ++am__isrc ++CYGPATH_W ++PACKAGE ++VERSION ++ACLOCAL ++AUTOCONF ++AUTOMAKE ++AUTOHEADER ++MAKEINFO ++install_sh ++STRIP ++INSTALL_STRIP_PROGRAM ++mkdir_p ++AWK ++SET_MAKE ++am__leading_dot ++AMTAR ++am__tar ++am__untar ++CC ++CFLAGS ++LDFLAGS ++CPPFLAGS ++ac_ct_CC ++EXEEXT ++OBJEXT ++DEPDIR ++am__include ++am__quote ++AMDEP_TRUE ++AMDEP_FALSE ++AMDEPBACKSLASH ++CCDEPMODE ++am__fastdepCC_TRUE ++am__fastdepCC_FALSE ++LIBTOOL ++build ++build_cpu ++build_vendor ++build_os ++host ++host_cpu ++host_vendor ++host_os ++SED ++GREP ++EGREP ++FGREP ++LD ++DUMPBIN ++ac_ct_DUMPBIN ++NM ++LN_S ++AR ++RANLIB ++lt_ECHO ++DSYMUTIL ++NMEDIT ++LIPO ++OTOOL ++OTOOL64 ++CPP ++with_ffmpeg ++WITH_FFMPEG_TRUE ++WITH_FFMPEG_FALSE ++HAVE_MP3LAME_TRUE ++HAVE_MP3LAME_FALSE ++X_CFLAGS ++X_PRE_LIBS ++X_LIBS ++X_EXTRA_LIBS ++HAVE_X_TRUE ++HAVE_X_FALSE ++CRYPT_LIBS ++SSL_LIBS ++AVAHI_CFLAGS ++AVAHI_LIBS ++SYSTEM_LIBVNCSERVER_CFLAGS ++SYSTEM_LIBVNCSERVER_LIBS ++HAVE_SYSTEM_LIBVNCSERVER_TRUE ++HAVE_SYSTEM_LIBVNCSERVER_FALSE ++HAVE_LIBPTHREAD_TRUE ++HAVE_LIBPTHREAD_FALSE ++WITH_TIGHTVNC_FILETRANSFER_TRUE ++WITH_TIGHTVNC_FILETRANSFER_FALSE ++HAVE_LIBZ_TRUE ++HAVE_LIBZ_FALSE ++HAVE_LIBJPEG_TRUE ++HAVE_LIBJPEG_FALSE ++HAVE_LIBSDL_TRUE ++HAVE_LIBSDL_FALSE ++SDL_CFLAGS ++SDL_LIBS ++MINGW_TRUE ++MINGW_FALSE ++WSOCKLIB ++LIB@&t@OBJS ++CYGIPC_TRUE ++CYGIPC_FALSE ++LINUX_TRUE ++LINUX_FALSE ++OSX_TRUE ++OSX_FALSE ++HAVE_RPM_TRUE ++HAVE_RPM_FALSE ++RPMSOURCEDIR ++LTLIBOBJS' ++ac_subst_files='' ++ ac_precious_vars='build_alias ++host_alias ++target_alias ++CC ++CFLAGS ++LDFLAGS ++LIBS ++CPPFLAGS ++CPP' ++ ++ ++# Initialize some variables set by options. ++ac_init_help= ++ac_init_version=false ++# The variables have the same names as the options, with ++# dashes changed to underlines. ++cache_file=/dev/null ++exec_prefix=NONE ++no_create= ++no_recursion= ++prefix=NONE ++program_prefix=NONE ++program_suffix=NONE ++program_transform_name=s,x,x, ++silent= ++site= ++srcdir= ++verbose= ++x_includes=NONE ++x_libraries=NONE ++ ++# Installation directory options. ++# These are left unexpanded so users can "make install exec_prefix=/foo" ++# and all the variables that are supposed to be based on exec_prefix ++# by default will actually change. ++# Use braces instead of parens because sh, perl, etc. also accept them. ++# (The list follows the same order as the GNU Coding Standards.) ++bindir='${exec_prefix}/bin' ++sbindir='${exec_prefix}/sbin' ++libexecdir='${exec_prefix}/libexec' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' ++sysconfdir='${prefix}/etc' ++sharedstatedir='${prefix}/com' ++localstatedir='${prefix}/var' ++includedir='${prefix}/include' ++oldincludedir='/usr/include' ++docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' ++infodir='${datarootdir}/info' ++htmldir='${docdir}' ++dvidir='${docdir}' ++pdfdir='${docdir}' ++psdir='${docdir}' ++libdir='${exec_prefix}/lib' ++localedir='${datarootdir}/locale' ++mandir='${datarootdir}/man' ++ ++ac_prev= ++ac_dashdash= ++for ac_option ++do ++ # If the previous option needs an argument, assign it. ++ if test -n "$ac_prev"; then ++ eval $ac_prev=\$ac_option ++ ac_prev= ++ continue ++ fi ++ ++ case $ac_option in ++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; ++ *) ac_optarg=yes ;; ++ esac ++ ++ # Accept the important Cygnus configure options, so we can diagnose typos. ++ ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; ++ ++ -bindir | --bindir | --bindi | --bind | --bin | --bi) ++ ac_prev=bindir ;; ++ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) ++ bindir=$ac_optarg ;; ++ ++ -build | --build | --buil | --bui | --bu) ++ ac_prev=build_alias ;; ++ -build=* | --build=* | --buil=* | --bui=* | --bu=*) ++ build_alias=$ac_optarg ;; ++ ++ -cache-file | --cache-file | --cache-fil | --cache-fi \ ++ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ++ ac_prev=cache_file ;; ++ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ ++ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) ++ cache_file=$ac_optarg ;; ++ ++ --config-cache | -C) ++ cache_file=config.cache ;; ++ ++ -datadir | --datadir | --datadi | --datad) ++ ac_prev=datadir ;; ++ -datadir=* | --datadir=* | --datadi=* | --datad=*) ++ datadir=$ac_optarg ;; ++ ++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ ++ | --dataroo | --dataro | --datar) ++ ac_prev=datarootdir ;; ++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ ++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) ++ datarootdir=$ac_optarg ;; ++ ++ -disable-* | --disable-*) ++ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid feature name: $ac_feature" >&2 ++ { (exit 1); exit 1; }; } ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=no ;; ++ ++ -docdir | --docdir | --docdi | --doc | --do) ++ ac_prev=docdir ;; ++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) ++ docdir=$ac_optarg ;; ++ ++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ++ ac_prev=dvidir ;; ++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) ++ dvidir=$ac_optarg ;; ++ ++ -enable-* | --enable-*) ++ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid feature name: $ac_feature" >&2 ++ { (exit 1); exit 1; }; } ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=\$ac_optarg ;; ++ ++ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ ++ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ ++ | --exec | --exe | --ex) ++ ac_prev=exec_prefix ;; ++ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ ++ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ ++ | --exec=* | --exe=* | --ex=*) ++ exec_prefix=$ac_optarg ;; ++ ++ -gas | --gas | --ga | --g) ++ # Obsolete; use --with-gas. ++ with_gas=yes ;; ++ ++ -help | --help | --hel | --he | -h) ++ ac_init_help=long ;; ++ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ++ ac_init_help=recursive ;; ++ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ++ ac_init_help=short ;; ++ ++ -host | --host | --hos | --ho) ++ ac_prev=host_alias ;; ++ -host=* | --host=* | --hos=* | --ho=*) ++ host_alias=$ac_optarg ;; ++ ++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ++ ac_prev=htmldir ;; ++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ ++ | --ht=*) ++ htmldir=$ac_optarg ;; ++ ++ -includedir | --includedir | --includedi | --included | --include \ ++ | --includ | --inclu | --incl | --inc) ++ ac_prev=includedir ;; ++ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ ++ | --includ=* | --inclu=* | --incl=* | --inc=*) ++ includedir=$ac_optarg ;; ++ ++ -infodir | --infodir | --infodi | --infod | --info | --inf) ++ ac_prev=infodir ;; ++ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) ++ infodir=$ac_optarg ;; ++ ++ -libdir | --libdir | --libdi | --libd) ++ ac_prev=libdir ;; ++ -libdir=* | --libdir=* | --libdi=* | --libd=*) ++ libdir=$ac_optarg ;; ++ ++ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ ++ | --libexe | --libex | --libe) ++ ac_prev=libexecdir ;; ++ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ ++ | --libexe=* | --libex=* | --libe=*) ++ libexecdir=$ac_optarg ;; ++ ++ -localedir | --localedir | --localedi | --localed | --locale) ++ ac_prev=localedir ;; ++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) ++ localedir=$ac_optarg ;; ++ ++ -localstatedir | --localstatedir | --localstatedi | --localstated \ ++ | --localstate | --localstat | --localsta | --localst | --locals) ++ ac_prev=localstatedir ;; ++ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) ++ localstatedir=$ac_optarg ;; ++ ++ -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ++ ac_prev=mandir ;; ++ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) ++ mandir=$ac_optarg ;; ++ ++ -nfp | --nfp | --nf) ++ # Obsolete; use --without-fp. ++ with_fp=no ;; ++ ++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \ ++ | --no-cr | --no-c | -n) ++ no_create=yes ;; ++ ++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \ ++ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ++ no_recursion=yes ;; ++ ++ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ ++ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ ++ | --oldin | --oldi | --old | --ol | --o) ++ ac_prev=oldincludedir ;; ++ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ ++ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ ++ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) ++ oldincludedir=$ac_optarg ;; ++ ++ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ++ ac_prev=prefix ;; ++ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ++ prefix=$ac_optarg ;; ++ ++ -program-prefix | --program-prefix | --program-prefi | --program-pref \ ++ | --program-pre | --program-pr | --program-p) ++ ac_prev=program_prefix ;; ++ -program-prefix=* | --program-prefix=* | --program-prefi=* \ ++ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) ++ program_prefix=$ac_optarg ;; ++ ++ -program-suffix | --program-suffix | --program-suffi | --program-suff \ ++ | --program-suf | --program-su | --program-s) ++ ac_prev=program_suffix ;; ++ -program-suffix=* | --program-suffix=* | --program-suffi=* \ ++ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) ++ program_suffix=$ac_optarg ;; ++ ++ -program-transform-name | --program-transform-name \ ++ | --program-transform-nam | --program-transform-na \ ++ | --program-transform-n | --program-transform- \ ++ | --program-transform | --program-transfor \ ++ | --program-transfo | --program-transf \ ++ | --program-trans | --program-tran \ ++ | --progr-tra | --program-tr | --program-t) ++ ac_prev=program_transform_name ;; ++ -program-transform-name=* | --program-transform-name=* \ ++ | --program-transform-nam=* | --program-transform-na=* \ ++ | --program-transform-n=* | --program-transform-=* \ ++ | --program-transform=* | --program-transfor=* \ ++ | --program-transfo=* | --program-transf=* \ ++ | --program-trans=* | --program-tran=* \ ++ | --progr-tra=* | --program-tr=* | --program-t=*) ++ program_transform_name=$ac_optarg ;; ++ ++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ++ ac_prev=pdfdir ;; ++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) ++ pdfdir=$ac_optarg ;; ++ ++ -psdir | --psdir | --psdi | --psd | --ps) ++ ac_prev=psdir ;; ++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) ++ psdir=$ac_optarg ;; ++ ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil) ++ silent=yes ;; ++ ++ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ++ ac_prev=sbindir ;; ++ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ ++ | --sbi=* | --sb=*) ++ sbindir=$ac_optarg ;; ++ ++ -sharedstatedir | --sharedstatedir | --sharedstatedi \ ++ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ ++ | --sharedst | --shareds | --shared | --share | --shar \ ++ | --sha | --sh) ++ ac_prev=sharedstatedir ;; ++ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ ++ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ ++ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ ++ | --sha=* | --sh=*) ++ sharedstatedir=$ac_optarg ;; ++ ++ -site | --site | --sit) ++ ac_prev=site ;; ++ -site=* | --site=* | --sit=*) ++ site=$ac_optarg ;; ++ ++ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ++ ac_prev=srcdir ;; ++ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ++ srcdir=$ac_optarg ;; ++ ++ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ ++ | --syscon | --sysco | --sysc | --sys | --sy) ++ ac_prev=sysconfdir ;; ++ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ ++ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) ++ sysconfdir=$ac_optarg ;; ++ ++ -target | --target | --targe | --targ | --tar | --ta | --t) ++ ac_prev=target_alias ;; ++ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) ++ target_alias=$ac_optarg ;; ++ ++ -v | -verbose | --verbose | --verbos | --verbo | --verb) ++ verbose=yes ;; ++ ++ -version | --version | --versio | --versi | --vers | -V) ++ ac_init_version=: ;; ++ ++ -with-* | --with-*) ++ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid package name: $ac_package" >&2 ++ { (exit 1); exit 1; }; } ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=\$ac_optarg ;; ++ ++ -without-* | --without-*) ++ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid package name: $ac_package" >&2 ++ { (exit 1); exit 1; }; } ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=no ;; ++ ++ --x) ++ # Obsolete; use --with-x. ++ with_x=yes ;; ++ ++ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ ++ | --x-incl | --x-inc | --x-in | --x-i) ++ ac_prev=x_includes ;; ++ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ ++ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) ++ x_includes=$ac_optarg ;; ++ ++ -x-libraries | --x-libraries | --x-librarie | --x-librari \ ++ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ++ ac_prev=x_libraries ;; ++ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ ++ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) ++ x_libraries=$ac_optarg ;; ++ ++ -*) { echo "$as_me: error: unrecognized option: $ac_option ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; } ++ ;; ++ ++ *=*) ++ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 ++ { (exit 1); exit 1; }; } ++ eval $ac_envvar=\$ac_optarg ++ export $ac_envvar ;; ++ ++ *) ++ # FIXME: should be removed in autoconf 3.0. ++ echo "$as_me: WARNING: you should use --build, --host, --target" >&2 ++ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ echo "$as_me: WARNING: invalid host type: $ac_option" >&2 ++ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ++ ;; ++ ++ esac ++done ++ ++if test -n "$ac_prev"; then ++ ac_option=--`echo $ac_prev | sed 's/_/-/g'` ++ { echo "$as_me: error: missing argument to $ac_option" >&2 ++ { (exit 1); exit 1; }; } ++fi ++ ++# Be sure to have absolute directory names. ++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 ++do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; ++ esac ++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 ++ { (exit 1); exit 1; }; } ++done ++ ++# There might be people who depend on the old broken behavior: `$host' ++# used to hold the argument of --host etc. ++# FIXME: To remove some day. ++build=$build_alias ++host=$host_alias ++target=$target_alias ++ ++# FIXME: To remove some day. ++if test "x$host_alias" != x; then ++ if test "x$build_alias" = x; then ++ cross_compiling=maybe ++ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. ++ If a cross compiler is detected then cross compile mode will be used." >&2 ++ elif test "x$build_alias" != "x$host_alias"; then ++ cross_compiling=yes ++ fi ++fi ++ ++ac_tool_prefix= ++test -n "$host_alias" && ac_tool_prefix=$host_alias- ++ ++test "$silent" = yes && exec 6>/dev/null ++ ++ ++ac_pwd=`pwd` && test -n "$ac_pwd" && ++ac_ls_di=`ls -di .` && ++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || ++ { echo "$as_me: error: Working directory cannot be determined" >&2 ++ { (exit 1); exit 1; }; } ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ { echo "$as_me: error: pwd does not report name of working directory" >&2 ++ { (exit 1); exit 1; }; } ++ ++ ++# Find the source files, if location was not specified. ++if test -z "$srcdir"; then ++ ac_srcdir_defaulted=yes ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$0" || ++$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$0" : 'X\(//\)[^/]' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$0" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ srcdir=$ac_confdir ++ if test ! -r "$srcdir/$ac_unique_file"; then ++ srcdir=.. ++ fi ++else ++ ac_srcdir_defaulted=no ++fi ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 ++ { (exit 1); exit 1; }; } ++fi ++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ++ac_abs_confdir=`( ++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 ++ { (exit 1); exit 1; }; } ++ pwd)` ++# When building in place, set srcdir=. ++if test "$ac_abs_confdir" = "$ac_pwd"; then ++ srcdir=. ++fi ++# Remove unnecessary trailing slashes from srcdir. ++# Double slashes in file names in object file debugging info ++# mess up M-x gdb in Emacs. ++case $srcdir in ++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; ++esac ++for ac_var in $ac_precious_vars; do ++ eval ac_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_env_${ac_var}_value=\$${ac_var} ++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_cv_env_${ac_var}_value=\$${ac_var} ++done ++ ++# ++# Report the --help message. ++# ++if test "$ac_init_help" = "long"; then ++ # 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 LibVNCServer 0.9.1 to adapt to many kinds of systems. ++ ++Usage: $0 [OPTION]... [VAR=VALUE]... ++ ++To assign environment variables (e.g., CC, CFLAGS...), specify them as ++VAR=VALUE. See below for descriptions of some of the useful variables. ++ ++Defaults for the options are specified in brackets. ++ ++Configuration: ++ -h, --help display this help and exit ++ --help=short display options specific to this package ++ --help=recursive display the short help of all the included packages ++ -V, --version display version information and exit ++ -q, --quiet, --silent do not print \`checking...' messages ++ --cache-file=FILE cache test results in FILE [disabled] ++ -C, --config-cache alias for \`--cache-file=config.cache' ++ -n, --no-create do not create output files ++ --srcdir=DIR find the sources in DIR [configure dir or \`..'] ++ ++Installation directories: ++ --prefix=PREFIX install architecture-independent files in PREFIX ++ [$ac_default_prefix] ++ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ++ [PREFIX] ++ ++By default, \`make install' will install all the files in ++\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify ++an installation prefix other than \`$ac_default_prefix' using \`--prefix', ++for instance \`--prefix=\$HOME'. ++ ++For better control, use the options below. ++ ++Fine tuning of the installation directories: ++ --bindir=DIR user executables [EPREFIX/bin] ++ --sbindir=DIR system admin executables [EPREFIX/sbin] ++ --libexecdir=DIR program executables [EPREFIX/libexec] ++ --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] ++ --libdir=DIR object code libraries [EPREFIX/lib] ++ --includedir=DIR C header files [PREFIX/include] ++ --oldincludedir=DIR C header files for non-gcc [/usr/include] ++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] ++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR] ++ --infodir=DIR info documentation [DATAROOTDIR/info] ++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale] ++ --mandir=DIR man documentation [DATAROOTDIR/man] ++ --docdir=DIR documentation root @<:@DATAROOTDIR/doc/libvncserver@:>@ ++ --htmldir=DIR html documentation [DOCDIR] ++ --dvidir=DIR dvi documentation [DOCDIR] ++ --pdfdir=DIR pdf documentation [DOCDIR] ++ --psdir=DIR ps documentation [DOCDIR] ++_ACEOF ++ ++ cat <<\_ACEOF ++ ++Program names: ++ --program-prefix=PREFIX prepend PREFIX to installed program names ++ --program-suffix=SUFFIX append SUFFIX to installed program names ++ --program-transform-name=PROGRAM run sed PROGRAM on installed program names ++ ++X features: ++ --x-includes=DIR X include files are in DIR ++ --x-libraries=DIR X library files are in DIR ++ ++System types: ++ --build=BUILD configure for building on BUILD [guessed] ++ --host=HOST cross-compile to build programs to run on HOST [BUILD] ++_ACEOF ++fi ++ ++if test -n "$ac_init_help"; then ++ case $ac_init_help in ++ short | recursive ) echo "Configuration of LibVNCServer 0.9.1:";; ++ esac ++ cat <<\_ACEOF ++ ++Optional Features: ++ --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-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ ++ --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ ++ --enable-fast-install@<:@=PKGS@:>@ ++ optimize for fast installation @<:@default=yes@:>@ ++ --disable-libtool-lock avoid locking (might break parallel builds) ++ ++Optional Packages: ++ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] ++ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ++ --with-pic try to use only PIC/non-PIC objects @<:@default=use ++ both@:>@ ++ --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ ++ --without-filetransfer disable TightVNC file transfer protocol ++ --without-24bpp disable 24 bpp framebuffers ++ --with-ffmpeg=dir set ffmpeg home directory ++ --with-x use the X Window System ++ --with-system-libvncserver use installed libvncserver for x11vnc ++ --with-system-libvncserver=DIR use libvncserver installed in DIR for x11vnc ++ --with-x11vnc configure for building the x11vnc subdir (if present) ++ you will need to cd to x11vnc and run 'make' etc. ++ --without-xkeyboard disable xkeyboard extension support ++ --without-xinerama disable xinerama extension support ++ --without-xrandr disable xrandr extension support ++ --without-xfixes disable xfixes extension support ++ --without-xdamage disable xdamage extension support ++ --without-xtrap disable xtrap extension support ++ --without-xrecord disable xrecord extension support ++ --without-fbpm disable fbpm extension support ++ --without-dpms disable dpms extension support ++ --without-v4l disable video4linux support ++ --without-fbdev disable linux fb device support ++ --without-uinput disable linux uinput device support ++ --without-macosx-native disable MacOS X native display support ++ --without-crypt disable support for libcrypt ++ --without-crypto disable support for openssl libcrypto ++ --without-ssl disable support for openssl libssl ++ --without-avahi disable support for Avahi/mDNS ++ --with-avahi=DIR use avahi include/library files in DIR ++ --without-jpeg disable support for jpeg ++ --with-jpeg=DIR use jpeg include/library files in DIR ++ --without-libz disable support for deflate ++ --without-zlib disable support for deflate ++ --with-zlib=DIR use zlib include/library files in DIR ++ --without-pthread disable support for libpthread ++ ++Some influential environment variables: ++ CC C compiler command ++ CFLAGS C compiler flags ++ LDFLAGS linker flags, e.g. -L if you have libraries in a ++ nonstandard directory ++ LIBS libraries to pass to the linker, e.g. -l ++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if ++ you have headers in a nonstandard directory ++ CPP C preprocessor ++ ++Use these variables to override the choices made by `configure' or to help ++it to find libraries and programs with nonstandard names/locations. ++ ++Report bugs to . ++_ACEOF ++ac_status=$? ++fi ++ ++if test "$ac_init_help" = "recursive"; then ++ # If there are subdirs, report their specific --help. ++ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue ++ test -d "$ac_dir" || continue ++ ac_builddir=. ++ ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ cd "$ac_dir" || { ac_status=$?; continue; } ++ # Check for guested configure. ++ if test -f "$ac_srcdir/configure.gnu"; then ++ echo && ++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive ++ elif test -f "$ac_srcdir/configure"; then ++ echo && ++ $SHELL "$ac_srcdir/configure" --help=recursive ++ else ++ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } ++ done ++fi ++ ++test -n "$ac_init_help" && exit $ac_status ++if $ac_init_version; then ++ cat <<\_ACEOF ++LibVNCServer configure 0.9.1 ++generated by GNU Autoconf 2.61 ++ ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ++This configure script is free software; the Free Software Foundation ++gives unlimited permission to copy, distribute and modify it. ++_ACEOF ++ exit ++fi ++cat >config.log <<_ACEOF ++This file contains any messages produced by compilers while ++running configure, to aid debugging if configure makes a mistake. ++ ++It was created by LibVNCServer $as_me 0.9.1, which was ++generated by GNU Autoconf 2.61. Invocation command line was ++ ++ $ $0 $@ ++ ++_ACEOF ++exec 5>>config.log ++{ ++cat <<_ASUNAME ++@%:@@%:@ --------- @%:@@%:@ ++@%:@@%:@ Platform. @%:@@%:@ ++@%:@@%:@ --------- @%:@@%:@ ++ ++hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` ++uname -m = `(uname -m) 2>/dev/null || echo unknown` ++uname -r = `(uname -r) 2>/dev/null || echo unknown` ++uname -s = `(uname -s) 2>/dev/null || echo unknown` ++uname -v = `(uname -v) 2>/dev/null || echo unknown` ++ ++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` ++/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` ++ ++/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` ++/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` ++/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` ++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` ++/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` ++/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` ++/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` ++ ++_ASUNAME ++ ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ echo "PATH: $as_dir" ++done ++IFS=$as_save_IFS ++ ++} >&5 ++ ++cat >&5 <<_ACEOF ++ ++ ++@%:@@%:@ ----------- @%:@@%:@ ++@%:@@%:@ Core tests. @%:@@%:@ ++@%:@@%:@ ----------- @%:@@%:@ ++ ++_ACEOF ++ ++ ++# Keep a trace of the command line. ++# Strip out --no-create and --no-recursion so they do not pile up. ++# Strip out --silent because we don't want to record it for future runs. ++# Also quote any args containing shell meta-characters. ++# Make two passes to allow for proper duplicate-argument suppression. ++ac_configure_args= ++ac_configure_args0= ++ac_configure_args1= ++ac_must_keep_next=false ++for ac_pass in 1 2 ++do ++ for ac_arg ++ do ++ case $ac_arg in ++ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil) ++ continue ;; ++ *\'*) ++ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ esac ++ case $ac_pass in ++ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; ++ 2) ++ ac_configure_args1="$ac_configure_args1 '$ac_arg'" ++ if test $ac_must_keep_next = true; then ++ ac_must_keep_next=false # Got value, back to normal. ++ else ++ case $ac_arg in ++ *=* | --config-cache | -C | -disable-* | --disable-* \ ++ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ++ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ++ | -with-* | --with-* | -without-* | --without-* | --x) ++ case "$ac_configure_args0 " in ++ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ++ esac ++ ;; ++ -* ) ac_must_keep_next=true ;; ++ esac ++ fi ++ ac_configure_args="$ac_configure_args '$ac_arg'" ++ ;; ++ esac ++ done ++done ++$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } ++$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } ++ ++# When interrupted or exit'd, cleanup temporary files, and complete ++# config.log. We remove comments because anyway the quotes in there ++# would cause problems or look ugly. ++# WARNING: Use '\'' to represent an apostrophe within the trap. ++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. ++trap 'exit_status=$? ++ # Save into config.log some information that might help in debugging. ++ { ++ echo ++ ++ cat <<\_ASBOX ++@%:@@%:@ ---------------- @%:@@%:@ ++@%:@@%:@ Cache variables. @%:@@%:@ ++@%:@@%:@ ---------------- @%:@@%:@ ++_ASBOX ++ echo ++ # The following way of writing the cache mishandles newlines in values, ++( ++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ (set) 2>&1 | ++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) ++ sed -n \ ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( ++ *) ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ++ ;; ++ esac | ++ sort ++) ++ echo ++ ++ cat <<\_ASBOX ++@%:@@%:@ ----------------- @%:@@%:@ ++@%:@@%:@ Output variables. @%:@@%:@ ++@%:@@%:@ ----------------- @%:@@%:@ ++_ASBOX ++ echo ++ for ac_var in $ac_subst_vars ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ ++ if test -n "$ac_subst_files"; then ++ cat <<\_ASBOX ++@%:@@%:@ ------------------- @%:@@%:@ ++@%:@@%:@ File substitutions. @%:@@%:@ ++@%:@@%:@ ------------------- @%:@@%:@ ++_ASBOX ++ echo ++ for ac_var in $ac_subst_files ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ fi ++ ++ if test -s confdefs.h; then ++ cat <<\_ASBOX ++@%:@@%:@ ----------- @%:@@%:@ ++@%:@@%:@ confdefs.h. @%:@@%:@ ++@%:@@%:@ ----------- @%:@@%:@ ++_ASBOX ++ echo ++ cat confdefs.h ++ echo ++ fi ++ test "$ac_signal" != 0 && ++ echo "$as_me: caught signal $ac_signal" ++ echo "$as_me: exit $exit_status" ++ } >&5 ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && ++ exit $exit_status ++' 0 ++for ac_signal in 1 2 13 15; do ++ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal ++done ++ac_signal=0 ++ ++# confdefs.h avoids OS command line length limits that DEFS can exceed. ++rm -f -r conftest* confdefs.h ++ ++# Predefined preprocessor variables. ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define PACKAGE_NAME "$PACKAGE_NAME" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define PACKAGE_STRING "$PACKAGE_STRING" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" ++_ACEOF ++ ++ ++# Let the site file select an alternate cache file if it wants to. ++# Prefer explicitly selected file to automatically selected ones. ++if test -n "$CONFIG_SITE"; then ++ set x $CONFIG_SITE ++elif test "x$prefix" != xNONE; then ++ set x "$prefix/share/config.site" "$prefix/etc/config.site" ++else ++ set x "$ac_default_prefix/share/config.site" \ ++ "$ac_default_prefix/etc/config.site" ++fi ++shift ++for ac_site_file ++do ++ if test -r "$ac_site_file"; then ++ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 ++echo "$as_me: loading site script $ac_site_file" >&6;} ++ sed 's/^/| /' "$ac_site_file" >&5 ++ . "$ac_site_file" ++ fi ++done ++ ++if test -r "$cache_file"; then ++ # Some versions of bash will fail to source /dev/null (special ++ # files actually), so we avoid doing that. ++ if test -f "$cache_file"; then ++ { echo "$as_me:$LINENO: loading cache $cache_file" >&5 ++echo "$as_me: loading cache $cache_file" >&6;} ++ case $cache_file in ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; ++ esac ++ fi ++else ++ { echo "$as_me:$LINENO: creating cache $cache_file" >&5 ++echo "$as_me: creating cache $cache_file" >&6;} ++ >$cache_file ++fi ++ ++# Check that the precious variables saved in the cache have kept the same ++# value. ++ac_cache_corrupted=false ++for ac_var in $ac_precious_vars; do ++ eval ac_old_set=\$ac_cv_env_${ac_var}_set ++ eval ac_new_set=\$ac_env_${ac_var}_set ++ eval ac_old_val=\$ac_cv_env_${ac_var}_value ++ eval ac_new_val=\$ac_env_${ac_var}_value ++ case $ac_old_set,$ac_new_set in ++ set,) ++ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 ++echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ++ ac_cache_corrupted=: ;; ++ ,set) ++ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 ++echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ++ ac_cache_corrupted=: ;; ++ ,);; ++ *) ++ if test "x$ac_old_val" != "x$ac_new_val"; then ++ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 ++echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ++ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 ++echo "$as_me: former value: $ac_old_val" >&2;} ++ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 ++echo "$as_me: current value: $ac_new_val" >&2;} ++ ac_cache_corrupted=: ++ fi;; ++ esac ++ # Pass precious variables to config.status. ++ if test "$ac_new_set" = set; then ++ case $ac_new_val in ++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *) ac_arg=$ac_var=$ac_new_val ;; ++ esac ++ case " $ac_configure_args " in ++ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. ++ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; ++ esac ++ fi ++done ++if $ac_cache_corrupted; then ++ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 ++echo "$as_me: error: changes in the environment can compromise the build" >&2;} ++ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 ++echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} ++ { (exit 1); exit 1; }; } ++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 ++ ++ ++am__api_version='1.10' ++ ++ac_aux_dir= ++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do ++ if test -f "$ac_dir/install-sh"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/install-sh -c" ++ break ++ elif test -f "$ac_dir/install.sh"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/install.sh -c" ++ break ++ elif test -f "$ac_dir/shtool"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/shtool install -c" ++ break ++ fi ++done ++if test -z "$ac_aux_dir"; then ++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 ++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++# These three variables are undocumented and unsupported, ++# and are intended to be withdrawn in a future Autoconf release. ++# They can cause serious problems if a builder's source tree is in a directory ++# whose full name contains unusual characters. ++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ++ ++ ++# Find a good install program. We prefer a C program (faster), ++# so one script is as good as another. But avoid the broken or ++# incompatible versions: ++# SysV /etc/install, /usr/sbin/install ++# SunOS /usr/etc/install ++# IRIX /sbin/install ++# AIX /bin/install ++# AmigaOS /C/install, which installs bootblocks on floppy discs ++# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag ++# AFS /usr/afsws/bin/install, which mishandles nonexistent args ++# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" ++# OS/2's system install, which has a completely different semantic ++# ./install, which can be erroneously created by make from ./install.sh. ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } ++if test -z "$INSTALL"; then ++if test "${ac_cv_path_install+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ # Account for people who put trailing slashes in PATH elements. ++case $as_dir/ in ++ ./ | .// | /cC/* | \ ++ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ++ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ ++ /usr/ucb/* ) ;; ++ *) ++ # OSF1 and SCO ODT 3.0 have their own names for install. ++ # Don't use installbsd from OSF since it installs stuff as root ++ # by default. ++ for ac_prog in ginstall scoinst install; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then ++ if test $ac_prog = install && ++ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ # AIX install. It has an incompatible calling convention. ++ : ++ elif test $ac_prog = install && ++ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ # program-specific install script used by HP pwplus--don't use. ++ : ++ else ++ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" ++ break 3 ++ fi ++ fi ++ done ++ done ++ ;; ++esac ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ if test "${ac_cv_path_install+set}" = set; then ++ INSTALL=$ac_cv_path_install ++ else ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for INSTALL within a source directory, because that will ++ # break other packages using the cache if that directory is ++ # removed, or if the value is a relative name. ++ INSTALL=$ac_install_sh ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } ++ ++# Use test -z because SunOS4 sh mishandles braces in ${var-val}. ++# It thinks the first close brace ends the variable substitution. ++test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' ++ ++test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' ++ ++test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ++ ++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 ++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } ++# Just in case ++sleep 1 ++echo timestamp > conftest.file ++# 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". ++ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken ++alias in your environment" >&5 ++echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken ++alias in your environment" >&2;} ++ { (exit 1); exit 1; }; } ++ fi ++ ++ test "$2" = conftest.file ++ ) ++then ++ # Ok. ++ : ++else ++ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! ++Check your system clock" >&5 ++echo "$as_me: error: newly created file is older than distributed files! ++Check your system clock" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++test "$program_prefix" != NONE && ++ program_transform_name="s&^&$program_prefix&;$program_transform_name" ++# Use a double $ so make ignores it. ++test "$program_suffix" != NONE && ++ program_transform_name="s&\$&$program_suffix&;$program_transform_name" ++# Double any \ or $. echo might interpret backslashes. ++# By default was `s,x,x', remove it if useless. ++cat <<\_ACEOF >conftest.sed ++s/[\\$]/&&/g;s/;s,x,x,$// ++_ACEOF ++program_transform_name=`echo $program_transform_name | sed -f conftest.sed` ++rm -f conftest.sed ++ ++# expand $ac_aux_dir to an absolute path ++am_aux_dir=`cd $ac_aux_dir && pwd` ++ ++test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" ++# Use eval to expand $SHELL ++if eval "$MISSING --run true"; then ++ am_missing_run="$MISSING --run " ++else ++ am_missing_run= ++ { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 ++echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} ++fi ++ ++{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 ++echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } ++if test -z "$MKDIR_P"; then ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in mkdir gmkdir; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue ++ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( ++ 'mkdir (GNU coreutils) '* | \ ++ 'mkdir (coreutils) '* | \ ++ 'mkdir (fileutils) '4.1*) ++ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext ++ break 3;; ++ esac ++ done ++ done ++done ++IFS=$as_save_IFS ++ ++fi ++ ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ MKDIR_P="$ac_cv_path_mkdir -p" ++ else ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for MKDIR_P within a source directory, because that will ++ # break other packages using the cache if that directory is ++ # removed, or if the value is a relative name. ++ test -d ./--version && rmdir ./--version ++ MKDIR_P="$ac_install_sh -d" ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 ++echo "${ECHO_T}$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. ++set dummy $ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_AWK+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$AWK"; then ++ ac_cv_prog_AWK="$AWK" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_AWK="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++AWK=$ac_cv_prog_AWK ++if test -n "$AWK"; then ++ { echo "$as_me:$LINENO: result: $AWK" >&5 ++echo "${ECHO_T}$AWK" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ test -n "$AWK" && break ++done ++ ++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } ++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh ++all: ++ @echo '@@@%%%=$(MAKE)=@@@%%%' ++_ACEOF ++# GNU make sometimes prints "make[1]: Entering...", which would confuse us. ++case `${MAKE-make} -f conftest.make 2>/dev/null` in ++ *@@@%%%=?*=@@@%%%*) ++ eval ac_cv_prog_make_${ac_make}_set=yes;; ++ *) ++ eval ac_cv_prog_make_${ac_make}_set=no;; ++esac ++rm -f conftest.make ++fi ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ SET_MAKE= ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ SET_MAKE="MAKE=${MAKE-make}" ++fi ++ ++rm -rf .tst 2>/dev/null ++mkdir .tst 2>/dev/null ++if test -d .tst; then ++ am__leading_dot=. ++else ++ am__leading_dot=_ ++fi ++rmdir .tst 2>/dev/null ++ ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ am__isrc=' -I$(srcdir)' ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 ++echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} ++ { (exit 1); exit 1; }; } ++ fi ++fi ++ ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' ++ else ++ CYGPATH_W=echo ++ fi ++fi ++ ++ ++# Define the identity of the package. ++ PACKAGE=LibVNCServer ++ VERSION=0.9.1 ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define PACKAGE "$PACKAGE" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define VERSION "$VERSION" ++_ACEOF ++ ++# Some tools Automake needs. ++ ++ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} ++ ++ ++AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} ++ ++ ++AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} ++ ++ ++AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} ++ ++ ++MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} ++ ++install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} ++ ++# 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. ++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. ++set dummy ${ac_tool_prefix}strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$STRIP"; then ++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++STRIP=$ac_cv_prog_STRIP ++if test -n "$STRIP"; then ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_STRIP"; then ++ ac_ct_STRIP=$STRIP ++ # Extract the first word of "strip", so it can be a program name with args. ++set dummy strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_STRIP"; then ++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_STRIP="strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ++if test -n "$ac_ct_STRIP"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi ++else ++ STRIP="$ac_cv_prog_STRIP" ++fi ++ ++fi ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" ++ ++# We need awk for the "check" target. The system "awk" is bad on ++# some platforms. ++# Always define AMTAR for backward compatibility. ++ ++AMTAR=${AMTAR-"${am_missing_run}tar"} ++ ++am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ++ ++ ++ ++ ++ ++ac_config_headers="$ac_config_headers rfbconfig.h" ++ ++ac_config_headers="$ac_config_headers " ++ ++ ++ac_config_commands="$ac_config_commands rfb/rfbconfig.h" ++ ++ ++# Checks for programs. ++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 ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. ++set dummy ${ac_tool_prefix}gcc; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_CC+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CC="${ac_tool_prefix}gcc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_CC"; then ++ ac_ct_CC=$CC ++ # Extract the first word of "gcc", so it can be a program name with args. ++set dummy gcc; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_CC+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_CC"; then ++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_CC="gcc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_CC=$ac_cv_prog_ac_ct_CC ++if test -n "$ac_ct_CC"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi ++else ++ CC="$ac_cv_prog_CC" ++fi ++ ++if test -z "$CC"; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++set dummy ${ac_tool_prefix}cc; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_CC+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CC="${ac_tool_prefix}cc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ fi ++fi ++if test -z "$CC"; then ++ # Extract the first word of "cc", so it can be a program name with args. ++set dummy cc; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_CC+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++ ac_prog_rejected=no ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ++ ac_prog_rejected=yes ++ continue ++ fi ++ ac_cv_prog_CC="cc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++if test $ac_prog_rejected = yes; then ++ # We found a bogon in the path, so make sure we never use it. ++ set dummy $ac_cv_prog_CC ++ shift ++ if test $@%:@ != 0; then ++ # We chose a different compiler from the bogus one. ++ # However, it has the same basename, so the bogon will be chosen ++ # first if we set CC to just the basename; use the full file name. ++ shift ++ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" ++ fi ++fi ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$CC"; then ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in cl.exe ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_CC+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CC="$ac_tool_prefix$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ test -n "$CC" && break ++ done ++fi ++if test -z "$CC"; then ++ ac_ct_CC=$CC ++ for ac_prog in cl.exe ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_CC+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_CC"; then ++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_CC="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_CC=$ac_cv_prog_ac_ct_CC ++if test -n "$ac_ct_CC"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ test -n "$ac_ct_CC" && break ++done ++ ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi ++fi ++ ++fi ++ ++ ++test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH ++See \`config.log' for more details." >&5 ++echo "$as_me: error: no acceptable C compiler found in \$PATH ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } ++ ++# Provide some information about the compiler. ++echo "$as_me:$LINENO: checking for C compiler version" >&5 ++ac_compiler=`set X $ac_compile; echo $2` ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++ ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++ac_clean_files_save=$ac_clean_files ++ac_clean_files="$ac_clean_files a.out a.exe b.out" ++# Try to create an executable without -o first, disregard a.out. ++# It will help us diagnose broken compilers, and finding out an intuition ++# of exeext. ++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ++ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` ++# ++# List of possible output files, starting from the most likely. ++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) ++# only as a last resort. b.out is created by i960 compilers. ++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' ++# ++# The IRIX 6 linker writes into existing files which may not be ++# executable, retaining their permissions. Remove them first so a ++# subsequent execution test works. ++ac_rmfiles= ++for ac_file in $ac_files ++do ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; ++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; ++ esac ++done ++rm -f $ac_rmfiles ++ ++if { (ac_try="$ac_link_default" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link_default") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. ++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' ++# in a Makefile. We should not override ac_cv_exeext if it was cached, ++# so that the user can short-circuit this test for compilers unknown to ++# Autoconf. ++for ac_file in $ac_files '' ++do ++ test -f "$ac_file" || continue ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ++ ;; ++ [ab].out ) ++ # We found the default executable, but exeext='' is most ++ # certainly right. ++ break;; ++ *.* ) ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ then :; else ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ fi ++ # We set ac_cv_exeext here because the later test for it is not ++ # safe: cross compilers may not add the suffix if given an `-o' ++ # argument, so we may need to know it at that point already. ++ # Even if this section looks crufty: it has the advantage of ++ # actually working. ++ break;; ++ * ) ++ break;; ++ esac ++done ++test "$ac_cv_exeext" = no && ac_cv_exeext= ++ ++else ++ ac_file='' ++fi ++ ++{ echo "$as_me:$LINENO: result: $ac_file" >&5 ++echo "${ECHO_T}$ac_file" >&6; } ++if test -z "$ac_file"; then ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++{ { echo "$as_me:$LINENO: error: C compiler cannot create executables ++See \`config.log' for more details." >&5 ++echo "$as_me: error: C compiler cannot create executables ++See \`config.log' for more details." >&2;} ++ { (exit 77); exit 77; }; } ++fi ++ ++ac_exeext=$ac_cv_exeext ++ ++# Check that the compiler produces executables we can run. If not, either ++# the compiler is broken, or we cross compile. ++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 ++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } ++# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 ++# If not cross compiling, check that we can run a simple program. ++if test "$cross_compiling" != yes; then ++ if { ac_try='./$ac_file' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ cross_compiling=no ++ else ++ if test "$cross_compiling" = maybe; then ++ cross_compiling=yes ++ else ++ { { echo "$as_me:$LINENO: error: cannot run C compiled programs. ++If you meant to cross compile, use \`--host'. ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot run C compiled programs. ++If you meant to cross compile, use \`--host'. ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } ++ fi ++ fi ++fi ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ ++rm -f a.out a.exe conftest$ac_cv_exeext b.out ++ac_clean_files=$ac_clean_files_save ++# Check that the compiler produces executables we can run. If not, either ++# the compiler is broken, or we cross compile. ++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 ++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 ++echo "${ECHO_T}$cross_compiling" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 ++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ # If both `conftest.exe' and `conftest' are `present' (well, observable) ++# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will ++# work properly (i.e., refer to `conftest.exe'), while it won't with ++# `rm'. ++for ac_file in conftest.exe conftest conftest.*; do ++ test -f "$ac_file" || continue ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; ++ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ break;; ++ * ) break;; ++ esac ++done ++else ++ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute suffix of executables: cannot compile and link ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++rm -f conftest$ac_cv_exeext ++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ++echo "${ECHO_T}$ac_cv_exeext" >&6; } ++ ++rm -f conftest.$ac_ext ++EXEEXT=$ac_cv_exeext ++ac_exeext=$EXEEXT ++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 ++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } ++if test "${ac_cv_objext+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.o conftest.obj ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ for ac_file in conftest.o conftest.obj conftest.*; do ++ test -f "$ac_file" || continue; ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; ++ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` ++ break;; ++ esac ++done ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute suffix of object files: cannot compile ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++rm -f conftest.$ac_cv_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ++echo "${ECHO_T}$ac_cv_objext" >&6; } ++OBJEXT=$ac_cv_objext ++ac_objext=$OBJEXT ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } ++if test "${ac_cv_c_compiler_gnu+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++#ifndef __GNUC__ ++ choke me ++#endif ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_compiler_gnu=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_compiler_gnu=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ac_cv_c_compiler_gnu=$ac_compiler_gnu ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } ++GCC=`test $ac_compiler_gnu = yes && echo yes` ++ac_test_CFLAGS=${CFLAGS+set} ++ac_save_CFLAGS=$CFLAGS ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_g+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_save_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ ac_cv_prog_cc_g=no ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_g=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ CFLAGS="" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_c_werror_flag=$ac_save_c_werror_flag ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_g=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } ++if test "$ac_test_CFLAGS" = set; then ++ CFLAGS=$ac_save_CFLAGS ++elif test $ac_cv_prog_cc_g = yes; then ++ if test "$GCC" = yes; then ++ CFLAGS="-g -O2" ++ else ++ CFLAGS="-g" ++ fi ++else ++ if test "$GCC" = yes; then ++ CFLAGS="-O2" ++ else ++ CFLAGS= ++ fi ++fi ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_prog_cc_c89=no ++ac_save_CC=$CC ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ ++struct buf { int x; }; ++FILE * (*rcsopen) (struct buf *, struct stat *, int); ++static char *e (p, i) ++ char **p; ++ int i; ++{ ++ return p[i]; ++} ++static char *f (char * (*g) (char **, int), char **p, ...) ++{ ++ char *s; ++ va_list v; ++ va_start (v,p); ++ s = g (p, va_arg (v,int)); ++ va_end (v); ++ return s; ++} ++ ++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has ++ function prototypes and stuff, but not '\xHH' hex character constants. ++ These don't provoke an error unfortunately, instead are silently treated ++ as 'x'. The following induces an error, until -std is added to get ++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an ++ array size at least. It's necessary to write '\x00'==0 to get something ++ that's true only with -std. */ ++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; ++ ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ ++int test (int i, double x); ++struct s1 {int (*f) (int a);}; ++struct s2 {int (*f) (double a);}; ++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); ++int argc; ++char **argv; ++int ++main () ++{ ++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ++ ; ++ return 0; ++} ++_ACEOF ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++do ++ CC="$ac_save_CC $ac_arg" ++ rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break ++done ++rm -f conftest.$ac_ext ++CC=$ac_save_CC ++ ++fi ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; ++ *) ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; ++esac ++ ++ ++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" ++ ++ ++am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: ++ @echo done ++.PHONY: am__doit ++END ++# If we don't find an include directive, just comment out the code. ++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 ++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } ++am__include="#" ++am__quote= ++_am_result=none ++# First try GNU make style include. ++echo "include confinc" > confmf ++# We grep out `Entering directory' and `Leaving directory' ++# messages which can occur if `w' ends up in MAKEFLAGS. ++# In particular we don't look at `^make:' because GNU make might ++# be invoked under some other name (usually "gmake"), in which ++# case it prints its new name instead of `make'. ++if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then ++ am__include=include ++ am__quote= ++ _am_result=GNU ++fi ++# Now try BSD make style include. ++if test "$am__include" = "#"; then ++ echo '.include "confinc"' > confmf ++ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then ++ am__include=.include ++ am__quote="\"" ++ _am_result=BSD ++ fi ++fi ++ ++ ++{ echo "$as_me:$LINENO: result: $_am_result" >&5 ++echo "${ECHO_T}$_am_result" >&6; } ++rm -f confinc confmf ++ ++# Check whether --enable-dependency-tracking was given. ++if test "${enable_dependency_tracking+set}" = set; then ++ enableval=$enable_dependency_tracking; ++fi ++ ++if test "x$enable_dependency_tracking" != xno; then ++ am_depcomp="$ac_aux_dir/depcomp" ++ AMDEPBACKSLASH='\' ++fi ++ if test "x$enable_dependency_tracking" != xno; then ++ AMDEP_TRUE= ++ AMDEP_FALSE='#' ++else ++ AMDEP_TRUE='#' ++ AMDEP_FALSE= ++fi ++ ++ ++ ++depcc="$CC" am_compiler_list= ++ ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } ++if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # 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'. ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub ++ ++ am_cv_CC_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` ++ fi ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > 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 ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf ++ ++ case $depmode in ++ nosideeffect) ++ # 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 ++ break ++ fi ++ ;; ++ none) break ;; ++ esac ++ # 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. ++ if depmode=$depmode \ ++ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_CC_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done ++ ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_CC_dependencies_compiler_type=none ++fi ++ ++fi ++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } ++CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type ++ ++ if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then ++ am__fastdepCC_TRUE= ++ am__fastdepCC_FALSE='#' ++else ++ am__fastdepCC_TRUE='#' ++ am__fastdepCC_FALSE= ++fi ++ ++ ++if test -z "$CC"; then ++ CCLD="\$(CC)" ++else ++ CCLD="$CC" ++fi ++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } ++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh ++all: ++ @echo '@@@%%%=$(MAKE)=@@@%%%' ++_ACEOF ++# GNU make sometimes prints "make[1]: Entering...", which would confuse us. ++case `${MAKE-make} -f conftest.make 2>/dev/null` in ++ *@@@%%%=?*=@@@%%%*) ++ eval ac_cv_prog_make_${ac_make}_set=yes;; ++ *) ++ eval ac_cv_prog_make_${ac_make}_set=no;; ++esac ++rm -f conftest.make ++fi ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ SET_MAKE= ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ SET_MAKE="MAKE=${MAKE-make}" ++fi ++ ++case `pwd` in ++ *\ * | *\ *) ++ { echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 ++echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; ++esac ++ ++ ++ ++macro_version='2.2.4' ++macro_revision='1.2976' ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ltmain="$ac_aux_dir/ltmain.sh" ++ ++# Make sure we can run config.sub. ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 ++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} ++ { (exit 1); exit 1; }; } ++ ++{ echo "$as_me:$LINENO: checking build system type" >&5 ++echo $ECHO_N "checking build system type... $ECHO_C" >&6; } ++if test "${ac_cv_build+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_build_alias=$build_alias ++test "x$ac_build_alias" = x && ++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` ++test "x$ac_build_alias" = x && ++ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 ++echo "$as_me: error: cannot guess build type; you must specify one" >&2;} ++ { (exit 1); exit 1; }; } ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} ++ { (exit 1); exit 1; }; } ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++echo "${ECHO_T}$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 ++echo "$as_me: error: invalid value of canonical build" >&2;} ++ { (exit 1); exit 1; }; };; ++esac ++build=$ac_cv_build ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_build ++shift ++build_cpu=$1 ++build_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++build_os=$* ++IFS=$ac_save_IFS ++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac ++ ++ ++{ echo "$as_me:$LINENO: checking host system type" >&5 ++echo $ECHO_N "checking host system type... $ECHO_C" >&6; } ++if test "${ac_cv_host+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "x$host_alias" = x; then ++ ac_cv_host=$ac_cv_build ++else ++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++echo "${ECHO_T}$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 ++echo "$as_me: error: invalid value of canonical host" >&2;} ++ { (exit 1); exit 1; }; };; ++esac ++host=$ac_cv_host ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_host ++shift ++host_cpu=$1 ++host_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++host_os=$* ++IFS=$ac_save_IFS ++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ++ ++ ++{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 ++echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } ++if test "${ac_cv_path_SED+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ ++ for ac_i in 1 2 3 4 5 6 7; do ++ ac_script="$ac_script$as_nl$ac_script" ++ done ++ echo "$ac_script" | sed 99q >conftest.sed ++ $as_unset ac_script || ac_script= ++ # Extract the first word of "sed gsed" to use in msg output ++if test -z "$SED"; then ++set dummy sed gsed; ac_prog_name=$2 ++if test "${ac_cv_path_SED+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_SED_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++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_prog in sed gsed; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue ++ # Check for GNU ac_path_SED and select it if it is found. ++ # Check for GNU $ac_path_SED ++case `"$ac_path_SED" --version 2>&1` in ++*GNU*) ++ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo '' >> "conftest.nl" ++ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_SED_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_SED="$ac_path_SED" ++ ac_path_SED_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_SED_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++SED="$ac_cv_path_SED" ++if test -z "$SED"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in \$PATH" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in \$PATH" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_SED=$SED ++fi ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5 ++echo "${ECHO_T}$ac_cv_path_SED" >&6; } ++ SED="$ac_cv_path_SED" ++ rm -f conftest.sed ++ ++test -z "$SED" && SED=sed ++Xsed="$SED -e 1s/^X//" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 ++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Extract the first word of "grep ggrep" to use in msg output ++if test -z "$GREP"; then ++set dummy grep ggrep; ac_prog_name=$2 ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_GREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in grep ggrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue ++ # Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_GREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++GREP="$ac_cv_path_GREP" ++if test -z "$GREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_GREP=$GREP ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 ++echo "${ECHO_T}$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for egrep" >&5 ++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ # Extract the first word of "egrep" to use in msg output ++if test -z "$EGREP"; then ++set dummy egrep; ac_prog_name=$2 ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_EGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in egrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue ++ # Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_EGREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++EGREP="$ac_cv_path_EGREP" ++if test -z "$EGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_EGREP=$EGREP ++fi ++ ++ ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for fgrep" >&5 ++echo $ECHO_N "checking for fgrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_FGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 ++ then ac_cv_path_FGREP="$GREP -F" ++ else ++ # Extract the first word of "fgrep" to use in msg output ++if test -z "$FGREP"; then ++set dummy fgrep; ac_prog_name=$2 ++if test "${ac_cv_path_FGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_FGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in fgrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue ++ # Check for GNU ac_path_FGREP and select it if it is found. ++ # Check for GNU $ac_path_FGREP ++case `"$ac_path_FGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'FGREP' >> "conftest.nl" ++ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_FGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_FGREP="$ac_path_FGREP" ++ ac_path_FGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_FGREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++FGREP="$ac_cv_path_FGREP" ++if test -z "$FGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_FGREP=$FGREP ++fi ++ ++ ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_FGREP" >&6; } ++ FGREP="$ac_cv_path_FGREP" ++ ++ ++test -z "$GREP" && GREP=grep ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --with-gnu-ld was given. ++if test "${with_gnu_ld+set}" = set; then ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes ++else ++ with_gnu_ld=no ++fi ++ ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 ++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [\\/]* | ?:[\\/]*) ++ re_direlt='/[^/][^/]*/\.\./' ++ # Canonicalize the pathname of ld ++ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` ++ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown ++ ;; ++ esac ++elif test "$with_gnu_ld" = yes; then ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } ++else ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } ++fi ++if test "${lt_cv_path_LD+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -z "$LD"; then ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ lt_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some variants of GNU ld only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$lt_cv_path_LD" -v 2>&1 &5 ++echo "${ECHO_T}$LD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 ++echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} ++ { (exit 1); exit 1; }; } ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } ++if test "${lt_cv_prog_gnu_ld+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # I'd rather use --version here, but apparently some GNU lds only accept -v. ++case `$LD -v 2>&1 &5 ++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } ++with_gnu_ld=$lt_cv_prog_gnu_ld ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 ++echo $ECHO_N "checking for BSD- or MS-compatible name lister (nm)... $ECHO_C" >&6; } ++if test "${lt_cv_path_NM+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$NM"; then ++ # Let the user override the test. ++ lt_cv_path_NM="$NM" ++else ++ lt_nm_to_check="${ac_tool_prefix}nm" ++ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then ++ lt_nm_to_check="$lt_nm_to_check nm" ++ fi ++ for lt_tmp_nm in $lt_nm_to_check; do ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ tmp_nm="$ac_dir/$lt_tmp_nm" ++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then ++ # Check to see if the nm accepts a BSD-compat flag. ++ # Adding the `sed 1q' prevents false positives on HP-UX, which says: ++ # nm: unknown option "B" ignored ++ # Tru64's nm complains that /dev/null is an invalid object file ++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in ++ */dev/null* | *'Invalid file or object type'*) ++ lt_cv_path_NM="$tmp_nm -B" ++ break ++ ;; ++ *) ++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in ++ */dev/null*) ++ lt_cv_path_NM="$tmp_nm -p" ++ break ++ ;; ++ *) ++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ done ++ IFS="$lt_save_ifs" ++ done ++ : ${lt_cv_path_NM=no} ++fi ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 ++echo "${ECHO_T}$lt_cv_path_NM" >&6; } ++if test "$lt_cv_path_NM" != "no"; then ++ NM="$lt_cv_path_NM" ++else ++ # Didn't find any BSD compatible name lister, look for dumpbin. ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in "dumpbin -symbols" "link -dump -symbols" ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_DUMPBIN+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$DUMPBIN"; then ++ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++DUMPBIN=$ac_cv_prog_DUMPBIN ++if test -n "$DUMPBIN"; then ++ { echo "$as_me:$LINENO: result: $DUMPBIN" >&5 ++echo "${ECHO_T}$DUMPBIN" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ test -n "$DUMPBIN" && break ++ done ++fi ++if test -z "$DUMPBIN"; then ++ ac_ct_DUMPBIN=$DUMPBIN ++ for ac_prog in "dumpbin -symbols" "link -dump -symbols" ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_DUMPBIN"; then ++ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN ++if test -n "$ac_ct_DUMPBIN"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5 ++echo "${ECHO_T}$ac_ct_DUMPBIN" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ test -n "$ac_ct_DUMPBIN" && break ++done ++ ++ if test "x$ac_ct_DUMPBIN" = x; then ++ DUMPBIN=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ DUMPBIN=$ac_ct_DUMPBIN ++ fi ++fi ++ ++ ++ if test "$DUMPBIN" != ":"; then ++ NM="$DUMPBIN" ++ fi ++fi ++test -z "$NM" && NM=nm ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 ++echo $ECHO_N "checking the name lister ($NM) interface... $ECHO_C" >&6; } ++if test "${lt_cv_nm_interface+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_nm_interface="BSD nm" ++ echo "int some_variable = 0;" > conftest.$ac_ext ++ (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&5) ++ (eval "$ac_compile" 2>conftest.err) ++ cat conftest.err >&5 ++ (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&5) ++ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) ++ cat conftest.err >&5 ++ (eval echo "\"\$as_me:__oline__: output\"" >&5) ++ cat conftest.out >&5 ++ if $GREP 'External.*some_variable' conftest.out > /dev/null; then ++ lt_cv_nm_interface="MS dumpbin" ++ fi ++ rm -f conftest* ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5 ++echo "${ECHO_T}$lt_cv_nm_interface" >&6; } ++ ++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 ++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } ++LN_S=$as_ln_s ++if test "$LN_S" = "ln -s"; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 ++echo "${ECHO_T}no, using $LN_S" >&6; } ++fi ++ ++# find the maximum length of command line arguments ++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 ++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } ++if test "${lt_cv_sys_max_cmd_len+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ i=0 ++ teststring="ABCD" ++ ++ case $build_os in ++ msdosdjgpp*) ++ # On DJGPP, this test can blow up pretty badly due to problems in libc ++ # (any single argument exceeding 2000 bytes causes a buffer overrun ++ # during glob expansion). Even if it were fixed, the result of this ++ # check would be larger than it should be. ++ lt_cv_sys_max_cmd_len=12288; # 12K is about right ++ ;; ++ ++ gnu*) ++ # Under GNU Hurd, this test is not required because there is ++ # no limit to the length of command line arguments. ++ # Libtool will interpret -1 as no limit whatsoever ++ lt_cv_sys_max_cmd_len=-1; ++ ;; ++ ++ cygwin* | mingw*) ++ # On Win9x/ME, this test blows up -- it succeeds, but takes ++ # about 5 minutes as the teststring grows exponentially. ++ # Worse, since 9x/ME are not pre-emptively multitasking, ++ # you end up with a "frozen" computer, even though with patience ++ # the test eventually succeeds (with a max line length of 256k). ++ # Instead, let's just punt: use the minimum linelength reported by ++ # all of the supported platforms: 8192 (on NT/2K/XP). ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ amigaos*) ++ # On AmigaOS with pdksh, this test takes hours, literally. ++ # So we just punt and use a minimum line length of 8192. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) ++ # This has been around since 386BSD, at least. Likely further. ++ if test -x /sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` ++ elif test -x /usr/sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` ++ else ++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs ++ fi ++ # And add a safety zone ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ ;; ++ ++ interix*) ++ # We know the value 262144 and hardcode it with a safety zone (like BSD) ++ lt_cv_sys_max_cmd_len=196608 ++ ;; ++ ++ osf*) ++ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure ++ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not ++ # nice to cause kernel panics so lets avoid the loop below. ++ # First set a reasonable default. ++ lt_cv_sys_max_cmd_len=16384 ++ # ++ if test -x /sbin/sysconfig; then ++ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in ++ *1*) lt_cv_sys_max_cmd_len=-1 ;; ++ esac ++ fi ++ ;; ++ sco3.2v5*) ++ lt_cv_sys_max_cmd_len=102400 ++ ;; ++ sysv5* | sco5v6* | sysv4.2uw2*) ++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` ++ if test -n "$kargmax"; then ++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` ++ else ++ lt_cv_sys_max_cmd_len=32768 ++ fi ++ ;; ++ *) ++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` ++ if test -n "$lt_cv_sys_max_cmd_len"; then ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ else ++ # Make teststring a little bigger before we do anything with it. ++ # a 1K string should be a reasonable start. ++ for i in 1 2 3 4 5 6 7 8 ; do ++ teststring=$teststring$teststring ++ done ++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} ++ # If test is not a shell built-in, we'll probably end up computing a ++ # maximum length that is only half of the actual maximum length, but ++ # we can't tell. ++ while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ ++ = "XX$teststring$teststring"; } >/dev/null 2>&1 && ++ test $i != 17 # 1/2 MB should be enough ++ do ++ i=`expr $i + 1` ++ teststring=$teststring$teststring ++ done ++ # Only check the string length outside the loop. ++ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` ++ teststring= ++ # Add a significant safety factor because C++ compilers can tack on ++ # massive amounts of additional arguments before passing them to the ++ # linker. It appears as though 1/2 is a usable value. ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ++ fi ++ ;; ++ esac ++ ++fi ++ ++if test -n $lt_cv_sys_max_cmd_len ; then ++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 ++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } ++else ++ { echo "$as_me:$LINENO: result: none" >&5 ++echo "${ECHO_T}none" >&6; } ++fi ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++ ++ ++ ++ ++ ++: ${CP="cp -f"} ++: ${MV="mv -f"} ++: ${RM="rm -f"} ++ ++{ echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 ++echo $ECHO_N "checking whether the shell understands some XSI constructs... $ECHO_C" >&6; } ++# Try some XSI features ++xsi_shell=no ++( _lt_dummy="a/b/c" ++ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ ++ = c,a/b,, \ ++ && eval 'test $(( 1 + 1 )) -eq 2 \ ++ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ ++ && xsi_shell=yes ++{ echo "$as_me:$LINENO: result: $xsi_shell" >&5 ++echo "${ECHO_T}$xsi_shell" >&6; } ++ ++ ++{ echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 ++echo $ECHO_N "checking whether the shell understands \"+=\"... $ECHO_C" >&6; } ++lt_shell_append=no ++( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ ++ >/dev/null 2>&1 \ ++ && lt_shell_append=yes ++{ echo "$as_me:$LINENO: result: $lt_shell_append" >&5 ++echo "${ECHO_T}$lt_shell_append" >&6; } ++ ++ ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ lt_unset=unset ++else ++ lt_unset=false ++fi ++ ++ ++ ++ ++ ++# test EBCDIC or ASCII ++case `echo X|tr X '\101'` in ++ A) # ASCII based system ++ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr ++ lt_SP2NL='tr \040 \012' ++ lt_NL2SP='tr \015\012 \040\040' ++ ;; ++ *) # EBCDIC based system ++ lt_SP2NL='tr \100 \n' ++ lt_NL2SP='tr \r\n \100\100' ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 ++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } ++if test "${lt_cv_ld_reload_flag+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_ld_reload_flag='-r' ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 ++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } ++reload_flag=$lt_cv_ld_reload_flag ++case $reload_flag in ++"" | " "*) ;; ++*) reload_flag=" $reload_flag" ;; ++esac ++reload_cmds='$LD$reload_flag -o $output$reload_objs' ++case $host_os in ++ darwin*) ++ if test "$GCC" = yes; then ++ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' ++ else ++ reload_cmds='$LD$reload_flag -o $output$reload_objs' ++ fi ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 ++echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } ++if test "${lt_cv_deplibs_check_method+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_file_magic_cmd='$MAGIC_CMD' ++lt_cv_file_magic_test_file= ++lt_cv_deplibs_check_method='unknown' ++# Need to set the preceding variable on all platforms that support ++# interlibrary dependencies. ++# 'none' -- dependencies not supported. ++# `unknown' -- same as none, but documents that we really don't know. ++# 'pass_all' -- all dependencies passed with no checks. ++# 'test_compile' -- check by making test program. ++# 'file_magic [[regex]]' -- check by looking for files in library path ++# which responds to the $file_magic_cmd with a given extended regex. ++# If you have `file' or equivalent on your system and you're not sure ++# whether `pass_all' will *always* work, you probably want this one. ++ ++case $host_os in ++aix[4-9]*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++beos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++bsdi[45]*) ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' ++ lt_cv_file_magic_cmd='/usr/bin/file -L' ++ lt_cv_file_magic_test_file=/shlib/libc.so ++ ;; ++ ++cygwin*) ++ # func_win32_libid is a shell function defined in ltmain.sh ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ ;; ++ ++mingw* | pw32*) ++ # Base MSYS/MinGW do not provide the 'file' command needed by ++ # func_win32_libid shell function, so use a weaker test based on 'objdump', ++ # unless we find 'file', for example because we are cross-compiling. ++ if ( file / ) >/dev/null 2>&1; then ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ else ++ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' ++ fi ++ ;; ++ ++darwin* | rhapsody*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++freebsd* | dragonfly*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then ++ case $host_cpu in ++ i*86 ) ++ # Not sure whether the presence of OpenBSD here was a mistake. ++ # Let's accept both of them until this is cleared up. ++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ++ ;; ++ esac ++ else ++ lt_cv_deplibs_check_method=pass_all ++ fi ++ ;; ++ ++gnu*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++hpux10.20* | hpux11*) ++ lt_cv_file_magic_cmd=/usr/bin/file ++ case $host_cpu in ++ ia64*) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' ++ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ++ ;; ++ hppa*64*) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' ++ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ++ ;; ++ *) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' ++ lt_cv_file_magic_test_file=/usr/lib/libc.sl ++ ;; ++ esac ++ ;; ++ ++interix[3-9]*) ++ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $LD in ++ *-32|*"-32 ") libmagic=32-bit;; ++ *-n32|*"-n32 ") libmagic=N32;; ++ *-64|*"-64 ") libmagic=64-bit;; ++ *) libmagic=never-match;; ++ esac ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' ++ fi ++ ;; ++ ++newos6*) ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=/usr/lib/libnls.so ++ ;; ++ ++*nto* | *qnx*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++openbsd*) ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' ++ fi ++ ;; ++ ++osf3* | osf4* | osf5*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++rdos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++solaris*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++sysv4 | sysv4.3*) ++ case $host_vendor in ++ motorola) ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ++ ;; ++ ncr) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ sequent) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ++ ;; ++ sni) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" ++ lt_cv_file_magic_test_file=/lib/libc.so ++ ;; ++ siemens) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ pc) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ esac ++ ;; ++ ++tpf*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++esac ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 ++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } ++file_magic_cmd=$lt_cv_file_magic_cmd ++deplibs_check_method=$lt_cv_deplibs_check_method ++test -z "$deplibs_check_method" && deplibs_check_method=unknown ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ar; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_AR+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$AR"; then ++ ac_cv_prog_AR="$AR" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_AR="${ac_tool_prefix}ar" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++AR=$ac_cv_prog_AR ++if test -n "$AR"; then ++ { echo "$as_me:$LINENO: result: $AR" >&5 ++echo "${ECHO_T}$AR" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_AR"; then ++ ac_ct_AR=$AR ++ # Extract the first word of "ar", so it can be a program name with args. ++set dummy ar; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_AR+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_AR"; then ++ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_AR="ar" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_AR=$ac_cv_prog_ac_ct_AR ++if test -n "$ac_ct_AR"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 ++echo "${ECHO_T}$ac_ct_AR" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_AR" = x; then ++ AR="false" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ AR=$ac_ct_AR ++ fi ++else ++ AR="$ac_cv_prog_AR" ++fi ++ ++test -z "$AR" && AR=ar ++test -z "$AR_FLAGS" && AR_FLAGS=cru ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++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. ++set dummy ${ac_tool_prefix}strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$STRIP"; then ++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++STRIP=$ac_cv_prog_STRIP ++if test -n "$STRIP"; then ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_STRIP"; then ++ ac_ct_STRIP=$STRIP ++ # Extract the first word of "strip", so it can be a program name with args. ++set dummy strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_STRIP"; then ++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_STRIP="strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ++if test -n "$ac_ct_STRIP"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi ++else ++ STRIP="$ac_cv_prog_STRIP" ++fi ++ ++test -z "$STRIP" && STRIP=: ++ ++ ++ ++ ++ ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_RANLIB+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$RANLIB"; then ++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++RANLIB=$ac_cv_prog_RANLIB ++if test -n "$RANLIB"; then ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_RANLIB"; then ++ ac_ct_RANLIB=$RANLIB ++ # Extract the first word of "ranlib", so it can be a program name with args. ++set dummy ranlib; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_RANLIB"; then ++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_RANLIB="ranlib" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB ++if test -n "$ac_ct_RANLIB"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi ++else ++ RANLIB="$ac_cv_prog_RANLIB" ++fi ++ ++test -z "$RANLIB" && RANLIB=: ++ ++ ++ ++ ++ ++ ++# Determine commands to create old-style static archives. ++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' ++old_postinstall_cmds='chmod 644 $oldlib' ++old_postuninstall_cmds= ++ ++if test -n "$RANLIB"; then ++ case $host_os in ++ openbsd*) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ++ ;; ++ *) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ++ ;; ++ esac ++ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++ ++# Check for command to grab the raw symbol name followed by C symbol from nm. ++{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 ++echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } ++if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ++# These are sane defaults that work on at least a few old systems. ++# [They come from Ultrix. What could be older than Ultrix?!! ;)] ++ ++# Character class describing NM global symbol codes. ++symcode='[BCDEGRST]' ++ ++# Regexp to match symbols that can be accessed directly from C. ++sympat='\([_A-Za-z][_A-Za-z0-9]*\)' ++ ++# Define system-specific variables. ++case $host_os in ++aix*) ++ symcode='[BCDT]' ++ ;; ++cygwin* | mingw* | pw32*) ++ symcode='[ABCDGISTW]' ++ ;; ++hpux*) ++ if test "$host_cpu" = ia64; then ++ symcode='[ABCDEGRST]' ++ fi ++ ;; ++irix* | nonstopux*) ++ symcode='[BCDEGRST]' ++ ;; ++osf*) ++ symcode='[BCDEGQRST]' ++ ;; ++solaris*) ++ symcode='[BDRT]' ++ ;; ++sco3.2v5*) ++ symcode='[DT]' ++ ;; ++sysv4.2uw2*) ++ symcode='[DT]' ++ ;; ++sysv5* | sco5v6* | unixware* | OpenUNIX*) ++ symcode='[ABDT]' ++ ;; ++sysv4) ++ symcode='[DFNSTU]' ++ ;; ++esac ++ ++# If we're using GNU nm, then use its standard symbol codes. ++case `$NM -V 2>&1` in ++*GNU* | *'with BFD'*) ++ symcode='[ABCDGIRSTW]' ;; ++esac ++ ++# Transform an extracted symbol line into a proper C declaration. ++# Some systems (esp. on ia64) link data and code symbols differently, ++# so use this general approach. ++lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ ++# Transform an extracted symbol line into symbol name and symbol address ++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" ++ ++# Handle CRLF in mingw tool chain ++opt_cr= ++case $build_os in ++mingw*) ++ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ++ ;; ++esac ++ ++# Try without a prefix underscore, then with it. ++for ac_symprfx in "" "_"; do ++ ++ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. ++ symxfrm="\\1 $ac_symprfx\\2 \\2" ++ ++ # Write the raw and C identifiers. ++ if test "$lt_cv_nm_interface" = "MS dumpbin"; then ++ # Fake it for dumpbin and say T for any non-static function ++ # and D for any global variable. ++ # Also find C++ and __fastcall symbols from MSVC++, ++ # which start with @ or ?. ++ lt_cv_sys_global_symbol_pipe="$AWK '"\ ++" {last_section=section; section=\$ 3};"\ ++" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ ++" \$ 0!~/External *\|/{next};"\ ++" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ ++" {if(hide[section]) next};"\ ++" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ ++" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ ++" s[1]~/^[@?]/{print s[1], s[1]; next};"\ ++" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ ++" ' prfx=^$ac_symprfx" ++ else ++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" ++ fi ++ ++ # Check to see that the pipe works correctly. ++ pipe_works=no ++ ++ rm -f conftest* ++ cat > conftest.$ac_ext <<_LT_EOF ++#ifdef __cplusplus ++extern "C" { ++#endif ++char nm_test_var; ++void nm_test_func(void); ++void nm_test_func(void){} ++#ifdef __cplusplus ++} ++#endif ++int main(){nm_test_var='a';nm_test_func();return(0);} ++_LT_EOF ++ ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ # Now try to grab the symbols. ++ nlist=conftest.nm ++ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 ++ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s "$nlist"; then ++ # Try sorting and uniquifying the output. ++ if sort "$nlist" | uniq > "$nlist"T; then ++ mv -f "$nlist"T "$nlist" ++ else ++ rm -f "$nlist"T ++ fi ++ ++ # Make sure that we snagged all the symbols we need. ++ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then ++ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then ++ cat <<_LT_EOF > conftest.$ac_ext ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++_LT_EOF ++ # Now generate the symbol file. ++ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' ++ ++ cat <<_LT_EOF >> conftest.$ac_ext ++ ++/* The mapping between symbol names and symbols. */ ++const struct { ++ const char *name; ++ void *address; ++} ++lt__PROGRAM__LTX_preloaded_symbols[] = ++{ ++ { "@PROGRAM@", (void *) 0 }, ++_LT_EOF ++ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext ++ cat <<\_LT_EOF >> conftest.$ac_ext ++ {0, (void *) 0} ++}; ++ ++/* This works around a problem in FreeBSD linker */ ++#ifdef FREEBSD_WORKAROUND ++static const void *lt_preloaded_setup() { ++ return lt__PROGRAM__LTX_preloaded_symbols; ++} ++#endif ++ ++#ifdef __cplusplus ++} ++#endif ++_LT_EOF ++ # Now try linking the two files. ++ mv conftest.$ac_objext conftstm.$ac_objext ++ lt_save_LIBS="$LIBS" ++ lt_save_CFLAGS="$CFLAGS" ++ LIBS="conftstm.$ac_objext" ++ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext}; then ++ pipe_works=yes ++ fi ++ LIBS="$lt_save_LIBS" ++ CFLAGS="$lt_save_CFLAGS" ++ else ++ echo "cannot find nm_test_func in $nlist" >&5 ++ fi ++ else ++ echo "cannot find nm_test_var in $nlist" >&5 ++ fi ++ else ++ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 ++ fi ++ else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ fi ++ rm -rf conftest* conftst* ++ ++ # Do not use the global_symbol_pipe unless it works. ++ if test "$pipe_works" = yes; then ++ break ++ else ++ lt_cv_sys_global_symbol_pipe= ++ fi ++done ++ ++fi ++ ++if test -z "$lt_cv_sys_global_symbol_pipe"; then ++ lt_cv_sys_global_symbol_to_cdecl= ++fi ++if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then ++ { echo "$as_me:$LINENO: result: failed" >&5 ++echo "${ECHO_T}failed" >&6; } ++else ++ { echo "$as_me:$LINENO: result: ok" >&5 ++echo "${ECHO_T}ok" >&6; } ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --enable-libtool-lock was given. ++if test "${enable_libtool_lock+set}" = set; then ++ enableval=$enable_libtool_lock; ++fi ++ ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++ ++# Some flags need to be propagated to the compiler or linker for good ++# libtool support. ++case $host in ++ia64-*-hpux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *ELF-32*) ++ HPUX_IA64_MODE="32" ++ ;; ++ *ELF-64*) ++ HPUX_IA64_MODE="64" ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++*-*-irix6*) ++ # Find out which ABI we are using. ++ echo '#line __oline__ "configure"' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -melf32bsmip" ++ ;; ++ *N32*) ++ LD="${LD-ld} -melf32bmipn32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -melf64bmip" ++ ;; ++ esac ++ else ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -32" ++ ;; ++ *N32*) ++ LD="${LD-ld} -n32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -64" ++ ;; ++ esac ++ fi ++ fi ++ rm -rf conftest* ++ ;; ++ ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ ++s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.o` in ++ *32-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_i386_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_i386" ++ ;; ++ ppc64-*linux*|powerpc64-*linux*) ++ LD="${LD-ld} -m elf32ppclinux" ++ ;; ++ s390x-*linux*) ++ LD="${LD-ld} -m elf_s390" ++ ;; ++ sparc64-*linux*) ++ LD="${LD-ld} -m elf32_sparc" ++ ;; ++ esac ++ ;; ++ *64-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_x86_64_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_x86_64" ++ ;; ++ ppc*-*linux*|powerpc*-*linux*) ++ LD="${LD-ld} -m elf64ppc" ++ ;; ++ s390*-*linux*|s390*-*tpf*) ++ LD="${LD-ld} -m elf64_s390" ++ ;; ++ sparc*-*linux*) ++ LD="${LD-ld} -m elf64_sparc" ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++ ++*-*-sco3.2v5*) ++ # On SCO OpenServer 5, we need -belf to get full-featured binaries. ++ SAVE_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -belf" ++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 ++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } ++if test "${lt_cv_cc_needs_belf+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ 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 ++ ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ lt_cv_cc_needs_belf=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ lt_cv_cc_needs_belf=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ 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 ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 ++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } ++ if test x"$lt_cv_cc_needs_belf" != x"yes"; then ++ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf ++ CFLAGS="$SAVE_CFLAGS" ++ fi ++ ;; ++sparc*-*solaris*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.o` in ++ *64-bit*) ++ case $lt_cv_prog_gnu_ld in ++ yes*) LD="${LD-ld} -m elf64_sparc" ;; ++ *) ++ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then ++ LD="${LD-ld} -64" ++ fi ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++esac ++ ++need_locks="$enable_libtool_lock" ++ ++ ++ case $host_os in ++ rhapsody* | darwin*) ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. ++set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_DSYMUTIL+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$DSYMUTIL"; then ++ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++DSYMUTIL=$ac_cv_prog_DSYMUTIL ++if test -n "$DSYMUTIL"; then ++ { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 ++echo "${ECHO_T}$DSYMUTIL" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_DSYMUTIL"; then ++ ac_ct_DSYMUTIL=$DSYMUTIL ++ # Extract the first word of "dsymutil", so it can be a program name with args. ++set dummy dsymutil; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_DSYMUTIL"; then ++ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL ++if test -n "$ac_ct_DSYMUTIL"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 ++echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_DSYMUTIL" = x; then ++ DSYMUTIL=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ DSYMUTIL=$ac_ct_DSYMUTIL ++ fi ++else ++ DSYMUTIL="$ac_cv_prog_DSYMUTIL" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. ++set dummy ${ac_tool_prefix}nmedit; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_NMEDIT+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$NMEDIT"; then ++ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++NMEDIT=$ac_cv_prog_NMEDIT ++if test -n "$NMEDIT"; then ++ { echo "$as_me:$LINENO: result: $NMEDIT" >&5 ++echo "${ECHO_T}$NMEDIT" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_NMEDIT"; then ++ ac_ct_NMEDIT=$NMEDIT ++ # Extract the first word of "nmedit", so it can be a program name with args. ++set dummy nmedit; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_NMEDIT"; then ++ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_NMEDIT="nmedit" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT ++if test -n "$ac_ct_NMEDIT"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 ++echo "${ECHO_T}$ac_ct_NMEDIT" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_NMEDIT" = x; then ++ NMEDIT=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ NMEDIT=$ac_ct_NMEDIT ++ fi ++else ++ NMEDIT="$ac_cv_prog_NMEDIT" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. ++set dummy ${ac_tool_prefix}lipo; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_LIPO+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$LIPO"; then ++ ac_cv_prog_LIPO="$LIPO" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_LIPO="${ac_tool_prefix}lipo" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++LIPO=$ac_cv_prog_LIPO ++if test -n "$LIPO"; then ++ { echo "$as_me:$LINENO: result: $LIPO" >&5 ++echo "${ECHO_T}$LIPO" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_LIPO"; then ++ ac_ct_LIPO=$LIPO ++ # Extract the first word of "lipo", so it can be a program name with args. ++set dummy lipo; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_LIPO"; then ++ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_LIPO="lipo" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO ++if test -n "$ac_ct_LIPO"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 ++echo "${ECHO_T}$ac_ct_LIPO" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_LIPO" = x; then ++ LIPO=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ LIPO=$ac_ct_LIPO ++ fi ++else ++ LIPO="$ac_cv_prog_LIPO" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. ++set dummy ${ac_tool_prefix}otool; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_OTOOL+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$OTOOL"; then ++ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_OTOOL="${ac_tool_prefix}otool" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++OTOOL=$ac_cv_prog_OTOOL ++if test -n "$OTOOL"; then ++ { echo "$as_me:$LINENO: result: $OTOOL" >&5 ++echo "${ECHO_T}$OTOOL" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_OTOOL"; then ++ ac_ct_OTOOL=$OTOOL ++ # Extract the first word of "otool", so it can be a program name with args. ++set dummy otool; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_OTOOL"; then ++ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_OTOOL="otool" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL ++if test -n "$ac_ct_OTOOL"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 ++echo "${ECHO_T}$ac_ct_OTOOL" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_OTOOL" = x; then ++ OTOOL=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ OTOOL=$ac_ct_OTOOL ++ fi ++else ++ OTOOL="$ac_cv_prog_OTOOL" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. ++set dummy ${ac_tool_prefix}otool64; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_OTOOL64+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$OTOOL64"; then ++ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++OTOOL64=$ac_cv_prog_OTOOL64 ++if test -n "$OTOOL64"; then ++ { echo "$as_me:$LINENO: result: $OTOOL64" >&5 ++echo "${ECHO_T}$OTOOL64" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_OTOOL64"; then ++ ac_ct_OTOOL64=$OTOOL64 ++ # Extract the first word of "otool64", so it can be a program name with args. ++set dummy otool64; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_OTOOL64"; then ++ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_OTOOL64="otool64" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 ++if test -n "$ac_ct_OTOOL64"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 ++echo "${ECHO_T}$ac_ct_OTOOL64" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_OTOOL64" = x; then ++ OTOOL64=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ OTOOL64=$ac_ct_OTOOL64 ++ fi ++else ++ OTOOL64="$ac_cv_prog_OTOOL64" ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 ++echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; } ++if test "${lt_cv_apple_cc_single_mod+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_apple_cc_single_mod=no ++ if test -z "${LT_MULTI_MODULE}"; then ++ # By default we will add the -single_module flag. You can override ++ # by either setting the environment variable LT_MULTI_MODULE ++ # non-empty at configure time, or by adding -multi_module to the ++ # link flags. ++ rm -rf libconftest.dylib* ++ echo "int foo(void){return 1;}" > conftest.c ++ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ ++-dynamiclib -Wl,-single_module conftest.c" >&5 ++ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ ++ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err ++ _lt_result=$? ++ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then ++ lt_cv_apple_cc_single_mod=yes ++ else ++ cat conftest.err >&5 ++ fi ++ rm -rf libconftest.dylib* ++ rm -f conftest.* ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 ++echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; } ++ { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 ++echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; } ++if test "${lt_cv_ld_exported_symbols_list+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_ld_exported_symbols_list=no ++ save_LDFLAGS=$LDFLAGS ++ echo "_main" > conftest.sym ++ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ lt_cv_ld_exported_symbols_list=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ lt_cv_ld_exported_symbols_list=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 ++echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; } ++ case $host_os in ++ rhapsody* | darwin1.[012]) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; ++ darwin1.*) ++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; ++ darwin*) # darwin 5.x on ++ # if running on 10.5 or later, the deployment target defaults ++ # to the OS version, if on x86, and 10.4, the deployment ++ # target defaults to 10.4. Don't you love it? ++ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in ++ 10.0,*86*-darwin8*|10.0,*-darwin[91]*) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; ++ 10.[012]*) ++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; ++ 10.*) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; ++ esac ++ ;; ++ esac ++ if test "$lt_cv_apple_cc_single_mod" = "yes"; then ++ _lt_dar_single_mod='$single_module' ++ fi ++ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then ++ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' ++ else ++ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ fi ++ if test "$DSYMUTIL" != ":"; then ++ _lt_dsymutil='~$DSYMUTIL $lib || :' ++ else ++ _lt_dsymutil= ++ fi ++ ;; ++ esac ++ ++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 ++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } ++# On Suns, sometimes $CPP names a directory. ++if test -n "$CPP" && test -d "$CPP"; then ++ CPP= ++fi ++if test -z "$CPP"; then ++ if test "${ac_cv_prog_CPP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Double quotes because CPP needs to be expanded ++ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" ++ do ++ ac_preproc_ok=false ++for ac_c_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@ifdef __STDC__ ++@%:@ include ++@%:@else ++@%:@ include ++@%:@endif ++ Syntax error ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ # Broken: fails on valid input. ++continue ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++ ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ # Broken: success on invalid input. ++continue ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ # Passes both tests. ++ac_preproc_ok=: ++break ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++ ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then ++ break ++fi ++ ++ done ++ ac_cv_prog_CPP=$CPP ++ ++fi ++ CPP=$ac_cv_prog_CPP ++else ++ ac_cv_prog_CPP=$CPP ++fi ++{ echo "$as_me:$LINENO: result: $CPP" >&5 ++echo "${ECHO_T}$CPP" >&6; } ++ac_preproc_ok=false ++for ac_c_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@ifdef __STDC__ ++@%:@ include ++@%:@else ++@%:@ include ++@%:@endif ++ Syntax error ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ # Broken: fails on valid input. ++continue ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++ ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ # Broken: success on invalid input. ++continue ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ # Passes both tests. ++ac_preproc_ok=: ++break ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++ ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then ++ : ++else ++ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details." >&5 ++echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } ++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 ++ ++ ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } ++if test "${ac_cv_header_stdc+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_stdc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_stdc=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "memchr" >/dev/null 2>&1; then ++ : ++else ++ ac_cv_header_stdc=no ++fi ++rm -f conftest* ++ ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "free" >/dev/null 2>&1; then ++ : ++else ++ ac_cv_header_stdc=no ++fi ++rm -f conftest* ++ ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. ++ if test "$cross_compiling" = yes; then ++ : ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#if ((' ' & 0x0FF) == 0x020) ++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) ++#else ++# define ISLOWER(c) \ ++ (('a' <= (c) && (c) <= 'i') \ ++ || ('j' <= (c) && (c) <= 'r') \ ++ || ('s' <= (c) && (c) <= 'z')) ++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) ++#endif ++ ++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) ++int ++main () ++{ ++ int i; ++ for (i = 0; i < 256; i++) ++ if (XOR (islower (i), ISLOWER (i)) ++ || toupper (i) != TOUPPER (i)) ++ return 2; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ : ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_header_stdc=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } ++if test $ac_cv_header_stdc = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define STDC_HEADERS 1 ++_ACEOF ++ ++fi ++ ++# On IRIX 5.3, sys/types and inttypes.h are conflicting. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ ++ inttypes.h stdint.h unistd.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++ ++@%:@include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ eval "$as_ac_Header=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_Header=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ ++ ++for ac_header in dlfcn.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++ ++@%:@include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ eval "$as_ac_Header=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_Header=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ ++ ++# Set options ++ ++ ++ ++ enable_dlopen=no ++ ++ ++ enable_win32_dll=no ++ ++ ++ # Check whether --enable-shared was given. ++if test "${enable_shared+set}" = set; then ++ enableval=$enable_shared; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_shared=yes ;; ++ no) enable_shared=no ;; ++ *) ++ enable_shared=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_shared=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac ++else ++ enable_shared=yes ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ # Check whether --enable-static was given. ++if test "${enable_static+set}" = set; then ++ enableval=$enable_static; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_static=yes ;; ++ no) enable_static=no ;; ++ *) ++ enable_static=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_static=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac ++else ++ enable_static=yes ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --with-pic was given. ++if test "${with_pic+set}" = set; then ++ withval=$with_pic; pic_mode="$withval" ++else ++ pic_mode=default ++fi ++ ++ ++test -z "$pic_mode" && pic_mode=default ++ ++ ++ ++ ++ ++ ++ ++ # Check whether --enable-fast-install was given. ++if test "${enable_fast_install+set}" = set; then ++ enableval=$enable_fast_install; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_fast_install=yes ;; ++ no) enable_fast_install=no ;; ++ *) ++ enable_fast_install=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_fast_install=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac ++else ++ enable_fast_install=yes ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# This can be used to rebuild libtool when needed ++LIBTOOL_DEPS="$ltmain" ++ ++# Always use our own libtool. ++LIBTOOL='$(SHELL) $(top_builddir)' ++LIBTOOL="$LIBTOOL/$host_alias-libtool" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++test -z "$LN_S" && LN_S="ln -s" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++fi ++ ++{ echo "$as_me:$LINENO: checking for objdir" >&5 ++echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } ++if test "${lt_cv_objdir+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ rm -f .libs 2>/dev/null ++mkdir .libs 2>/dev/null ++if test -d .libs; then ++ lt_cv_objdir=.libs ++else ++ # MS-DOS does not allow filenames that begin with a dot. ++ lt_cv_objdir=_libs ++fi ++rmdir .libs 2>/dev/null ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 ++echo "${ECHO_T}$lt_cv_objdir" >&6; } ++objdir=$lt_cv_objdir ++ ++ ++ ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define LT_OBJDIR "$lt_cv_objdir/" ++_ACEOF ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++case $host_os in ++aix3*) ++ # AIX sometimes has problems with the GCC collect2 program. For some ++ # reason, if we set the COLLECT_NAMES environment variable, the problems ++ # vanish in a puff of smoke. ++ if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++ fi ++ ;; ++esac ++ ++# Sed substitution that helps us do robust quoting. It backslashifies ++# metacharacters that are still active within double-quoted strings. ++sed_quote_subst='s/\(["`$\\]\)/\\\1/g' ++ ++# Same as above, but do not quote variable references. ++double_quote_subst='s/\(["`\\]\)/\\\1/g' ++ ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++ ++# Sed substitution to delay expansion of an escaped single quote. ++delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' ++ ++# Sed substitution to avoid accidental globbing in evaled expressions ++no_glob_subst='s/\*/\\\*/g' ++ ++# Global variables: ++ofile=${host_alias}-libtool ++can_build_shared=yes ++ ++# All known linkers require a `.a' archive for static linking (except MSVC, ++# which needs '.lib'). ++libext=a ++ ++with_gnu_ld="$lt_cv_prog_gnu_ld" ++ ++old_CC="$CC" ++old_CFLAGS="$CFLAGS" ++ ++# Set sane defaults for various variables ++test -z "$CC" && CC=cc ++test -z "$LTCC" && LTCC=$CC ++test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS ++test -z "$LD" && LD=ld ++test -z "$ac_objext" && ac_objext=o ++ ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ ++# Only perform the check for file, if the check method requires it ++test -z "$MAGIC_CMD" && MAGIC_CMD=file ++case $deplibs_check_method in ++file_magic*) ++ if test "$file_magic_cmd" = '$MAGIC_CMD'; then ++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 ++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } ++if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/${ac_tool_prefix}file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++_LT_EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac ++fi ++ ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ ++ ++ ++if test -z "$lt_cv_path_MAGIC_CMD"; then ++ if test -n "$ac_tool_prefix"; then ++ { echo "$as_me:$LINENO: checking for file" >&5 ++echo $ECHO_N "checking for file... $ECHO_C" >&6; } ++if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++_LT_EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac ++fi ++ ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ else ++ MAGIC_CMD=: ++ fi ++fi ++ ++ fi ++ ;; ++esac ++ ++# Use C for the default configuration in the libtool script ++ ++lt_save_CC="$CC" ++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 ++ ++ ++# Source file extension for C test sources. ++ac_ext=c ++ ++# Object file extension for compiled C test sources. ++objext=o ++objext=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(){return(0);}' ++ ++ ++ ++ ++ ++ ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++# Save the default compiler, since it gets overwritten when the other ++# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. ++compiler_DEFAULT=$CC ++ ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$RM conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$RM -r conftest* ++ ++ ++## CAVEAT EMPTOR: ++## There is no encapsulation within the following macros, do not change ++## the running order or otherwise move them around unless you know exactly ++## what you are doing... ++if test -n "$compiler"; then ++ ++lt_prog_compiler_no_builtin_flag= ++ ++if test "$GCC" = yes; then ++ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ++ ++ { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_rtti_exceptions=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="-fno-rtti -fno-exceptions" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:__oline__: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_rtti_exceptions=yes ++ fi ++ fi ++ $RM conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } ++ ++if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then ++ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" ++else ++ : ++fi ++ ++fi ++ ++ ++ ++ ++ ++ ++ lt_prog_compiler_wl= ++lt_prog_compiler_pic= ++lt_prog_compiler_static= ++ ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ++ ++ if test "$GCC" = yes; then ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_static='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ m68k) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ esac ++ ;; ++ ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; ++ ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ lt_prog_compiler_pic='-fno-common' ++ ;; ++ ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ ;; ++ ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ lt_prog_compiler_can_build_shared=no ++ enable_shared=no ++ ;; ++ ++ *nto* | *qnx*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ lt_prog_compiler_pic='-fPIC -shared' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ lt_prog_compiler_pic=-Kconform_pic ++ fi ++ ;; ++ ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ else ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ lt_prog_compiler_wl='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ else ++ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ lt_prog_compiler_static='${wl}-a ${wl}archive' ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC (with -KPIC) is the default. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ icc* | ecc* | ifort*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-fpic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ccc*) ++ lt_prog_compiler_wl='-Wl,' ++ # All Alpha code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ xl*) ++ # IBM XL C 8.0/Fortran 10.1 on PPC ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-qpic' ++ lt_prog_compiler_static='-qstaticlink' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ ++ newsos6) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ *nto* | *qnx*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ lt_prog_compiler_pic='-fPIC -shared' ++ ;; ++ ++ osf3* | osf4* | osf5*) ++ lt_prog_compiler_wl='-Wl,' ++ # All OSF/1 code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ rdos*) ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ solaris*) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ lt_prog_compiler_wl='-Qoption ld ';; ++ *) ++ lt_prog_compiler_wl='-Wl,';; ++ esac ++ ;; ++ ++ sunos4*) ++ lt_prog_compiler_wl='-Qoption ld ' ++ lt_prog_compiler_pic='-PIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ lt_prog_compiler_pic='-Kconform_pic' ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ ;; ++ ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ unicos*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_can_build_shared=no ++ ;; ++ ++ uts4*) ++ lt_prog_compiler_pic='-pic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ *) ++ lt_prog_compiler_can_build_shared=no ++ ;; ++ esac ++ fi ++ ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ lt_prog_compiler_pic= ++ ;; ++ *) ++ lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC" ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } ++ ++ ++ ++ ++ ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$lt_prog_compiler_pic"; then ++ { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_pic_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_pic_works=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:__oline__: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_pic_works=yes ++ fi ++ fi ++ $RM conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; } ++ ++if test x"$lt_cv_prog_compiler_pic_works" = xyes; then ++ case $lt_prog_compiler_pic in ++ "" | " "*) ;; ++ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; ++ esac ++else ++ lt_prog_compiler_pic= ++ lt_prog_compiler_can_build_shared=no ++fi ++ ++fi ++ ++ ++ ++ ++ ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_static_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_static_works=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_static_works=yes ++ fi ++ else ++ lt_cv_prog_compiler_static_works=yes ++ fi ++ fi ++ $RM -r conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; } ++ ++if test x"$lt_cv_prog_compiler_static_works" = xyes; then ++ : ++else ++ lt_prog_compiler_static= ++fi ++ ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o=no ++ $RM -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:__oline__: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $RM conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files ++ $RM out/* && rmdir out ++ cd .. ++ $RM -r conftest ++ $RM conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o=no ++ $RM -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:__oline__: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $RM conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files ++ $RM out/* && rmdir out ++ cd .. ++ $RM -r conftest ++ $RM conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } ++ ++ ++ ++ ++hard_links="nottested" ++if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } ++ hard_links=yes ++ $RM conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } ++ if test "$hard_links" = no; then ++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ++ ++ runpath_var= ++ allow_undefined_flag= ++ always_export_symbols=no ++ archive_cmds= ++ archive_expsym_cmds= ++ compiler_needs_object=no ++ enable_shared_with_static_runtimes=no ++ export_dynamic_flag_spec= ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ hardcode_automatic=no ++ hardcode_direct=no ++ hardcode_direct_absolute=no ++ hardcode_libdir_flag_spec= ++ hardcode_libdir_flag_spec_ld= ++ hardcode_libdir_separator= ++ hardcode_minus_L=no ++ hardcode_shlibpath_var=unsupported ++ inherit_rpath=no ++ link_all_deplibs=unknown ++ module_cmds= ++ module_expsym_cmds= ++ old_archive_from_new_cmds= ++ old_archive_from_expsyms_cmds= ++ thread_safe_flag_spec= ++ whole_archive_flag_spec= ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ include_expsyms= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ # Exclude shared library initialization/finalization symbols. ++ extract_expsyms_cmds= ++ ++ case $host_os in ++ cygwin* | mingw* | pw32*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no ++ ;; ++ esac ++ ++ ld_shlibs=yes ++ if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' ++ ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ export_dynamic_flag_spec='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ whole_archive_flag_spec= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac ++ ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix[3-9]*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. ++ ++_LT_EOF ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='' ++ ;; ++ m68k) ++ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ;; ++ esac ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, ++ # as there is no search path for DLLs. ++ hardcode_libdir_flag_spec='-L$libdir' ++ allow_undefined_flag=unsupported ++ always_export_symbols=no ++ enable_shared_with_static_runtimes=yes ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ interix[3-9]*) ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ ++ gnu* | linux* | tpf* | k*bsd*-gnu) ++ tmp_diet=no ++ if test "$host_os" = linux-dietlibc; then ++ case $cc_basename in ++ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) ++ esac ++ fi ++ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ ++ && test "$tmp_diet" = no ++ then ++ tmp_addflag= ++ tmp_sharedflag='-shared' ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) ++ tmp_sharedflag='-qmkshrobj' ++ tmp_addflag= ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ compiler_needs_object=yes ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ esac ++ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ ++ if test "x$supports_anon_versioning" = xyes; then ++ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ ++ case $cc_basename in ++ xlf*) ++ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself ++ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' ++ hardcode_libdir_flag_spec= ++ hardcode_libdir_flag_spec_ld='-rpath $libdir' ++ archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' ++ if test "x$supports_anon_versioning" = xyes; then ++ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' ++ fi ++ ;; ++ esac ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; ++ ++ solaris*) ++ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ # For security reasons, it is highly recommended that you always ++ # use absolute paths for naming shared libraries, and exclude the ++ # DT_RUNPATH tag from executables and libraries. But doing so ++ # requires that you compile everything twice, which is a pain. ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ sunos4*) ++ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *) ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ++ if test "$ld_shlibs" = no; then ++ runpath_var= ++ hardcode_libdir_flag_spec= ++ export_dynamic_flag_spec= ++ whole_archive_flag_spec= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ allow_undefined_flag=unsupported ++ always_export_symbols=yes ++ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ hardcode_minus_L=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ hardcode_direct=unsupported ++ fi ++ ;; ++ ++ aix[4-9]*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then ++ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ else ++ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ archive_cmds='' ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ file_list_spec='${wl}-f,' ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && ++ strings "$collect2name" | $GREP resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ hardcode_direct=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ hardcode_minus_L=yes ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_libdir_separator= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ always_export_symbols=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ allow_undefined_flag='-berok' ++ # Determine the default libpath from the value encoded in an ++ # empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ++ allow_undefined_flag="-z nodefs" ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an ++ # empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ no_undefined_flag=' ${wl}-bernotok' ++ allow_undefined_flag=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec='$convenience' ++ archive_cmds_need_lc=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='' ++ ;; ++ m68k) ++ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ;; ++ esac ++ ;; ++ ++ bsdi[45]*) ++ export_dynamic_flag_spec=-rdynamic ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ hardcode_libdir_flag_spec=' ' ++ allow_undefined_flag=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ old_archive_from_new_cmds='true' ++ # FIXME: Should let the user specify the lib program. ++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ fix_srcfile_path='`cygpath -w "$srcfile"`' ++ enable_shared_with_static_runtimes=yes ++ ;; ++ ++ darwin* | rhapsody*) ++ ++ ++ archive_cmds_need_lc=no ++ hardcode_direct=no ++ hardcode_automatic=yes ++ hardcode_shlibpath_var=unsupported ++ whole_archive_flag_spec='' ++ link_all_deplibs=yes ++ allow_undefined_flag="$_lt_dar_allow_undefined" ++ if test "$GCC" = "yes"; then ++ output_verbose_link_cmd=echo ++ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" ++ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" ++ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" ++ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" ++ ++ else ++ ld_shlibs=no ++ fi ++ ++ ;; ++ ++ dgux*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ freebsd1*) ++ ld_shlibs=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ hpux9*) ++ if test "$GCC" = yes; then ++ archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ;; ++ ++ hpux10*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_flag_spec_ld='+b $libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ export_dynamic_flag_spec='${wl}-E' ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ ;; ++ *) ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ ;; ++ esac ++ fi ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ # Try to use the -exported_symbol ld option, if it does not ++ # work, assume that -exports_file does not work either and ++ # implicitly export all symbols. ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" ++ cat >conftest.$ac_ext <<_ACEOF ++int foo(void) {} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' ++ ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS="$save_LDFLAGS" ++ else ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ inherit_rpath=yes ++ link_all_deplibs=yes ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ newsos6) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *nto* | *qnx*) ++ ;; ++ ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ hardcode_direct_absolute=yes ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ else ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ ;; ++ *) ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ os2*) ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ allow_undefined_flag=unsupported ++ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; ++ ++ osf3*) ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ;; ++ ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ ++ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' ++ ++ # Both c and cxx compiler support -rpath directly ++ hardcode_libdir_flag_spec='-rpath $libdir' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_separator=: ++ ;; ++ ++ solaris*) ++ no_undefined_flag=' -z defs' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ++ else ++ case `$CC -V 2>&1` in ++ *"Compilers 5.0"*) ++ wlarc='' ++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ++ ;; ++ *) ++ wlarc='${wl}' ++ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ++ ;; ++ esac ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_shlibpath_var=no ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ link_all_deplibs=yes ++ ;; ++ ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4) ++ case $host_vendor in ++ sni) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ reload_cmds='$CC -r -o $output$reload_objs' ++ hardcode_direct=no ++ ;; ++ motorola) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4.3*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ export_dynamic_flag_spec='-Bexport' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ld_shlibs=yes ++ fi ++ ;; ++ ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag='${wl}-z,text' ++ archive_cmds_need_lc=no ++ hardcode_shlibpath_var=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag='${wl}-z,text' ++ allow_undefined_flag='${wl}-z,nodefs' ++ archive_cmds_need_lc=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='${wl}-R,$libdir' ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ export_dynamic_flag_spec='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ uts4*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *) ++ ld_shlibs=no ++ ;; ++ esac ++ ++ if test x$host_vendor = xsni; then ++ case $host in ++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ ;; ++ esac ++ fi ++ fi ++ ++{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 ++echo "${ECHO_T}$ld_shlibs" >&6; } ++test "$ld_shlibs" = no && can_build_shared=no ++ ++with_gnu_ld=$with_gnu_ld ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$archive_cmds_need_lc" in ++x|xyes) ++ # Assume -lc should be added ++ archive_cmds_need_lc=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $archive_cmds in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } ++ $RM conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl ++ pic_flag=$lt_prog_compiler_pic ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag ++ allow_undefined_flag= ++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 ++ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++ then ++ archive_cmds_need_lc=no ++ else ++ archive_cmds_need_lc=yes ++ fi ++ allow_undefined_flag=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $RM conftest* ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc" >&6; } ++ ;; ++ esac ++ fi ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } ++ ++if test "$GCC" = yes; then ++ case $host_os in ++ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; ++ *) lt_awk_arg="/^libraries:/" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then ++ # if the path contains ";" then we assume it to be the separator ++ # otherwise default to the standard path separator (i.e. ":") - it is ++ # assumed that no part of a normal pathname contains ";" but that should ++ # okay in the real world where ";" in dirpaths is itself problematic. ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ # Ok, now we have the path, separated by spaces, we can step through it ++ # and add multilib dir if necessary. ++ lt_tmp_lt_search_path_spec= ++ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` ++ for lt_sys_path in $lt_search_path_spec; do ++ if test -d "$lt_sys_path/$lt_multi_os_dir"; then ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" ++ else ++ test -d "$lt_sys_path" && \ ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" ++ fi ++ done ++ lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' ++BEGIN {RS=" "; FS="/|\n";} { ++ lt_foo=""; ++ lt_count=0; ++ for (lt_i = NF; lt_i > 0; lt_i--) { ++ if ($lt_i != "" && $lt_i != ".") { ++ if ($lt_i == "..") { ++ lt_count++; ++ } else { ++ if (lt_count == 0) { ++ lt_foo="/" $lt_i lt_foo; ++ } else { ++ lt_count--; ++ } ++ } ++ } ++ } ++ if (lt_foo != "") { lt_freq[lt_foo]++; } ++ if (lt_freq[lt_foo] == 1) { print lt_foo; } ++}'` ++ sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` ++else ++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++fi ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix[4-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[01] | aix4.[01].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; ++ ++amigaos*) ++ case $host_cpu in ++ powerpc) ++ # Since July 2007 AmigaOS4 officially supports .so libraries. ++ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ ;; ++ m68k) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ ;; ++ esac ++ ;; ++ ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[45]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no ++ ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname~ ++ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then ++ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; ++ fi' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $RM \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; ++ ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; ++ ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++freebsd1*) ++ dynamic_linker=no ++ ;; ++ ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ postinstall_cmds='chmod 555 $lib' ++ ;; ++ ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ # Some binutils ld are patched to set DT_RUNPATH ++ save_LDFLAGS=$LDFLAGS ++ save_libdir=$libdir ++ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ ++ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then ++ shlibpath_overrides_runpath=yes ++fi ++ ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS=$save_LDFLAGS ++ libdir=$save_libdir ++ ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes ++ ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++*nto* | *qnx*) ++ version_type=qnx ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='ldqnx.so' ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[89] | openbsd2.[89].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++tpf*) ++ # TPF is a cross-target only. Preferred cross-host = GNU/Linux. ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++*) ++ dynamic_linker=no ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then ++ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" ++fi ++if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then ++ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } ++hardcode_action= ++if test -n "$hardcode_libdir_flag_spec" || ++ test -n "$runpath_var" || ++ test "X$hardcode_automatic" = "Xyes" ; then ++ ++ # We can hardcode non-existent directories. ++ if test "$hardcode_direct" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && ++ test "$hardcode_minus_L" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action=unsupported ++fi ++{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 ++echo "${ECHO_T}$hardcode_action" >&6; } ++ ++if test "$hardcode_action" = relink || ++ test "$inherit_rpath" = yes; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++ ++ ++ ++ ++ ++ ++ if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++ lt_cv_dlopen=no ++ lt_cv_dlopen_libs= ++ ++ case $host_os in ++ beos*) ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; ++ ++ mingw* | pw32*) ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ cygwin*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ darwin*) ++ # if libdl is installed we need to link against it ++ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dl_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dl_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dl_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } ++if test $ac_cv_lib_dl_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ ++ lt_cv_dlopen="dyld" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ++fi ++ ++ ;; ++ ++ *) ++ { echo "$as_me:$LINENO: checking for shl_load" >&5 ++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } ++if test "${ac_cv_func_shl_load+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define shl_load to an innocuous variant, in case declares shl_load. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define shl_load innocuous_shl_load ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char shl_load (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef shl_load ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shl_load (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_shl_load || defined __stub___shl_load ++choke me ++#endif ++ ++int ++main () ++{ ++return shl_load (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_shl_load=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_shl_load=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 ++echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } ++if test $ac_cv_func_shl_load = yes; then ++ lt_cv_dlopen="shl_load" ++else ++ { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 ++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dld_shl_load+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shl_load (); ++int ++main () ++{ ++return shl_load (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dld_shl_load=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dld_shl_load=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 ++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } ++if test $ac_cv_lib_dld_shl_load = yes; then ++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" ++else ++ { echo "$as_me:$LINENO: checking for dlopen" >&5 ++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } ++if test "${ac_cv_func_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define dlopen to an innocuous variant, in case declares dlopen. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define dlopen innocuous_dlopen ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char dlopen (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef dlopen ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_dlopen || defined __stub___dlopen ++choke me ++#endif ++ ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } ++if test $ac_cv_func_dlopen = yes; then ++ lt_cv_dlopen="dlopen" ++else ++ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dl_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dl_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dl_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } ++if test $ac_cv_lib_dl_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 ++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_svld_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsvld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_svld_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_svld_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } ++if test $ac_cv_lib_svld_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" ++else ++ { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 ++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dld_dld_link+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dld_link (); ++int ++main () ++{ ++return dld_link (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dld_dld_link=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dld_dld_link=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 ++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } ++if test $ac_cv_lib_dld_dld_link = yes; then ++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ;; ++ esac ++ ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ else ++ enable_dlopen=no ++ fi ++ ++ case $lt_cv_dlopen in ++ dlopen) ++ save_CPPFLAGS="$CPPFLAGS" ++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++ ++ save_LDFLAGS="$LDFLAGS" ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ ++ save_LIBS="$LIBS" ++ LIBS="$lt_cv_dlopen_libs $LIBS" ++ ++ { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 ++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } ++if test "${lt_cv_dlopen_self+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext <<_LT_EOF ++#line __oline__ "configure" ++#include "confdefs.h" ++ ++#if HAVE_DLFCN_H ++#include ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif ++ ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ exit (status); ++} ++_LT_EOF ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; ++ esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self=no ++ fi ++fi ++rm -fr conftest* ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 ++echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } ++ ++ if test "x$lt_cv_dlopen_self" = xyes; then ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" ++ { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 ++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } ++if test "${lt_cv_dlopen_self_static+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self_static=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext <<_LT_EOF ++#line __oline__ "configure" ++#include "confdefs.h" ++ ++#if HAVE_DLFCN_H ++#include ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif ++ ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ exit (status); ++} ++_LT_EOF ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; ++ esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self_static=no ++ fi ++fi ++rm -fr conftest* ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 ++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } ++ fi ++ ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ ;; ++ esac ++ ++ case $lt_cv_dlopen_self in ++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; ++ *) enable_dlopen_self=unknown ;; ++ esac ++ ++ case $lt_cv_dlopen_self_static in ++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; ++ *) enable_dlopen_self_static=unknown ;; ++ esac ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++striplib= ++old_striplib= ++{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 ++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } ++if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then ++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" ++ test -z "$striplib" && striplib="$STRIP --strip-unneeded" ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++else ++# FIXME - insert some real tests, host_os isn't really good enough ++ case $host_os in ++ darwin*) ++ if test -n "$STRIP" ; then ++ striplib="$STRIP -x" ++ old_striplib="$STRIP -S" ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ fi ++ ;; ++ *) ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ ;; ++ esac ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ # Report which library types will actually be built ++ { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 ++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } ++ { echo "$as_me:$LINENO: result: $can_build_shared" >&5 ++echo "${ECHO_T}$can_build_shared" >&6; } ++ ++ { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 ++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } ++ test "$can_build_shared" = "no" && enable_shared=no ++ ++ # On AIX, shared libraries and static libraries use the same namespace, and ++ # are all built from PIC. ++ case $host_os in ++ aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' ++ fi ++ ;; ++ ++ aix[4-9]*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++ esac ++ { echo "$as_me:$LINENO: result: $enable_shared" >&5 ++echo "${ECHO_T}$enable_shared" >&6; } ++ ++ { echo "$as_me:$LINENO: checking whether to build static libraries" >&5 ++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } ++ # Make sure either enable_shared or enable_static is yes. ++ test "$enable_shared" = yes || enable_static=yes ++ { echo "$as_me:$LINENO: result: $enable_static" >&5 ++echo "${ECHO_T}$enable_static" >&6; } ++ ++ ++ ++ ++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 ++ ++CC="$lt_save_CC" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ac_config_commands="$ac_config_commands libtool" ++ ++ ++ ++ ++# Only expand once: ++ ++ ++# Extract the first word of "ar", so it can be a program name with args. ++set dummy ar; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_path_AR+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $AR in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_AR="$AR" # Let the user override the test with a path. ++ ;; ++ *) ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++as_dummy="$PATH:/usr/ccs/bin" ++for as_dir in $as_dummy ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++ test -z "$ac_cv_path_AR" && ac_cv_path_AR="/usr/bin/ar" ++ ;; ++esac ++fi ++AR=$ac_cv_path_AR ++if test -n "$AR"; then ++ { echo "$as_me:$LINENO: result: $AR" >&5 ++echo "${ECHO_T}$AR" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ ++# Options ++ ++ ++ ++# Check whether --with-tightvnc-filetransfer was given. ++if test "${with_tightvnc_filetransfer+set}" = set; then ++ withval=$with_tightvnc_filetransfer; ++else ++ with_tightvnc_filetransfer=yes ++fi ++ ++# AC_DEFINE moved to after libpthread check. ++ ++ ++ ++ ++# Check whether --with-24bpp was given. ++if test "${with_24bpp+set}" = set; then ++ withval=$with_24bpp; ++else ++ with_24bpp=yes ++fi ++ ++if test "x$with_24bpp" = "xyes"; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define ALLOW24BPP 1 ++_ACEOF ++ ++fi ++ ++ ++ ++# Check whether --with-ffmpeg was given. ++if test "${with_ffmpeg+set}" = set; then ++ withval=$with_ffmpeg; ++fi ++ ++ ++ if test ! -z "$with_ffmpeg"; then ++ WITH_FFMPEG_TRUE= ++ WITH_FFMPEG_FALSE='#' ++else ++ WITH_FFMPEG_TRUE='#' ++ WITH_FFMPEG_FALSE= ++fi ++ ++if test ! -z "$with_ffmpeg"; then ++ { echo "$as_me:$LINENO: checking for lame_init in -lmp3lame" >&5 ++echo $ECHO_N "checking for lame_init in -lmp3lame... $ECHO_C" >&6; } ++if test "${ac_cv_lib_mp3lame_lame_init+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lmp3lame $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char lame_init (); ++int ++main () ++{ ++return lame_init (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_mp3lame_lame_init=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_mp3lame_lame_init=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_mp3lame_lame_init" >&5 ++echo "${ECHO_T}$ac_cv_lib_mp3lame_lame_init" >&6; } ++if test $ac_cv_lib_mp3lame_lame_init = yes; then ++ HAVE_MP3LAME="true" ++else ++ HAVE_MP3LAME="false" ++fi ++ ++fi ++ if test "$HAVE_MP3LAME" = "true"; then ++ HAVE_MP3LAME_TRUE= ++ HAVE_MP3LAME_FALSE='#' ++else ++ HAVE_MP3LAME_TRUE='#' ++ HAVE_MP3LAME_FALSE= ++fi ++ ++ ++# Seem to need this dummy here to induce the 'checking for egrep... grep -E', etc. ++# before it seemed to be inside the with_jpeg conditional. ++if test "${ac_cv_header_thenonexistentheader_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for thenonexistentheader.h" >&5 ++echo $ECHO_N "checking for thenonexistentheader.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_thenonexistentheader_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_thenonexistentheader_h" >&5 ++echo "${ECHO_T}$ac_cv_header_thenonexistentheader_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking thenonexistentheader.h usability" >&5 ++echo $ECHO_N "checking thenonexistentheader.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking thenonexistentheader.h presence" >&5 ++echo $ECHO_N "checking thenonexistentheader.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for thenonexistentheader.h" >&5 ++echo $ECHO_N "checking for thenonexistentheader.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_thenonexistentheader_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_thenonexistentheader_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_thenonexistentheader_h" >&5 ++echo "${ECHO_T}$ac_cv_header_thenonexistentheader_h" >&6; } ++ ++fi ++if test $ac_cv_header_thenonexistentheader_h = yes; then ++ HAVE_THENONEXISTENTHEADER_H="true" ++fi ++ ++ ++ ++# Checks for X libraries ++HAVE_X="false" ++{ echo "$as_me:$LINENO: checking for X" >&5 ++echo $ECHO_N "checking for X... $ECHO_C" >&6; } ++ ++ ++# Check whether --with-x was given. ++if test "${with_x+set}" = set; then ++ withval=$with_x; ++fi ++ ++# $have_x is `yes', `no', `disabled', or empty when we do not yet know. ++if test "x$with_x" = xno; then ++ # The user explicitly disabled X. ++ have_x=disabled ++else ++ case $x_includes,$x_libraries in #( ++ *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5 ++echo "$as_me: error: Cannot use X directory names containing '" >&2;} ++ { (exit 1); exit 1; }; };; #( ++ *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # One or both of the vars are not set, and there is no cached value. ++ac_x_includes=no ac_x_libraries=no ++# Standard set of common directories for X headers. ++# Check X11 before X11Rn because it is often a symlink to the current release. ++ac_x_header_dirs='' ++ ++if test "$ac_x_includes" = no; then ++ # Guess where to find include files, by looking for Xlib.h. ++ # First, try using that file with no special directory specified. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ # We can compile using X headers with no special include directory. ++ac_x_includes= ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ for ac_dir in $ac_x_header_dirs; do ++ if test -r "$ac_dir/X11/Xlib.h"; then ++ ac_x_includes=$ac_dir ++ break ++ fi ++done ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++fi # $ac_x_includes = no ++ ++if test "$ac_x_libraries" = no; then ++ # Check for the libraries. ++ # See if we find them without any special options. ++ # Don't add to $LIBS permanently. ++ ac_save_LIBS=$LIBS ++ LIBS="-lX11 $LIBS" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++int ++main () ++{ ++XrmInitialize () ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ LIBS=$ac_save_LIBS ++# We can link X programs with no special library path. ++ac_x_libraries= ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ LIBS=$ac_save_LIBS ++for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` ++do ++ # Don't even attempt the hair of trying to link an X program! ++ for ac_extension in a so sl; do ++ if test -r "$ac_dir/libX11.$ac_extension"; then ++ ac_x_libraries=$ac_dir ++ break 2 ++ fi ++ done ++done ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi # $ac_x_libraries = no ++ ++case $ac_x_includes,$ac_x_libraries in #( ++ no,* | *,no | *\'*) ++ # Didn't find X, or a directory has "'" in its name. ++ ac_cv_have_x="have_x=no";; #( ++ *) ++ # Record where we found X for the cache. ++ ac_cv_have_x="have_x=yes\ ++ ac_x_includes='$ac_x_includes'\ ++ ac_x_libraries='$ac_x_libraries'" ++esac ++fi ++;; #( ++ *) have_x=yes;; ++ esac ++ eval "$ac_cv_have_x" ++fi # $with_x != no ++ ++if test "$have_x" != yes; then ++ { echo "$as_me:$LINENO: result: $have_x" >&5 ++echo "${ECHO_T}$have_x" >&6; } ++ no_x=yes ++else ++ # If each of the values was on the command line, it overrides each guess. ++ test "x$x_includes" = xNONE && x_includes=$ac_x_includes ++ test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries ++ # Update the cache value to reflect the command line values. ++ ac_cv_have_x="have_x=yes\ ++ ac_x_includes='$x_includes'\ ++ ac_x_libraries='$x_libraries'" ++ { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 ++echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; } ++fi ++ ++if test "$no_x" = yes; then ++ # Not all programs may use this symbol, but it does not hurt to define it. ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define X_DISPLAY_MISSING 1 ++_ACEOF ++ ++ X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= ++else ++ if test -n "$x_includes"; then ++ X_CFLAGS="$X_CFLAGS -I$x_includes" ++ fi ++ ++ # It would also be nice to do this for all -L options, not just this one. ++ if test -n "$x_libraries"; then ++ X_LIBS="$X_LIBS -L$x_libraries" ++ # For Solaris; some versions of Sun CC require a space after -R and ++ # others require no space. Words are not sufficient . . . . ++ { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 ++echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; } ++ ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" ++ ac_xsave_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ X_LIBS="$X_LIBS -R$x_libraries" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ LIBS="$ac_xsave_LIBS -R $x_libraries" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ X_LIBS="$X_LIBS -R $x_libraries" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ { echo "$as_me:$LINENO: result: neither works" >&5 ++echo "${ECHO_T}neither works" >&6; } ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ ac_c_werror_flag=$ac_xsave_c_werror_flag ++ LIBS=$ac_xsave_LIBS ++ fi ++ ++ # Check for system-dependent libraries X programs must link with. ++ # Do this before checking for the system-independent R6 libraries ++ # (-lICE), since we may need -lsocket or whatever for X linking. ++ ++ if test "$ISC" = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" ++ else ++ # Martyn Johnson says this is needed for Ultrix, if the X ++ # libraries were built with DECnet support. And Karl Berry says ++ # the Alpha needs dnet_stub (dnet does not exist). ++ ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XOpenDisplay (); ++int ++main () ++{ ++return XOpenDisplay (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 ++echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldnet $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dnet_ntoa (); ++int ++main () ++{ ++return dnet_ntoa (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dnet_dnet_ntoa=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dnet_dnet_ntoa=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 ++echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; } ++if test $ac_cv_lib_dnet_dnet_ntoa = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" ++fi ++ ++ if test $ac_cv_lib_dnet_dnet_ntoa = no; then ++ { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 ++echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldnet_stub $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dnet_ntoa (); ++int ++main () ++{ ++return dnet_ntoa (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dnet_stub_dnet_ntoa=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dnet_stub_dnet_ntoa=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 ++echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } ++if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" ++fi ++ ++ fi ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ LIBS="$ac_xsave_LIBS" ++ ++ # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, ++ # to get the SysV transport functions. ++ # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) ++ # needs -lnsl. ++ # The nsl library prevents programs from opening the X display ++ # on Irix 5.2, according to T.E. Dickey. ++ # The functions gethostbyname, getservbyname, and inet_addr are ++ # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. ++ { echo "$as_me:$LINENO: checking for gethostbyname" >&5 ++echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; } ++if test "${ac_cv_func_gethostbyname+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define gethostbyname to an innocuous variant, in case declares gethostbyname. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define gethostbyname innocuous_gethostbyname ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char gethostbyname (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef gethostbyname ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char gethostbyname (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_gethostbyname || defined __stub___gethostbyname ++choke me ++#endif ++ ++int ++main () ++{ ++return gethostbyname (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_gethostbyname=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_gethostbyname=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; } ++ ++ if test $ac_cv_func_gethostbyname = no; then ++ { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 ++echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lnsl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char gethostbyname (); ++int ++main () ++{ ++return gethostbyname (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_nsl_gethostbyname=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_nsl_gethostbyname=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; } ++if test $ac_cv_lib_nsl_gethostbyname = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" ++fi ++ ++ if test $ac_cv_lib_nsl_gethostbyname = no; then ++ { echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 ++echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; } ++if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lbsd $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char gethostbyname (); ++int ++main () ++{ ++return gethostbyname (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_bsd_gethostbyname=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_bsd_gethostbyname=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; } ++if test $ac_cv_lib_bsd_gethostbyname = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" ++fi ++ ++ fi ++ fi ++ ++ # lieder@skyler.mavd.honeywell.com says without -lsocket, ++ # socket/setsockopt and other routines are undefined under SCO ODT ++ # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary ++ # on later versions), says Simon Leinen: it contains gethostby* ++ # variants that don't use the name server (or something). -lsocket ++ # must be given before -lnsl if both are needed. We assume that ++ # if connect needs -lnsl, so does gethostbyname. ++ { echo "$as_me:$LINENO: checking for connect" >&5 ++echo $ECHO_N "checking for connect... $ECHO_C" >&6; } ++if test "${ac_cv_func_connect+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define connect to an innocuous variant, in case declares connect. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define connect innocuous_connect ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char connect (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef connect ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char connect (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_connect || defined __stub___connect ++choke me ++#endif ++ ++int ++main () ++{ ++return connect (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_connect=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_connect=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 ++echo "${ECHO_T}$ac_cv_func_connect" >&6; } ++ ++ if test $ac_cv_func_connect = no; then ++ { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 ++echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; } ++if test "${ac_cv_lib_socket_connect+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsocket $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char connect (); ++int ++main () ++{ ++return connect (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_socket_connect=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_socket_connect=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 ++echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; } ++if test $ac_cv_lib_socket_connect = yes; then ++ X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" ++fi ++ ++ fi ++ ++ # Guillermo Gomez says -lposix is necessary on A/UX. ++ { echo "$as_me:$LINENO: checking for remove" >&5 ++echo $ECHO_N "checking for remove... $ECHO_C" >&6; } ++if test "${ac_cv_func_remove+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define remove to an innocuous variant, in case declares remove. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define remove innocuous_remove ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char remove (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef remove ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char remove (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_remove || defined __stub___remove ++choke me ++#endif ++ ++int ++main () ++{ ++return remove (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_remove=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_remove=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 ++echo "${ECHO_T}$ac_cv_func_remove" >&6; } ++ ++ if test $ac_cv_func_remove = no; then ++ { echo "$as_me:$LINENO: checking for remove in -lposix" >&5 ++echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; } ++if test "${ac_cv_lib_posix_remove+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lposix $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char remove (); ++int ++main () ++{ ++return remove (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_posix_remove=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_posix_remove=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 ++echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; } ++if test $ac_cv_lib_posix_remove = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" ++fi ++ ++ fi ++ ++ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. ++ { echo "$as_me:$LINENO: checking for shmat" >&5 ++echo $ECHO_N "checking for shmat... $ECHO_C" >&6; } ++if test "${ac_cv_func_shmat+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define shmat to an innocuous variant, in case declares shmat. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define shmat innocuous_shmat ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char shmat (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef shmat ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shmat (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_shmat || defined __stub___shmat ++choke me ++#endif ++ ++int ++main () ++{ ++return shmat (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_shmat=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_shmat=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 ++echo "${ECHO_T}$ac_cv_func_shmat" >&6; } ++ ++ if test $ac_cv_func_shmat = no; then ++ { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 ++echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; } ++if test "${ac_cv_lib_ipc_shmat+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lipc $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shmat (); ++int ++main () ++{ ++return shmat (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_ipc_shmat=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_ipc_shmat=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 ++echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; } ++if test $ac_cv_lib_ipc_shmat = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" ++fi ++ ++ fi ++ fi ++ ++ # Check for libraries that X11R6 Xt/Xaw programs need. ++ ac_save_LDFLAGS=$LDFLAGS ++ test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" ++ # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to ++ # check for ICE first), but we must link in the order -lSM -lICE or ++ # we get undefined symbols. So assume we have SM if we have ICE. ++ # These have to be linked with before -lX11, unlike the other ++ # libraries we check for below, so use a different variable. ++ # John Interrante, Karl Berry ++ { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 ++echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; } ++if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lICE $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char IceConnectionNumber (); ++int ++main () ++{ ++return IceConnectionNumber (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_ICE_IceConnectionNumber=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_ICE_IceConnectionNumber=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 ++echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; } ++if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then ++ X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" ++fi ++ ++ LDFLAGS=$ac_save_LDFLAGS ++ ++fi ++ ++ ++ ++ ++# See if we are to build x11vnc: ++ ++ ++ ++# Check whether --with-system-libvncserver was given. ++if test "${with_system_libvncserver+set}" = set; then ++ withval=$with_system_libvncserver; ++fi ++ ++ ++# Check whether --with-x11vnc was given. ++if test "${with_x11vnc+set}" = set; then ++ withval=$with_x11vnc; ++fi ++ ++ ++if test ! -z "$with_x11vnc" -a "$with_x11vnc" = "yes"; then ++ build_x11vnc="yes" ++elif test "$PACKAGE_NAME" = "x11vnc"; then ++ build_x11vnc="yes" ++else ++ build_x11vnc="no" ++fi ++ ++# x11vnc only: ++if test "$build_x11vnc" = "yes"; then ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --with-xkeyboard was given. ++if test "${with_xkeyboard+set}" = set; then ++ withval=$with_xkeyboard; ++fi ++ ++ ++# Check whether --with-xinerama was given. ++if test "${with_xinerama+set}" = set; then ++ withval=$with_xinerama; ++fi ++ ++ ++# Check whether --with-xrandr was given. ++if test "${with_xrandr+set}" = set; then ++ withval=$with_xrandr; ++fi ++ ++ ++# Check whether --with-xfixes was given. ++if test "${with_xfixes+set}" = set; then ++ withval=$with_xfixes; ++fi ++ ++ ++# Check whether --with-xdamage was given. ++if test "${with_xdamage+set}" = set; then ++ withval=$with_xdamage; ++fi ++ ++ ++# Check whether --with-xtrap was given. ++if test "${with_xtrap+set}" = set; then ++ withval=$with_xtrap; ++fi ++ ++ ++# Check whether --with-xrecord was given. ++if test "${with_xrecord+set}" = set; then ++ withval=$with_xrecord; ++fi ++ ++ ++# Check whether --with-fbpm was given. ++if test "${with_fbpm+set}" = set; then ++ withval=$with_fbpm; ++fi ++ ++ ++# Check whether --with-dpms was given. ++if test "${with_dpms+set}" = set; then ++ withval=$with_dpms; ++fi ++ ++ ++# Check whether --with-v4l was given. ++if test "${with_v4l+set}" = set; then ++ withval=$with_v4l; ++fi ++ ++ ++# Check whether --with-fbdev was given. ++if test "${with_fbdev+set}" = set; then ++ withval=$with_fbdev; ++fi ++ ++ ++# Check whether --with-uinput was given. ++if test "${with_uinput+set}" = set; then ++ withval=$with_uinput; ++fi ++ ++ ++# Check whether --with-macosx-native was given. ++if test "${with_macosx_native+set}" = set; then ++ withval=$with_macosx_native; ++fi ++ ++ ++fi ++# end x11vnc only. ++ ++if test "x$with_x" = "xno"; then ++ HAVE_X="false" ++elif test "$X_CFLAGS" != "-DX_DISPLAY_MISSING"; then ++ { echo "$as_me:$LINENO: checking for XGetImage in -lX11" >&5 ++echo $ECHO_N "checking for XGetImage in -lX11... $ECHO_C" >&6; } ++if test "${ac_cv_lib_X11_XGetImage+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lX11 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XGetImage (); ++int ++main () ++{ ++return XGetImage (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_X11_XGetImage=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_X11_XGetImage=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XGetImage" >&5 ++echo "${ECHO_T}$ac_cv_lib_X11_XGetImage" >&6; } ++if test $ac_cv_lib_X11_XGetImage = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_X11 1 ++_ACEOF ++ HAVE_X="true" ++else ++ HAVE_X="false" ++fi ++ ++ ++ # x11vnc only: ++ if test $HAVE_X = "true" -a "$build_x11vnc" = "yes"; then ++ X_PRELIBS="$X_PRELIBS -lXext" ++ ++ { echo "$as_me:$LINENO: checking for XShmGetImage in -lXext" >&5 ++echo $ECHO_N "checking for XShmGetImage in -lXext... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xext_XShmGetImage+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XShmGetImage (); ++int ++main () ++{ ++return XShmGetImage (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xext_XShmGetImage=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xext_XShmGetImage=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XShmGetImage" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xext_XShmGetImage" >&6; } ++if test $ac_cv_lib_Xext_XShmGetImage = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_XSHM 1 ++_ACEOF ++ ++fi ++ ++ ++ { echo "$as_me:$LINENO: checking for XReadScreen in -lXext" >&5 ++echo $ECHO_N "checking for XReadScreen in -lXext... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xext_XReadScreen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XReadScreen (); ++int ++main () ++{ ++return XReadScreen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xext_XReadScreen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xext_XReadScreen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XReadScreen" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xext_XReadScreen" >&6; } ++if test $ac_cv_lib_Xext_XReadScreen = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_SOLARIS_XREADSCREEN 1 ++_ACEOF ++ ++fi ++ ++ ++ { echo "$as_me:$LINENO: checking for X11/extensions/readdisplay.h" >&5 ++echo $ECHO_N "checking for X11/extensions/readdisplay.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_X11_extensions_readdisplay_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_X11_extensions_readdisplay_h=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_X11_extensions_readdisplay_h=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_readdisplay_h" >&5 ++echo "${ECHO_T}$ac_cv_header_X11_extensions_readdisplay_h" >&6; } ++if test $ac_cv_header_X11_extensions_readdisplay_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_IRIX_XREADDISPLAY 1 ++_ACEOF ++ ++fi ++ ++ ++ ++ if test "x$with_fbpm" != "xno"; then ++ { echo "$as_me:$LINENO: checking for FBPMForceLevel in -lXext" >&5 ++echo $ECHO_N "checking for FBPMForceLevel in -lXext... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xext_FBPMForceLevel+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char FBPMForceLevel (); ++int ++main () ++{ ++return FBPMForceLevel (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xext_FBPMForceLevel=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xext_FBPMForceLevel=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_FBPMForceLevel" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xext_FBPMForceLevel" >&6; } ++if test $ac_cv_lib_Xext_FBPMForceLevel = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_FBPM 1 ++_ACEOF ++ ++fi ++ ++ fi ++ ++ if test "x$with_dpms" != "xno"; then ++ { echo "$as_me:$LINENO: checking for DPMSForceLevel in -lXext" >&5 ++echo $ECHO_N "checking for DPMSForceLevel in -lXext... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xext_DPMSForceLevel+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char DPMSForceLevel (); ++int ++main () ++{ ++return DPMSForceLevel (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xext_DPMSForceLevel=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xext_DPMSForceLevel=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_DPMSForceLevel" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xext_DPMSForceLevel" >&6; } ++if test $ac_cv_lib_Xext_DPMSForceLevel = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_DPMS 1 ++_ACEOF ++ ++fi ++ ++ fi ++ ++ { echo "$as_me:$LINENO: checking for XTestGrabControl in -lXtst" >&5 ++echo $ECHO_N "checking for XTestGrabControl in -lXtst... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xtst_XTestGrabControl+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXtst $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XTestGrabControl (); ++int ++main () ++{ ++return XTestGrabControl (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xtst_XTestGrabControl=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xtst_XTestGrabControl=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_XTestGrabControl" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xtst_XTestGrabControl" >&6; } ++if test $ac_cv_lib_Xtst_XTestGrabControl = yes; then ++ X_PRELIBS="-lXtst $X_PRELIBS" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_XTESTGRABCONTROL 1 ++_ACEOF ++ HAVE_XTESTGRABCONTROL="true" ++fi ++ ++ ++ { echo "$as_me:$LINENO: checking for XTestFakeKeyEvent in -lXtst" >&5 ++echo $ECHO_N "checking for XTestFakeKeyEvent in -lXtst... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xtst_XTestFakeKeyEvent+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXtst $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XTestFakeKeyEvent (); ++int ++main () ++{ ++return XTestFakeKeyEvent (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xtst_XTestFakeKeyEvent=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xtst_XTestFakeKeyEvent=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_XTestFakeKeyEvent" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xtst_XTestFakeKeyEvent" >&6; } ++if test $ac_cv_lib_Xtst_XTestFakeKeyEvent = yes; then ++ X_PRELIBS="-lXtst $X_PRELIBS" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_XTEST 1 ++_ACEOF ++ HAVE_XTEST="true" ++fi ++ ++ ++ if test "x$with_xrecord" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XRecordEnableContextAsync in -lXtst" >&5 ++echo $ECHO_N "checking for XRecordEnableContextAsync in -lXtst... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xtst_XRecordEnableContextAsync+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXtst $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XRecordEnableContextAsync (); ++int ++main () ++{ ++return XRecordEnableContextAsync (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xtst_XRecordEnableContextAsync=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xtst_XRecordEnableContextAsync=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_XRecordEnableContextAsync" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xtst_XRecordEnableContextAsync" >&6; } ++if test $ac_cv_lib_Xtst_XRecordEnableContextAsync = yes; then ++ X_PRELIBS="-lXtst $X_PRELIBS" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_RECORD 1 ++_ACEOF ++ ++fi ++ ++ fi ++ ++ # we use XTRAP on X11R5, or user can set X11VNC_USE_XTRAP ++ if test "x$with_xtrap" != "xno"; then ++ if test ! -z "$X11VNC_USE_XTRAP" -o -z "$HAVE_XTESTGRABCONTROL"; then ++ { echo "$as_me:$LINENO: checking for XETrapSetGrabServer in -lXTrap" >&5 ++echo $ECHO_N "checking for XETrapSetGrabServer in -lXTrap... $ECHO_C" >&6; } ++if test "${ac_cv_lib_XTrap_XETrapSetGrabServer+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXTrap $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XETrapSetGrabServer (); ++int ++main () ++{ ++return XETrapSetGrabServer (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_XTrap_XETrapSetGrabServer=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_XTrap_XETrapSetGrabServer=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_XTrap_XETrapSetGrabServer" >&5 ++echo "${ECHO_T}$ac_cv_lib_XTrap_XETrapSetGrabServer" >&6; } ++if test $ac_cv_lib_XTrap_XETrapSetGrabServer = yes; then ++ X_PRELIBS="$X_PRELIBS -lXTrap" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBXTRAP 1 ++_ACEOF ++ ++fi ++ ++ # tru64 uses libXETrap.so ++ { echo "$as_me:$LINENO: checking for XETrapSetGrabServer in -lXETrap" >&5 ++echo $ECHO_N "checking for XETrapSetGrabServer in -lXETrap... $ECHO_C" >&6; } ++if test "${ac_cv_lib_XETrap_XETrapSetGrabServer+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXETrap $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XETrapSetGrabServer (); ++int ++main () ++{ ++return XETrapSetGrabServer (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_XETrap_XETrapSetGrabServer=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_XETrap_XETrapSetGrabServer=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_XETrap_XETrapSetGrabServer" >&5 ++echo "${ECHO_T}$ac_cv_lib_XETrap_XETrapSetGrabServer" >&6; } ++if test $ac_cv_lib_XETrap_XETrapSetGrabServer = yes; then ++ X_PRELIBS="$X_PRELIBS -lXETrap" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBXTRAP 1 ++_ACEOF ++ ++fi ++ ++ fi ++ fi ++ ++ if test "x$with_xkeyboard" != "xno"; then ++ saved_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$CPPFLAGS $X_CFLAGS" ++ { echo "$as_me:$LINENO: checking for X11/XKBlib.h" >&5 ++echo $ECHO_N "checking for X11/XKBlib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_X11_XKBlib_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_X11_XKBlib_h=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_X11_XKBlib_h=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_XKBlib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_X11_XKBlib_h" >&6; } ++if test $ac_cv_header_X11_XKBlib_h = yes; then ++ HAVE_XKBLIB_H="true" ++else ++ HAVE_XKBLIB_H="false" ++fi ++ ++ ++ CPPFLAGS="$saved_CPPFLAGS" ++ if test $HAVE_XKBLIB_H = "true"; then ++ { echo "$as_me:$LINENO: checking for XkbSelectEvents in -lX11" >&5 ++echo $ECHO_N "checking for XkbSelectEvents in -lX11... $ECHO_C" >&6; } ++if test "${ac_cv_lib_X11_XkbSelectEvents+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lX11 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XkbSelectEvents (); ++int ++main () ++{ ++return XkbSelectEvents (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_X11_XkbSelectEvents=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_X11_XkbSelectEvents=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XkbSelectEvents" >&5 ++echo "${ECHO_T}$ac_cv_lib_X11_XkbSelectEvents" >&6; } ++if test $ac_cv_lib_X11_XkbSelectEvents = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_XKEYBOARD 1 ++_ACEOF ++ ++fi ++ ++ fi ++ fi ++ ++ if test "x$with_xinerama" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XineramaQueryScreens in -lXinerama" >&5 ++echo $ECHO_N "checking for XineramaQueryScreens in -lXinerama... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xinerama_XineramaQueryScreens+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXinerama $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XineramaQueryScreens (); ++int ++main () ++{ ++return XineramaQueryScreens (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xinerama_XineramaQueryScreens=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xinerama_XineramaQueryScreens=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xinerama_XineramaQueryScreens" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xinerama_XineramaQueryScreens" >&6; } ++if test $ac_cv_lib_Xinerama_XineramaQueryScreens = yes; then ++ X_PRELIBS="$X_PRELIBS -lXinerama" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBXINERAMA 1 ++_ACEOF ++ ++fi ++ ++ fi ++ ++ if test "x$with_xrandr" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XRRSelectInput in -lXrandr" >&5 ++echo $ECHO_N "checking for XRRSelectInput in -lXrandr... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xrandr_XRRSelectInput+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXrandr $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XRRSelectInput (); ++int ++main () ++{ ++return XRRSelectInput (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xrandr_XRRSelectInput=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xrandr_XRRSelectInput=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xrandr_XRRSelectInput" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xrandr_XRRSelectInput" >&6; } ++if test $ac_cv_lib_Xrandr_XRRSelectInput = yes; then ++ X_PRELIBS="$X_PRELIBS -lXrandr" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBXRANDR 1 ++_ACEOF ++ ++fi ++ ++ fi ++ ++ if test "x$with_xfixes" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XFixesGetCursorImage in -lXfixes" >&5 ++echo $ECHO_N "checking for XFixesGetCursorImage in -lXfixes... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xfixes_XFixesGetCursorImage+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXfixes $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XFixesGetCursorImage (); ++int ++main () ++{ ++return XFixesGetCursorImage (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xfixes_XFixesGetCursorImage=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xfixes_XFixesGetCursorImage=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xfixes_XFixesGetCursorImage" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xfixes_XFixesGetCursorImage" >&6; } ++if test $ac_cv_lib_Xfixes_XFixesGetCursorImage = yes; then ++ X_PRELIBS="$X_PRELIBS -lXfixes" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBXFIXES 1 ++_ACEOF ++ HAVE_LIBXFIXES="true" ++fi ++ ++ fi ++ ++ if test "x$with_xdamage" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XDamageQueryExtension in -lXdamage" >&5 ++echo $ECHO_N "checking for XDamageQueryExtension in -lXdamage... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xdamage_XDamageQueryExtension+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXdamage $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XDamageQueryExtension (); ++int ++main () ++{ ++return XDamageQueryExtension (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xdamage_XDamageQueryExtension=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xdamage_XDamageQueryExtension=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xdamage_XDamageQueryExtension" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xdamage_XDamageQueryExtension" >&6; } ++if test $ac_cv_lib_Xdamage_XDamageQueryExtension = yes; then ++ X_PRELIBS="$X_PRELIBS -lXdamage" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBXDAMAGE 1 ++_ACEOF ++ HAVE_LIBXDAMAGE="true" ++fi ++ ++ fi ++ ++ if test ! -z "$HAVE_LIBXFIXES" -o ! -z "$HAVE_LIBXDAMAGE"; then ++ # need /usr/sfw/lib in RPATH for Solaris 10 and later ++ case `(uname -sr) 2>/dev/null` in ++ "SunOS 5"*) X_EXTRA_LIBS="$X_EXTRA_LIBS -R/usr/sfw/lib" ;; ++ esac ++ fi ++ ++ X_LIBS="$X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS" ++ fi ++ # end x11vnc only. ++fi ++ ++ ++ if test $HAVE_X != "false"; then ++ HAVE_X_TRUE= ++ HAVE_X_FALSE='#' ++else ++ HAVE_X_TRUE='#' ++ HAVE_X_FALSE= ++fi ++ ++ ++# x11vnc only: ++if test "$build_x11vnc" = "yes"; then ++ ++if test "x$HAVE_X" = "xfalse" -a "x$with_x" != "xno"; then ++ { { echo "$as_me:$LINENO: error: ++========================================================================== ++A working X window system build environment is required to build x11vnc. ++Make sure any required X development packages are installed. If they are ++installed in non-standard locations, one can use the --x-includes=DIR ++and --x-libraries=DIR configure options or set the CPPFLAGS and LDFLAGS ++environment variables to indicate where the X window system header files ++and libraries may be found. On 64+32 bit machines you may need to point ++to lib64 or lib32 directories to pick up the correct word size. ++ ++If you want to build x11vnc without X support (e.g. for -rawfb use only ++or for native Mac OS X), specify the --without-x configure option. ++========================================================================== ++" >&5 ++echo "$as_me: error: ++========================================================================== ++A working X window system build environment is required to build x11vnc. ++Make sure any required X development packages are installed. If they are ++installed in non-standard locations, one can use the --x-includes=DIR ++and --x-libraries=DIR configure options or set the CPPFLAGS and LDFLAGS ++environment variables to indicate where the X window system header files ++and libraries may be found. On 64+32 bit machines you may need to point ++to lib64 or lib32 directories to pick up the correct word size. ++ ++If you want to build x11vnc without X support (e.g. for -rawfb use only ++or for native Mac OS X), specify the --without-x configure option. ++========================================================================== ++" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++if test "x$HAVE_X" = "xtrue" -a "x$HAVE_XTEST" != "xtrue"; then ++ { echo "$as_me:$LINENO: WARNING: ++========================================================================== ++A working build environment for the XTEST extension was not found (libXtst). ++An x11vnc built this way will be only barely usable. You will be able to ++move the mouse but not click or type. There can also be deadlocks if an ++application grabs the X server. ++ ++It is recommended that you install the necessary development packages ++for XTEST (perhaps it is named something like libxtst-dev) and run ++configure again. ++========================================================================== ++" >&5 ++echo "$as_me: WARNING: ++========================================================================== ++A working build environment for the XTEST extension was not found (libXtst). ++An x11vnc built this way will be only barely usable. You will be able to ++move the mouse but not click or type. There can also be deadlocks if an ++application grabs the X server. ++ ++It is recommended that you install the necessary development packages ++for XTEST (perhaps it is named something like libxtst-dev) and run ++configure again. ++========================================================================== ++" >&2;} ++fi ++ ++ ++ ++ ++# Check whether --with-crypt was given. ++if test "${with_crypt+set}" = set; then ++ withval=$with_crypt; ++fi ++ ++if test "x$with_crypt" != "xno"; then ++ ++for ac_func in crypt ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ HAVE_LIBC_CRYPT="true" ++fi ++done ++ ++ if test -z "$HAVE_LIBC_CRYPT"; then ++ { echo "$as_me:$LINENO: checking for crypt in -lcrypt" >&5 ++echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6; } ++if test "${ac_cv_lib_crypt_crypt+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lcrypt $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char crypt (); ++int ++main () ++{ ++return crypt (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_crypt_crypt=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_crypt_crypt=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5 ++echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6; } ++if test $ac_cv_lib_crypt_crypt = yes; then ++ CRYPT_LIBS="-lcrypt" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBCRYPT 1 ++_ACEOF ++ ++fi ++ ++ fi ++fi ++ ++ ++# some OS's need both -lssl and -lcrypto on link line: ++ ++ ++ ++# Check whether --with-crypto was given. ++if test "${with_crypto+set}" = set; then ++ withval=$with_crypto; ++fi ++ ++ ++ ++ ++ ++# Check whether --with-ssl was given. ++if test "${with_ssl+set}" = set; then ++ withval=$with_ssl; ++fi ++ ++ ++if test "x$with_crypto" != "xno" -a "x$with_ssl" != "xno"; then ++ { echo "$as_me:$LINENO: checking for RAND_file_name in -lcrypto" >&5 ++echo $ECHO_N "checking for RAND_file_name in -lcrypto... $ECHO_C" >&6; } ++if test "${ac_cv_lib_crypto_RAND_file_name+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lcrypto $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char RAND_file_name (); ++int ++main () ++{ ++return RAND_file_name (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_crypto_RAND_file_name=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_crypto_RAND_file_name=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_RAND_file_name" >&5 ++echo "${ECHO_T}$ac_cv_lib_crypto_RAND_file_name" >&6; } ++if test $ac_cv_lib_crypto_RAND_file_name = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBCRYPTO 1 ++_ACEOF ++ HAVE_LIBCRYPTO="true" ++fi ++ ++fi ++ ++if test "x$with_ssl" != "xno"; then ++ if test "x$HAVE_LIBCRYPTO" = "xtrue"; then ++ { echo "$as_me:$LINENO: checking for SSL_library_init in -lssl" >&5 ++echo $ECHO_N "checking for SSL_library_init in -lssl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_ssl_SSL_library_init+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lssl -lcrypto $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char SSL_library_init (); ++int ++main () ++{ ++return SSL_library_init (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_ssl_SSL_library_init=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_ssl_SSL_library_init=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_library_init" >&5 ++echo "${ECHO_T}$ac_cv_lib_ssl_SSL_library_init" >&6; } ++if test $ac_cv_lib_ssl_SSL_library_init = yes; then ++ SSL_LIBS="-lssl -lcrypto" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBSSL 1 ++_ACEOF ++ HAVE_LIBSSL="true" ++fi ++ ++ else ++ { echo "$as_me:$LINENO: checking for SSL_library_init in -lssl" >&5 ++echo $ECHO_N "checking for SSL_library_init in -lssl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_ssl_SSL_library_init+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lssl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char SSL_library_init (); ++int ++main () ++{ ++return SSL_library_init (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_ssl_SSL_library_init=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_ssl_SSL_library_init=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_library_init" >&5 ++echo "${ECHO_T}$ac_cv_lib_ssl_SSL_library_init" >&6; } ++if test $ac_cv_lib_ssl_SSL_library_init = yes; then ++ SSL_LIBS="-lssl" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBSSL 1 ++_ACEOF ++ HAVE_LIBSSL="true" ++fi ++ ++ fi ++fi ++ ++ ++ if test "x$HAVE_LIBSSL" != "xtrue"; then ++ { echo "$as_me:$LINENO: WARNING: ++========================================================================== ++The openssl encryption library libssl.so was not found. An x11vnc built ++this way will not support SSL encryption. To enable SSL install the ++necessary development packages (perhaps it is named something like ++libssl-dev) and run configure again. ++========================================================================== ++" >&5 ++echo "$as_me: WARNING: ++========================================================================== ++The openssl encryption library libssl.so was not found. An x11vnc built ++this way will not support SSL encryption. To enable SSL install the ++necessary development packages (perhaps it is named something like ++libssl-dev) and run configure again. ++========================================================================== ++" >&2;} ++ fi ++ ++if test "x$with_v4l" != "xno"; then ++ if test "${ac_cv_header_linux_videodev_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for linux/videodev.h" >&5 ++echo $ECHO_N "checking for linux/videodev.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_videodev_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_videodev_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_videodev_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking linux/videodev.h usability" >&5 ++echo $ECHO_N "checking linux/videodev.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking linux/videodev.h presence" >&5 ++echo $ECHO_N "checking linux/videodev.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: linux/videodev.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: linux/videodev.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: linux/videodev.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: linux/videodev.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: linux/videodev.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: linux/videodev.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: linux/videodev.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: linux/videodev.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for linux/videodev.h" >&5 ++echo $ECHO_N "checking for linux/videodev.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_videodev_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_linux_videodev_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_videodev_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_videodev_h" >&6; } ++ ++fi ++if test $ac_cv_header_linux_videodev_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LINUX_VIDEODEV_H 1 ++_ACEOF ++ ++fi ++ ++ ++fi ++if test "x$with_fbdev" != "xno"; then ++ if test "${ac_cv_header_linux_fb_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for linux/fb.h" >&5 ++echo $ECHO_N "checking for linux/fb.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_fb_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_fb_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_fb_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking linux/fb.h usability" >&5 ++echo $ECHO_N "checking linux/fb.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking linux/fb.h presence" >&5 ++echo $ECHO_N "checking linux/fb.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: linux/fb.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: linux/fb.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: linux/fb.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: linux/fb.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: linux/fb.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: linux/fb.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: linux/fb.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: linux/fb.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for linux/fb.h" >&5 ++echo $ECHO_N "checking for linux/fb.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_fb_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_linux_fb_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_fb_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_fb_h" >&6; } ++ ++fi ++if test $ac_cv_header_linux_fb_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LINUX_FB_H 1 ++_ACEOF ++ ++fi ++ ++ ++fi ++if test "x$with_uinput" != "xno"; then ++ if test "${ac_cv_header_linux_input_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for linux/input.h" >&5 ++echo $ECHO_N "checking for linux/input.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_input_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_input_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_input_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking linux/input.h usability" >&5 ++echo $ECHO_N "checking linux/input.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking linux/input.h presence" >&5 ++echo $ECHO_N "checking linux/input.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: linux/input.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: linux/input.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: linux/input.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: linux/input.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: linux/input.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: linux/input.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: linux/input.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: linux/input.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for linux/input.h" >&5 ++echo $ECHO_N "checking for linux/input.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_input_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_linux_input_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_input_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_input_h" >&6; } ++ ++fi ++if test $ac_cv_header_linux_input_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LINUX_INPUT_H 1 ++_ACEOF ++ HAVE_LINUX_INPUT_H="true" ++fi ++ ++ ++ if test "x$HAVE_LINUX_INPUT_H" = "xtrue"; then ++ { echo "$as_me:$LINENO: checking for linux/uinput.h" >&5 ++echo $ECHO_N "checking for linux/uinput.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_uinput_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_linux_uinput_h=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_linux_uinput_h=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_uinput_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_uinput_h" >&6; } ++if test $ac_cv_header_linux_uinput_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LINUX_UINPUT_H 1 ++_ACEOF ++ ++fi ++ ++ ++ fi ++fi ++ ++if test "x$with_macosx_native" != "xno"; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_MACOSX_NATIVE_DISPLAY 1 ++_ACEOF ++ ++fi ++ ++ ++ ++ ++# Check whether --with-avahi was given. ++if test "${with_avahi+set}" = set; then ++ withval=$with_avahi; ++fi ++ ++if test "x$with_avahi" != "xno"; then ++ printf "checking for avahi... " ++ if test ! -z "$with_avahi" -a "x$with_avahi" != "xyes"; then ++ AVAHI_CFLAGS="-I$with_avahi/include" ++ AVAHI_LIBS="-L$with_avahi/lib -lavahi-common -lavahi-client" ++ echo "using $with_avahi" ++ with_avahi=yes ++ elif pkg-config --atleast-version=0.6.4 avahi-client >/dev/null 2>&1; then ++ AVAHI_CFLAGS=`pkg-config --cflags avahi-client` ++ AVAHI_LIBS=`pkg-config --libs avahi-client` ++ with_avahi=yes ++ echo yes ++ else ++ with_avahi=no ++ echo no ++ fi ++fi ++if test "x$with_avahi" = "xyes"; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_AVAHI 1 ++_ACEOF ++ ++ ++ ++fi ++ ++fi ++# end x11vnc only. ++ ++# Checks for libraries. ++ ++uname_s=`(uname -s) 2>/dev/null` ++ld_minus_R="yes" ++if test "x$uname_s" = "xHP-UX"; then ++ ld_minus_R="no" ++elif test "x$uname_s" = "xOSF1"; then ++ ld_minus_R="no" ++elif test "x$uname_s" = "xDarwin"; then ++ ld_minus_R="no" ++fi ++ ++if test ! -z "$with_system_libvncserver" -a "x$with_system_libvncserver" != "xno"; then ++ printf "checking for system libvncserver... " ++ if test "x$with_system_libvncserver" != "xyes"; then ++ rflag="" ++ if test "x$ld_minus_R" = "xno"; then ++ : ++ elif test "x$GCC" = "xyes"; then ++ rflag="-Xlinker -R$with_system_libvncserver/lib" ++ else ++ rflag="-R$with_system_libvncserver/lib" ++ fi ++ SYSTEM_LIBVNCSERVER_CFLAGS="-I$with_system_libvncserver/include" ++ SYSTEM_LIBVNCSERVER_LIBS="-L$with_system_libvncserver/lib $rflag -lvncserver -lvncclient" ++ echo "using $with_system_libvncserver" ++ with_system_libvncserver=yes ++ elif libvncserver-config --version >/dev/null 2>&1; then ++ rflag="" ++ rprefix=`libvncserver-config --prefix` ++ if test "x$ld_minus_R" = "xno"; then ++ : ++ elif test "x$GCC" = "xyes"; then ++ rflag=" -Xlinker -R$rprefix/lib " ++ else ++ rflag=" -R$rprefix/lib " ++ fi ++ SYSTEM_LIBVNCSERVER_CFLAGS=`libvncserver-config --cflags` ++ SYSTEM_LIBVNCSERVER_LIBS="$rflag"`libvncserver-config --libs` ++ with_system_libvncserver=yes ++ echo yes ++ else ++ with_system_libvncserver=no ++ echo no ++ fi ++fi ++ ++if test "x$with_system_libvncserver" = "xyes"; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_SYSTEM_LIBVNCSERVER 1 ++_ACEOF ++ ++ ++ ++fi ++ if test "x$with_system_libvncserver" = "xyes"; then ++ HAVE_SYSTEM_LIBVNCSERVER_TRUE= ++ HAVE_SYSTEM_LIBVNCSERVER_FALSE='#' ++else ++ HAVE_SYSTEM_LIBVNCSERVER_TRUE='#' ++ HAVE_SYSTEM_LIBVNCSERVER_FALSE= ++fi ++ ++ ++ ++ ++# Check whether --with-jpeg was given. ++if test "${with_jpeg+set}" = set; then ++ withval=$with_jpeg; ++fi ++ ++ ++# At this point: ++# no jpeg on command line with_jpeg="" ++# -with-jpeg with_jpeg="yes" ++# -without-jpeg with_jpeg="no" ++# -with-jpeg=/foo/dir with_jpeg="/foo/dir" ++ ++if test "x$with_jpeg" != "xno"; then ++ if test ! -z "$with_jpeg" -a "x$with_jpeg" != "xyes"; then ++ # add user supplied directory to flags: ++ saved_CPPFLAGS="$CPPFLAGS" ++ saved_LDFLAGS="$LDFLAGS" ++ CPPFLAGS="$CPPFLAGS -I$with_jpeg/include" ++ LDFLAGS="$LDFLAGS -L$with_jpeg/lib" ++ if test "x$ld_minus_R" = "xno"; then ++ : ++ elif test "x$GCC" = "xyes"; then ++ # this is not complete... in general a rat's nest. ++ LDFLAGS="$LDFLAGS -Xlinker -R$with_jpeg/lib" ++ else ++ LDFLAGS="$LDFLAGS -R$with_jpeg/lib" ++ fi ++ fi ++ if test "${ac_cv_header_jpeglib_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for jpeglib.h" >&5 ++echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_jpeglib_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking jpeglib.h usability" >&5 ++echo $ECHO_N "checking jpeglib.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking jpeglib.h presence" >&5 ++echo $ECHO_N "checking jpeglib.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: jpeglib.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: jpeglib.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: jpeglib.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for jpeglib.h" >&5 ++echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_jpeglib_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_jpeglib_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6; } ++ ++fi ++if test $ac_cv_header_jpeglib_h = yes; then ++ HAVE_JPEGLIB_H="true" ++fi ++ ++ ++ if test "x$HAVE_JPEGLIB_H" = "xtrue"; then ++ ++{ echo "$as_me:$LINENO: checking for jpeg_CreateCompress in -ljpeg" >&5 ++echo $ECHO_N "checking for jpeg_CreateCompress in -ljpeg... $ECHO_C" >&6; } ++if test "${ac_cv_lib_jpeg_jpeg_CreateCompress+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ljpeg $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char jpeg_CreateCompress (); ++int ++main () ++{ ++return jpeg_CreateCompress (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_jpeg_jpeg_CreateCompress=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_jpeg_jpeg_CreateCompress=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_CreateCompress" >&5 ++echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_CreateCompress" >&6; } ++if test $ac_cv_lib_jpeg_jpeg_CreateCompress = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_LIBJPEG 1 ++_ACEOF ++ ++ LIBS="-ljpeg $LIBS" ++ ++else ++ HAVE_JPEGLIB_H="" ++fi ++ ++ fi ++ if test ! -z "$with_jpeg" -a "x$with_jpeg" != "xyes"; then ++ if test "x$HAVE_JPEGLIB_H" != "xtrue"; then ++ # restore old flags on failure: ++ CPPFLAGS="$saved_CPPFLAGS" ++ LDFLAGS="$saved_LDFLAGS" ++ fi ++ fi ++ if test "$build" = "yes"; then ++ if test "x$HAVE_JPEGLIB_H" != "xtrue"; then ++ { echo "$as_me:$LINENO: WARNING: ++========================================================================== ++The libjpeg compression library was not found: this may lead to reduced ++performance, especially over slow links. If libjpeg is in a non-standard ++location use --with-jpeg=DIR to indicate the header file is in ++DIR/include/jpeglib.h and the library in DIR/lib/libjpeg.a. A copy of ++libjpeg may be obtained from: ftp://ftp.uu.net/graphics/jpeg/ ++========================================================================== ++" >&5 ++echo "$as_me: WARNING: ++========================================================================== ++The libjpeg compression library was not found: this may lead to reduced ++performance, especially over slow links. If libjpeg is in a non-standard ++location use --with-jpeg=DIR to indicate the header file is in ++DIR/include/jpeglib.h and the library in DIR/lib/libjpeg.a. A copy of ++libjpeg may be obtained from: ftp://ftp.uu.net/graphics/jpeg/ ++========================================================================== ++" >&2;} ++ fi ++ fi ++fi ++ ++ ++# Check whether --with-libz was given. ++if test "${with_libz+set}" = set; then ++ withval=$with_libz; ++fi ++ ++ ++# Check whether --with-zlib was given. ++if test "${with_zlib+set}" = set; then ++ withval=$with_zlib; ++fi ++ ++ ++if test "x$with_zlib" != "xno" -a "x$with_libz" != "xno"; then ++ if test ! -z "$with_zlib" -a "x$with_zlib" != "xyes"; then ++ saved_CPPFLAGS="$CPPFLAGS" ++ saved_LDFLAGS="$LDFLAGS" ++ CPPFLAGS="$CPPFLAGS -I$with_zlib/include" ++ LDFLAGS="$LDFLAGS -L$with_zlib/lib" ++ if test "x$ld_minus_R" = "xno"; then ++ : ++ elif test "x$GCC" = "xyes"; then ++ LDFLAGS="$LDFLAGS -Xlinker -R$with_zlib/lib" ++ else ++ LDFLAGS="$LDFLAGS -R$with_zlib/lib" ++ fi ++ fi ++ if test "${ac_cv_header_zlib_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for zlib.h" >&5 ++echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_zlib_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking zlib.h usability" >&5 ++echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking zlib.h presence" >&5 ++echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for zlib.h" >&5 ++echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_zlib_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_zlib_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; } ++ ++fi ++if test $ac_cv_header_zlib_h = yes; then ++ HAVE_ZLIB_H="true" ++fi ++ ++ ++ if test "x$HAVE_ZLIB_H" = "xtrue"; then ++ ++{ echo "$as_me:$LINENO: checking for deflate in -lz" >&5 ++echo $ECHO_N "checking for deflate in -lz... $ECHO_C" >&6; } ++if test "${ac_cv_lib_z_deflate+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lz $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char deflate (); ++int ++main () ++{ ++return deflate (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_z_deflate=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_z_deflate=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_z_deflate" >&5 ++echo "${ECHO_T}$ac_cv_lib_z_deflate" >&6; } ++if test $ac_cv_lib_z_deflate = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_LIBZ 1 ++_ACEOF ++ ++ LIBS="-lz $LIBS" ++ ++else ++ HAVE_ZLIB_H="" ++fi ++ ++ fi ++ if test ! -z "$with_zlib" -a "x$with_zlib" != "xyes"; then ++ if test "x$HAVE_ZLIB_H" != "xtrue"; then ++ CPPFLAGS="$saved_CPPFLAGS" ++ LDFLAGS="$saved_LDFLAGS" ++ fi ++ fi ++ if test "$build_x11vnc" = "yes"; then ++ if test "x$HAVE_ZLIB_H" != "xtrue"; then ++ { echo "$as_me:$LINENO: WARNING: ++========================================================================== ++The libz compression library was not found: this may lead to reduced ++performance, especially over slow links. If libz is in a non-standard ++location use --with-zlib=DIR to indicate the header file is in ++DIR/include/zlib.h and the library in DIR/lib/libz.a. A copy of ++libz may be obtained from: http://www.gzip.org/zlib/ ++========================================================================== ++" >&5 ++echo "$as_me: WARNING: ++========================================================================== ++The libz compression library was not found: this may lead to reduced ++performance, especially over slow links. If libz is in a non-standard ++location use --with-zlib=DIR to indicate the header file is in ++DIR/include/zlib.h and the library in DIR/lib/libz.a. A copy of ++libz may be obtained from: http://www.gzip.org/zlib/ ++========================================================================== ++" >&2;} ++ fi ++ fi ++fi ++ ++ ++# Check whether --with-pthread was given. ++if test "${with_pthread+set}" = set; then ++ withval=$with_pthread; ++fi ++ ++ ++if test "x$with_pthread" != "xno"; then ++ if test "${ac_cv_header_pthread_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for pthread.h" >&5 ++echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_pthread_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 ++echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking pthread.h usability" >&5 ++echo $ECHO_N "checking pthread.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking pthread.h presence" >&5 ++echo $ECHO_N "checking pthread.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: pthread.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: pthread.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: pthread.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: pthread.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: pthread.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: pthread.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: pthread.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for pthread.h" >&5 ++echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_pthread_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_pthread_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 ++echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; } ++ ++fi ++if test $ac_cv_header_pthread_h = yes; then ++ HAVE_PTHREAD_H="true" ++fi ++ ++ ++ if test ! -z "$HAVE_PTHREAD_H"; then ++ ++{ echo "$as_me:$LINENO: checking for pthread_mutex_lock in -lpthread" >&5 ++echo $ECHO_N "checking for pthread_mutex_lock in -lpthread... $ECHO_C" >&6; } ++if test "${ac_cv_lib_pthread_pthread_mutex_lock+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lpthread $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char pthread_mutex_lock (); ++int ++main () ++{ ++return pthread_mutex_lock (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_pthread_pthread_mutex_lock=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_pthread_pthread_mutex_lock=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_lock" >&5 ++echo "${ECHO_T}$ac_cv_lib_pthread_pthread_mutex_lock" >&6; } ++if test $ac_cv_lib_pthread_pthread_mutex_lock = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_LIBPTHREAD 1 ++_ACEOF ++ ++ LIBS="-lpthread $LIBS" ++ ++fi ++ ++ { echo "$as_me:$LINENO: checking for pthread_mutex_lock in -lpthread" >&5 ++echo $ECHO_N "checking for pthread_mutex_lock in -lpthread... $ECHO_C" >&6; } ++if test "${ac_cv_lib_pthread_pthread_mutex_lock+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lpthread $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char pthread_mutex_lock (); ++int ++main () ++{ ++return pthread_mutex_lock (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_pthread_pthread_mutex_lock=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_pthread_pthread_mutex_lock=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_lock" >&5 ++echo "${ECHO_T}$ac_cv_lib_pthread_pthread_mutex_lock" >&6; } ++if test $ac_cv_lib_pthread_pthread_mutex_lock = yes; then ++ HAVE_LIBPTHREAD="true" ++fi ++ ++ fi ++fi ++ if test ! -z "$HAVE_LIBPTHREAD"; then ++ HAVE_LIBPTHREAD_TRUE= ++ HAVE_LIBPTHREAD_FALSE='#' ++else ++ HAVE_LIBPTHREAD_TRUE='#' ++ HAVE_LIBPTHREAD_FALSE= ++fi ++ ++ ++# tightvnc-filetransfer implemented using threads: ++if test -z "$HAVE_LIBPTHREAD"; then ++ with_tightvnc_filetransfer="" ++fi ++if test "x$with_tightvnc_filetransfer" = "xyes"; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define WITH_TIGHTVNC_FILETRANSFER 1 ++_ACEOF ++ ++fi ++ if test "$with_tightvnc_filetransfer" = "yes"; then ++ WITH_TIGHTVNC_FILETRANSFER_TRUE= ++ WITH_TIGHTVNC_FILETRANSFER_FALSE='#' ++else ++ WITH_TIGHTVNC_FILETRANSFER_TRUE='#' ++ WITH_TIGHTVNC_FILETRANSFER_FALSE= ++fi ++ ++ ++ if test ! -z "$HAVE_ZLIB_H"; then ++ HAVE_LIBZ_TRUE= ++ HAVE_LIBZ_FALSE='#' ++else ++ HAVE_LIBZ_TRUE='#' ++ HAVE_LIBZ_FALSE= ++fi ++ ++ if test ! -z "$HAVE_JPEGLIB_H"; then ++ HAVE_LIBJPEG_TRUE= ++ HAVE_LIBJPEG_FALSE='#' ++else ++ HAVE_LIBJPEG_TRUE='#' ++ HAVE_LIBJPEG_FALSE= ++fi ++ ++ ++if test -z "$with_sdl"; then ++ if sdl-config --version >/dev/null 2>&1; then ++ with_sdl=yes ++ SDL_CFLAGS=`sdl-config --cflags` ++ SDL_LIBS=`sdl-config --libs` ++ else ++ with_sdl=no ++ fi ++fi ++ if test "x$with_sdl" = "xyes"; then ++ HAVE_LIBSDL_TRUE= ++ HAVE_LIBSDL_FALSE='#' ++else ++ HAVE_LIBSDL_TRUE='#' ++ HAVE_LIBSDL_FALSE= ++fi ++ ++ ++ ++ ++MINGW=`uname -s | grep MINGW 2>/dev/null` ++ if test ! -z "$MINGW" ; then ++ MINGW_TRUE= ++ MINGW_FALSE='#' ++else ++ MINGW_TRUE='#' ++ MINGW_FALSE= ++fi ++ ++if test ! -z "$MINGW"; then ++ WSOCKLIB="-lws2_32" ++fi ++ ++ ++# Checks for header files. ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } ++if test "${ac_cv_header_stdc+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_stdc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_stdc=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "memchr" >/dev/null 2>&1; then ++ : ++else ++ ac_cv_header_stdc=no ++fi ++rm -f conftest* ++ ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "free" >/dev/null 2>&1; then ++ : ++else ++ ac_cv_header_stdc=no ++fi ++rm -f conftest* ++ ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. ++ if test "$cross_compiling" = yes; then ++ : ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#if ((' ' & 0x0FF) == 0x020) ++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) ++#else ++# define ISLOWER(c) \ ++ (('a' <= (c) && (c) <= 'i') \ ++ || ('j' <= (c) && (c) <= 'r') \ ++ || ('s' <= (c) && (c) <= 'z')) ++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) ++#endif ++ ++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) ++int ++main () ++{ ++ int i; ++ for (i = 0; i < 256; i++) ++ if (XOR (islower (i), ISLOWER (i)) ++ || toupper (i) != TOUPPER (i)) ++ return 2; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ : ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_header_stdc=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } ++if test $ac_cv_header_stdc = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define STDC_HEADERS 1 ++_ACEOF ++ ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_header in arpa/inet.h fcntl.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h sys/time.h sys/timeb.h syslog.h unistd.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include <$ac_header> ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ eval "$as_ac_Header=\$ac_header_preproc" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++ ++fi ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ ++# x11vnc only: ++if test "$build_x11vnc" = "yes"; then ++ ++ ++ ++ ++ ++ ++for ac_header in pwd.h sys/wait.h utmpx.h termios.h sys/ioctl.h sys/stropts.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include <$ac_header> ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ eval "$as_ac_Header=\$ac_header_preproc" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++ ++fi ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++fi ++ ++# Checks for typedefs, structures, and compiler characteristics. ++{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 ++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } ++if test "${ac_cv_c_const+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++/* FIXME: Include the comments suggested by Paul. */ ++#ifndef __cplusplus ++ /* Ultrix mips cc rejects this. */ ++ typedef int charset[2]; ++ const charset cs; ++ /* SunOS 4.1.1 cc rejects this. */ ++ char const *const *pcpcc; ++ char **ppc; ++ /* NEC SVR4.0.2 mips cc rejects this. */ ++ struct point {int x, y;}; ++ static struct point const zero = {0,0}; ++ /* AIX XL C 1.02.0.0 rejects this. ++ It does not let you subtract one const X* pointer from another in ++ an arm of an if-expression whose if-part is not a constant ++ expression */ ++ const char *g = "string"; ++ pcpcc = &g + (g ? g-g : 0); ++ /* HPUX 7.0 cc rejects these. */ ++ ++pcpcc; ++ ppc = (char**) pcpcc; ++ pcpcc = (char const *const *) ppc; ++ { /* SCO 3.2v4 cc rejects this. */ ++ char *t; ++ char const *s = 0 ? (char *) 0 : (char const *) 0; ++ ++ *t++ = 0; ++ if (s) return 0; ++ } ++ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ ++ int x[] = {25, 17}; ++ const int *foo = &x[0]; ++ ++foo; ++ } ++ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ ++ typedef const int *iptr; ++ iptr p = 0; ++ ++p; ++ } ++ { /* AIX XL C 1.02.0.0 rejects this saying ++ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ ++ struct s { int j; const int *ap[3]; }; ++ struct s *b; b->j = 5; ++ } ++ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ ++ const int foo = 10; ++ if (!foo) return 0; ++ } ++ return !cs[0] && !zero.x; ++#endif ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_const=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_c_const=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 ++echo "${ECHO_T}$ac_cv_c_const" >&6; } ++if test $ac_cv_c_const = no; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define const ++_ACEOF ++ ++fi ++ ++{ echo "$as_me:$LINENO: checking for inline" >&5 ++echo $ECHO_N "checking for inline... $ECHO_C" >&6; } ++if test "${ac_cv_c_inline+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_c_inline=no ++for ac_kw in inline __inline__ __inline; do ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifndef __cplusplus ++typedef int foo_t; ++static $ac_kw foo_t static_foo () {return 0; } ++$ac_kw foo_t foo () {return 0; } ++#endif ++ ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_inline=$ac_kw ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ test "$ac_cv_c_inline" != no && break ++done ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 ++echo "${ECHO_T}$ac_cv_c_inline" >&6; } ++ ++ ++case $ac_cv_c_inline in ++ inline | yes) ;; ++ *) ++ case $ac_cv_c_inline in ++ no) ac_val=;; ++ *) ac_val=$ac_cv_c_inline;; ++ esac ++ cat >>confdefs.h <<_ACEOF ++#ifndef __cplusplus ++#define inline $ac_val ++#endif ++_ACEOF ++ ;; ++esac ++ ++{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 ++echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } ++if test "${ac_cv_c_bigendian+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # See if sys/param.h defines the BYTE_ORDER macro. ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++ ++int ++main () ++{ ++#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ ++ && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) ++ bogus endian macros ++#endif ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ # It does; now see whether it defined to BIG_ENDIAN or not. ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++ ++int ++main () ++{ ++#if BYTE_ORDER != BIG_ENDIAN ++ not big endian ++#endif ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_bigendian=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_c_bigendian=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ # It does not; compile a test program. ++if test "$cross_compiling" = yes; then ++ # try to guess the endianness by grepping values into an object file ++ ac_cv_c_bigendian=unknown ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; ++short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; ++void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } ++short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; ++short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; ++void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } ++int ++main () ++{ ++ _ascii (); _ebcdic (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then ++ ac_cv_c_bigendian=yes ++fi ++if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then ++ if test "$ac_cv_c_bigendian" = unknown; then ++ ac_cv_c_bigendian=no ++ else ++ # finding both strings is unlikely to happen, but who knows? ++ ac_cv_c_bigendian=unknown ++ fi ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++int ++main () ++{ ++ ++ /* Are we little or big endian? From Harbison&Steele. */ ++ union ++ { ++ long int l; ++ char c[sizeof (long int)]; ++ } u; ++ u.l = 1; ++ return u.c[sizeof (long int) - 1] == 1; ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_c_bigendian=no ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_c_bigendian=yes ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 ++echo "${ECHO_T}$ac_cv_c_bigendian" >&6; } ++case $ac_cv_c_bigendian in ++ yes) ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define WORDS_BIGENDIAN 1 ++_ACEOF ++ ;; ++ no) ++ ;; ++ *) ++ { { echo "$as_me:$LINENO: error: unknown endianness ++presetting ac_cv_c_bigendian=no (or yes) will help" >&5 ++echo "$as_me: error: unknown endianness ++presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} ++ { (exit 1); exit 1; }; } ;; ++esac ++ ++{ echo "$as_me:$LINENO: checking for size_t" >&5 ++echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_size_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++typedef size_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_size_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_size_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 ++echo "${ECHO_T}$ac_cv_type_size_t" >&6; } ++if test $ac_cv_type_size_t = yes; then ++ : ++else ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define size_t unsigned int ++_ACEOF ++ ++fi ++ ++{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 ++echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; } ++if test "${ac_cv_header_time+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++ ++int ++main () ++{ ++if ((struct tm *) 0) ++return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_time=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_time=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 ++echo "${ECHO_T}$ac_cv_header_time" >&6; } ++if test $ac_cv_header_time = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define TIME_WITH_SYS_TIME 1 ++_ACEOF ++ ++fi ++ ++{ echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 ++echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6; } ++if test "${ac_cv_header_sys_wait_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#ifndef WEXITSTATUS ++# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) ++#endif ++#ifndef WIFEXITED ++# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) ++#endif ++ ++int ++main () ++{ ++ int s; ++ wait (&s); ++ s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_sys_wait_h=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_sys_wait_h=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 ++echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6; } ++if test $ac_cv_header_sys_wait_h = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_SYS_WAIT_H 1 ++_ACEOF ++ ++fi ++ ++{ echo "$as_me:$LINENO: checking for socklen_t" >&5 ++echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_socklen_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ #include ++int ++main () ++{ ++socklen_t len = 42; return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_socklen_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_socklen_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5 ++echo "${ECHO_T}$ac_cv_type_socklen_t" >&6; } ++ if test $ac_cv_type_socklen_t != yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define socklen_t int ++_ACEOF ++ ++ fi ++ ++if test ! -d ./rfb; then ++ echo "creating subdir ./rfb for rfbint.h" ++ mkdir ./rfb ++fi ++# ------ AC CREATE STDINT H ------------------------------------- ++{ echo "$as_me:$LINENO: checking for stdint-types...." >&5 ++echo $ECHO_N "checking for stdint-types....... $ECHO_C" >&6; } ++ac_stdint_h=`echo rfb/rfbint.h` ++if test "$ac_stdint_h" = "stdint.h" ; then ++ { echo "$as_me:$LINENO: result: \"(are you sure you want them in ./stdint.h?)\"" >&5 ++echo "${ECHO_T}\"(are you sure you want them in ./stdint.h?)\"" >&6; } ++elif test "$ac_stdint_h" = "inttypes.h" ; then ++ { echo "$as_me:$LINENO: result: \"(are you sure you want them in ./inttypes.h?)\"" >&5 ++echo "${ECHO_T}\"(are you sure you want them in ./inttypes.h?)\"" >&6; } ++else ++ { echo "$as_me:$LINENO: result: \"(putting them into $ac_stdint_h)\"" >&5 ++echo "${ECHO_T}\"(putting them into $ac_stdint_h)\"" >&6; } ++fi ++ ++inttype_headers=`echo inttypes.h sys/inttypes.h sys/inttypes.h \ ++| sed -e 's/,/ /g'` ++ ++ ac_cv_header_stdint_x="no-file" ++ ac_cv_header_stdint_o="no-file" ++ ac_cv_header_stdint_u="no-file" ++ for i in stdint.h $inttype_headers ; do ++ unset ac_cv_type_uintptr_t ++ unset ac_cv_type_uint64_t ++ { echo "$as_me:$LINENO: checking for uintptr_t" >&5 ++echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uintptr_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$i> ++ ++typedef uintptr_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uintptr_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_uintptr_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6; } ++if test $ac_cv_type_uintptr_t = yes; then ++ ac_cv_header_stdint_x=$i ++else ++ continue ++fi ++ ++ { echo "$as_me:$LINENO: checking for uint64_t" >&5 ++echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uint64_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include<$i> ++ ++typedef uint64_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uint64_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_uint64_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uint64_t" >&6; } ++if test $ac_cv_type_uint64_t = yes; then ++ and64="(uint64_t too)" ++else ++ and64="" ++fi ++ ++ { echo "$as_me:$LINENO: result: ... seen our uintptr_t in $i $and64" >&5 ++echo "${ECHO_T}... seen our uintptr_t in $i $and64" >&6; } ++ break; ++ done ++ if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ for i in stdint.h $inttype_headers ; do ++ unset ac_cv_type_uint32_t ++ unset ac_cv_type_uint64_t ++ { echo "$as_me:$LINENO: checking for uint32_t" >&5 ++echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uint32_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$i> ++ ++typedef uint32_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uint32_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_uint32_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uint32_t" >&6; } ++if test $ac_cv_type_uint32_t = yes; then ++ ac_cv_header_stdint_o=$i ++else ++ continue ++fi ++ ++ { echo "$as_me:$LINENO: checking for uint64_t" >&5 ++echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uint64_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include<$i> ++ ++typedef uint64_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uint64_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_uint64_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uint64_t" >&6; } ++if test $ac_cv_type_uint64_t = yes; then ++ and64="(uint64_t too)" ++else ++ and64="" ++fi ++ ++ { echo "$as_me:$LINENO: result: ... seen our uint32_t in $i $and64" >&5 ++echo "${ECHO_T}... seen our uint32_t in $i $and64" >&6; } ++ break; ++ done ++ if test "$ac_cv_header_stdint_o" = "no-file" ; then ++ for i in sys/types.h $inttype_headers ; do ++ unset ac_cv_type_u_int32_t ++ unset ac_cv_type_u_int64_t ++ { echo "$as_me:$LINENO: checking for u_int32_t" >&5 ++echo $ECHO_N "checking for u_int32_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_u_int32_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$i> ++ ++typedef u_int32_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_u_int32_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_u_int32_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int32_t" >&5 ++echo "${ECHO_T}$ac_cv_type_u_int32_t" >&6; } ++if test $ac_cv_type_u_int32_t = yes; then ++ ac_cv_header_stdint_u=$i ++else ++ continue ++fi ++ ++ { echo "$as_me:$LINENO: checking for uint64_t" >&5 ++echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uint64_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include<$i> ++ ++typedef uint64_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uint64_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_uint64_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uint64_t" >&6; } ++if test $ac_cv_type_uint64_t = yes; then ++ and64="(u_int64_t too)" ++else ++ and64="" ++fi ++ ++ { echo "$as_me:$LINENO: result: ... seen our u_int32_t in $i $and64" >&5 ++echo "${ECHO_T}... seen our u_int32_t in $i $and64" >&6; } ++ break; ++ done ++ fi ++ fi ++ ++# ----------------- DONE inttypes.h checks MAYBE C basic types -------- ++ ++if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ { echo "$as_me:$LINENO: checking size of char" >&5 ++echo $ECHO_N "checking size of char... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_char+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include "confdefs.h" ++#include ++ ++ ++int ++main () ++{ ++switch (0) case 0: case (sizeof (char) == $ac_size):; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_char=$ac_size ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_char != x ; then break; fi ++done ++ ++fi ++ ++if test x$ac_cv_sizeof_char = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for char" >&5 ++echo "$as_me: error: cannot determine a size for char" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_char" >&6; } ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define SIZEOF_CHAR $ac_cv_sizeof_char ++_ACEOF ++ ++ ++ { echo "$as_me:$LINENO: checking size of short" >&5 ++echo $ECHO_N "checking size of short... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_short+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include "confdefs.h" ++#include ++ ++ ++int ++main () ++{ ++switch (0) case 0: case (sizeof (short) == $ac_size):; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_short=$ac_size ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_short != x ; then break; fi ++done ++ ++fi ++ ++if test x$ac_cv_sizeof_short = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for short" >&5 ++echo "$as_me: error: cannot determine a size for short" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_short" >&6; } ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define SIZEOF_SHORT $ac_cv_sizeof_short ++_ACEOF ++ ++ ++ { echo "$as_me:$LINENO: checking size of int" >&5 ++echo $ECHO_N "checking size of int... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_int+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include "confdefs.h" ++#include ++ ++ ++int ++main () ++{ ++switch (0) case 0: case (sizeof (int) == $ac_size):; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_int=$ac_size ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_int != x ; then break; fi ++done ++ ++fi ++ ++if test x$ac_cv_sizeof_int = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for int" >&5 ++echo "$as_me: error: cannot determine a size for int" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_int" >&6; } ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define SIZEOF_INT $ac_cv_sizeof_int ++_ACEOF ++ ++ ++ { echo "$as_me:$LINENO: checking size of long" >&5 ++echo $ECHO_N "checking size of long... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_long+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include "confdefs.h" ++#include ++ ++ ++int ++main () ++{ ++switch (0) case 0: case (sizeof (long) == $ac_size):; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_long=$ac_size ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_long != x ; then break; fi ++done ++ ++fi ++ ++if test x$ac_cv_sizeof_long = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for long" >&5 ++echo "$as_me: error: cannot determine a size for long" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_long" >&6; } ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define SIZEOF_LONG $ac_cv_sizeof_long ++_ACEOF ++ ++ ++ { echo "$as_me:$LINENO: checking size of void*" >&5 ++echo $ECHO_N "checking size of void*... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_voidp+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include "confdefs.h" ++#include ++ ++ ++int ++main () ++{ ++switch (0) case 0: case (sizeof (void*) == $ac_size):; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_voidp=$ac_size ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_voidp != x ; then break; fi ++done ++ ++fi ++ ++if test x$ac_cv_sizeof_voidp = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for void*" >&5 ++echo "$as_me: error: cannot determine a size for void*" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_voidp" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_voidp" >&6; } ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define SIZEOF_VOIDP $ac_cv_sizeof_voidp ++_ACEOF ++ ++ ++ ac_cv_header_stdint_test="yes" ++else ++ ac_cv_header_stdint_test="no" ++fi ++ ++# ----------------- DONE inttypes.h checks START header ------------- ++_ac_stdint_h=`echo "_$ac_stdint_h" | $as_tr_cpp` ++{ echo "$as_me:$LINENO: result: creating $ac_stdint_h : $_ac_stdint_h" >&5 ++echo "${ECHO_T}creating $ac_stdint_h : $_ac_stdint_h" >&6; } ++echo "#ifndef" $_ac_stdint_h >$ac_stdint_h ++echo "#define" $_ac_stdint_h "1" >>$ac_stdint_h ++echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint_h ++echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint_h ++if test "$GCC" = "yes" ; then ++ echo "/* generated using a gnu compiler version" `$CC --version` "*/" \ ++ >>$ac_stdint_h ++else ++ echo "/* generated using $CC */" >>$ac_stdint_h ++fi ++echo "" >>$ac_stdint_h ++ ++if test "$ac_cv_header_stdint_x" != "no-file" ; then ++ ac_cv_header_stdint="$ac_cv_header_stdint_x" ++elif test "$ac_cv_header_stdint_o" != "no-file" ; then ++ ac_cv_header_stdint="$ac_cv_header_stdint_o" ++elif test "$ac_cv_header_stdint_u" != "no-file" ; then ++ ac_cv_header_stdint="$ac_cv_header_stdint_u" ++else ++ ac_cv_header_stdint="stddef.h" ++fi ++ ++# ----------------- See if int_least and int_fast types are present ++unset ac_cv_type_int_least32_t ++unset ac_cv_type_int_fast32_t ++{ echo "$as_me:$LINENO: checking for int_least32_t" >&5 ++echo $ECHO_N "checking for int_least32_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_int_least32_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$ac_cv_header_stdint> ++ ++typedef int_least32_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_int_least32_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_int_least32_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_int_least32_t" >&5 ++echo "${ECHO_T}$ac_cv_type_int_least32_t" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for int_fast32_t" >&5 ++echo $ECHO_N "checking for int_fast32_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_int_fast32_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include<$ac_cv_header_stdint> ++ ++typedef int_fast32_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_int_fast32_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_int_fast32_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_int_fast32_t" >&5 ++echo "${ECHO_T}$ac_cv_type_int_fast32_t" >&6; } ++ ++ ++if test "$ac_cv_header_stdint" != "stddef.h" ; then ++if test "$ac_cv_header_stdint" != "stdint.h" ; then ++{ echo "$as_me:$LINENO: result: ..adding include stddef.h" >&5 ++echo "${ECHO_T}..adding include stddef.h" >&6; } ++ echo "#include " >>$ac_stdint_h ++fi ; fi ++{ echo "$as_me:$LINENO: result: ..adding include $ac_cv_header_stdint" >&5 ++echo "${ECHO_T}..adding include $ac_cv_header_stdint" >&6; } ++ echo "#include <$ac_cv_header_stdint>" >>$ac_stdint_h ++echo "" >>$ac_stdint_h ++ ++# ----------------- DONE header START basic int types ------------- ++if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ { echo "$as_me:$LINENO: result: ... need to look at C basic types" >&5 ++echo "${ECHO_T}... need to look at C basic types" >&6; } ++else ++ { echo "$as_me:$LINENO: result: ... seen good stdint.h inttypes" >&5 ++echo "${ECHO_T}... seen good stdint.h inttypes" >&6; } ++fi ++ ++if test "$ac_cv_header_stdint_u" != "no-file" ; then ++ { echo "$as_me:$LINENO: result: ... seen bsd/sysv typedefs" >&5 ++echo "${ECHO_T}... seen bsd/sysv typedefs" >&6; } ++ cat >>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t normal 16-bit system" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t 32-bit system derived from a 16-bit" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t normal 32-bit system" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t 32-bit system prepared for 64-bit" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t normal 64-bit system" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t 64-bit system derived from a 32-bit" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "$as_me: error: $ac_cv_sizeof_X what is that a system? contact the author, quick! http://ac-archive.sf.net" >&2;} ++ { (exit 1); exit 1; }; } ++ exit 1 ++;; ++ esac ++fi ++ ++# ------------- DONE basic int types START int64_t types ------------ ++if test "$ac_cv_type_uint64_t" = "yes" ++then { echo "$as_me:$LINENO: result: ... seen good uint64_t" >&5 ++echo "${ECHO_T}... seen good uint64_t" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding typedef u_int64_t uint64_t" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding generic uint64_t runtime checks" >&6; } ++ cat >>$ac_stdint_h < 199901L ++ ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef long long int64_t; ++typedef unsigned long long uint64_t; ++#endif ++ ++#elif !defined __STRICT_ANSI__ ++#if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__ ++ ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef __int64 int64_t; ++typedef unsigned __int64 uint64_t; ++#endif ++ ++#elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__ ++ ++#if !defined _NO_LONGLONG ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef long long int64_t; ++typedef unsigned long long uint64_t; ++#endif ++#endif ++ ++#elif defined __alpha || (defined __mips && defined _ABIN32) ++ ++#if !defined _NO_LONGLONG ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef long int64_t; ++typedef unsigned long uint64_t; ++#endif ++#endif ++ /* compiler/cpu type ... or just ISO C99 */ ++#endif ++#endif ++EOF ++ ++# plus a default 64-bit for systems that are likely to be 64-bit ready ++ case "$ac_cv_sizeof_x:$ac_cv_sizeof_voidp:$ac_cv_sizeof_long" in ++ 1:2:8:8) { echo "$as_me:$LINENO: result: ..adding uint64_t default" >&5 ++echo "${ECHO_T}..adding uint64_t default" >&6; } ++cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding uint64_t default" >&6; } ++cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding uint64_t default" >&6; } ++cat >>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding typedef $a intptr_t" >&6; } ++fi ++ ++# ------------- DONE intptr types START int_least types ------------ ++if test "$ac_cv_type_int_least32_t" = "no"; then ++{ echo "$as_me:$LINENO: result: ..adding generic int_least-types" >&5 ++echo "${ECHO_T}..adding generic int_least-types" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding generic int_fast-types" >&6; } ++ cat >>$ac_stdint_h <>$ac_stdint_h <&5 ++echo "${ECHO_T}... DONE $ac_stdint_h" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo $ECHO_N "checking for in_addr_t... $ECHO_C" >&6; } ++if test "${inaddrt+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++int ++main () ++{ ++in_addr_t foo; return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ inaddrt=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ inaddrt=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext, ++ ++fi ++{ echo "$as_me:$LINENO: result: $inaddrt" >&5 ++echo "${ECHO_T}$inaddrt" >&6; } ++ ++ ++if test $inaddrt = no ; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define NEED_INADDR_T 1 ++_ACEOF ++ ++fi ++ ++# Checks for library functions. ++{ echo "$as_me:$LINENO: checking for working memcmp" >&5 ++echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6; } ++if test "${ac_cv_func_memcmp_working+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_memcmp_working=no ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++int ++main () ++{ ++ ++ /* Some versions of memcmp are not 8-bit clean. */ ++ char c0 = '\100', c1 = '\200', c2 = '\201'; ++ if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) ++ return 1; ++ ++ /* The Next x86 OpenStep bug shows up only when comparing 16 bytes ++ or more and with at least one buffer not starting on a 4-byte boundary. ++ William Lewis provided this test program. */ ++ { ++ char foo[21]; ++ char bar[21]; ++ int i; ++ for (i = 0; i < 4; i++) ++ { ++ char *a = foo + i; ++ char *b = bar + i; ++ strcpy (a, "--------01111111"); ++ strcpy (b, "--------10000000"); ++ if (memcmp (a, b, 16) >= 0) ++ return 1; ++ } ++ return 0; ++ } ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_func_memcmp_working=yes ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_func_memcmp_working=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 ++echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6; } ++test $ac_cv_func_memcmp_working = no && case " $LIB@&t@OBJS " in ++ *" memcmp.$ac_objext "* ) ;; ++ *) LIB@&t@OBJS="$LIB@&t@OBJS memcmp.$ac_objext" ++ ;; ++esac ++ ++ ++{ echo "$as_me:$LINENO: checking whether lstat dereferences a symlink specified with a trailing slash" >&5 ++echo $ECHO_N "checking whether lstat dereferences a symlink specified with a trailing slash... $ECHO_C" >&6; } ++if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ rm -f conftest.sym conftest.file ++echo >conftest.file ++if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_lstat_dereferences_slashed_symlink=no ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++int ++main () ++{ ++struct stat sbuf; ++ /* Linux will dereference the symlink and fail. ++ That is better in the sense that it means we will not ++ have to compile and use the lstat wrapper. */ ++ return lstat ("conftest.sym/", &sbuf) == 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_func_lstat_dereferences_slashed_symlink=yes ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_func_lstat_dereferences_slashed_symlink=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++else ++ # If the `ln -s' command failed, then we probably don't even ++ # have an lstat function. ++ ac_cv_func_lstat_dereferences_slashed_symlink=no ++fi ++rm -f conftest.sym conftest.file ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 ++echo "${ECHO_T}$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } ++ ++test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 ++_ACEOF ++ ++ ++if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then ++ case " $LIB@&t@OBJS " in ++ *" lstat.$ac_objext "* ) ;; ++ *) LIB@&t@OBJS="$LIB@&t@OBJS lstat.$ac_objext" ++ ;; ++esac ++ ++fi ++ ++{ echo "$as_me:$LINENO: checking whether stat accepts an empty string" >&5 ++echo $ECHO_N "checking whether stat accepts an empty string... $ECHO_C" >&6; } ++if test "${ac_cv_func_stat_empty_string_bug+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_stat_empty_string_bug=yes ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++int ++main () ++{ ++struct stat sbuf; ++ return stat ("", &sbuf) == 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_func_stat_empty_string_bug=no ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_func_stat_empty_string_bug=yes ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_stat_empty_string_bug" >&5 ++echo "${ECHO_T}$ac_cv_func_stat_empty_string_bug" >&6; } ++if test $ac_cv_func_stat_empty_string_bug = yes; then ++ case " $LIB@&t@OBJS " in ++ *" stat.$ac_objext "* ) ;; ++ *) LIB@&t@OBJS="$LIB@&t@OBJS stat.$ac_objext" ++ ;; ++esac ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_STAT_EMPTY_STRING_BUG 1 ++_ACEOF ++ ++fi ++ ++ ++for ac_func in strftime ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++else ++ # strftime is in -lintl on SCO UNIX. ++{ echo "$as_me:$LINENO: checking for strftime in -lintl" >&5 ++echo $ECHO_N "checking for strftime in -lintl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_intl_strftime+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lintl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char strftime (); ++int ++main () ++{ ++return strftime (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_intl_strftime=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_intl_strftime=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_strftime" >&5 ++echo "${ECHO_T}$ac_cv_lib_intl_strftime" >&6; } ++if test $ac_cv_lib_intl_strftime = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_STRFTIME 1 ++_ACEOF ++ ++LIBS="-lintl $LIBS" ++fi ++ ++fi ++done ++ ++ ++for ac_func in vprintf ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++{ echo "$as_me:$LINENO: checking for _doprnt" >&5 ++echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6; } ++if test "${ac_cv_func__doprnt+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define _doprnt to an innocuous variant, in case declares _doprnt. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define _doprnt innocuous__doprnt ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char _doprnt (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef _doprnt ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char _doprnt (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub__doprnt || defined __stub____doprnt ++choke me ++#endif ++ ++int ++main () ++{ ++return _doprnt (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func__doprnt=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func__doprnt=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 ++echo "${ECHO_T}$ac_cv_func__doprnt" >&6; } ++if test $ac_cv_func__doprnt = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_DOPRNT 1 ++_ACEOF ++ ++fi ++ ++fi ++done ++ ++ ++{ echo "$as_me:$LINENO: checking for pid_t" >&5 ++echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_pid_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++typedef pid_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_pid_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_pid_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 ++echo "${ECHO_T}$ac_cv_type_pid_t" >&6; } ++if test $ac_cv_type_pid_t = yes; then ++ : ++else ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define pid_t int ++_ACEOF ++ ++fi ++ ++ ++for ac_header in vfork.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include <$ac_header> ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ eval "$as_ac_Header=\$ac_header_preproc" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++ ++fi ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ ++ ++for ac_func in fork vfork ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++done ++ ++if test "x$ac_cv_func_fork" = xyes; then ++ { echo "$as_me:$LINENO: checking for working fork" >&5 ++echo $ECHO_N "checking for working fork... $ECHO_C" >&6; } ++if test "${ac_cv_func_fork_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_fork_works=cross ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++int ++main () ++{ ++ ++ /* By Ruediger Kuhlmann. */ ++ return fork () < 0; ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_func_fork_works=yes ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_func_fork_works=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_fork_works" >&5 ++echo "${ECHO_T}$ac_cv_func_fork_works" >&6; } ++ ++else ++ ac_cv_func_fork_works=$ac_cv_func_fork ++fi ++if test "x$ac_cv_func_fork_works" = xcross; then ++ case $host in ++ *-*-amigaos* | *-*-msdosdjgpp*) ++ # Override, as these systems have only a dummy fork() stub ++ ac_cv_func_fork_works=no ++ ;; ++ *) ++ ac_cv_func_fork_works=yes ++ ;; ++ esac ++ { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 ++echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} ++fi ++ac_cv_func_vfork_works=$ac_cv_func_vfork ++if test "x$ac_cv_func_vfork" = xyes; then ++ { echo "$as_me:$LINENO: checking for working vfork" >&5 ++echo $ECHO_N "checking for working vfork... $ECHO_C" >&6; } ++if test "${ac_cv_func_vfork_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_vfork_works=cross ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Thanks to Paul Eggert for this test. */ ++$ac_includes_default ++#include ++#ifdef HAVE_VFORK_H ++# include ++#endif ++/* On some sparc systems, changes by the child to local and incoming ++ argument registers are propagated back to the parent. The compiler ++ is told about this with #include , but some compilers ++ (e.g. gcc -O) don't grok . Test for this by using a ++ static variable whose address is put into a register that is ++ clobbered by the vfork. */ ++static void ++#ifdef __cplusplus ++sparc_address_test (int arg) ++# else ++sparc_address_test (arg) int arg; ++#endif ++{ ++ static pid_t child; ++ if (!child) { ++ child = vfork (); ++ if (child < 0) { ++ perror ("vfork"); ++ _exit(2); ++ } ++ if (!child) { ++ arg = getpid(); ++ write(-1, "", 0); ++ _exit (arg); ++ } ++ } ++} ++ ++int ++main () ++{ ++ pid_t parent = getpid (); ++ pid_t child; ++ ++ sparc_address_test (0); ++ ++ child = vfork (); ++ ++ if (child == 0) { ++ /* Here is another test for sparc vfork register problems. This ++ test uses lots of local variables, at least as many local ++ variables as main has allocated so far including compiler ++ temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris ++ 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should ++ reuse the register of parent for one of the local variables, ++ since it will think that parent can't possibly be used any more ++ in this routine. Assigning to the local variable will thus ++ munge parent in the parent process. */ ++ pid_t ++ p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), ++ p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); ++ /* Convince the compiler that p..p7 are live; otherwise, it might ++ use the same hardware register for all 8 local variables. */ ++ if (p != p1 || p != p2 || p != p3 || p != p4 ++ || p != p5 || p != p6 || p != p7) ++ _exit(1); ++ ++ /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent ++ from child file descriptors. If the child closes a descriptor ++ before it execs or exits, this munges the parent's descriptor ++ as well. Test for this by closing stdout in the child. */ ++ _exit(close(fileno(stdout)) != 0); ++ } else { ++ int status; ++ struct stat st; ++ ++ while (wait(&status) != child) ++ ; ++ return ( ++ /* Was there some problem with vforking? */ ++ child < 0 ++ ++ /* Did the child fail? (This shouldn't happen.) */ ++ || status ++ ++ /* Did the vfork/compiler bug occur? */ ++ || parent != getpid() ++ ++ /* Did the file descriptor bug occur? */ ++ || fstat(fileno(stdout), &st) != 0 ++ ); ++ } ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_func_vfork_works=yes ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_func_vfork_works=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_vfork_works" >&5 ++echo "${ECHO_T}$ac_cv_func_vfork_works" >&6; } ++ ++fi; ++if test "x$ac_cv_func_fork_works" = xcross; then ++ ac_cv_func_vfork_works=$ac_cv_func_vfork ++ { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 ++echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} ++fi ++ ++if test "x$ac_cv_func_vfork_works" = xyes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_WORKING_VFORK 1 ++_ACEOF ++ ++else ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define vfork fork ++_ACEOF ++ ++fi ++if test "x$ac_cv_func_fork_works" = xyes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_WORKING_FORK 1 ++_ACEOF ++ ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 ++echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lnsl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char gethostbyname (); ++int ++main () ++{ ++return gethostbyname (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_nsl_gethostbyname=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_nsl_gethostbyname=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; } ++if test $ac_cv_lib_nsl_gethostbyname = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_LIBNSL 1 ++_ACEOF ++ ++ LIBS="-lnsl $LIBS" ++ ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 ++echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6; } ++if test "${ac_cv_lib_socket_socket+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsocket $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char socket (); ++int ++main () ++{ ++return socket (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_socket_socket=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_socket_socket=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 ++echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6; } ++if test $ac_cv_lib_socket_socket = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_LIBSOCKET 1 ++_ACEOF ++ ++ LIBS="-lsocket $LIBS" ++ ++fi ++ ++ ++uname_s=`(uname -s) 2>/dev/null` ++if test "x$uname_s" = "xHP-UX"; then ++ # need -lsec for getspnam() ++ LDFLAGS="$LDFLAGS -lsec" ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_func in ftime gethostbyname gethostname gettimeofday inet_ntoa memmove memset mmap mkfifo select socket strchr strcspn strdup strerror strstr ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++done ++ ++# x11vnc only: ++if test "$build_x11vnc" = "yes"; then ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_func in setsid setpgrp getpwuid getpwnam getspnam getuid geteuid setuid setgid seteuid setegid initgroups waitpid setutxent grantpt ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++done ++ ++fi ++ ++# check, if shmget is in cygipc.a ++ ++{ echo "$as_me:$LINENO: checking for shmget in -lcygipc" >&5 ++echo $ECHO_N "checking for shmget in -lcygipc... $ECHO_C" >&6; } ++if test "${ac_cv_lib_cygipc_shmget+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lcygipc $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shmget (); ++int ++main () ++{ ++return shmget (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_cygipc_shmget=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_cygipc_shmget=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_cygipc_shmget" >&5 ++echo "${ECHO_T}$ac_cv_lib_cygipc_shmget" >&6; } ++if test $ac_cv_lib_cygipc_shmget = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_LIBCYGIPC 1 ++_ACEOF ++ ++ LIBS="-lcygipc $LIBS" ++ ++fi ++ ++ if test "$HAVE_CYGIPC" = "true"; then ++ CYGIPC_TRUE= ++ CYGIPC_FALSE='#' ++else ++ CYGIPC_TRUE='#' ++ CYGIPC_FALSE= ++fi ++ ++ ++# Check if /dev/vcsa1 exists, if so, define LINUX ++ if test -c /dev/vcsa1; then ++ LINUX_TRUE= ++ LINUX_FALSE='#' ++else ++ LINUX_TRUE='#' ++ LINUX_FALSE= ++fi ++ ++ ++# Check for OS X specific header ++if test "${ac_cv_header_ApplicationServices_ApplicationServices_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for ApplicationServices/ApplicationServices.h" >&5 ++echo $ECHO_N "checking for ApplicationServices/ApplicationServices.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_ApplicationServices_ApplicationServices_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_ApplicationServices_ApplicationServices_h" >&5 ++echo "${ECHO_T}$ac_cv_header_ApplicationServices_ApplicationServices_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking ApplicationServices/ApplicationServices.h usability" >&5 ++echo $ECHO_N "checking ApplicationServices/ApplicationServices.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking ApplicationServices/ApplicationServices.h presence" >&5 ++echo $ECHO_N "checking ApplicationServices/ApplicationServices.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for ApplicationServices/ApplicationServices.h" >&5 ++echo $ECHO_N "checking for ApplicationServices/ApplicationServices.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_ApplicationServices_ApplicationServices_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_ApplicationServices_ApplicationServices_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_ApplicationServices_ApplicationServices_h" >&5 ++echo "${ECHO_T}$ac_cv_header_ApplicationServices_ApplicationServices_h" >&6; } ++ ++fi ++if test $ac_cv_header_ApplicationServices_ApplicationServices_h = yes; then ++ HAVE_OSX="true" ++fi ++ ++ ++ if test "$HAVE_OSX" = "true"; then ++ OSX_TRUE= ++ OSX_FALSE='#' ++else ++ OSX_TRUE='#' ++ OSX_FALSE= ++fi ++ ++ ++# On Solaris 2.7, write() returns ENOENT when it really means EAGAIN ++ ++ ++case `(uname -sr) 2>/dev/null` in ++ "SunOS 5.7") ++ cat >>confdefs.h <<\_ACEOF ++@%:@define ENOENT_WORKAROUND 1 ++_ACEOF ++ ++ ;; ++esac ++ ++# Check for rpm SOURCES path ++printf "checking for rpm sources path... " ++RPMSOURCEDIR="NOT-FOUND" ++for directory in packages OpenLinux redhat RedHat rpm RPM "" ; do ++ if test -d /usr/src/${directory}/SOURCES; then ++ RPMSOURCEDIR="/usr/src/${directory}/SOURCES/" ++ fi ++done ++echo "$RPMSOURCEDIR" ++ if test "$RPMSOURCEDIR" != "NOT-FOUND"; then ++ HAVE_RPM_TRUE= ++ HAVE_RPM_FALSE='#' ++else ++ HAVE_RPM_TRUE='#' ++ HAVE_RPM_FALSE= ++fi ++ ++ ++ ++ac_config_files="$ac_config_files Makefile libvncserver/Makefile contrib/Makefile examples/Makefile vncterm/Makefile classes/Makefile classes/ssl/Makefile libvncclient/Makefile client_examples/Makefile test/Makefile libvncserver-config LibVNCServer.spec" ++ ++# x11vnc only: ++# if test "$build_x11vnc" = "yes"; then ++# AC_CONFIG_FILES([x11vnc/Makefile x11vnc/misc/Makefile]) ++# fi ++ ++ac_config_commands="$ac_config_commands chmod-libvncserver-config" ++ ++cat >confcache <<\_ACEOF ++# This file is a shell script that caches the results of configure ++# tests run on this system so they can be shared between configure ++# scripts and configure runs, see configure's option --config-cache. ++# It is not useful on other systems. If it contains results you don't ++# want to keep, you may remove or edit it. ++# ++# config.status only pays attention to the cache file if you give it ++# the --recheck option to rerun configure. ++# ++# `ac_cv_env_foo' variables (set or unset) will be overridden when ++# loading this file, other *unset* `ac_cv_foo' will be assigned the ++# following values. ++ ++_ACEOF ++ ++# The following way of writing the cache mishandles newlines in values, ++# but we know of no workaround that is simple, portable, and efficient. ++# So, we kill variables containing newlines. ++# Ultrix sh set writes to stderr and can't be redirected directly, ++# and sets the high bit in the cache file unless we assign to the vars. ++( ++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ ++ (set) 2>&1 | ++ case $as_nl`(ac_space=' '; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) ++ # `set' does not quote correctly, so add quotes (double-quote ++ # substitution turns \\\\ into \\, and sed turns \\ into \). ++ sed -n \ ++ "s/'/'\\\\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ++ ;; #( ++ *) ++ # `set' quotes correctly as required by POSIX, so do not add quotes. ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ++ ;; ++ esac | ++ sort ++) | ++ sed ' ++ /^ac_cv_env_/b end ++ t clear ++ :clear ++ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ ++ t end ++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ ++ :end' >>confcache ++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else ++ if test -w "$cache_file"; then ++ test "x$cache_file" != "x/dev/null" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} ++ cat confcache >$cache_file ++ else ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} ++ fi ++fi ++rm -f confcache ++ ++test "x$prefix" = xNONE && prefix=$ac_default_prefix ++# Let make expand exec_prefix. ++test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' ++ ++DEFS=-DHAVE_CONFIG_H ++ ++ac_libobjs= ++ac_ltlibobjs= ++for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue ++ # 1. Remove the extension, and $U if already installed. ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`echo "$ac_i" | sed "$ac_script"` ++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR ++ # will be set to the directory where LIBOBJS objects are built. ++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' ++done ++LIB@&t@OBJS=$ac_libobjs ++ ++LTLIBOBJS=$ac_ltlibobjs ++ ++ ++if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"AMDEP\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${WITH_FFMPEG_TRUE}" && test -z "${WITH_FFMPEG_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"WITH_FFMPEG\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"WITH_FFMPEG\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_MP3LAME_TRUE}" && test -z "${HAVE_MP3LAME_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_MP3LAME\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_MP3LAME\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_X_TRUE}" && test -z "${HAVE_X_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_X\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_X\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_SYSTEM_LIBVNCSERVER_TRUE}" && test -z "${HAVE_SYSTEM_LIBVNCSERVER_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_SYSTEM_LIBVNCSERVER\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_SYSTEM_LIBVNCSERVER\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_LIBPTHREAD_TRUE}" && test -z "${HAVE_LIBPTHREAD_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBPTHREAD\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_LIBPTHREAD\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${WITH_TIGHTVNC_FILETRANSFER_TRUE}" && test -z "${WITH_TIGHTVNC_FILETRANSFER_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"WITH_TIGHTVNC_FILETRANSFER\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"WITH_TIGHTVNC_FILETRANSFER\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_LIBZ_TRUE}" && test -z "${HAVE_LIBZ_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBZ\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_LIBZ\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_LIBJPEG_TRUE}" && test -z "${HAVE_LIBJPEG_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBJPEG\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_LIBJPEG\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_LIBSDL_TRUE}" && test -z "${HAVE_LIBSDL_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBSDL\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_LIBSDL\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${MINGW_TRUE}" && test -z "${MINGW_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"MINGW\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"MINGW\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${CYGIPC_TRUE}" && test -z "${CYGIPC_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"CYGIPC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"CYGIPC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${LINUX_TRUE}" && test -z "${LINUX_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"LINUX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"LINUX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${OSX_TRUE}" && test -z "${OSX_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"OSX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"OSX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_RPM_TRUE}" && test -z "${HAVE_RPM_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_RPM\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_RPM\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++: ${CONFIG_STATUS=./config.status} ++ac_clean_files_save=$ac_clean_files ++ac_clean_files="$ac_clean_files $CONFIG_STATUS" ++{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 ++echo "$as_me: creating $CONFIG_STATUS" >&6;} ++cat >$CONFIG_STATUS <<_ACEOF ++#! $SHELL ++# Generated by $as_me. ++# Run this file to recreate the current configuration. ++# Compiler output produced by configure, useful for debugging ++# configure, is in config.log if it exists. ++ ++debug=false ++ac_cs_recheck=false ++ac_cs_silent=false ++SHELL=\${CONFIG_SHELL-$SHELL} ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++## --------------------- ## ++## M4sh Initialization. ## ++## --------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh ++fi ++ ++# Support unset when possible. ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ as_unset=unset ++else ++ as_unset=false ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ ++# Work around bugs in pre-3.0 UWIN ksh. ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++for as_var in \ ++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ ++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ ++ LC_TELEPHONE LC_TIME ++do ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then ++ eval $as_var=C; export $as_var ++ else ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ fi ++done ++ ++# Required to use basename. ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++ ++# Name of the executable. ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# CDPATH. ++$as_unset CDPATH ++ ++ ++ ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { ++ ++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO ++ # uniformly replaced by the line number. The first 'sed' inserts a ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. ++ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | ++ sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno ++ N ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ ++ t loop ++ s/-\n.*// ++ ' >$as_me.lineno && ++ chmod +x "$as_me.lineno" || ++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 ++ { (exit 1); exit 1; }; } ++ ++ # Don't try to exec as it changes $[0], causing all sort of problems ++ # (the dirname of $[0] is not the place where we might find the ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" ++ # Exit status is that of the last command. ++ exit ++} ++ ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi ++echo >conf$$.file ++if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -p' ++elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++else ++ as_ln_s='cp -p' ++fi ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null ++ ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p=: ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' ++fi ++as_executable_p=$as_test_x ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++ ++exec 6>&1 ++ ++# Save the log message, to keep $[0] and so on meaningful, and to ++# report actual input values of CONFIG_FILES etc. instead of their ++# values after options handling. ++ac_log=" ++This file was extended by LibVNCServer $as_me 0.9.1, which was ++generated by GNU Autoconf 2.61. Invocation command line was ++ ++ CONFIG_FILES = $CONFIG_FILES ++ CONFIG_HEADERS = $CONFIG_HEADERS ++ CONFIG_LINKS = $CONFIG_LINKS ++ CONFIG_COMMANDS = $CONFIG_COMMANDS ++ $ $0 $@ ++ ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" ++ ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++# Files that config.status was made for. ++config_files="$ac_config_files" ++config_headers="$ac_config_headers" ++config_commands="$ac_config_commands" ++ ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++ac_cs_usage="\ ++\`$as_me' instantiates files from templates according to the ++current configuration. ++ ++Usage: $0 [OPTIONS] [FILE]... ++ ++ -h, --help print this help, then exit ++ -V, --version print version number and configuration settings, then exit ++ -q, --quiet do not print progress messages ++ -d, --debug don't remove temporary files ++ --recheck update $as_me by reconfiguring in the same conditions ++ --file=FILE[:TEMPLATE] ++ instantiate the configuration file FILE ++ --header=FILE[:TEMPLATE] ++ instantiate the configuration header FILE ++ ++Configuration files: ++$config_files ++ ++Configuration headers: ++$config_headers ++ ++Configuration commands: ++$config_commands ++ ++Report bugs to ." ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++ac_cs_version="\\ ++LibVNCServer config.status 0.9.1 ++configured by $0, generated by GNU Autoconf 2.61, ++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" ++ ++Copyright (C) 2006 Free Software Foundation, Inc. ++This config.status script is free software; the Free Software Foundation ++gives unlimited permission to copy, distribute and modify it." ++ ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' ++INSTALL='$INSTALL' ++MKDIR_P='$MKDIR_P' ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++# If no file are specified by the user, then we need to provide default ++# value. By we need to know if files were specified by the user. ++ac_need_defaults=: ++while test $# != 0 ++do ++ case $1 in ++ --*=*) ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ++ ac_shift=: ++ ;; ++ *) ++ ac_option=$1 ++ ac_optarg=$2 ++ ac_shift=shift ++ ;; ++ esac ++ ++ case $ac_option in ++ # Handling of the options. ++ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ++ ac_cs_recheck=: ;; ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ echo "$ac_cs_version"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) ++ debug=: ;; ++ --file | --fil | --fi | --f ) ++ $ac_shift ++ CONFIG_FILES="$CONFIG_FILES $ac_optarg" ++ ac_need_defaults=false;; ++ --header | --heade | --head | --hea ) ++ $ac_shift ++ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ++ ac_need_defaults=false;; ++ --he | --h) ++ # Conflict between --help and --header ++ { echo "$as_me: error: ambiguous option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; };; ++ --help | --hel | -h ) ++ echo "$ac_cs_usage"; exit ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil | --si | --s) ++ ac_cs_silent=: ;; ++ ++ # This is an error. ++ -*) { echo "$as_me: error: unrecognized option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; } ;; ++ ++ *) ac_config_targets="$ac_config_targets $1" ++ ac_need_defaults=false ;; ++ ++ esac ++ shift ++done ++ ++ac_configure_extra_args= ++ ++if $ac_cs_silent; then ++ exec 6>/dev/null ++ ac_configure_extra_args="$ac_configure_extra_args --silent" ++fi ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++if \$ac_cs_recheck; then ++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 ++ CONFIG_SHELL=$SHELL ++ export CONFIG_SHELL ++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++fi ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX ++@%:@@%:@ Running $as_me. @%:@@%:@ ++_ASBOX ++ echo "$ac_log" ++} >&5 ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++# ++# INIT-COMMANDS ++# ++PACKAGE="$PACKAGE" ++AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" ++ ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++sed_quote_subst='$sed_quote_subst' ++double_quote_subst='$double_quote_subst' ++delay_variable_subst='$delay_variable_subst' ++macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' ++macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' ++enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' ++enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' ++pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' ++enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' ++host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' ++host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' ++host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' ++build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' ++build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' ++build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' ++SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' ++Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' ++GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' ++EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' ++FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' ++LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' ++NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' ++LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' ++max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ++ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' ++exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' ++lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' ++lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' ++lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' ++reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' ++reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' ++file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' ++AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' ++AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' ++STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' ++RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' ++old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' ++CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' ++compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' ++GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' ++objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' ++SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ++ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' ++MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' ++lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' ++lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' ++lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' ++lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' ++need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' ++DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' ++NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' ++LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' ++OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' ++OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' ++libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' ++shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' ++enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' ++export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' ++whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' ++compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' ++old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' ++allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' ++no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' ++inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' ++link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' ++fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' ++always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' ++export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' ++include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' ++prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' ++variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' ++need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' ++need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' ++version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' ++runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' ++shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' ++shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' ++libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' ++library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' ++soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' ++postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' ++sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' ++sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' ++enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' ++enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' ++enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' ++old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' ++striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' ++ ++LTCC='$LTCC' ++LTCFLAGS='$LTCFLAGS' ++compiler='$compiler_DEFAULT' ++ ++# Quote evaled strings. ++for var in SED \ ++GREP \ ++EGREP \ ++FGREP \ ++LD \ ++NM \ ++LN_S \ ++lt_SP2NL \ ++lt_NL2SP \ ++reload_flag \ ++deplibs_check_method \ ++file_magic_cmd \ ++AR \ ++AR_FLAGS \ ++STRIP \ ++RANLIB \ ++CC \ ++CFLAGS \ ++compiler \ ++lt_cv_sys_global_symbol_pipe \ ++lt_cv_sys_global_symbol_to_cdecl \ ++lt_cv_sys_global_symbol_to_c_name_address \ ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ ++SHELL \ ++ECHO \ ++lt_prog_compiler_no_builtin_flag \ ++lt_prog_compiler_wl \ ++lt_prog_compiler_pic \ ++lt_prog_compiler_static \ ++lt_cv_prog_compiler_c_o \ ++need_locks \ ++DSYMUTIL \ ++NMEDIT \ ++LIPO \ ++OTOOL \ ++OTOOL64 \ ++shrext_cmds \ ++export_dynamic_flag_spec \ ++whole_archive_flag_spec \ ++compiler_needs_object \ ++with_gnu_ld \ ++allow_undefined_flag \ ++no_undefined_flag \ ++hardcode_libdir_flag_spec \ ++hardcode_libdir_flag_spec_ld \ ++hardcode_libdir_separator \ ++fix_srcfile_path \ ++exclude_expsyms \ ++include_expsyms \ ++file_list_spec \ ++variables_saved_for_relink \ ++libname_spec \ ++library_names_spec \ ++soname_spec \ ++finish_eval \ ++old_striplib \ ++striplib; do ++ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in ++ *[\\\\\\\`\\"\\\$]*) ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ++ ;; ++ *) ++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ++ ;; ++ esac ++done ++ ++# Double-quote double-evaled strings. ++for var in reload_cmds \ ++old_postinstall_cmds \ ++old_postuninstall_cmds \ ++old_archive_cmds \ ++extract_expsyms_cmds \ ++old_archive_from_new_cmds \ ++old_archive_from_expsyms_cmds \ ++archive_cmds \ ++archive_expsym_cmds \ ++module_cmds \ ++module_expsym_cmds \ ++export_symbols_cmds \ ++prelink_cmds \ ++postinstall_cmds \ ++postuninstall_cmds \ ++finish_cmds \ ++sys_lib_search_path_spec \ ++sys_lib_dlsearch_path_spec; do ++ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in ++ *[\\\\\\\`\\"\\\$]*) ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ++ ;; ++ *) ++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ++ ;; ++ esac ++done ++ ++# Fix-up fallback echo if it was mangled by the above quoting rules. ++case \$lt_ECHO in ++*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ++ ;; ++esac ++ ++ac_aux_dir='$ac_aux_dir' ++xsi_shell='$xsi_shell' ++lt_shell_append='$lt_shell_append' ++ ++# See if we are running on zsh, and set the options which allow our ++# commands through without removal of \ escapes INIT. ++if test -n "\${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++fi ++ ++ ++ PACKAGE='$PACKAGE' ++ VERSION='$VERSION' ++ TIMESTAMP='$TIMESTAMP' ++ RM='$RM' ++ ofile='$ofile' ++ ++ ++ ++ ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++ ++# Handling of arguments. ++for ac_config_target in $ac_config_targets ++do ++ case $ac_config_target in ++ "rfbconfig.h") CONFIG_HEADERS="$CONFIG_HEADERS rfbconfig.h" ;; ++ "rfb/rfbconfig.h") CONFIG_COMMANDS="$CONFIG_COMMANDS rfb/rfbconfig.h" ;; ++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ "libvncserver/Makefile") CONFIG_FILES="$CONFIG_FILES libvncserver/Makefile" ;; ++ "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;; ++ "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; ++ "vncterm/Makefile") CONFIG_FILES="$CONFIG_FILES vncterm/Makefile" ;; ++ "classes/Makefile") CONFIG_FILES="$CONFIG_FILES classes/Makefile" ;; ++ "classes/ssl/Makefile") CONFIG_FILES="$CONFIG_FILES classes/ssl/Makefile" ;; ++ "libvncclient/Makefile") CONFIG_FILES="$CONFIG_FILES libvncclient/Makefile" ;; ++ "client_examples/Makefile") CONFIG_FILES="$CONFIG_FILES client_examples/Makefile" ;; ++ "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; ++ "libvncserver-config") CONFIG_FILES="$CONFIG_FILES libvncserver-config" ;; ++ "LibVNCServer.spec") CONFIG_FILES="$CONFIG_FILES LibVNCServer.spec" ;; ++ "chmod-libvncserver-config") CONFIG_COMMANDS="$CONFIG_COMMANDS chmod-libvncserver-config" ;; ++ ++ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 ++echo "$as_me: error: invalid argument: $ac_config_target" >&2;} ++ { (exit 1); exit 1; }; };; ++ esac ++done ++ ++ ++# If the user did not use the arguments to specify the items to instantiate, ++# then the envvar interface is used. Set only those that are not. ++# We use the long form for the default assignment because of an extremely ++# bizarre bug on SunOS 4.1.3. ++if $ac_need_defaults; then ++ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files ++ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers ++ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands ++fi ++ ++# Have a temporary directory for convenience. Make it in the build tree ++# simply because there is no reason against having it here, and in addition, ++# creating and moving files from /tmp can sometimes cause problems. ++# Hook for its removal unless debugging. ++# Note that there is a small window in which the directory will not be cleaned: ++# after its creation but before its name has been assigned to `$tmp'. ++$debug || ++{ ++ tmp= ++ trap 'exit_status=$? ++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ++' 0 ++ trap '{ (exit 1); exit 1; }' 1 2 13 15 ++} ++# Create a (secure) tmp directory for tmp files. ++ ++{ ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && ++ test -n "$tmp" && test -d "$tmp" ++} || ++{ ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") ++} || ++{ ++ echo "$me: cannot create a temporary directory in ." >&2 ++ { (exit 1); exit 1; } ++} ++ ++# ++# Set up the sed scripts for CONFIG_FILES section. ++# ++ ++# No need to generate the scripts if there are no CONFIG_FILES. ++# This happens for instance when ./config.status config.h ++if test -n "$CONFIG_FILES"; then ++ ++_ACEOF ++ ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++SHELL!$SHELL$ac_delim ++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim ++PACKAGE_NAME!$PACKAGE_NAME$ac_delim ++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim ++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim ++PACKAGE_STRING!$PACKAGE_STRING$ac_delim ++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim ++exec_prefix!$exec_prefix$ac_delim ++prefix!$prefix$ac_delim ++program_transform_name!$program_transform_name$ac_delim ++bindir!$bindir$ac_delim ++sbindir!$sbindir$ac_delim ++libexecdir!$libexecdir$ac_delim ++datarootdir!$datarootdir$ac_delim ++datadir!$datadir$ac_delim ++sysconfdir!$sysconfdir$ac_delim ++sharedstatedir!$sharedstatedir$ac_delim ++localstatedir!$localstatedir$ac_delim ++includedir!$includedir$ac_delim ++oldincludedir!$oldincludedir$ac_delim ++docdir!$docdir$ac_delim ++infodir!$infodir$ac_delim ++htmldir!$htmldir$ac_delim ++dvidir!$dvidir$ac_delim ++pdfdir!$pdfdir$ac_delim ++psdir!$psdir$ac_delim ++libdir!$libdir$ac_delim ++localedir!$localedir$ac_delim ++mandir!$mandir$ac_delim ++DEFS!$DEFS$ac_delim ++ECHO_C!$ECHO_C$ac_delim ++ECHO_N!$ECHO_N$ac_delim ++ECHO_T!$ECHO_T$ac_delim ++LIBS!$LIBS$ac_delim ++build_alias!$build_alias$ac_delim ++host_alias!$host_alias$ac_delim ++target_alias!$target_alias$ac_delim ++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim ++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim ++INSTALL_DATA!$INSTALL_DATA$ac_delim ++am__isrc!$am__isrc$ac_delim ++CYGPATH_W!$CYGPATH_W$ac_delim ++PACKAGE!$PACKAGE$ac_delim ++VERSION!$VERSION$ac_delim ++ACLOCAL!$ACLOCAL$ac_delim ++AUTOCONF!$AUTOCONF$ac_delim ++AUTOMAKE!$AUTOMAKE$ac_delim ++AUTOHEADER!$AUTOHEADER$ac_delim ++MAKEINFO!$MAKEINFO$ac_delim ++install_sh!$install_sh$ac_delim ++STRIP!$STRIP$ac_delim ++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim ++mkdir_p!$mkdir_p$ac_delim ++AWK!$AWK$ac_delim ++SET_MAKE!$SET_MAKE$ac_delim ++am__leading_dot!$am__leading_dot$ac_delim ++AMTAR!$AMTAR$ac_delim ++am__tar!$am__tar$ac_delim ++am__untar!$am__untar$ac_delim ++CC!$CC$ac_delim ++CFLAGS!$CFLAGS$ac_delim ++LDFLAGS!$LDFLAGS$ac_delim ++CPPFLAGS!$CPPFLAGS$ac_delim ++ac_ct_CC!$ac_ct_CC$ac_delim ++EXEEXT!$EXEEXT$ac_delim ++OBJEXT!$OBJEXT$ac_delim ++DEPDIR!$DEPDIR$ac_delim ++am__include!$am__include$ac_delim ++am__quote!$am__quote$ac_delim ++AMDEP_TRUE!$AMDEP_TRUE$ac_delim ++AMDEP_FALSE!$AMDEP_FALSE$ac_delim ++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim ++CCDEPMODE!$CCDEPMODE$ac_delim ++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim ++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim ++LIBTOOL!$LIBTOOL$ac_delim ++build!$build$ac_delim ++build_cpu!$build_cpu$ac_delim ++build_vendor!$build_vendor$ac_delim ++build_os!$build_os$ac_delim ++host!$host$ac_delim ++host_cpu!$host_cpu$ac_delim ++host_vendor!$host_vendor$ac_delim ++host_os!$host_os$ac_delim ++SED!$SED$ac_delim ++GREP!$GREP$ac_delim ++EGREP!$EGREP$ac_delim ++FGREP!$FGREP$ac_delim ++LD!$LD$ac_delim ++DUMPBIN!$DUMPBIN$ac_delim ++ac_ct_DUMPBIN!$ac_ct_DUMPBIN$ac_delim ++NM!$NM$ac_delim ++LN_S!$LN_S$ac_delim ++AR!$AR$ac_delim ++RANLIB!$RANLIB$ac_delim ++lt_ECHO!$lt_ECHO$ac_delim ++DSYMUTIL!$DSYMUTIL$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++CEOF$ac_eof ++_ACEOF ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++NMEDIT!$NMEDIT$ac_delim ++LIPO!$LIPO$ac_delim ++OTOOL!$OTOOL$ac_delim ++OTOOL64!$OTOOL64$ac_delim ++CPP!$CPP$ac_delim ++with_ffmpeg!$with_ffmpeg$ac_delim ++WITH_FFMPEG_TRUE!$WITH_FFMPEG_TRUE$ac_delim ++WITH_FFMPEG_FALSE!$WITH_FFMPEG_FALSE$ac_delim ++HAVE_MP3LAME_TRUE!$HAVE_MP3LAME_TRUE$ac_delim ++HAVE_MP3LAME_FALSE!$HAVE_MP3LAME_FALSE$ac_delim ++X_CFLAGS!$X_CFLAGS$ac_delim ++X_PRE_LIBS!$X_PRE_LIBS$ac_delim ++X_LIBS!$X_LIBS$ac_delim ++X_EXTRA_LIBS!$X_EXTRA_LIBS$ac_delim ++HAVE_X_TRUE!$HAVE_X_TRUE$ac_delim ++HAVE_X_FALSE!$HAVE_X_FALSE$ac_delim ++CRYPT_LIBS!$CRYPT_LIBS$ac_delim ++SSL_LIBS!$SSL_LIBS$ac_delim ++AVAHI_CFLAGS!$AVAHI_CFLAGS$ac_delim ++AVAHI_LIBS!$AVAHI_LIBS$ac_delim ++SYSTEM_LIBVNCSERVER_CFLAGS!$SYSTEM_LIBVNCSERVER_CFLAGS$ac_delim ++SYSTEM_LIBVNCSERVER_LIBS!$SYSTEM_LIBVNCSERVER_LIBS$ac_delim ++HAVE_SYSTEM_LIBVNCSERVER_TRUE!$HAVE_SYSTEM_LIBVNCSERVER_TRUE$ac_delim ++HAVE_SYSTEM_LIBVNCSERVER_FALSE!$HAVE_SYSTEM_LIBVNCSERVER_FALSE$ac_delim ++HAVE_LIBPTHREAD_TRUE!$HAVE_LIBPTHREAD_TRUE$ac_delim ++HAVE_LIBPTHREAD_FALSE!$HAVE_LIBPTHREAD_FALSE$ac_delim ++WITH_TIGHTVNC_FILETRANSFER_TRUE!$WITH_TIGHTVNC_FILETRANSFER_TRUE$ac_delim ++WITH_TIGHTVNC_FILETRANSFER_FALSE!$WITH_TIGHTVNC_FILETRANSFER_FALSE$ac_delim ++HAVE_LIBZ_TRUE!$HAVE_LIBZ_TRUE$ac_delim ++HAVE_LIBZ_FALSE!$HAVE_LIBZ_FALSE$ac_delim ++HAVE_LIBJPEG_TRUE!$HAVE_LIBJPEG_TRUE$ac_delim ++HAVE_LIBJPEG_FALSE!$HAVE_LIBJPEG_FALSE$ac_delim ++HAVE_LIBSDL_TRUE!$HAVE_LIBSDL_TRUE$ac_delim ++HAVE_LIBSDL_FALSE!$HAVE_LIBSDL_FALSE$ac_delim ++SDL_CFLAGS!$SDL_CFLAGS$ac_delim ++SDL_LIBS!$SDL_LIBS$ac_delim ++MINGW_TRUE!$MINGW_TRUE$ac_delim ++MINGW_FALSE!$MINGW_FALSE$ac_delim ++WSOCKLIB!$WSOCKLIB$ac_delim ++LIB@&t@OBJS!$LIB@&t@OBJS$ac_delim ++CYGIPC_TRUE!$CYGIPC_TRUE$ac_delim ++CYGIPC_FALSE!$CYGIPC_FALSE$ac_delim ++LINUX_TRUE!$LINUX_TRUE$ac_delim ++LINUX_FALSE!$LINUX_FALSE$ac_delim ++OSX_TRUE!$OSX_TRUE$ac_delim ++OSX_FALSE!$OSX_FALSE$ac_delim ++HAVE_RPM_TRUE!$HAVE_RPM_TRUE$ac_delim ++HAVE_RPM_FALSE!$HAVE_RPM_FALSE$ac_delim ++RPMSOURCEDIR!$RPMSOURCEDIR$ac_delim ++LTLIBOBJS!$LTLIBOBJS$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 50; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++:end ++s/|#_!!_#|//g ++CEOF$ac_eof ++_ACEOF ++ ++ ++# VPATH may cause trouble with some makes, so we remove $(srcdir), ++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and ++# trailing colons and then remove the whole line if VPATH becomes empty ++# (actually we leave an empty line to preserve line numbers). ++if test "x$srcdir" = x.; then ++ ac_vpsub='/^[ ]*VPATH[ ]*=/{ ++s/:*\$(srcdir):*/:/ ++s/:*\${srcdir}:*/:/ ++s/:*@srcdir@:*/:/ ++s/^\([^=]*=[ ]*\):*/\1/ ++s/:*$// ++s/^[^=]*=[ ]*$// ++}' ++fi ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++fi # test -n "$CONFIG_FILES" ++ ++ ++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 ++echo "$as_me: error: Invalid tag $ac_tag." >&2;} ++ { (exit 1); exit 1; }; };; ++ :[FH]-) ac_tag=-:-;; ++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; ++ esac ++ ac_save_IFS=$IFS ++ IFS=: ++ set x $ac_tag ++ IFS=$ac_save_IFS ++ shift ++ ac_file=$1 ++ shift ++ ++ case $ac_mode in ++ :L) ac_source=$1;; ++ :[FH]) ++ ac_file_inputs= ++ for ac_f ++ do ++ case $ac_f in ++ -) ac_f="$tmp/stdin";; ++ *) # Look for the file first in the build tree, then in the source tree ++ # (if the path is not absolute). The absolute path cannot be DOS-style, ++ # because $ac_f cannot contain `:'. ++ test -f "$ac_f" || ++ case $ac_f in ++ [\\/$]*) false;; ++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; ++ esac || ++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 ++echo "$as_me: error: cannot find input file: $ac_f" >&2;} ++ { (exit 1); exit 1; }; };; ++ esac ++ ac_file_inputs="$ac_file_inputs $ac_f" ++ done ++ ++ # Let's still pretend it is `configure' which instantiates (i.e., don't ++ # use $as_me), people would be surprised to read: ++ # /* config.h. Generated by config.status. */ ++ configure_input="Generated from "`IFS=: ++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { echo "$as_me:$LINENO: creating $ac_file" >&5 ++echo "$as_me: creating $ac_file" >&6;} ++ fi ++ ++ case $ac_tag in ++ *:-:* | *:-) cat >"$tmp/stdin";; ++ esac ++ ;; ++ esac ++ ++ ac_dir=`$as_dirname -- "$ac_file" || ++$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$ac_file" : 'X\(//\)[^/]' \| \ ++ X"$ac_file" : 'X\(//\)$' \| \ ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$ac_file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir="$ac_dir" ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } ++ ac_builddir=. ++ ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # ++ ++ case $INSTALL in ++ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; ++ esac ++ ac_MKDIR_P=$MKDIR_P ++ case $MKDIR_P in ++ [\\/$]* | ?:[\\/]* ) ;; ++ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; ++ esac ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++# If the template does not know about datarootdir, expand it. ++# FIXME: This hack should be removed a few years after 2.60. ++ac_datarootdir_hack=; ac_datarootdir_seen= ++ ++case `sed -n '/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p ++' $ac_file_inputs` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++ ac_datarootdir_hack=' ++ s&@datadir@&$datadir&g ++ s&@docdir@&$docdir&g ++ s&@infodir@&$infodir&g ++ s&@localedir@&$localedir&g ++ s&@mandir@&$mandir&g ++ s&\\\${datarootdir}&$datarootdir&g' ;; ++esac ++_ACEOF ++ ++# Neutralize VPATH when `$srcdir' = `.'. ++# Shell code in configure.ac might set extrasub. ++# FIXME: do we really want to maintain this feature? ++cat >>$CONFIG_STATUS <<_ACEOF ++ sed "$ac_vpsub ++$extrasub ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++:t ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++s&@configure_input@&$configure_input&;t t ++s&@top_builddir@&$ac_top_builddir_sub&;t t ++s&@srcdir@&$ac_srcdir&;t t ++s&@abs_srcdir@&$ac_abs_srcdir&;t t ++s&@top_srcdir@&$ac_top_srcdir&;t t ++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t ++s&@builddir@&$ac_builddir&;t t ++s&@abs_builddir@&$ac_abs_builddir&;t t ++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t ++s&@INSTALL@&$ac_INSTALL&;t t ++s&@MKDIR_P@&$ac_MKDIR_P&;t t ++$ac_datarootdir_hack ++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out ++ ++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && ++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && ++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && ++ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&5 ++echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&2;} ++ ++ rm -f "$tmp/stdin" ++ case $ac_file in ++ -) cat "$tmp/out"; rm -f "$tmp/out";; ++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; ++ esac ++ ;; ++ :H) ++ # ++ # CONFIG_HEADER ++ # ++_ACEOF ++ ++# Transform confdefs.h into a sed script `conftest.defines', that ++# substitutes the proper values into config.h.in to produce config.h. ++rm -f conftest.defines conftest.tail ++# First, append a space to every undef/define line, to ease matching. ++echo 's/$/ /' >conftest.defines ++# Then, protect against being on the right side of a sed subst, or in ++# an unquoted here document, in config.status. If some macros were ++# called several times there might be several #defines for the same ++# symbol, which is useless. But do not sort them, since the last ++# AC_DEFINE must be honored. ++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* ++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where ++# NAME is the cpp macro being defined, VALUE is the value it is being given. ++# PARAMS is the parameter list in the macro definition--in most cases, it's ++# just an empty string. ++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ++ac_dB='\\)[ (].*,\\1define\\2' ++ac_dC=' ' ++ac_dD=' ,' ++ ++uniq confdefs.h | ++ sed -n ' ++ t rset ++ :rset ++ s/^[ ]*#[ ]*define[ ][ ]*// ++ t ok ++ d ++ :ok ++ s/[\\&,]/\\&/g ++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p ++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ++ ' >>conftest.defines ++ ++# Remove the space that was appended to ease matching. ++# Then replace #undef with comments. This is necessary, for ++# example, in the case of _POSIX_SOURCE, which is predefined and required ++# on some systems where configure will not decide to define it. ++# (The regexp can be short, since the line contains either #define or #undef.) ++echo 's/ $// ++s,^[ #]*u.*,/* & */,' >>conftest.defines ++ ++# Break up conftest.defines: ++ac_max_sed_lines=50 ++ ++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" ++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" ++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" ++# et cetera. ++ac_in='$ac_file_inputs' ++ac_out='"$tmp/out1"' ++ac_nxt='"$tmp/out2"' ++ ++while : ++do ++ # Write a here document: ++ cat >>$CONFIG_STATUS <<_ACEOF ++ # First, check the format of the line: ++ cat >"\$tmp/defines.sed" <<\\CEOF ++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def ++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def ++b ++:def ++_ACEOF ++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS ++ echo 'CEOF ++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in ++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail ++ grep . conftest.tail >/dev/null || break ++ rm -f conftest.defines ++ mv conftest.tail conftest.defines ++done ++rm -f conftest.defines conftest.tail ++ ++echo "ac_result=$ac_in" >>$CONFIG_STATUS ++cat >>$CONFIG_STATUS <<\_ACEOF ++ if test x"$ac_file" != x-; then ++ echo "/* $configure_input */" >"$tmp/config.h" ++ cat "$ac_result" >>"$tmp/config.h" ++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then ++ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 ++echo "$as_me: $ac_file is unchanged" >&6;} ++ else ++ rm -f $ac_file ++ mv "$tmp/config.h" $ac_file ++ fi ++ else ++ echo "/* $configure_input */" ++ cat "$ac_result" ++ fi ++ rm -f "$tmp/out12" ++# Compute $ac_file's index in $config_headers. ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $ac_file | $ac_file:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; ++ esac ++done ++echo "timestamp for $ac_file" >`$as_dirname -- $ac_file || ++$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X$ac_file : 'X\(//\)[^/]' \| \ ++ X$ac_file : 'X\(//\)$' \| \ ++ X$ac_file : 'X\(/\)' \| . 2>/dev/null || ++echo X$ac_file | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'`/stamp-h$_am_stamp_count ++ ;; ++ ++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 ++echo "$as_me: executing $ac_file commands" >&6;} ++ ;; ++ esac ++ ++ ++ case $ac_file$ac_mode in ++ "rfb/rfbconfig.h":C) ac_prefix_conf_OUT=`echo rfb/rfbconfig.h` ++ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e "y:abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:" -e "s/@<:@^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@:>@/_/g"` ++ac_prefix_conf_PKG=`echo $PACKAGE` ++ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e "y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:"` ++ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e "y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:" -e "/^@<:@0123456789@:>@/s/^/_/"` ++ac_prefix_conf_INP=`echo _` ++if test "$ac_prefix_conf_INP" = "_"; then ++ for ac_file in : $CONFIG_HEADERS; do test "_$ac_file" = _: && continue ++ test -f "$ac_prefix_conf_INP" && continue ++ case $ac_file in ++ *.h) test -f $ac_file && ac_prefix_conf_INP=$ac_file ;; ++ *) ++ esac ++ done ++fi ++if test "$ac_prefix_conf_INP" = "_"; then ++ case "$ac_prefix_conf_OUT" in ++ */*) ac_prefix_conf_INP=`basename "$ac_prefix_conf_OUT"` ++ ;; ++ *-*) ac_prefix_conf_INP=`echo "$ac_prefix_conf_OUT" | sed -e "s/@<:@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_@:>@*-//"` ++ ;; ++ *) ac_prefix_conf_INP=config.h ++ ;; ++ esac ++fi ++if test -z "$ac_prefix_conf_PKG" ; then ++ { { echo "$as_me:$LINENO: error: no prefix for _PREFIX_PKG_CONFIG_H" >&5 ++echo "$as_me: error: no prefix for _PREFIX_PKG_CONFIG_H" >&2;} ++ { (exit 1); exit 1; }; } ++else ++ if test ! -f "$ac_prefix_conf_INP" ; then if test -f "$srcdir/$ac_prefix_conf_INP" ; then ++ ac_prefix_conf_INP="$srcdir/$ac_prefix_conf_INP" ++ fi fi ++ { echo "$as_me:$LINENO: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&5 ++echo "$as_me: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&6;} ++ if test -f $ac_prefix_conf_INP ; then ++ echo "s/@%:@undef *\\(@<:@ABCDEFGHIJKLMNOPQRSTUVWXYZ_@:>@\\)/@%:@undef $ac_prefix_conf_UPP""_\\1/" > conftest.prefix ++ # no! these are things like socklen_t, const, vfork ++ # echo "s/@%:@undef *\\(@<:@m4_cr_letters@:>@\\)/@%:@undef $_LOW""_\\1/" >> _script ++ echo "s/@%:@define *\\(@<:@ABCDEFGHIJKLMNOPQRSTUVWXYZ_@:>@@<:@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_@:>@*\\)\\(.*\\)/@%:@ifndef $ac_prefix_conf_UPP""_\\1 \\" >> conftest.prefix ++ echo "@%:@define $ac_prefix_conf_UPP""_\\1 \\2 \\" >> conftest.prefix ++ echo "@%:@endif/" >>conftest.prefix ++ # no! these are things like socklen_t, const, vfork ++ # echo "s/@%:@def[]ine *\\(@<:@m4_cr_letters@:>@@<:@_symbol@:>@*\\)\\(.*\\)/@%:@ifndef $_LOW""_\\1 \\" >> _script ++ # echo "@%:@define $_LOW""_\\1 \\2 \\" >> _script ++ # echo "@%:@endif/" >> _script ++ # now executing _script on _DEF input to create _OUT output file ++ echo "@%:@ifndef $ac_prefix_conf_DEF" >$tmp/pconfig.h ++ echo "@%:@define $ac_prefix_conf_DEF 1" >>$tmp/pconfig.h ++ echo ' ' >>$tmp/pconfig.h ++ echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$tmp/pconfig.h ++ ++ sed -f conftest.prefix $ac_prefix_conf_INP >>$tmp/pconfig.h ++ echo ' ' >>$tmp/pconfig.h ++ echo '/* once:' $ac_prefix_conf_DEF '*/' >>$tmp/pconfig.h ++ echo "@%:@endif" >>$tmp/pconfig.h ++ if cmp -s $ac_prefix_conf_OUT $tmp/pconfig.h 2>/dev/null; then ++ { echo "$as_me:$LINENO: $ac_prefix_conf_OUT is unchanged" >&5 ++echo "$as_me: $ac_prefix_conf_OUT is unchanged" >&6;} ++ else ++ ac_dir=`$as_dirname -- "$ac_prefix_conf_OUT" || ++$as_expr X"$ac_prefix_conf_OUT" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$ac_prefix_conf_OUT" : 'X\(//\)[^/]' \| \ ++ X"$ac_prefix_conf_OUT" : 'X\(//\)$' \| \ ++ X"$ac_prefix_conf_OUT" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$ac_prefix_conf_OUT" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir="$ac_dir" ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } ++ rm -f "$ac_prefix_conf_OUT" ++ mv $tmp/pconfig.h "$ac_prefix_conf_OUT" ++ fi ++ cp conftest.prefix _configs.sed ++ else ++ { { echo "$as_me:$LINENO: error: input file $ac_prefix_conf_INP does not exist - skip generating $ac_prefix_conf_OUT" >&5 ++echo "$as_me: error: input file $ac_prefix_conf_INP does not exist - skip generating $ac_prefix_conf_OUT" >&2;} ++ { (exit 1); exit 1; }; } ++ fi ++ rm -f conftest.* ++fi ++ ;; ++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do ++ # 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 ++ # 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. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then ++ dirpart=`$as_dirname -- "$mf" || ++$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$mf" : 'X\(//\)[^/]' \| \ ++ X"$mf" : 'X\(//\)$' \| \ ++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$mf" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # 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 ++ 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 ++ # Make sure the directory exists. ++ test -f "$dirpart/$file" && continue ++ fdir=`$as_dirname -- "$file" || ++$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$file" : 'X\(//\)[^/]' \| \ ++ X"$file" : 'X\(//\)$' \| \ ++ X"$file" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir=$dirpart/$fdir ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } ++ # echo "creating $dirpart/$file" ++ echo '# dummy' > "$dirpart/$file" ++ done ++done ++ ;; ++ "libtool":C) ++ ++ # See if we are running on zsh, and set the options which allow our ++ # commands through without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ ++ cfgfile="${ofile}T" ++ trap "$RM \"$cfgfile\"; exit 1" 1 2 15 ++ $RM "$cfgfile" ++ ++ cat <<_LT_EOF >> "$cfgfile" ++#! $SHELL ++ ++# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. ++# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++# NOTE: Changes made to this file will be lost: look at ltmain.sh. ++# ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, ++# 2006, 2007, 2008 Free Software Foundation, Inc. ++# Written by Gordon Matzigkeit, 1996 ++# ++# This file is part of GNU Libtool. ++# ++# GNU Libtool is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License as ++# published by the Free Software Foundation; either version 2 of ++# the License, or (at your option) any later version. ++# ++# As a special exception to the GNU General Public License, ++# if you distribute this file as part of a program or library that ++# is built using GNU Libtool, you may include this file under the ++# same distribution terms that you use for the rest of that program. ++# ++# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy ++# can be downloaded from http://www.gnu.org/licenses/gpl.html, or ++# obtained by writing to the Free Software Foundation, Inc., ++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ ++ ++# The names of the tagged configurations supported by this script. ++available_tags="" ++ ++# ### BEGIN LIBTOOL CONFIG ++ ++# Which release of libtool.m4 was used? ++macro_version=$macro_version ++macro_revision=$macro_revision ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# What type of objects to build. ++pic_mode=$pic_mode ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# A sed program that does not truncate output. ++SED=$lt_SED ++ ++# Sed that helps us avoid accidentally triggering echo(1) options like -n. ++Xsed="\$SED -e 1s/^X//" ++ ++# A grep program that handles long lines. ++GREP=$lt_GREP ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# A literal string matcher. ++FGREP=$lt_FGREP ++ ++# A BSD- or MS-compatible name lister. ++NM=$lt_NM ++ ++# Whether we need soft or hard links. ++LN_S=$lt_LN_S ++ ++# What is the maximum length of a command? ++max_cmd_len=$max_cmd_len ++ ++# Object file suffix (normally "o"). ++objext=$ac_objext ++ ++# Executable file suffix (normally ""). ++exeext=$exeext ++ ++# whether the shell understands "unset". ++lt_unset=$lt_unset ++ ++# turn spaces into newlines. ++SP2NL=$lt_lt_SP2NL ++ ++# turn newlines into spaces. ++NL2SP=$lt_lt_NL2SP ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method ++ ++# Command to use when deplibs_check_method == "file_magic". ++file_magic_cmd=$lt_file_magic_cmd ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A symbol stripping program. ++STRIP=$lt_STRIP ++ ++# Commands used to install an old-style archive. ++RANLIB=$lt_RANLIB ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ ++# A C compiler. ++LTCC=$lt_CC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_CFLAGS ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration. ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++ ++# Transform the output of nm in a C name address pair. ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++ ++# Transform the output of nm in a C name address pair when lib prefix is needed. ++global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# An echo program that does not interpret backslashes. ++ECHO=$lt_ECHO ++ ++# Used to examine libraries when file_magic_cmd begins with "file". ++MAGIC_CMD=$MAGIC_CMD ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Tool to manipulate archived DWARF debug symbol files on Mac OS X. ++DSYMUTIL=$lt_DSYMUTIL ++ ++# Tool to change global to local symbols on Mac OS X. ++NMEDIT=$lt_NMEDIT ++ ++# Tool to manipulate fat objects and archives on Mac OS X. ++LIPO=$lt_LIPO ++ ++# ldd/readelf like tool for Mach-O binaries on Mac OS X. ++OTOOL=$lt_OTOOL ++ ++# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. ++OTOOL64=$lt_OTOOL64 ++ ++# Old archive suffix (normally "a"). ++libext=$libext ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds=$lt_shrext_cmds ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at link time. ++variables_saved_for_relink=$lt_variables_saved_for_relink ++ ++# Do we need the "lib" prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Library versioning type. ++version_type=$version_type ++ ++# Shared library runtime path variable. ++runpath_var=$runpath_var ++ ++# Shared library path variable. ++shlibpath_var=$shlibpath_var ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ++# Format of library name prefix. ++libname_spec=$lt_libname_spec ++ ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME ++library_names_spec=$lt_library_names_spec ++ ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec ++ ++# Command to use after installation of a shared archive. ++postinstall_cmds=$lt_postinstall_cmds ++ ++# Command to use after uninstallation of a shared archive. ++postuninstall_cmds=$lt_postuninstall_cmds ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds ++ ++# As "finish_cmds", except a single script fragment to be evaled but ++# not shown. ++finish_eval=$lt_finish_eval ++ ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs ++ ++# Compile-time system search path for libraries. ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++ ++# Run-time system search path for libraries. ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen ++ ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static ++ ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib ++ ++ ++# The linker used to build libraries. ++LD=$lt_LD ++ ++# Commands used to build an old-style archive. ++old_archive_cmds=$lt_old_archive_cmds ++ ++# A language specific compiler. ++CC=$lt_compiler ++ ++# Is the compiler the GNU compiler? ++with_gcc=$GCC ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc ++ ++# Whether or not to disallow shared libs when runtime libs are static. ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec ++ ++# Whether the compiler copes with passing no objects directly. ++compiler_needs_object=$lt_compiler_needs_object ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds ++ ++# Commands used to build a shared archive. ++archive_cmds=$lt_archive_cmds ++archive_expsym_cmds=$lt_archive_expsym_cmds ++ ++# Commands used to build a loadable module if different from building ++# a shared archive. ++module_cmds=$lt_module_cmds ++module_expsym_cmds=$lt_module_expsym_cmds ++ ++# Whether we are building with GNU ld or not. ++with_gnu_ld=$lt_with_gnu_ld ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag ++ ++# Flag that enforces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec ++ ++# If ld is used when linking, flag to hardcode \$libdir into a binary ++# during linking. This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld ++ ++# Whether we need a single "-rpath" flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator ++ ++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes ++# DIR into the resulting binary. ++hardcode_direct=$hardcode_direct ++ ++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes ++# DIR into the resulting binary and the resulting library dependency is ++# "absolute",i.e impossible to change by setting \${shlibpath_var} if the ++# library is relocated. ++hardcode_direct_absolute=$hardcode_direct_absolute ++ ++# Set to "yes" if using the -LDIR flag during linking hardcodes DIR ++# into the resulting binary. ++hardcode_minus_L=$hardcode_minus_L ++ ++# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR ++# into the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var ++ ++# Set to "yes" if building a shared library automatically hardcodes DIR ++# into the library and all subsequent libraries and executables linked ++# against it. ++hardcode_automatic=$hardcode_automatic ++ ++# Set to yes if linker adds runtime paths of dependent libraries ++# to runtime path list. ++inherit_rpath=$inherit_rpath ++ ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs ++ ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path ++ ++# Set to "yes" if exported symbols are required. ++always_export_symbols=$always_export_symbols ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms ++ ++# Commands necessary for linking programs (against libraries) with templates. ++prelink_cmds=$lt_prelink_cmds ++ ++# Specify filename containing input files. ++file_list_spec=$lt_file_list_spec ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action ++ ++# ### END LIBTOOL CONFIG ++ ++_LT_EOF ++ ++ case $host_os in ++ aix3*) ++ cat <<\_LT_EOF >> "$cfgfile" ++# AIX sometimes has problems with the GCC collect2 program. For some ++# reason, if we set the COLLECT_NAMES environment variable, the problems ++# vanish in a puff of smoke. ++if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++fi ++_LT_EOF ++ ;; ++ esac ++ ++ ++ltmain="$ac_aux_dir/ltmain.sh" ++ ++ ++ # We use sed instead of cat because bash on DJGPP gets confused if ++ # if finds mixed CR/LF and LF-only lines. Since sed operates in ++ # text mode, it properly converts lines to CR/LF. This bash problem ++ # is reportedly fixed, but why not run on old versions too? ++ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) ++ ++ case $xsi_shell in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++} ++ ++# func_basename file ++func_basename () ++{ ++ func_basename_result="${1##*/}" ++} ++ ++# func_dirname_and_basename file append nondir_replacement ++# perform func_basename and func_dirname in a single function ++# call: ++# dirname: Compute the dirname of FILE. If nonempty, ++# add APPEND to the result, otherwise set result ++# to NONDIR_REPLACEMENT. ++# value returned in "$func_dirname_result" ++# basename: Compute filename of FILE. ++# value retuned in "$func_basename_result" ++# Implementation must be kept synchronized with func_dirname ++# and func_basename. For efficiency, we do not delegate to ++# those functions but instead duplicate the functionality here. ++func_dirname_and_basename () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++ func_basename_result="${1##*/}" ++} ++ ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++func_stripname () ++{ ++ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are ++ # positional parameters, so assign one to ordinary parameter first. ++ func_stripname_result=${3} ++ func_stripname_result=${func_stripname_result#"${1}"} ++ func_stripname_result=${func_stripname_result%"${2}"} ++} ++ ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=${1%%=*} ++ func_opt_split_arg=${1#*=} ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ case ${1} in ++ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; ++ *) func_lo2o_result=${1} ;; ++ esac ++} ++ ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=${1%.*}.lo ++} ++ ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=$(( $* )) ++} ++ ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=${#1} ++} ++ ++_LT_EOF ++ ;; ++ *) # Bourne compatible functions. ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ # Extract subdirectory from the argument. ++ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` ++ if test "X$func_dirname_result" = "X${1}"; then ++ func_dirname_result="${3}" ++ else ++ func_dirname_result="$func_dirname_result${2}" ++ fi ++} ++ ++# func_basename file ++func_basename () ++{ ++ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` ++} ++ ++ ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++# func_strip_suffix prefix name ++func_stripname () ++{ ++ case ${2} in ++ .*) func_stripname_result=`$ECHO "X${3}" \ ++ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; ++ *) func_stripname_result=`$ECHO "X${3}" \ ++ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; ++ esac ++} ++ ++# sed scripts: ++my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' ++my_sed_long_arg='1s/^-[^=]*=//' ++ ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` ++ func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` ++} ++ ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` ++} ++ ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=`expr "$@"` ++} ++ ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` ++} ++ ++_LT_EOF ++esac ++ ++case $lt_shell_append in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$1+=\$2" ++} ++_LT_EOF ++ ;; ++ *) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$1=\$$1\$2" ++} ++ ++_LT_EOF ++ ;; ++ esac ++ ++ ++ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) ++ ++ mv -f "$cfgfile" "$ofile" || ++ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") ++ chmod +x "$ofile" ++ ++ ;; ++ "chmod-libvncserver-config":C) chmod a+x libvncserver-config ;; ++ ++ esac ++done # for ac_tag ++ ++ ++{ (exit 0); exit 0; } ++_ACEOF ++chmod +x $CONFIG_STATUS ++ac_clean_files=$ac_clean_files_save ++ ++ ++# configure is writing to config.log, and then calls config.status. ++# config.status does its own redirection, appending to config.log. ++# Unfortunately, on DOS this fails, as config.log is still kept open ++# by configure, so config.status won't be able to write to it; its ++# output is simply discarded. So we exec the FD to /dev/null, ++# effectively closing config.log, so it can be properly (re)opened and ++# appended to by config.status. When coming back to configure, we ++# need to make the FD available again. ++if test "$no_create" != yes; then ++ ac_cs_success=: ++ ac_config_status_args= ++ test "$silent" = yes && ++ ac_config_status_args="$ac_config_status_args --quiet" ++ exec 5>/dev/null ++ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false ++ exec 5>>config.log ++ # Use ||, not &&, to avoid exiting from the if with $? = 1, which ++ # would make configure fail if this is the last instruction. ++ $ac_cs_success || { (exit 1); exit 1; } ++fi ++ ++chmod a+x ./libvncserver-config ++ +diff -Nur LibVNCServer-0.9.1.orig/autom4te.cache/output.1 LibVNCServer-0.9.1/autom4te.cache/output.1 +--- LibVNCServer-0.9.1.orig/autom4te.cache/output.1 1969-12-31 21:00:00.000000000 -0300 ++++ LibVNCServer-0.9.1/autom4te.cache/output.1 2008-10-31 18:46:25.000000000 -0200 +@@ -0,0 +1,22639 @@ ++@%:@! /bin/sh ++@%:@ Guess values for system-dependent variables and create Makefiles. ++@%:@ Generated by GNU Autoconf 2.61 for LibVNCServer 0.9.1. ++@%:@ ++@%:@ Report bugs to . ++@%:@ ++@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++@%:@ 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ++@%:@ This configure script is free software; the Free Software Foundation ++@%:@ gives unlimited permission to copy, distribute and modify it. ++## --------------------- ## ++## M4sh Initialization. ## ++## --------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh ++fi ++ ++# Support unset when possible. ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ as_unset=unset ++else ++ as_unset=false ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ ++# Work around bugs in pre-3.0 UWIN ksh. ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++for as_var in \ ++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ ++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ ++ LC_TELEPHONE LC_TIME ++do ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then ++ eval $as_var=C; export $as_var ++ else ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ fi ++done ++ ++# Required to use basename. ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++ ++# Name of the executable. ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# CDPATH. ++$as_unset CDPATH ++ ++ ++if test "x$CONFIG_SHELL" = x; then ++ if (eval ":") 2>/dev/null; then ++ as_have_required=yes ++else ++ as_have_required=no ++fi ++ ++ if test $as_have_required = yes && (eval ": ++(as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0) || { (exit 1); exit 1; } ++ ++( ++ as_lineno_1=\$LINENO ++ as_lineno_2=\$LINENO ++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && ++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ++") 2> /dev/null; then ++ : ++else ++ as_candidate_shells= ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ case $as_dir in ++ /*) ++ for as_base in sh bash ksh sh5; do ++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base" ++ done;; ++ esac ++done ++IFS=$as_save_IFS ++ ++ ++ for as_shell in $as_candidate_shells $SHELL; do ++ # Try only shells that exist, to save several forks. ++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && ++ { ("$as_shell") 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++_ASEOF ++}; then ++ CONFIG_SHELL=$as_shell ++ as_have_required=yes ++ if { "$as_shell" 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++(as_func_return () { ++ (exit $1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = "$1" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test $exitcode = 0) || { (exit 1); exit 1; } ++ ++( ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } ++ ++_ASEOF ++}; then ++ break ++fi ++ ++fi ++ ++ done ++ ++ if test "x$CONFIG_SHELL" != x; then ++ for as_var in BASH_ENV ENV ++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ done ++ export CONFIG_SHELL ++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} ++fi ++ ++ ++ if test $as_have_required = no; then ++ echo This script requires a shell more modern than all the ++ echo shells that I found on your system. Please install a ++ echo modern shell, or manually run the script under such a ++ echo shell if you do have one. ++ { (exit 1); exit 1; } ++fi ++ ++ ++fi ++ ++fi ++ ++ ++ ++(eval "as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0") || { ++ echo No shell found that supports shell functions. ++ echo Please tell autoconf@gnu.org about your system, ++ echo including any error possibly output before this ++ echo message ++} ++ ++ ++ ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { ++ ++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO ++ # uniformly replaced by the line number. The first 'sed' inserts a ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. ++ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | ++ sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno ++ N ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ ++ t loop ++ s/-\n.*// ++ ' >$as_me.lineno && ++ chmod +x "$as_me.lineno" || ++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 ++ { (exit 1); exit 1; }; } ++ ++ # Don't try to exec as it changes $[0], causing all sort of problems ++ # (the dirname of $[0] is not the place where we might find the ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" ++ # Exit status is that of the last command. ++ exit ++} ++ ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi ++echo >conf$$.file ++if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -p' ++elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++else ++ as_ln_s='cp -p' ++fi ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null ++ ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p=: ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' ++fi ++as_executable_p=$as_test_x ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++ ++ ++ ++# Check that we are running under the correct shell. ++SHELL=${CONFIG_SHELL-/bin/sh} ++ ++case X$lt_ECHO in ++X*--fallback-echo) ++ # Remove one level of quotation (which was required for Make). ++ ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` ++ ;; ++esac ++ ++ECHO=${lt_ECHO-echo} ++if test "X$1" = X--no-reexec; then ++ # Discard the --no-reexec flag, and continue. ++ shift ++elif test "X$1" = X--fallback-echo; then ++ # Avoid inline document here, it may be left over ++ : ++elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then ++ # Yippee, $ECHO works! ++ : ++else ++ # Restart under the correct shell. ++ exec $SHELL "$0" --no-reexec ${1+"$@"} ++fi ++ ++if test "X$1" = X--fallback-echo; then ++ # used as fallback echo ++ shift ++ cat <<_LT_EOF ++$* ++_LT_EOF ++ exit 0 ++fi ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++if test -z "$lt_ECHO"; then ++ if test "X${echo_test_string+set}" != Xset; then ++ # find a string as large as possible, as long as the shell can cope with it ++ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do ++ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... ++ if { echo_test_string=`eval $cmd`; } 2>/dev/null && ++ { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null ++ then ++ break ++ fi ++ done ++ fi ++ ++ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ : ++ else ++ # The Solaris, AIX, and Digital Unix default echo programs unquote ++ # backslashes. This makes it impossible to quote backslashes using ++ # echo "$something" | sed 's/\\/\\\\/g' ++ # ++ # So, first we look for a working echo in the user's PATH. ++ ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for dir in $PATH /usr/ucb; do ++ IFS="$lt_save_ifs" ++ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && ++ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ ECHO="$dir/echo" ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ++ if test "X$ECHO" = Xecho; then ++ # We didn't find a better echo, so look for alternatives. ++ if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ # This shell has a builtin print -r that does the trick. ++ ECHO='print -r' ++ elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && ++ test "X$CONFIG_SHELL" != X/bin/ksh; then ++ # If we have ksh, try running configure again with it. ++ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} ++ export ORIGINAL_CONFIG_SHELL ++ CONFIG_SHELL=/bin/ksh ++ export CONFIG_SHELL ++ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} ++ else ++ # Try using printf. ++ ECHO='printf %s\n' ++ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ # Cool, printf works ++ : ++ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL ++ export CONFIG_SHELL ++ SHELL="$CONFIG_SHELL" ++ export SHELL ++ ECHO="$CONFIG_SHELL $0 --fallback-echo" ++ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ ECHO="$CONFIG_SHELL $0 --fallback-echo" ++ else ++ # maybe with a smaller string... ++ prev=: ++ ++ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do ++ if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null ++ then ++ break ++ fi ++ prev="$cmd" ++ done ++ ++ if test "$prev" != 'sed 50q "$0"'; then ++ echo_test_string=`eval $prev` ++ export echo_test_string ++ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} ++ else ++ # Oops. We lost completely, so just stick with echo. ++ ECHO=echo ++ fi ++ fi ++ fi ++ fi ++ fi ++fi ++ ++# Copy echo and quote the copy suitably for passing to libtool from ++# the Makefile, instead of quoting the original, which is used later. ++lt_ECHO=$ECHO ++if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ++ lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" ++fi ++ ++ ++ ++ ++exec 7<&0 &1 ++ ++# Name of the host. ++# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, ++# so uname gets run too. ++ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` ++ ++# ++# Initializations. ++# ++ac_default_prefix=/usr/local ++ac_clean_files= ++ac_config_libobj_dir=. ++LIB@&t@OBJS= ++cross_compiling=no ++subdirs= ++MFLAGS= ++MAKEFLAGS= ++SHELL=${CONFIG_SHELL-/bin/sh} ++ ++# Identity of this package. ++PACKAGE_NAME='LibVNCServer' ++PACKAGE_TARNAME='libvncserver' ++PACKAGE_VERSION='0.9.1' ++PACKAGE_STRING='LibVNCServer 0.9.1' ++PACKAGE_BUGREPORT='http://sourceforge.net/projects/libvncserver' ++ ++# Factoring default headers for most tests. ++ac_includes_default="\ ++#include ++#ifdef HAVE_SYS_TYPES_H ++# include ++#endif ++#ifdef HAVE_SYS_STAT_H ++# include ++#endif ++#ifdef STDC_HEADERS ++# include ++# include ++#else ++# ifdef HAVE_STDLIB_H ++# include ++# endif ++#endif ++#ifdef HAVE_STRING_H ++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H ++# include ++# endif ++# include ++#endif ++#ifdef HAVE_STRINGS_H ++# include ++#endif ++#ifdef HAVE_INTTYPES_H ++# include ++#endif ++#ifdef HAVE_STDINT_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H ++# include ++#endif" ++ ++ac_subst_vars='SHELL ++PATH_SEPARATOR ++PACKAGE_NAME ++PACKAGE_TARNAME ++PACKAGE_VERSION ++PACKAGE_STRING ++PACKAGE_BUGREPORT ++exec_prefix ++prefix ++program_transform_name ++bindir ++sbindir ++libexecdir ++datarootdir ++datadir ++sysconfdir ++sharedstatedir ++localstatedir ++includedir ++oldincludedir ++docdir ++infodir ++htmldir ++dvidir ++pdfdir ++psdir ++libdir ++localedir ++mandir ++DEFS ++ECHO_C ++ECHO_N ++ECHO_T ++LIBS ++build_alias ++host_alias ++target_alias ++INSTALL_PROGRAM ++INSTALL_SCRIPT ++INSTALL_DATA ++am__isrc ++CYGPATH_W ++PACKAGE ++VERSION ++ACLOCAL ++AUTOCONF ++AUTOMAKE ++AUTOHEADER ++MAKEINFO ++install_sh ++STRIP ++INSTALL_STRIP_PROGRAM ++mkdir_p ++AWK ++SET_MAKE ++am__leading_dot ++AMTAR ++am__tar ++am__untar ++CC ++CFLAGS ++LDFLAGS ++CPPFLAGS ++ac_ct_CC ++EXEEXT ++OBJEXT ++DEPDIR ++am__include ++am__quote ++AMDEP_TRUE ++AMDEP_FALSE ++AMDEPBACKSLASH ++CCDEPMODE ++am__fastdepCC_TRUE ++am__fastdepCC_FALSE ++LIBTOOL ++build ++build_cpu ++build_vendor ++build_os ++host ++host_cpu ++host_vendor ++host_os ++SED ++GREP ++EGREP ++FGREP ++LD ++DUMPBIN ++ac_ct_DUMPBIN ++NM ++LN_S ++AR ++RANLIB ++lt_ECHO ++DSYMUTIL ++NMEDIT ++LIPO ++OTOOL ++OTOOL64 ++CPP ++with_ffmpeg ++WITH_FFMPEG_TRUE ++WITH_FFMPEG_FALSE ++HAVE_MP3LAME_TRUE ++HAVE_MP3LAME_FALSE ++X_CFLAGS ++X_PRE_LIBS ++X_LIBS ++X_EXTRA_LIBS ++HAVE_X_TRUE ++HAVE_X_FALSE ++CRYPT_LIBS ++SSL_LIBS ++AVAHI_CFLAGS ++AVAHI_LIBS ++SYSTEM_LIBVNCSERVER_CFLAGS ++SYSTEM_LIBVNCSERVER_LIBS ++HAVE_SYSTEM_LIBVNCSERVER_TRUE ++HAVE_SYSTEM_LIBVNCSERVER_FALSE ++HAVE_LIBPTHREAD_TRUE ++HAVE_LIBPTHREAD_FALSE ++WITH_TIGHTVNC_FILETRANSFER_TRUE ++WITH_TIGHTVNC_FILETRANSFER_FALSE ++HAVE_LIBZ_TRUE ++HAVE_LIBZ_FALSE ++HAVE_LIBJPEG_TRUE ++HAVE_LIBJPEG_FALSE ++HAVE_LIBSDL_TRUE ++HAVE_LIBSDL_FALSE ++SDL_CFLAGS ++SDL_LIBS ++MINGW_TRUE ++MINGW_FALSE ++WSOCKLIB ++LIB@&t@OBJS ++CYGIPC_TRUE ++CYGIPC_FALSE ++LINUX_TRUE ++LINUX_FALSE ++OSX_TRUE ++OSX_FALSE ++HAVE_RPM_TRUE ++HAVE_RPM_FALSE ++RPMSOURCEDIR ++LTLIBOBJS' ++ac_subst_files='' ++ ac_precious_vars='build_alias ++host_alias ++target_alias ++CC ++CFLAGS ++LDFLAGS ++LIBS ++CPPFLAGS ++CPP' ++ ++ ++# Initialize some variables set by options. ++ac_init_help= ++ac_init_version=false ++# The variables have the same names as the options, with ++# dashes changed to underlines. ++cache_file=/dev/null ++exec_prefix=NONE ++no_create= ++no_recursion= ++prefix=NONE ++program_prefix=NONE ++program_suffix=NONE ++program_transform_name=s,x,x, ++silent= ++site= ++srcdir= ++verbose= ++x_includes=NONE ++x_libraries=NONE ++ ++# Installation directory options. ++# These are left unexpanded so users can "make install exec_prefix=/foo" ++# and all the variables that are supposed to be based on exec_prefix ++# by default will actually change. ++# Use braces instead of parens because sh, perl, etc. also accept them. ++# (The list follows the same order as the GNU Coding Standards.) ++bindir='${exec_prefix}/bin' ++sbindir='${exec_prefix}/sbin' ++libexecdir='${exec_prefix}/libexec' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' ++sysconfdir='${prefix}/etc' ++sharedstatedir='${prefix}/com' ++localstatedir='${prefix}/var' ++includedir='${prefix}/include' ++oldincludedir='/usr/include' ++docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' ++infodir='${datarootdir}/info' ++htmldir='${docdir}' ++dvidir='${docdir}' ++pdfdir='${docdir}' ++psdir='${docdir}' ++libdir='${exec_prefix}/lib' ++localedir='${datarootdir}/locale' ++mandir='${datarootdir}/man' ++ ++ac_prev= ++ac_dashdash= ++for ac_option ++do ++ # If the previous option needs an argument, assign it. ++ if test -n "$ac_prev"; then ++ eval $ac_prev=\$ac_option ++ ac_prev= ++ continue ++ fi ++ ++ case $ac_option in ++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; ++ *) ac_optarg=yes ;; ++ esac ++ ++ # Accept the important Cygnus configure options, so we can diagnose typos. ++ ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; ++ ++ -bindir | --bindir | --bindi | --bind | --bin | --bi) ++ ac_prev=bindir ;; ++ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) ++ bindir=$ac_optarg ;; ++ ++ -build | --build | --buil | --bui | --bu) ++ ac_prev=build_alias ;; ++ -build=* | --build=* | --buil=* | --bui=* | --bu=*) ++ build_alias=$ac_optarg ;; ++ ++ -cache-file | --cache-file | --cache-fil | --cache-fi \ ++ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ++ ac_prev=cache_file ;; ++ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ ++ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) ++ cache_file=$ac_optarg ;; ++ ++ --config-cache | -C) ++ cache_file=config.cache ;; ++ ++ -datadir | --datadir | --datadi | --datad) ++ ac_prev=datadir ;; ++ -datadir=* | --datadir=* | --datadi=* | --datad=*) ++ datadir=$ac_optarg ;; ++ ++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ ++ | --dataroo | --dataro | --datar) ++ ac_prev=datarootdir ;; ++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ ++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) ++ datarootdir=$ac_optarg ;; ++ ++ -disable-* | --disable-*) ++ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid feature name: $ac_feature" >&2 ++ { (exit 1); exit 1; }; } ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=no ;; ++ ++ -docdir | --docdir | --docdi | --doc | --do) ++ ac_prev=docdir ;; ++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) ++ docdir=$ac_optarg ;; ++ ++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ++ ac_prev=dvidir ;; ++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) ++ dvidir=$ac_optarg ;; ++ ++ -enable-* | --enable-*) ++ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid feature name: $ac_feature" >&2 ++ { (exit 1); exit 1; }; } ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=\$ac_optarg ;; ++ ++ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ ++ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ ++ | --exec | --exe | --ex) ++ ac_prev=exec_prefix ;; ++ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ ++ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ ++ | --exec=* | --exe=* | --ex=*) ++ exec_prefix=$ac_optarg ;; ++ ++ -gas | --gas | --ga | --g) ++ # Obsolete; use --with-gas. ++ with_gas=yes ;; ++ ++ -help | --help | --hel | --he | -h) ++ ac_init_help=long ;; ++ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ++ ac_init_help=recursive ;; ++ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ++ ac_init_help=short ;; ++ ++ -host | --host | --hos | --ho) ++ ac_prev=host_alias ;; ++ -host=* | --host=* | --hos=* | --ho=*) ++ host_alias=$ac_optarg ;; ++ ++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ++ ac_prev=htmldir ;; ++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ ++ | --ht=*) ++ htmldir=$ac_optarg ;; ++ ++ -includedir | --includedir | --includedi | --included | --include \ ++ | --includ | --inclu | --incl | --inc) ++ ac_prev=includedir ;; ++ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ ++ | --includ=* | --inclu=* | --incl=* | --inc=*) ++ includedir=$ac_optarg ;; ++ ++ -infodir | --infodir | --infodi | --infod | --info | --inf) ++ ac_prev=infodir ;; ++ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) ++ infodir=$ac_optarg ;; ++ ++ -libdir | --libdir | --libdi | --libd) ++ ac_prev=libdir ;; ++ -libdir=* | --libdir=* | --libdi=* | --libd=*) ++ libdir=$ac_optarg ;; ++ ++ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ ++ | --libexe | --libex | --libe) ++ ac_prev=libexecdir ;; ++ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ ++ | --libexe=* | --libex=* | --libe=*) ++ libexecdir=$ac_optarg ;; ++ ++ -localedir | --localedir | --localedi | --localed | --locale) ++ ac_prev=localedir ;; ++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) ++ localedir=$ac_optarg ;; ++ ++ -localstatedir | --localstatedir | --localstatedi | --localstated \ ++ | --localstate | --localstat | --localsta | --localst | --locals) ++ ac_prev=localstatedir ;; ++ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) ++ localstatedir=$ac_optarg ;; ++ ++ -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ++ ac_prev=mandir ;; ++ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) ++ mandir=$ac_optarg ;; ++ ++ -nfp | --nfp | --nf) ++ # Obsolete; use --without-fp. ++ with_fp=no ;; ++ ++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \ ++ | --no-cr | --no-c | -n) ++ no_create=yes ;; ++ ++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \ ++ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ++ no_recursion=yes ;; ++ ++ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ ++ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ ++ | --oldin | --oldi | --old | --ol | --o) ++ ac_prev=oldincludedir ;; ++ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ ++ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ ++ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) ++ oldincludedir=$ac_optarg ;; ++ ++ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ++ ac_prev=prefix ;; ++ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ++ prefix=$ac_optarg ;; ++ ++ -program-prefix | --program-prefix | --program-prefi | --program-pref \ ++ | --program-pre | --program-pr | --program-p) ++ ac_prev=program_prefix ;; ++ -program-prefix=* | --program-prefix=* | --program-prefi=* \ ++ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) ++ program_prefix=$ac_optarg ;; ++ ++ -program-suffix | --program-suffix | --program-suffi | --program-suff \ ++ | --program-suf | --program-su | --program-s) ++ ac_prev=program_suffix ;; ++ -program-suffix=* | --program-suffix=* | --program-suffi=* \ ++ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) ++ program_suffix=$ac_optarg ;; ++ ++ -program-transform-name | --program-transform-name \ ++ | --program-transform-nam | --program-transform-na \ ++ | --program-transform-n | --program-transform- \ ++ | --program-transform | --program-transfor \ ++ | --program-transfo | --program-transf \ ++ | --program-trans | --program-tran \ ++ | --progr-tra | --program-tr | --program-t) ++ ac_prev=program_transform_name ;; ++ -program-transform-name=* | --program-transform-name=* \ ++ | --program-transform-nam=* | --program-transform-na=* \ ++ | --program-transform-n=* | --program-transform-=* \ ++ | --program-transform=* | --program-transfor=* \ ++ | --program-transfo=* | --program-transf=* \ ++ | --program-trans=* | --program-tran=* \ ++ | --progr-tra=* | --program-tr=* | --program-t=*) ++ program_transform_name=$ac_optarg ;; ++ ++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ++ ac_prev=pdfdir ;; ++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) ++ pdfdir=$ac_optarg ;; ++ ++ -psdir | --psdir | --psdi | --psd | --ps) ++ ac_prev=psdir ;; ++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) ++ psdir=$ac_optarg ;; ++ ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil) ++ silent=yes ;; ++ ++ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ++ ac_prev=sbindir ;; ++ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ ++ | --sbi=* | --sb=*) ++ sbindir=$ac_optarg ;; ++ ++ -sharedstatedir | --sharedstatedir | --sharedstatedi \ ++ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ ++ | --sharedst | --shareds | --shared | --share | --shar \ ++ | --sha | --sh) ++ ac_prev=sharedstatedir ;; ++ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ ++ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ ++ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ ++ | --sha=* | --sh=*) ++ sharedstatedir=$ac_optarg ;; ++ ++ -site | --site | --sit) ++ ac_prev=site ;; ++ -site=* | --site=* | --sit=*) ++ site=$ac_optarg ;; ++ ++ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ++ ac_prev=srcdir ;; ++ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ++ srcdir=$ac_optarg ;; ++ ++ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ ++ | --syscon | --sysco | --sysc | --sys | --sy) ++ ac_prev=sysconfdir ;; ++ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ ++ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) ++ sysconfdir=$ac_optarg ;; ++ ++ -target | --target | --targe | --targ | --tar | --ta | --t) ++ ac_prev=target_alias ;; ++ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) ++ target_alias=$ac_optarg ;; ++ ++ -v | -verbose | --verbose | --verbos | --verbo | --verb) ++ verbose=yes ;; ++ ++ -version | --version | --versio | --versi | --vers | -V) ++ ac_init_version=: ;; ++ ++ -with-* | --with-*) ++ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid package name: $ac_package" >&2 ++ { (exit 1); exit 1; }; } ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=\$ac_optarg ;; ++ ++ -without-* | --without-*) ++ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid package name: $ac_package" >&2 ++ { (exit 1); exit 1; }; } ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=no ;; ++ ++ --x) ++ # Obsolete; use --with-x. ++ with_x=yes ;; ++ ++ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ ++ | --x-incl | --x-inc | --x-in | --x-i) ++ ac_prev=x_includes ;; ++ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ ++ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) ++ x_includes=$ac_optarg ;; ++ ++ -x-libraries | --x-libraries | --x-librarie | --x-librari \ ++ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ++ ac_prev=x_libraries ;; ++ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ ++ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) ++ x_libraries=$ac_optarg ;; ++ ++ -*) { echo "$as_me: error: unrecognized option: $ac_option ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; } ++ ;; ++ ++ *=*) ++ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 ++ { (exit 1); exit 1; }; } ++ eval $ac_envvar=\$ac_optarg ++ export $ac_envvar ;; ++ ++ *) ++ # FIXME: should be removed in autoconf 3.0. ++ echo "$as_me: WARNING: you should use --build, --host, --target" >&2 ++ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ echo "$as_me: WARNING: invalid host type: $ac_option" >&2 ++ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ++ ;; ++ ++ esac ++done ++ ++if test -n "$ac_prev"; then ++ ac_option=--`echo $ac_prev | sed 's/_/-/g'` ++ { echo "$as_me: error: missing argument to $ac_option" >&2 ++ { (exit 1); exit 1; }; } ++fi ++ ++# Be sure to have absolute directory names. ++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 ++do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; ++ esac ++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 ++ { (exit 1); exit 1; }; } ++done ++ ++# There might be people who depend on the old broken behavior: `$host' ++# used to hold the argument of --host etc. ++# FIXME: To remove some day. ++build=$build_alias ++host=$host_alias ++target=$target_alias ++ ++# FIXME: To remove some day. ++if test "x$host_alias" != x; then ++ if test "x$build_alias" = x; then ++ cross_compiling=maybe ++ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. ++ If a cross compiler is detected then cross compile mode will be used." >&2 ++ elif test "x$build_alias" != "x$host_alias"; then ++ cross_compiling=yes ++ fi ++fi ++ ++ac_tool_prefix= ++test -n "$host_alias" && ac_tool_prefix=$host_alias- ++ ++test "$silent" = yes && exec 6>/dev/null ++ ++ ++ac_pwd=`pwd` && test -n "$ac_pwd" && ++ac_ls_di=`ls -di .` && ++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || ++ { echo "$as_me: error: Working directory cannot be determined" >&2 ++ { (exit 1); exit 1; }; } ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ { echo "$as_me: error: pwd does not report name of working directory" >&2 ++ { (exit 1); exit 1; }; } ++ ++ ++# Find the source files, if location was not specified. ++if test -z "$srcdir"; then ++ ac_srcdir_defaulted=yes ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$0" || ++$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$0" : 'X\(//\)[^/]' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$0" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ srcdir=$ac_confdir ++ if test ! -r "$srcdir/$ac_unique_file"; then ++ srcdir=.. ++ fi ++else ++ ac_srcdir_defaulted=no ++fi ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 ++ { (exit 1); exit 1; }; } ++fi ++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ++ac_abs_confdir=`( ++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 ++ { (exit 1); exit 1; }; } ++ pwd)` ++# When building in place, set srcdir=. ++if test "$ac_abs_confdir" = "$ac_pwd"; then ++ srcdir=. ++fi ++# Remove unnecessary trailing slashes from srcdir. ++# Double slashes in file names in object file debugging info ++# mess up M-x gdb in Emacs. ++case $srcdir in ++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; ++esac ++for ac_var in $ac_precious_vars; do ++ eval ac_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_env_${ac_var}_value=\$${ac_var} ++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_cv_env_${ac_var}_value=\$${ac_var} ++done ++ ++# ++# Report the --help message. ++# ++if test "$ac_init_help" = "long"; then ++ # 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 LibVNCServer 0.9.1 to adapt to many kinds of systems. ++ ++Usage: $0 [OPTION]... [VAR=VALUE]... ++ ++To assign environment variables (e.g., CC, CFLAGS...), specify them as ++VAR=VALUE. See below for descriptions of some of the useful variables. ++ ++Defaults for the options are specified in brackets. ++ ++Configuration: ++ -h, --help display this help and exit ++ --help=short display options specific to this package ++ --help=recursive display the short help of all the included packages ++ -V, --version display version information and exit ++ -q, --quiet, --silent do not print \`checking...' messages ++ --cache-file=FILE cache test results in FILE [disabled] ++ -C, --config-cache alias for \`--cache-file=config.cache' ++ -n, --no-create do not create output files ++ --srcdir=DIR find the sources in DIR [configure dir or \`..'] ++ ++Installation directories: ++ --prefix=PREFIX install architecture-independent files in PREFIX ++ [$ac_default_prefix] ++ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ++ [PREFIX] ++ ++By default, \`make install' will install all the files in ++\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify ++an installation prefix other than \`$ac_default_prefix' using \`--prefix', ++for instance \`--prefix=\$HOME'. ++ ++For better control, use the options below. ++ ++Fine tuning of the installation directories: ++ --bindir=DIR user executables [EPREFIX/bin] ++ --sbindir=DIR system admin executables [EPREFIX/sbin] ++ --libexecdir=DIR program executables [EPREFIX/libexec] ++ --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] ++ --libdir=DIR object code libraries [EPREFIX/lib] ++ --includedir=DIR C header files [PREFIX/include] ++ --oldincludedir=DIR C header files for non-gcc [/usr/include] ++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] ++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR] ++ --infodir=DIR info documentation [DATAROOTDIR/info] ++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale] ++ --mandir=DIR man documentation [DATAROOTDIR/man] ++ --docdir=DIR documentation root @<:@DATAROOTDIR/doc/libvncserver@:>@ ++ --htmldir=DIR html documentation [DOCDIR] ++ --dvidir=DIR dvi documentation [DOCDIR] ++ --pdfdir=DIR pdf documentation [DOCDIR] ++ --psdir=DIR ps documentation [DOCDIR] ++_ACEOF ++ ++ cat <<\_ACEOF ++ ++Program names: ++ --program-prefix=PREFIX prepend PREFIX to installed program names ++ --program-suffix=SUFFIX append SUFFIX to installed program names ++ --program-transform-name=PROGRAM run sed PROGRAM on installed program names ++ ++X features: ++ --x-includes=DIR X include files are in DIR ++ --x-libraries=DIR X library files are in DIR ++ ++System types: ++ --build=BUILD configure for building on BUILD [guessed] ++ --host=HOST cross-compile to build programs to run on HOST [BUILD] ++_ACEOF ++fi ++ ++if test -n "$ac_init_help"; then ++ case $ac_init_help in ++ short | recursive ) echo "Configuration of LibVNCServer 0.9.1:";; ++ esac ++ cat <<\_ACEOF ++ ++Optional Features: ++ --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-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ ++ --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ ++ --enable-fast-install@<:@=PKGS@:>@ ++ optimize for fast installation @<:@default=yes@:>@ ++ --disable-libtool-lock avoid locking (might break parallel builds) ++ ++Optional Packages: ++ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] ++ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ++ --with-pic try to use only PIC/non-PIC objects @<:@default=use ++ both@:>@ ++ --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ ++ --without-filetransfer disable TightVNC file transfer protocol ++ --without-24bpp disable 24 bpp framebuffers ++ --with-ffmpeg=dir set ffmpeg home directory ++ --with-x use the X Window System ++ --with-system-libvncserver use installed libvncserver for x11vnc ++ --with-system-libvncserver=DIR use libvncserver installed in DIR for x11vnc ++ --with-x11vnc configure for building the x11vnc subdir (if present) ++ you will need to cd to x11vnc and run 'make' etc. ++ --without-xkeyboard disable xkeyboard extension support ++ --without-xinerama disable xinerama extension support ++ --without-xrandr disable xrandr extension support ++ --without-xfixes disable xfixes extension support ++ --without-xdamage disable xdamage extension support ++ --without-xtrap disable xtrap extension support ++ --without-xrecord disable xrecord extension support ++ --without-fbpm disable fbpm extension support ++ --without-dpms disable dpms extension support ++ --without-v4l disable video4linux support ++ --without-fbdev disable linux fb device support ++ --without-uinput disable linux uinput device support ++ --without-macosx-native disable MacOS X native display support ++ --without-crypt disable support for libcrypt ++ --without-crypto disable support for openssl libcrypto ++ --without-ssl disable support for openssl libssl ++ --without-avahi disable support for Avahi/mDNS ++ --with-avahi=DIR use avahi include/library files in DIR ++ --without-jpeg disable support for jpeg ++ --with-jpeg=DIR use jpeg include/library files in DIR ++ --without-libz disable support for deflate ++ --without-zlib disable support for deflate ++ --with-zlib=DIR use zlib include/library files in DIR ++ --without-pthread disable support for libpthread ++ ++Some influential environment variables: ++ CC C compiler command ++ CFLAGS C compiler flags ++ LDFLAGS linker flags, e.g. -L if you have libraries in a ++ nonstandard directory ++ LIBS libraries to pass to the linker, e.g. -l ++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if ++ you have headers in a nonstandard directory ++ CPP C preprocessor ++ ++Use these variables to override the choices made by `configure' or to help ++it to find libraries and programs with nonstandard names/locations. ++ ++Report bugs to . ++_ACEOF ++ac_status=$? ++fi ++ ++if test "$ac_init_help" = "recursive"; then ++ # If there are subdirs, report their specific --help. ++ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue ++ test -d "$ac_dir" || continue ++ ac_builddir=. ++ ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ cd "$ac_dir" || { ac_status=$?; continue; } ++ # Check for guested configure. ++ if test -f "$ac_srcdir/configure.gnu"; then ++ echo && ++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive ++ elif test -f "$ac_srcdir/configure"; then ++ echo && ++ $SHELL "$ac_srcdir/configure" --help=recursive ++ else ++ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } ++ done ++fi ++ ++test -n "$ac_init_help" && exit $ac_status ++if $ac_init_version; then ++ cat <<\_ACEOF ++LibVNCServer configure 0.9.1 ++generated by GNU Autoconf 2.61 ++ ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ++This configure script is free software; the Free Software Foundation ++gives unlimited permission to copy, distribute and modify it. ++_ACEOF ++ exit ++fi ++cat >config.log <<_ACEOF ++This file contains any messages produced by compilers while ++running configure, to aid debugging if configure makes a mistake. ++ ++It was created by LibVNCServer $as_me 0.9.1, which was ++generated by GNU Autoconf 2.61. Invocation command line was ++ ++ $ $0 $@ ++ ++_ACEOF ++exec 5>>config.log ++{ ++cat <<_ASUNAME ++@%:@@%:@ --------- @%:@@%:@ ++@%:@@%:@ Platform. @%:@@%:@ ++@%:@@%:@ --------- @%:@@%:@ ++ ++hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` ++uname -m = `(uname -m) 2>/dev/null || echo unknown` ++uname -r = `(uname -r) 2>/dev/null || echo unknown` ++uname -s = `(uname -s) 2>/dev/null || echo unknown` ++uname -v = `(uname -v) 2>/dev/null || echo unknown` ++ ++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` ++/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` ++ ++/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` ++/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` ++/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` ++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` ++/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` ++/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` ++/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` ++ ++_ASUNAME ++ ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ echo "PATH: $as_dir" ++done ++IFS=$as_save_IFS ++ ++} >&5 ++ ++cat >&5 <<_ACEOF ++ ++ ++@%:@@%:@ ----------- @%:@@%:@ ++@%:@@%:@ Core tests. @%:@@%:@ ++@%:@@%:@ ----------- @%:@@%:@ ++ ++_ACEOF ++ ++ ++# Keep a trace of the command line. ++# Strip out --no-create and --no-recursion so they do not pile up. ++# Strip out --silent because we don't want to record it for future runs. ++# Also quote any args containing shell meta-characters. ++# Make two passes to allow for proper duplicate-argument suppression. ++ac_configure_args= ++ac_configure_args0= ++ac_configure_args1= ++ac_must_keep_next=false ++for ac_pass in 1 2 ++do ++ for ac_arg ++ do ++ case $ac_arg in ++ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil) ++ continue ;; ++ *\'*) ++ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ esac ++ case $ac_pass in ++ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; ++ 2) ++ ac_configure_args1="$ac_configure_args1 '$ac_arg'" ++ if test $ac_must_keep_next = true; then ++ ac_must_keep_next=false # Got value, back to normal. ++ else ++ case $ac_arg in ++ *=* | --config-cache | -C | -disable-* | --disable-* \ ++ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ++ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ++ | -with-* | --with-* | -without-* | --without-* | --x) ++ case "$ac_configure_args0 " in ++ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ++ esac ++ ;; ++ -* ) ac_must_keep_next=true ;; ++ esac ++ fi ++ ac_configure_args="$ac_configure_args '$ac_arg'" ++ ;; ++ esac ++ done ++done ++$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } ++$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } ++ ++# When interrupted or exit'd, cleanup temporary files, and complete ++# config.log. We remove comments because anyway the quotes in there ++# would cause problems or look ugly. ++# WARNING: Use '\'' to represent an apostrophe within the trap. ++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. ++trap 'exit_status=$? ++ # Save into config.log some information that might help in debugging. ++ { ++ echo ++ ++ cat <<\_ASBOX ++@%:@@%:@ ---------------- @%:@@%:@ ++@%:@@%:@ Cache variables. @%:@@%:@ ++@%:@@%:@ ---------------- @%:@@%:@ ++_ASBOX ++ echo ++ # The following way of writing the cache mishandles newlines in values, ++( ++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ (set) 2>&1 | ++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) ++ sed -n \ ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( ++ *) ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ++ ;; ++ esac | ++ sort ++) ++ echo ++ ++ cat <<\_ASBOX ++@%:@@%:@ ----------------- @%:@@%:@ ++@%:@@%:@ Output variables. @%:@@%:@ ++@%:@@%:@ ----------------- @%:@@%:@ ++_ASBOX ++ echo ++ for ac_var in $ac_subst_vars ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ ++ if test -n "$ac_subst_files"; then ++ cat <<\_ASBOX ++@%:@@%:@ ------------------- @%:@@%:@ ++@%:@@%:@ File substitutions. @%:@@%:@ ++@%:@@%:@ ------------------- @%:@@%:@ ++_ASBOX ++ echo ++ for ac_var in $ac_subst_files ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ fi ++ ++ if test -s confdefs.h; then ++ cat <<\_ASBOX ++@%:@@%:@ ----------- @%:@@%:@ ++@%:@@%:@ confdefs.h. @%:@@%:@ ++@%:@@%:@ ----------- @%:@@%:@ ++_ASBOX ++ echo ++ cat confdefs.h ++ echo ++ fi ++ test "$ac_signal" != 0 && ++ echo "$as_me: caught signal $ac_signal" ++ echo "$as_me: exit $exit_status" ++ } >&5 ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && ++ exit $exit_status ++' 0 ++for ac_signal in 1 2 13 15; do ++ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal ++done ++ac_signal=0 ++ ++# confdefs.h avoids OS command line length limits that DEFS can exceed. ++rm -f -r conftest* confdefs.h ++ ++# Predefined preprocessor variables. ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define PACKAGE_NAME "$PACKAGE_NAME" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define PACKAGE_STRING "$PACKAGE_STRING" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" ++_ACEOF ++ ++ ++# Let the site file select an alternate cache file if it wants to. ++# Prefer explicitly selected file to automatically selected ones. ++if test -n "$CONFIG_SITE"; then ++ set x $CONFIG_SITE ++elif test "x$prefix" != xNONE; then ++ set x "$prefix/share/config.site" "$prefix/etc/config.site" ++else ++ set x "$ac_default_prefix/share/config.site" \ ++ "$ac_default_prefix/etc/config.site" ++fi ++shift ++for ac_site_file ++do ++ if test -r "$ac_site_file"; then ++ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 ++echo "$as_me: loading site script $ac_site_file" >&6;} ++ sed 's/^/| /' "$ac_site_file" >&5 ++ . "$ac_site_file" ++ fi ++done ++ ++if test -r "$cache_file"; then ++ # Some versions of bash will fail to source /dev/null (special ++ # files actually), so we avoid doing that. ++ if test -f "$cache_file"; then ++ { echo "$as_me:$LINENO: loading cache $cache_file" >&5 ++echo "$as_me: loading cache $cache_file" >&6;} ++ case $cache_file in ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; ++ esac ++ fi ++else ++ { echo "$as_me:$LINENO: creating cache $cache_file" >&5 ++echo "$as_me: creating cache $cache_file" >&6;} ++ >$cache_file ++fi ++ ++# Check that the precious variables saved in the cache have kept the same ++# value. ++ac_cache_corrupted=false ++for ac_var in $ac_precious_vars; do ++ eval ac_old_set=\$ac_cv_env_${ac_var}_set ++ eval ac_new_set=\$ac_env_${ac_var}_set ++ eval ac_old_val=\$ac_cv_env_${ac_var}_value ++ eval ac_new_val=\$ac_env_${ac_var}_value ++ case $ac_old_set,$ac_new_set in ++ set,) ++ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 ++echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ++ ac_cache_corrupted=: ;; ++ ,set) ++ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 ++echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ++ ac_cache_corrupted=: ;; ++ ,);; ++ *) ++ if test "x$ac_old_val" != "x$ac_new_val"; then ++ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 ++echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ++ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 ++echo "$as_me: former value: $ac_old_val" >&2;} ++ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 ++echo "$as_me: current value: $ac_new_val" >&2;} ++ ac_cache_corrupted=: ++ fi;; ++ esac ++ # Pass precious variables to config.status. ++ if test "$ac_new_set" = set; then ++ case $ac_new_val in ++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *) ac_arg=$ac_var=$ac_new_val ;; ++ esac ++ case " $ac_configure_args " in ++ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. ++ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; ++ esac ++ fi ++done ++if $ac_cache_corrupted; then ++ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 ++echo "$as_me: error: changes in the environment can compromise the build" >&2;} ++ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 ++echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} ++ { (exit 1); exit 1; }; } ++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 ++ ++ ++am__api_version='1.10' ++ ++ac_aux_dir= ++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do ++ if test -f "$ac_dir/install-sh"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/install-sh -c" ++ break ++ elif test -f "$ac_dir/install.sh"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/install.sh -c" ++ break ++ elif test -f "$ac_dir/shtool"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/shtool install -c" ++ break ++ fi ++done ++if test -z "$ac_aux_dir"; then ++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 ++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++# These three variables are undocumented and unsupported, ++# and are intended to be withdrawn in a future Autoconf release. ++# They can cause serious problems if a builder's source tree is in a directory ++# whose full name contains unusual characters. ++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ++ ++ ++# Find a good install program. We prefer a C program (faster), ++# so one script is as good as another. But avoid the broken or ++# incompatible versions: ++# SysV /etc/install, /usr/sbin/install ++# SunOS /usr/etc/install ++# IRIX /sbin/install ++# AIX /bin/install ++# AmigaOS /C/install, which installs bootblocks on floppy discs ++# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag ++# AFS /usr/afsws/bin/install, which mishandles nonexistent args ++# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" ++# OS/2's system install, which has a completely different semantic ++# ./install, which can be erroneously created by make from ./install.sh. ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } ++if test -z "$INSTALL"; then ++if test "${ac_cv_path_install+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ # Account for people who put trailing slashes in PATH elements. ++case $as_dir/ in ++ ./ | .// | /cC/* | \ ++ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ++ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ ++ /usr/ucb/* ) ;; ++ *) ++ # OSF1 and SCO ODT 3.0 have their own names for install. ++ # Don't use installbsd from OSF since it installs stuff as root ++ # by default. ++ for ac_prog in ginstall scoinst install; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then ++ if test $ac_prog = install && ++ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ # AIX install. It has an incompatible calling convention. ++ : ++ elif test $ac_prog = install && ++ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ # program-specific install script used by HP pwplus--don't use. ++ : ++ else ++ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" ++ break 3 ++ fi ++ fi ++ done ++ done ++ ;; ++esac ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ if test "${ac_cv_path_install+set}" = set; then ++ INSTALL=$ac_cv_path_install ++ else ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for INSTALL within a source directory, because that will ++ # break other packages using the cache if that directory is ++ # removed, or if the value is a relative name. ++ INSTALL=$ac_install_sh ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } ++ ++# Use test -z because SunOS4 sh mishandles braces in ${var-val}. ++# It thinks the first close brace ends the variable substitution. ++test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' ++ ++test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' ++ ++test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ++ ++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 ++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } ++# Just in case ++sleep 1 ++echo timestamp > conftest.file ++# 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". ++ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken ++alias in your environment" >&5 ++echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken ++alias in your environment" >&2;} ++ { (exit 1); exit 1; }; } ++ fi ++ ++ test "$2" = conftest.file ++ ) ++then ++ # Ok. ++ : ++else ++ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! ++Check your system clock" >&5 ++echo "$as_me: error: newly created file is older than distributed files! ++Check your system clock" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++test "$program_prefix" != NONE && ++ program_transform_name="s&^&$program_prefix&;$program_transform_name" ++# Use a double $ so make ignores it. ++test "$program_suffix" != NONE && ++ program_transform_name="s&\$&$program_suffix&;$program_transform_name" ++# Double any \ or $. echo might interpret backslashes. ++# By default was `s,x,x', remove it if useless. ++cat <<\_ACEOF >conftest.sed ++s/[\\$]/&&/g;s/;s,x,x,$// ++_ACEOF ++program_transform_name=`echo $program_transform_name | sed -f conftest.sed` ++rm -f conftest.sed ++ ++# expand $ac_aux_dir to an absolute path ++am_aux_dir=`cd $ac_aux_dir && pwd` ++ ++test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" ++# Use eval to expand $SHELL ++if eval "$MISSING --run true"; then ++ am_missing_run="$MISSING --run " ++else ++ am_missing_run= ++ { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 ++echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} ++fi ++ ++{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 ++echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } ++if test -z "$MKDIR_P"; then ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in mkdir gmkdir; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue ++ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( ++ 'mkdir (GNU coreutils) '* | \ ++ 'mkdir (coreutils) '* | \ ++ 'mkdir (fileutils) '4.1*) ++ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext ++ break 3;; ++ esac ++ done ++ done ++done ++IFS=$as_save_IFS ++ ++fi ++ ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ MKDIR_P="$ac_cv_path_mkdir -p" ++ else ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for MKDIR_P within a source directory, because that will ++ # break other packages using the cache if that directory is ++ # removed, or if the value is a relative name. ++ test -d ./--version && rmdir ./--version ++ MKDIR_P="$ac_install_sh -d" ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 ++echo "${ECHO_T}$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. ++set dummy $ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_AWK+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$AWK"; then ++ ac_cv_prog_AWK="$AWK" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_AWK="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++AWK=$ac_cv_prog_AWK ++if test -n "$AWK"; then ++ { echo "$as_me:$LINENO: result: $AWK" >&5 ++echo "${ECHO_T}$AWK" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ test -n "$AWK" && break ++done ++ ++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } ++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh ++all: ++ @echo '@@@%%%=$(MAKE)=@@@%%%' ++_ACEOF ++# GNU make sometimes prints "make[1]: Entering...", which would confuse us. ++case `${MAKE-make} -f conftest.make 2>/dev/null` in ++ *@@@%%%=?*=@@@%%%*) ++ eval ac_cv_prog_make_${ac_make}_set=yes;; ++ *) ++ eval ac_cv_prog_make_${ac_make}_set=no;; ++esac ++rm -f conftest.make ++fi ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ SET_MAKE= ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ SET_MAKE="MAKE=${MAKE-make}" ++fi ++ ++rm -rf .tst 2>/dev/null ++mkdir .tst 2>/dev/null ++if test -d .tst; then ++ am__leading_dot=. ++else ++ am__leading_dot=_ ++fi ++rmdir .tst 2>/dev/null ++ ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ am__isrc=' -I$(srcdir)' ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 ++echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} ++ { (exit 1); exit 1; }; } ++ fi ++fi ++ ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' ++ else ++ CYGPATH_W=echo ++ fi ++fi ++ ++ ++# Define the identity of the package. ++ PACKAGE=LibVNCServer ++ VERSION=0.9.1 ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define PACKAGE "$PACKAGE" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define VERSION "$VERSION" ++_ACEOF ++ ++# Some tools Automake needs. ++ ++ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} ++ ++ ++AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} ++ ++ ++AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} ++ ++ ++AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} ++ ++ ++MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} ++ ++install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} ++ ++# 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. ++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. ++set dummy ${ac_tool_prefix}strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$STRIP"; then ++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++STRIP=$ac_cv_prog_STRIP ++if test -n "$STRIP"; then ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_STRIP"; then ++ ac_ct_STRIP=$STRIP ++ # Extract the first word of "strip", so it can be a program name with args. ++set dummy strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_STRIP"; then ++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_STRIP="strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ++if test -n "$ac_ct_STRIP"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi ++else ++ STRIP="$ac_cv_prog_STRIP" ++fi ++ ++fi ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" ++ ++# We need awk for the "check" target. The system "awk" is bad on ++# some platforms. ++# Always define AMTAR for backward compatibility. ++ ++AMTAR=${AMTAR-"${am_missing_run}tar"} ++ ++am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ++ ++ ++ ++ ++ ++ac_config_headers="$ac_config_headers rfbconfig.h" ++ ++ac_config_headers="$ac_config_headers " ++ ++ ++ac_config_commands="$ac_config_commands rfb/rfbconfig.h" ++ ++ ++# Checks for programs. ++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 ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. ++set dummy ${ac_tool_prefix}gcc; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_CC+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CC="${ac_tool_prefix}gcc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_CC"; then ++ ac_ct_CC=$CC ++ # Extract the first word of "gcc", so it can be a program name with args. ++set dummy gcc; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_CC+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_CC"; then ++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_CC="gcc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_CC=$ac_cv_prog_ac_ct_CC ++if test -n "$ac_ct_CC"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi ++else ++ CC="$ac_cv_prog_CC" ++fi ++ ++if test -z "$CC"; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++set dummy ${ac_tool_prefix}cc; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_CC+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CC="${ac_tool_prefix}cc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ fi ++fi ++if test -z "$CC"; then ++ # Extract the first word of "cc", so it can be a program name with args. ++set dummy cc; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_CC+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++ ac_prog_rejected=no ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ++ ac_prog_rejected=yes ++ continue ++ fi ++ ac_cv_prog_CC="cc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++if test $ac_prog_rejected = yes; then ++ # We found a bogon in the path, so make sure we never use it. ++ set dummy $ac_cv_prog_CC ++ shift ++ if test $@%:@ != 0; then ++ # We chose a different compiler from the bogus one. ++ # However, it has the same basename, so the bogon will be chosen ++ # first if we set CC to just the basename; use the full file name. ++ shift ++ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" ++ fi ++fi ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$CC"; then ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in cl.exe ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_CC+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CC="$ac_tool_prefix$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ test -n "$CC" && break ++ done ++fi ++if test -z "$CC"; then ++ ac_ct_CC=$CC ++ for ac_prog in cl.exe ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_CC+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_CC"; then ++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_CC="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_CC=$ac_cv_prog_ac_ct_CC ++if test -n "$ac_ct_CC"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ test -n "$ac_ct_CC" && break ++done ++ ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi ++fi ++ ++fi ++ ++ ++test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH ++See \`config.log' for more details." >&5 ++echo "$as_me: error: no acceptable C compiler found in \$PATH ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } ++ ++# Provide some information about the compiler. ++echo "$as_me:$LINENO: checking for C compiler version" >&5 ++ac_compiler=`set X $ac_compile; echo $2` ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++ ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++ac_clean_files_save=$ac_clean_files ++ac_clean_files="$ac_clean_files a.out a.exe b.out" ++# Try to create an executable without -o first, disregard a.out. ++# It will help us diagnose broken compilers, and finding out an intuition ++# of exeext. ++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ++ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` ++# ++# List of possible output files, starting from the most likely. ++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) ++# only as a last resort. b.out is created by i960 compilers. ++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' ++# ++# The IRIX 6 linker writes into existing files which may not be ++# executable, retaining their permissions. Remove them first so a ++# subsequent execution test works. ++ac_rmfiles= ++for ac_file in $ac_files ++do ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; ++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; ++ esac ++done ++rm -f $ac_rmfiles ++ ++if { (ac_try="$ac_link_default" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link_default") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. ++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' ++# in a Makefile. We should not override ac_cv_exeext if it was cached, ++# so that the user can short-circuit this test for compilers unknown to ++# Autoconf. ++for ac_file in $ac_files '' ++do ++ test -f "$ac_file" || continue ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ++ ;; ++ [ab].out ) ++ # We found the default executable, but exeext='' is most ++ # certainly right. ++ break;; ++ *.* ) ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ then :; else ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ fi ++ # We set ac_cv_exeext here because the later test for it is not ++ # safe: cross compilers may not add the suffix if given an `-o' ++ # argument, so we may need to know it at that point already. ++ # Even if this section looks crufty: it has the advantage of ++ # actually working. ++ break;; ++ * ) ++ break;; ++ esac ++done ++test "$ac_cv_exeext" = no && ac_cv_exeext= ++ ++else ++ ac_file='' ++fi ++ ++{ echo "$as_me:$LINENO: result: $ac_file" >&5 ++echo "${ECHO_T}$ac_file" >&6; } ++if test -z "$ac_file"; then ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++{ { echo "$as_me:$LINENO: error: C compiler cannot create executables ++See \`config.log' for more details." >&5 ++echo "$as_me: error: C compiler cannot create executables ++See \`config.log' for more details." >&2;} ++ { (exit 77); exit 77; }; } ++fi ++ ++ac_exeext=$ac_cv_exeext ++ ++# Check that the compiler produces executables we can run. If not, either ++# the compiler is broken, or we cross compile. ++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 ++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } ++# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 ++# If not cross compiling, check that we can run a simple program. ++if test "$cross_compiling" != yes; then ++ if { ac_try='./$ac_file' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ cross_compiling=no ++ else ++ if test "$cross_compiling" = maybe; then ++ cross_compiling=yes ++ else ++ { { echo "$as_me:$LINENO: error: cannot run C compiled programs. ++If you meant to cross compile, use \`--host'. ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot run C compiled programs. ++If you meant to cross compile, use \`--host'. ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } ++ fi ++ fi ++fi ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ ++rm -f a.out a.exe conftest$ac_cv_exeext b.out ++ac_clean_files=$ac_clean_files_save ++# Check that the compiler produces executables we can run. If not, either ++# the compiler is broken, or we cross compile. ++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 ++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 ++echo "${ECHO_T}$cross_compiling" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 ++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ # If both `conftest.exe' and `conftest' are `present' (well, observable) ++# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will ++# work properly (i.e., refer to `conftest.exe'), while it won't with ++# `rm'. ++for ac_file in conftest.exe conftest conftest.*; do ++ test -f "$ac_file" || continue ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; ++ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ break;; ++ * ) break;; ++ esac ++done ++else ++ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute suffix of executables: cannot compile and link ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++rm -f conftest$ac_cv_exeext ++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ++echo "${ECHO_T}$ac_cv_exeext" >&6; } ++ ++rm -f conftest.$ac_ext ++EXEEXT=$ac_cv_exeext ++ac_exeext=$EXEEXT ++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 ++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } ++if test "${ac_cv_objext+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.o conftest.obj ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ for ac_file in conftest.o conftest.obj conftest.*; do ++ test -f "$ac_file" || continue; ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; ++ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` ++ break;; ++ esac ++done ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute suffix of object files: cannot compile ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++rm -f conftest.$ac_cv_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ++echo "${ECHO_T}$ac_cv_objext" >&6; } ++OBJEXT=$ac_cv_objext ++ac_objext=$OBJEXT ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } ++if test "${ac_cv_c_compiler_gnu+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++#ifndef __GNUC__ ++ choke me ++#endif ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_compiler_gnu=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_compiler_gnu=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ac_cv_c_compiler_gnu=$ac_compiler_gnu ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } ++GCC=`test $ac_compiler_gnu = yes && echo yes` ++ac_test_CFLAGS=${CFLAGS+set} ++ac_save_CFLAGS=$CFLAGS ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_g+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_save_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ ac_cv_prog_cc_g=no ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_g=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ CFLAGS="" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_c_werror_flag=$ac_save_c_werror_flag ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_g=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } ++if test "$ac_test_CFLAGS" = set; then ++ CFLAGS=$ac_save_CFLAGS ++elif test $ac_cv_prog_cc_g = yes; then ++ if test "$GCC" = yes; then ++ CFLAGS="-g -O2" ++ else ++ CFLAGS="-g" ++ fi ++else ++ if test "$GCC" = yes; then ++ CFLAGS="-O2" ++ else ++ CFLAGS= ++ fi ++fi ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_prog_cc_c89=no ++ac_save_CC=$CC ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ ++struct buf { int x; }; ++FILE * (*rcsopen) (struct buf *, struct stat *, int); ++static char *e (p, i) ++ char **p; ++ int i; ++{ ++ return p[i]; ++} ++static char *f (char * (*g) (char **, int), char **p, ...) ++{ ++ char *s; ++ va_list v; ++ va_start (v,p); ++ s = g (p, va_arg (v,int)); ++ va_end (v); ++ return s; ++} ++ ++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has ++ function prototypes and stuff, but not '\xHH' hex character constants. ++ These don't provoke an error unfortunately, instead are silently treated ++ as 'x'. The following induces an error, until -std is added to get ++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an ++ array size at least. It's necessary to write '\x00'==0 to get something ++ that's true only with -std. */ ++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; ++ ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ ++int test (int i, double x); ++struct s1 {int (*f) (int a);}; ++struct s2 {int (*f) (double a);}; ++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); ++int argc; ++char **argv; ++int ++main () ++{ ++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ++ ; ++ return 0; ++} ++_ACEOF ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++do ++ CC="$ac_save_CC $ac_arg" ++ rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break ++done ++rm -f conftest.$ac_ext ++CC=$ac_save_CC ++ ++fi ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; ++ *) ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; ++esac ++ ++ ++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" ++ ++ ++am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: ++ @echo done ++.PHONY: am__doit ++END ++# If we don't find an include directive, just comment out the code. ++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 ++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } ++am__include="#" ++am__quote= ++_am_result=none ++# First try GNU make style include. ++echo "include confinc" > confmf ++# We grep out `Entering directory' and `Leaving directory' ++# messages which can occur if `w' ends up in MAKEFLAGS. ++# In particular we don't look at `^make:' because GNU make might ++# be invoked under some other name (usually "gmake"), in which ++# case it prints its new name instead of `make'. ++if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then ++ am__include=include ++ am__quote= ++ _am_result=GNU ++fi ++# Now try BSD make style include. ++if test "$am__include" = "#"; then ++ echo '.include "confinc"' > confmf ++ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then ++ am__include=.include ++ am__quote="\"" ++ _am_result=BSD ++ fi ++fi ++ ++ ++{ echo "$as_me:$LINENO: result: $_am_result" >&5 ++echo "${ECHO_T}$_am_result" >&6; } ++rm -f confinc confmf ++ ++# Check whether --enable-dependency-tracking was given. ++if test "${enable_dependency_tracking+set}" = set; then ++ enableval=$enable_dependency_tracking; ++fi ++ ++if test "x$enable_dependency_tracking" != xno; then ++ am_depcomp="$ac_aux_dir/depcomp" ++ AMDEPBACKSLASH='\' ++fi ++ if test "x$enable_dependency_tracking" != xno; then ++ AMDEP_TRUE= ++ AMDEP_FALSE='#' ++else ++ AMDEP_TRUE='#' ++ AMDEP_FALSE= ++fi ++ ++ ++ ++depcc="$CC" am_compiler_list= ++ ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } ++if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # 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'. ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub ++ ++ am_cv_CC_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` ++ fi ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > 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 ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf ++ ++ case $depmode in ++ nosideeffect) ++ # 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 ++ break ++ fi ++ ;; ++ none) break ;; ++ esac ++ # 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. ++ if depmode=$depmode \ ++ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_CC_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done ++ ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_CC_dependencies_compiler_type=none ++fi ++ ++fi ++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } ++CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type ++ ++ if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then ++ am__fastdepCC_TRUE= ++ am__fastdepCC_FALSE='#' ++else ++ am__fastdepCC_TRUE='#' ++ am__fastdepCC_FALSE= ++fi ++ ++ ++if test -z "$CC"; then ++ CCLD="\$(CC)" ++else ++ CCLD="$CC" ++fi ++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } ++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh ++all: ++ @echo '@@@%%%=$(MAKE)=@@@%%%' ++_ACEOF ++# GNU make sometimes prints "make[1]: Entering...", which would confuse us. ++case `${MAKE-make} -f conftest.make 2>/dev/null` in ++ *@@@%%%=?*=@@@%%%*) ++ eval ac_cv_prog_make_${ac_make}_set=yes;; ++ *) ++ eval ac_cv_prog_make_${ac_make}_set=no;; ++esac ++rm -f conftest.make ++fi ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ SET_MAKE= ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ SET_MAKE="MAKE=${MAKE-make}" ++fi ++ ++case `pwd` in ++ *\ * | *\ *) ++ { echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 ++echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; ++esac ++ ++ ++ ++macro_version='2.2.4' ++macro_revision='1.2976' ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ltmain="$ac_aux_dir/ltmain.sh" ++ ++# Make sure we can run config.sub. ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 ++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} ++ { (exit 1); exit 1; }; } ++ ++{ echo "$as_me:$LINENO: checking build system type" >&5 ++echo $ECHO_N "checking build system type... $ECHO_C" >&6; } ++if test "${ac_cv_build+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_build_alias=$build_alias ++test "x$ac_build_alias" = x && ++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` ++test "x$ac_build_alias" = x && ++ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 ++echo "$as_me: error: cannot guess build type; you must specify one" >&2;} ++ { (exit 1); exit 1; }; } ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} ++ { (exit 1); exit 1; }; } ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++echo "${ECHO_T}$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 ++echo "$as_me: error: invalid value of canonical build" >&2;} ++ { (exit 1); exit 1; }; };; ++esac ++build=$ac_cv_build ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_build ++shift ++build_cpu=$1 ++build_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++build_os=$* ++IFS=$ac_save_IFS ++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac ++ ++ ++{ echo "$as_me:$LINENO: checking host system type" >&5 ++echo $ECHO_N "checking host system type... $ECHO_C" >&6; } ++if test "${ac_cv_host+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "x$host_alias" = x; then ++ ac_cv_host=$ac_cv_build ++else ++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++echo "${ECHO_T}$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 ++echo "$as_me: error: invalid value of canonical host" >&2;} ++ { (exit 1); exit 1; }; };; ++esac ++host=$ac_cv_host ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_host ++shift ++host_cpu=$1 ++host_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++host_os=$* ++IFS=$ac_save_IFS ++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ++ ++ ++{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 ++echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } ++if test "${ac_cv_path_SED+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ ++ for ac_i in 1 2 3 4 5 6 7; do ++ ac_script="$ac_script$as_nl$ac_script" ++ done ++ echo "$ac_script" | sed 99q >conftest.sed ++ $as_unset ac_script || ac_script= ++ # Extract the first word of "sed gsed" to use in msg output ++if test -z "$SED"; then ++set dummy sed gsed; ac_prog_name=$2 ++if test "${ac_cv_path_SED+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_SED_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++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_prog in sed gsed; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue ++ # Check for GNU ac_path_SED and select it if it is found. ++ # Check for GNU $ac_path_SED ++case `"$ac_path_SED" --version 2>&1` in ++*GNU*) ++ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo '' >> "conftest.nl" ++ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_SED_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_SED="$ac_path_SED" ++ ac_path_SED_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_SED_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++SED="$ac_cv_path_SED" ++if test -z "$SED"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in \$PATH" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in \$PATH" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_SED=$SED ++fi ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5 ++echo "${ECHO_T}$ac_cv_path_SED" >&6; } ++ SED="$ac_cv_path_SED" ++ rm -f conftest.sed ++ ++test -z "$SED" && SED=sed ++Xsed="$SED -e 1s/^X//" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 ++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Extract the first word of "grep ggrep" to use in msg output ++if test -z "$GREP"; then ++set dummy grep ggrep; ac_prog_name=$2 ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_GREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in grep ggrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue ++ # Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_GREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++GREP="$ac_cv_path_GREP" ++if test -z "$GREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_GREP=$GREP ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 ++echo "${ECHO_T}$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for egrep" >&5 ++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ # Extract the first word of "egrep" to use in msg output ++if test -z "$EGREP"; then ++set dummy egrep; ac_prog_name=$2 ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_EGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in egrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue ++ # Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_EGREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++EGREP="$ac_cv_path_EGREP" ++if test -z "$EGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_EGREP=$EGREP ++fi ++ ++ ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for fgrep" >&5 ++echo $ECHO_N "checking for fgrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_FGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 ++ then ac_cv_path_FGREP="$GREP -F" ++ else ++ # Extract the first word of "fgrep" to use in msg output ++if test -z "$FGREP"; then ++set dummy fgrep; ac_prog_name=$2 ++if test "${ac_cv_path_FGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_FGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in fgrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue ++ # Check for GNU ac_path_FGREP and select it if it is found. ++ # Check for GNU $ac_path_FGREP ++case `"$ac_path_FGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'FGREP' >> "conftest.nl" ++ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_FGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_FGREP="$ac_path_FGREP" ++ ac_path_FGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_FGREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++FGREP="$ac_cv_path_FGREP" ++if test -z "$FGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_FGREP=$FGREP ++fi ++ ++ ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_FGREP" >&6; } ++ FGREP="$ac_cv_path_FGREP" ++ ++ ++test -z "$GREP" && GREP=grep ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --with-gnu-ld was given. ++if test "${with_gnu_ld+set}" = set; then ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes ++else ++ with_gnu_ld=no ++fi ++ ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 ++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [\\/]* | ?:[\\/]*) ++ re_direlt='/[^/][^/]*/\.\./' ++ # Canonicalize the pathname of ld ++ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` ++ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown ++ ;; ++ esac ++elif test "$with_gnu_ld" = yes; then ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } ++else ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } ++fi ++if test "${lt_cv_path_LD+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -z "$LD"; then ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ lt_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some variants of GNU ld only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$lt_cv_path_LD" -v 2>&1 &5 ++echo "${ECHO_T}$LD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 ++echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} ++ { (exit 1); exit 1; }; } ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } ++if test "${lt_cv_prog_gnu_ld+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # I'd rather use --version here, but apparently some GNU lds only accept -v. ++case `$LD -v 2>&1 &5 ++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } ++with_gnu_ld=$lt_cv_prog_gnu_ld ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 ++echo $ECHO_N "checking for BSD- or MS-compatible name lister (nm)... $ECHO_C" >&6; } ++if test "${lt_cv_path_NM+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$NM"; then ++ # Let the user override the test. ++ lt_cv_path_NM="$NM" ++else ++ lt_nm_to_check="${ac_tool_prefix}nm" ++ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then ++ lt_nm_to_check="$lt_nm_to_check nm" ++ fi ++ for lt_tmp_nm in $lt_nm_to_check; do ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ tmp_nm="$ac_dir/$lt_tmp_nm" ++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then ++ # Check to see if the nm accepts a BSD-compat flag. ++ # Adding the `sed 1q' prevents false positives on HP-UX, which says: ++ # nm: unknown option "B" ignored ++ # Tru64's nm complains that /dev/null is an invalid object file ++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in ++ */dev/null* | *'Invalid file or object type'*) ++ lt_cv_path_NM="$tmp_nm -B" ++ break ++ ;; ++ *) ++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in ++ */dev/null*) ++ lt_cv_path_NM="$tmp_nm -p" ++ break ++ ;; ++ *) ++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ done ++ IFS="$lt_save_ifs" ++ done ++ : ${lt_cv_path_NM=no} ++fi ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 ++echo "${ECHO_T}$lt_cv_path_NM" >&6; } ++if test "$lt_cv_path_NM" != "no"; then ++ NM="$lt_cv_path_NM" ++else ++ # Didn't find any BSD compatible name lister, look for dumpbin. ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in "dumpbin -symbols" "link -dump -symbols" ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_DUMPBIN+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$DUMPBIN"; then ++ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++DUMPBIN=$ac_cv_prog_DUMPBIN ++if test -n "$DUMPBIN"; then ++ { echo "$as_me:$LINENO: result: $DUMPBIN" >&5 ++echo "${ECHO_T}$DUMPBIN" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ test -n "$DUMPBIN" && break ++ done ++fi ++if test -z "$DUMPBIN"; then ++ ac_ct_DUMPBIN=$DUMPBIN ++ for ac_prog in "dumpbin -symbols" "link -dump -symbols" ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_DUMPBIN"; then ++ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN ++if test -n "$ac_ct_DUMPBIN"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5 ++echo "${ECHO_T}$ac_ct_DUMPBIN" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ test -n "$ac_ct_DUMPBIN" && break ++done ++ ++ if test "x$ac_ct_DUMPBIN" = x; then ++ DUMPBIN=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ DUMPBIN=$ac_ct_DUMPBIN ++ fi ++fi ++ ++ ++ if test "$DUMPBIN" != ":"; then ++ NM="$DUMPBIN" ++ fi ++fi ++test -z "$NM" && NM=nm ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 ++echo $ECHO_N "checking the name lister ($NM) interface... $ECHO_C" >&6; } ++if test "${lt_cv_nm_interface+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_nm_interface="BSD nm" ++ echo "int some_variable = 0;" > conftest.$ac_ext ++ (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&5) ++ (eval "$ac_compile" 2>conftest.err) ++ cat conftest.err >&5 ++ (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&5) ++ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) ++ cat conftest.err >&5 ++ (eval echo "\"\$as_me:__oline__: output\"" >&5) ++ cat conftest.out >&5 ++ if $GREP 'External.*some_variable' conftest.out > /dev/null; then ++ lt_cv_nm_interface="MS dumpbin" ++ fi ++ rm -f conftest* ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5 ++echo "${ECHO_T}$lt_cv_nm_interface" >&6; } ++ ++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 ++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } ++LN_S=$as_ln_s ++if test "$LN_S" = "ln -s"; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 ++echo "${ECHO_T}no, using $LN_S" >&6; } ++fi ++ ++# find the maximum length of command line arguments ++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 ++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } ++if test "${lt_cv_sys_max_cmd_len+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ i=0 ++ teststring="ABCD" ++ ++ case $build_os in ++ msdosdjgpp*) ++ # On DJGPP, this test can blow up pretty badly due to problems in libc ++ # (any single argument exceeding 2000 bytes causes a buffer overrun ++ # during glob expansion). Even if it were fixed, the result of this ++ # check would be larger than it should be. ++ lt_cv_sys_max_cmd_len=12288; # 12K is about right ++ ;; ++ ++ gnu*) ++ # Under GNU Hurd, this test is not required because there is ++ # no limit to the length of command line arguments. ++ # Libtool will interpret -1 as no limit whatsoever ++ lt_cv_sys_max_cmd_len=-1; ++ ;; ++ ++ cygwin* | mingw*) ++ # On Win9x/ME, this test blows up -- it succeeds, but takes ++ # about 5 minutes as the teststring grows exponentially. ++ # Worse, since 9x/ME are not pre-emptively multitasking, ++ # you end up with a "frozen" computer, even though with patience ++ # the test eventually succeeds (with a max line length of 256k). ++ # Instead, let's just punt: use the minimum linelength reported by ++ # all of the supported platforms: 8192 (on NT/2K/XP). ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ amigaos*) ++ # On AmigaOS with pdksh, this test takes hours, literally. ++ # So we just punt and use a minimum line length of 8192. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) ++ # This has been around since 386BSD, at least. Likely further. ++ if test -x /sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` ++ elif test -x /usr/sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` ++ else ++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs ++ fi ++ # And add a safety zone ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ ;; ++ ++ interix*) ++ # We know the value 262144 and hardcode it with a safety zone (like BSD) ++ lt_cv_sys_max_cmd_len=196608 ++ ;; ++ ++ osf*) ++ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure ++ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not ++ # nice to cause kernel panics so lets avoid the loop below. ++ # First set a reasonable default. ++ lt_cv_sys_max_cmd_len=16384 ++ # ++ if test -x /sbin/sysconfig; then ++ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in ++ *1*) lt_cv_sys_max_cmd_len=-1 ;; ++ esac ++ fi ++ ;; ++ sco3.2v5*) ++ lt_cv_sys_max_cmd_len=102400 ++ ;; ++ sysv5* | sco5v6* | sysv4.2uw2*) ++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` ++ if test -n "$kargmax"; then ++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` ++ else ++ lt_cv_sys_max_cmd_len=32768 ++ fi ++ ;; ++ *) ++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` ++ if test -n "$lt_cv_sys_max_cmd_len"; then ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ else ++ # Make teststring a little bigger before we do anything with it. ++ # a 1K string should be a reasonable start. ++ for i in 1 2 3 4 5 6 7 8 ; do ++ teststring=$teststring$teststring ++ done ++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} ++ # If test is not a shell built-in, we'll probably end up computing a ++ # maximum length that is only half of the actual maximum length, but ++ # we can't tell. ++ while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ ++ = "XX$teststring$teststring"; } >/dev/null 2>&1 && ++ test $i != 17 # 1/2 MB should be enough ++ do ++ i=`expr $i + 1` ++ teststring=$teststring$teststring ++ done ++ # Only check the string length outside the loop. ++ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` ++ teststring= ++ # Add a significant safety factor because C++ compilers can tack on ++ # massive amounts of additional arguments before passing them to the ++ # linker. It appears as though 1/2 is a usable value. ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ++ fi ++ ;; ++ esac ++ ++fi ++ ++if test -n $lt_cv_sys_max_cmd_len ; then ++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 ++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } ++else ++ { echo "$as_me:$LINENO: result: none" >&5 ++echo "${ECHO_T}none" >&6; } ++fi ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++ ++ ++ ++ ++ ++: ${CP="cp -f"} ++: ${MV="mv -f"} ++: ${RM="rm -f"} ++ ++{ echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 ++echo $ECHO_N "checking whether the shell understands some XSI constructs... $ECHO_C" >&6; } ++# Try some XSI features ++xsi_shell=no ++( _lt_dummy="a/b/c" ++ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ ++ = c,a/b,, \ ++ && eval 'test $(( 1 + 1 )) -eq 2 \ ++ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ ++ && xsi_shell=yes ++{ echo "$as_me:$LINENO: result: $xsi_shell" >&5 ++echo "${ECHO_T}$xsi_shell" >&6; } ++ ++ ++{ echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 ++echo $ECHO_N "checking whether the shell understands \"+=\"... $ECHO_C" >&6; } ++lt_shell_append=no ++( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ ++ >/dev/null 2>&1 \ ++ && lt_shell_append=yes ++{ echo "$as_me:$LINENO: result: $lt_shell_append" >&5 ++echo "${ECHO_T}$lt_shell_append" >&6; } ++ ++ ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ lt_unset=unset ++else ++ lt_unset=false ++fi ++ ++ ++ ++ ++ ++# test EBCDIC or ASCII ++case `echo X|tr X '\101'` in ++ A) # ASCII based system ++ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr ++ lt_SP2NL='tr \040 \012' ++ lt_NL2SP='tr \015\012 \040\040' ++ ;; ++ *) # EBCDIC based system ++ lt_SP2NL='tr \100 \n' ++ lt_NL2SP='tr \r\n \100\100' ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 ++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } ++if test "${lt_cv_ld_reload_flag+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_ld_reload_flag='-r' ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 ++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } ++reload_flag=$lt_cv_ld_reload_flag ++case $reload_flag in ++"" | " "*) ;; ++*) reload_flag=" $reload_flag" ;; ++esac ++reload_cmds='$LD$reload_flag -o $output$reload_objs' ++case $host_os in ++ darwin*) ++ if test "$GCC" = yes; then ++ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' ++ else ++ reload_cmds='$LD$reload_flag -o $output$reload_objs' ++ fi ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 ++echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } ++if test "${lt_cv_deplibs_check_method+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_file_magic_cmd='$MAGIC_CMD' ++lt_cv_file_magic_test_file= ++lt_cv_deplibs_check_method='unknown' ++# Need to set the preceding variable on all platforms that support ++# interlibrary dependencies. ++# 'none' -- dependencies not supported. ++# `unknown' -- same as none, but documents that we really don't know. ++# 'pass_all' -- all dependencies passed with no checks. ++# 'test_compile' -- check by making test program. ++# 'file_magic [[regex]]' -- check by looking for files in library path ++# which responds to the $file_magic_cmd with a given extended regex. ++# If you have `file' or equivalent on your system and you're not sure ++# whether `pass_all' will *always* work, you probably want this one. ++ ++case $host_os in ++aix[4-9]*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++beos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++bsdi[45]*) ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' ++ lt_cv_file_magic_cmd='/usr/bin/file -L' ++ lt_cv_file_magic_test_file=/shlib/libc.so ++ ;; ++ ++cygwin*) ++ # func_win32_libid is a shell function defined in ltmain.sh ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ ;; ++ ++mingw* | pw32*) ++ # Base MSYS/MinGW do not provide the 'file' command needed by ++ # func_win32_libid shell function, so use a weaker test based on 'objdump', ++ # unless we find 'file', for example because we are cross-compiling. ++ if ( file / ) >/dev/null 2>&1; then ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ else ++ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' ++ fi ++ ;; ++ ++darwin* | rhapsody*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++freebsd* | dragonfly*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then ++ case $host_cpu in ++ i*86 ) ++ # Not sure whether the presence of OpenBSD here was a mistake. ++ # Let's accept both of them until this is cleared up. ++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ++ ;; ++ esac ++ else ++ lt_cv_deplibs_check_method=pass_all ++ fi ++ ;; ++ ++gnu*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++hpux10.20* | hpux11*) ++ lt_cv_file_magic_cmd=/usr/bin/file ++ case $host_cpu in ++ ia64*) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' ++ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ++ ;; ++ hppa*64*) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' ++ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ++ ;; ++ *) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' ++ lt_cv_file_magic_test_file=/usr/lib/libc.sl ++ ;; ++ esac ++ ;; ++ ++interix[3-9]*) ++ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $LD in ++ *-32|*"-32 ") libmagic=32-bit;; ++ *-n32|*"-n32 ") libmagic=N32;; ++ *-64|*"-64 ") libmagic=64-bit;; ++ *) libmagic=never-match;; ++ esac ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' ++ fi ++ ;; ++ ++newos6*) ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=/usr/lib/libnls.so ++ ;; ++ ++*nto* | *qnx*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++openbsd*) ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' ++ fi ++ ;; ++ ++osf3* | osf4* | osf5*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++rdos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++solaris*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++sysv4 | sysv4.3*) ++ case $host_vendor in ++ motorola) ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ++ ;; ++ ncr) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ sequent) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ++ ;; ++ sni) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" ++ lt_cv_file_magic_test_file=/lib/libc.so ++ ;; ++ siemens) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ pc) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ esac ++ ;; ++ ++tpf*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++esac ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 ++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } ++file_magic_cmd=$lt_cv_file_magic_cmd ++deplibs_check_method=$lt_cv_deplibs_check_method ++test -z "$deplibs_check_method" && deplibs_check_method=unknown ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ar; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_AR+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$AR"; then ++ ac_cv_prog_AR="$AR" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_AR="${ac_tool_prefix}ar" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++AR=$ac_cv_prog_AR ++if test -n "$AR"; then ++ { echo "$as_me:$LINENO: result: $AR" >&5 ++echo "${ECHO_T}$AR" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_AR"; then ++ ac_ct_AR=$AR ++ # Extract the first word of "ar", so it can be a program name with args. ++set dummy ar; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_AR+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_AR"; then ++ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_AR="ar" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_AR=$ac_cv_prog_ac_ct_AR ++if test -n "$ac_ct_AR"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 ++echo "${ECHO_T}$ac_ct_AR" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_AR" = x; then ++ AR="false" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ AR=$ac_ct_AR ++ fi ++else ++ AR="$ac_cv_prog_AR" ++fi ++ ++test -z "$AR" && AR=ar ++test -z "$AR_FLAGS" && AR_FLAGS=cru ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++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. ++set dummy ${ac_tool_prefix}strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$STRIP"; then ++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++STRIP=$ac_cv_prog_STRIP ++if test -n "$STRIP"; then ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_STRIP"; then ++ ac_ct_STRIP=$STRIP ++ # Extract the first word of "strip", so it can be a program name with args. ++set dummy strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_STRIP"; then ++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_STRIP="strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ++if test -n "$ac_ct_STRIP"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi ++else ++ STRIP="$ac_cv_prog_STRIP" ++fi ++ ++test -z "$STRIP" && STRIP=: ++ ++ ++ ++ ++ ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_RANLIB+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$RANLIB"; then ++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++RANLIB=$ac_cv_prog_RANLIB ++if test -n "$RANLIB"; then ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_RANLIB"; then ++ ac_ct_RANLIB=$RANLIB ++ # Extract the first word of "ranlib", so it can be a program name with args. ++set dummy ranlib; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_RANLIB"; then ++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_RANLIB="ranlib" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB ++if test -n "$ac_ct_RANLIB"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi ++else ++ RANLIB="$ac_cv_prog_RANLIB" ++fi ++ ++test -z "$RANLIB" && RANLIB=: ++ ++ ++ ++ ++ ++ ++# Determine commands to create old-style static archives. ++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' ++old_postinstall_cmds='chmod 644 $oldlib' ++old_postuninstall_cmds= ++ ++if test -n "$RANLIB"; then ++ case $host_os in ++ openbsd*) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ++ ;; ++ *) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ++ ;; ++ esac ++ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++ ++# Check for command to grab the raw symbol name followed by C symbol from nm. ++{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 ++echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } ++if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ++# These are sane defaults that work on at least a few old systems. ++# [They come from Ultrix. What could be older than Ultrix?!! ;)] ++ ++# Character class describing NM global symbol codes. ++symcode='[BCDEGRST]' ++ ++# Regexp to match symbols that can be accessed directly from C. ++sympat='\([_A-Za-z][_A-Za-z0-9]*\)' ++ ++# Define system-specific variables. ++case $host_os in ++aix*) ++ symcode='[BCDT]' ++ ;; ++cygwin* | mingw* | pw32*) ++ symcode='[ABCDGISTW]' ++ ;; ++hpux*) ++ if test "$host_cpu" = ia64; then ++ symcode='[ABCDEGRST]' ++ fi ++ ;; ++irix* | nonstopux*) ++ symcode='[BCDEGRST]' ++ ;; ++osf*) ++ symcode='[BCDEGQRST]' ++ ;; ++solaris*) ++ symcode='[BDRT]' ++ ;; ++sco3.2v5*) ++ symcode='[DT]' ++ ;; ++sysv4.2uw2*) ++ symcode='[DT]' ++ ;; ++sysv5* | sco5v6* | unixware* | OpenUNIX*) ++ symcode='[ABDT]' ++ ;; ++sysv4) ++ symcode='[DFNSTU]' ++ ;; ++esac ++ ++# If we're using GNU nm, then use its standard symbol codes. ++case `$NM -V 2>&1` in ++*GNU* | *'with BFD'*) ++ symcode='[ABCDGIRSTW]' ;; ++esac ++ ++# Transform an extracted symbol line into a proper C declaration. ++# Some systems (esp. on ia64) link data and code symbols differently, ++# so use this general approach. ++lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ ++# Transform an extracted symbol line into symbol name and symbol address ++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" ++ ++# Handle CRLF in mingw tool chain ++opt_cr= ++case $build_os in ++mingw*) ++ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ++ ;; ++esac ++ ++# Try without a prefix underscore, then with it. ++for ac_symprfx in "" "_"; do ++ ++ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. ++ symxfrm="\\1 $ac_symprfx\\2 \\2" ++ ++ # Write the raw and C identifiers. ++ if test "$lt_cv_nm_interface" = "MS dumpbin"; then ++ # Fake it for dumpbin and say T for any non-static function ++ # and D for any global variable. ++ # Also find C++ and __fastcall symbols from MSVC++, ++ # which start with @ or ?. ++ lt_cv_sys_global_symbol_pipe="$AWK '"\ ++" {last_section=section; section=\$ 3};"\ ++" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ ++" \$ 0!~/External *\|/{next};"\ ++" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ ++" {if(hide[section]) next};"\ ++" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ ++" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ ++" s[1]~/^[@?]/{print s[1], s[1]; next};"\ ++" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ ++" ' prfx=^$ac_symprfx" ++ else ++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" ++ fi ++ ++ # Check to see that the pipe works correctly. ++ pipe_works=no ++ ++ rm -f conftest* ++ cat > conftest.$ac_ext <<_LT_EOF ++#ifdef __cplusplus ++extern "C" { ++#endif ++char nm_test_var; ++void nm_test_func(void); ++void nm_test_func(void){} ++#ifdef __cplusplus ++} ++#endif ++int main(){nm_test_var='a';nm_test_func();return(0);} ++_LT_EOF ++ ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ # Now try to grab the symbols. ++ nlist=conftest.nm ++ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 ++ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s "$nlist"; then ++ # Try sorting and uniquifying the output. ++ if sort "$nlist" | uniq > "$nlist"T; then ++ mv -f "$nlist"T "$nlist" ++ else ++ rm -f "$nlist"T ++ fi ++ ++ # Make sure that we snagged all the symbols we need. ++ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then ++ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then ++ cat <<_LT_EOF > conftest.$ac_ext ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++_LT_EOF ++ # Now generate the symbol file. ++ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' ++ ++ cat <<_LT_EOF >> conftest.$ac_ext ++ ++/* The mapping between symbol names and symbols. */ ++const struct { ++ const char *name; ++ void *address; ++} ++lt__PROGRAM__LTX_preloaded_symbols[] = ++{ ++ { "@PROGRAM@", (void *) 0 }, ++_LT_EOF ++ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext ++ cat <<\_LT_EOF >> conftest.$ac_ext ++ {0, (void *) 0} ++}; ++ ++/* This works around a problem in FreeBSD linker */ ++#ifdef FREEBSD_WORKAROUND ++static const void *lt_preloaded_setup() { ++ return lt__PROGRAM__LTX_preloaded_symbols; ++} ++#endif ++ ++#ifdef __cplusplus ++} ++#endif ++_LT_EOF ++ # Now try linking the two files. ++ mv conftest.$ac_objext conftstm.$ac_objext ++ lt_save_LIBS="$LIBS" ++ lt_save_CFLAGS="$CFLAGS" ++ LIBS="conftstm.$ac_objext" ++ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext}; then ++ pipe_works=yes ++ fi ++ LIBS="$lt_save_LIBS" ++ CFLAGS="$lt_save_CFLAGS" ++ else ++ echo "cannot find nm_test_func in $nlist" >&5 ++ fi ++ else ++ echo "cannot find nm_test_var in $nlist" >&5 ++ fi ++ else ++ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 ++ fi ++ else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ fi ++ rm -rf conftest* conftst* ++ ++ # Do not use the global_symbol_pipe unless it works. ++ if test "$pipe_works" = yes; then ++ break ++ else ++ lt_cv_sys_global_symbol_pipe= ++ fi ++done ++ ++fi ++ ++if test -z "$lt_cv_sys_global_symbol_pipe"; then ++ lt_cv_sys_global_symbol_to_cdecl= ++fi ++if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then ++ { echo "$as_me:$LINENO: result: failed" >&5 ++echo "${ECHO_T}failed" >&6; } ++else ++ { echo "$as_me:$LINENO: result: ok" >&5 ++echo "${ECHO_T}ok" >&6; } ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --enable-libtool-lock was given. ++if test "${enable_libtool_lock+set}" = set; then ++ enableval=$enable_libtool_lock; ++fi ++ ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++ ++# Some flags need to be propagated to the compiler or linker for good ++# libtool support. ++case $host in ++ia64-*-hpux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *ELF-32*) ++ HPUX_IA64_MODE="32" ++ ;; ++ *ELF-64*) ++ HPUX_IA64_MODE="64" ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++*-*-irix6*) ++ # Find out which ABI we are using. ++ echo '#line __oline__ "configure"' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -melf32bsmip" ++ ;; ++ *N32*) ++ LD="${LD-ld} -melf32bmipn32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -melf64bmip" ++ ;; ++ esac ++ else ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -32" ++ ;; ++ *N32*) ++ LD="${LD-ld} -n32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -64" ++ ;; ++ esac ++ fi ++ fi ++ rm -rf conftest* ++ ;; ++ ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ ++s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.o` in ++ *32-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_i386_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_i386" ++ ;; ++ ppc64-*linux*|powerpc64-*linux*) ++ LD="${LD-ld} -m elf32ppclinux" ++ ;; ++ s390x-*linux*) ++ LD="${LD-ld} -m elf_s390" ++ ;; ++ sparc64-*linux*) ++ LD="${LD-ld} -m elf32_sparc" ++ ;; ++ esac ++ ;; ++ *64-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_x86_64_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_x86_64" ++ ;; ++ ppc*-*linux*|powerpc*-*linux*) ++ LD="${LD-ld} -m elf64ppc" ++ ;; ++ s390*-*linux*|s390*-*tpf*) ++ LD="${LD-ld} -m elf64_s390" ++ ;; ++ sparc*-*linux*) ++ LD="${LD-ld} -m elf64_sparc" ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++ ++*-*-sco3.2v5*) ++ # On SCO OpenServer 5, we need -belf to get full-featured binaries. ++ SAVE_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -belf" ++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 ++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } ++if test "${lt_cv_cc_needs_belf+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ 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 ++ ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ lt_cv_cc_needs_belf=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ lt_cv_cc_needs_belf=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ 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 ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 ++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } ++ if test x"$lt_cv_cc_needs_belf" != x"yes"; then ++ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf ++ CFLAGS="$SAVE_CFLAGS" ++ fi ++ ;; ++sparc*-*solaris*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.o` in ++ *64-bit*) ++ case $lt_cv_prog_gnu_ld in ++ yes*) LD="${LD-ld} -m elf64_sparc" ;; ++ *) ++ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then ++ LD="${LD-ld} -64" ++ fi ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++esac ++ ++need_locks="$enable_libtool_lock" ++ ++ ++ case $host_os in ++ rhapsody* | darwin*) ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. ++set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_DSYMUTIL+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$DSYMUTIL"; then ++ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++DSYMUTIL=$ac_cv_prog_DSYMUTIL ++if test -n "$DSYMUTIL"; then ++ { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 ++echo "${ECHO_T}$DSYMUTIL" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_DSYMUTIL"; then ++ ac_ct_DSYMUTIL=$DSYMUTIL ++ # Extract the first word of "dsymutil", so it can be a program name with args. ++set dummy dsymutil; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_DSYMUTIL"; then ++ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL ++if test -n "$ac_ct_DSYMUTIL"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 ++echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_DSYMUTIL" = x; then ++ DSYMUTIL=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ DSYMUTIL=$ac_ct_DSYMUTIL ++ fi ++else ++ DSYMUTIL="$ac_cv_prog_DSYMUTIL" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. ++set dummy ${ac_tool_prefix}nmedit; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_NMEDIT+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$NMEDIT"; then ++ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++NMEDIT=$ac_cv_prog_NMEDIT ++if test -n "$NMEDIT"; then ++ { echo "$as_me:$LINENO: result: $NMEDIT" >&5 ++echo "${ECHO_T}$NMEDIT" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_NMEDIT"; then ++ ac_ct_NMEDIT=$NMEDIT ++ # Extract the first word of "nmedit", so it can be a program name with args. ++set dummy nmedit; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_NMEDIT"; then ++ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_NMEDIT="nmedit" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT ++if test -n "$ac_ct_NMEDIT"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 ++echo "${ECHO_T}$ac_ct_NMEDIT" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_NMEDIT" = x; then ++ NMEDIT=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ NMEDIT=$ac_ct_NMEDIT ++ fi ++else ++ NMEDIT="$ac_cv_prog_NMEDIT" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. ++set dummy ${ac_tool_prefix}lipo; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_LIPO+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$LIPO"; then ++ ac_cv_prog_LIPO="$LIPO" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_LIPO="${ac_tool_prefix}lipo" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++LIPO=$ac_cv_prog_LIPO ++if test -n "$LIPO"; then ++ { echo "$as_me:$LINENO: result: $LIPO" >&5 ++echo "${ECHO_T}$LIPO" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_LIPO"; then ++ ac_ct_LIPO=$LIPO ++ # Extract the first word of "lipo", so it can be a program name with args. ++set dummy lipo; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_LIPO"; then ++ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_LIPO="lipo" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO ++if test -n "$ac_ct_LIPO"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 ++echo "${ECHO_T}$ac_ct_LIPO" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_LIPO" = x; then ++ LIPO=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ LIPO=$ac_ct_LIPO ++ fi ++else ++ LIPO="$ac_cv_prog_LIPO" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. ++set dummy ${ac_tool_prefix}otool; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_OTOOL+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$OTOOL"; then ++ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_OTOOL="${ac_tool_prefix}otool" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++OTOOL=$ac_cv_prog_OTOOL ++if test -n "$OTOOL"; then ++ { echo "$as_me:$LINENO: result: $OTOOL" >&5 ++echo "${ECHO_T}$OTOOL" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_OTOOL"; then ++ ac_ct_OTOOL=$OTOOL ++ # Extract the first word of "otool", so it can be a program name with args. ++set dummy otool; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_OTOOL"; then ++ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_OTOOL="otool" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL ++if test -n "$ac_ct_OTOOL"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 ++echo "${ECHO_T}$ac_ct_OTOOL" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_OTOOL" = x; then ++ OTOOL=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ OTOOL=$ac_ct_OTOOL ++ fi ++else ++ OTOOL="$ac_cv_prog_OTOOL" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. ++set dummy ${ac_tool_prefix}otool64; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_OTOOL64+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$OTOOL64"; then ++ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++OTOOL64=$ac_cv_prog_OTOOL64 ++if test -n "$OTOOL64"; then ++ { echo "$as_me:$LINENO: result: $OTOOL64" >&5 ++echo "${ECHO_T}$OTOOL64" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_OTOOL64"; then ++ ac_ct_OTOOL64=$OTOOL64 ++ # Extract the first word of "otool64", so it can be a program name with args. ++set dummy otool64; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_OTOOL64"; then ++ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_OTOOL64="otool64" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 ++if test -n "$ac_ct_OTOOL64"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 ++echo "${ECHO_T}$ac_ct_OTOOL64" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_OTOOL64" = x; then ++ OTOOL64=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ OTOOL64=$ac_ct_OTOOL64 ++ fi ++else ++ OTOOL64="$ac_cv_prog_OTOOL64" ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 ++echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; } ++if test "${lt_cv_apple_cc_single_mod+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_apple_cc_single_mod=no ++ if test -z "${LT_MULTI_MODULE}"; then ++ # By default we will add the -single_module flag. You can override ++ # by either setting the environment variable LT_MULTI_MODULE ++ # non-empty at configure time, or by adding -multi_module to the ++ # link flags. ++ rm -rf libconftest.dylib* ++ echo "int foo(void){return 1;}" > conftest.c ++ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ ++-dynamiclib -Wl,-single_module conftest.c" >&5 ++ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ ++ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err ++ _lt_result=$? ++ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then ++ lt_cv_apple_cc_single_mod=yes ++ else ++ cat conftest.err >&5 ++ fi ++ rm -rf libconftest.dylib* ++ rm -f conftest.* ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 ++echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; } ++ { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 ++echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; } ++if test "${lt_cv_ld_exported_symbols_list+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_ld_exported_symbols_list=no ++ save_LDFLAGS=$LDFLAGS ++ echo "_main" > conftest.sym ++ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ lt_cv_ld_exported_symbols_list=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ lt_cv_ld_exported_symbols_list=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 ++echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; } ++ case $host_os in ++ rhapsody* | darwin1.[012]) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; ++ darwin1.*) ++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; ++ darwin*) # darwin 5.x on ++ # if running on 10.5 or later, the deployment target defaults ++ # to the OS version, if on x86, and 10.4, the deployment ++ # target defaults to 10.4. Don't you love it? ++ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in ++ 10.0,*86*-darwin8*|10.0,*-darwin[91]*) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; ++ 10.[012]*) ++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; ++ 10.*) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; ++ esac ++ ;; ++ esac ++ if test "$lt_cv_apple_cc_single_mod" = "yes"; then ++ _lt_dar_single_mod='$single_module' ++ fi ++ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then ++ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' ++ else ++ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ fi ++ if test "$DSYMUTIL" != ":"; then ++ _lt_dsymutil='~$DSYMUTIL $lib || :' ++ else ++ _lt_dsymutil= ++ fi ++ ;; ++ esac ++ ++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 ++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } ++# On Suns, sometimes $CPP names a directory. ++if test -n "$CPP" && test -d "$CPP"; then ++ CPP= ++fi ++if test -z "$CPP"; then ++ if test "${ac_cv_prog_CPP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Double quotes because CPP needs to be expanded ++ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" ++ do ++ ac_preproc_ok=false ++for ac_c_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@ifdef __STDC__ ++@%:@ include ++@%:@else ++@%:@ include ++@%:@endif ++ Syntax error ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ # Broken: fails on valid input. ++continue ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++ ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ # Broken: success on invalid input. ++continue ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ # Passes both tests. ++ac_preproc_ok=: ++break ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++ ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then ++ break ++fi ++ ++ done ++ ac_cv_prog_CPP=$CPP ++ ++fi ++ CPP=$ac_cv_prog_CPP ++else ++ ac_cv_prog_CPP=$CPP ++fi ++{ echo "$as_me:$LINENO: result: $CPP" >&5 ++echo "${ECHO_T}$CPP" >&6; } ++ac_preproc_ok=false ++for ac_c_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@ifdef __STDC__ ++@%:@ include ++@%:@else ++@%:@ include ++@%:@endif ++ Syntax error ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ # Broken: fails on valid input. ++continue ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++ ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ # Broken: success on invalid input. ++continue ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ # Passes both tests. ++ac_preproc_ok=: ++break ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++ ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then ++ : ++else ++ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details." >&5 ++echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } ++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 ++ ++ ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } ++if test "${ac_cv_header_stdc+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_stdc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_stdc=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "memchr" >/dev/null 2>&1; then ++ : ++else ++ ac_cv_header_stdc=no ++fi ++rm -f conftest* ++ ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "free" >/dev/null 2>&1; then ++ : ++else ++ ac_cv_header_stdc=no ++fi ++rm -f conftest* ++ ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. ++ if test "$cross_compiling" = yes; then ++ : ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#if ((' ' & 0x0FF) == 0x020) ++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) ++#else ++# define ISLOWER(c) \ ++ (('a' <= (c) && (c) <= 'i') \ ++ || ('j' <= (c) && (c) <= 'r') \ ++ || ('s' <= (c) && (c) <= 'z')) ++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) ++#endif ++ ++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) ++int ++main () ++{ ++ int i; ++ for (i = 0; i < 256; i++) ++ if (XOR (islower (i), ISLOWER (i)) ++ || toupper (i) != TOUPPER (i)) ++ return 2; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ : ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_header_stdc=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } ++if test $ac_cv_header_stdc = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define STDC_HEADERS 1 ++_ACEOF ++ ++fi ++ ++# On IRIX 5.3, sys/types and inttypes.h are conflicting. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ ++ inttypes.h stdint.h unistd.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++ ++@%:@include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ eval "$as_ac_Header=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_Header=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ ++ ++for ac_header in dlfcn.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++ ++@%:@include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ eval "$as_ac_Header=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_Header=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ ++ ++# Set options ++ ++ ++ ++ enable_dlopen=no ++ ++ ++ enable_win32_dll=no ++ ++ ++ # Check whether --enable-shared was given. ++if test "${enable_shared+set}" = set; then ++ enableval=$enable_shared; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_shared=yes ;; ++ no) enable_shared=no ;; ++ *) ++ enable_shared=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_shared=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac ++else ++ enable_shared=yes ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ # Check whether --enable-static was given. ++if test "${enable_static+set}" = set; then ++ enableval=$enable_static; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_static=yes ;; ++ no) enable_static=no ;; ++ *) ++ enable_static=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_static=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac ++else ++ enable_static=yes ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --with-pic was given. ++if test "${with_pic+set}" = set; then ++ withval=$with_pic; pic_mode="$withval" ++else ++ pic_mode=default ++fi ++ ++ ++test -z "$pic_mode" && pic_mode=default ++ ++ ++ ++ ++ ++ ++ ++ # Check whether --enable-fast-install was given. ++if test "${enable_fast_install+set}" = set; then ++ enableval=$enable_fast_install; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_fast_install=yes ;; ++ no) enable_fast_install=no ;; ++ *) ++ enable_fast_install=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_fast_install=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac ++else ++ enable_fast_install=yes ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# This can be used to rebuild libtool when needed ++LIBTOOL_DEPS="$ltmain" ++ ++# Always use our own libtool. ++LIBTOOL='$(SHELL) $(top_builddir)' ++LIBTOOL="$LIBTOOL/$host_alias-libtool" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++test -z "$LN_S" && LN_S="ln -s" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++fi ++ ++{ echo "$as_me:$LINENO: checking for objdir" >&5 ++echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } ++if test "${lt_cv_objdir+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ rm -f .libs 2>/dev/null ++mkdir .libs 2>/dev/null ++if test -d .libs; then ++ lt_cv_objdir=.libs ++else ++ # MS-DOS does not allow filenames that begin with a dot. ++ lt_cv_objdir=_libs ++fi ++rmdir .libs 2>/dev/null ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 ++echo "${ECHO_T}$lt_cv_objdir" >&6; } ++objdir=$lt_cv_objdir ++ ++ ++ ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define LT_OBJDIR "$lt_cv_objdir/" ++_ACEOF ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++case $host_os in ++aix3*) ++ # AIX sometimes has problems with the GCC collect2 program. For some ++ # reason, if we set the COLLECT_NAMES environment variable, the problems ++ # vanish in a puff of smoke. ++ if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++ fi ++ ;; ++esac ++ ++# Sed substitution that helps us do robust quoting. It backslashifies ++# metacharacters that are still active within double-quoted strings. ++sed_quote_subst='s/\(["`$\\]\)/\\\1/g' ++ ++# Same as above, but do not quote variable references. ++double_quote_subst='s/\(["`\\]\)/\\\1/g' ++ ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++ ++# Sed substitution to delay expansion of an escaped single quote. ++delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' ++ ++# Sed substitution to avoid accidental globbing in evaled expressions ++no_glob_subst='s/\*/\\\*/g' ++ ++# Global variables: ++ofile=${host_alias}-libtool ++can_build_shared=yes ++ ++# All known linkers require a `.a' archive for static linking (except MSVC, ++# which needs '.lib'). ++libext=a ++ ++with_gnu_ld="$lt_cv_prog_gnu_ld" ++ ++old_CC="$CC" ++old_CFLAGS="$CFLAGS" ++ ++# Set sane defaults for various variables ++test -z "$CC" && CC=cc ++test -z "$LTCC" && LTCC=$CC ++test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS ++test -z "$LD" && LD=ld ++test -z "$ac_objext" && ac_objext=o ++ ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ ++# Only perform the check for file, if the check method requires it ++test -z "$MAGIC_CMD" && MAGIC_CMD=file ++case $deplibs_check_method in ++file_magic*) ++ if test "$file_magic_cmd" = '$MAGIC_CMD'; then ++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 ++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } ++if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/${ac_tool_prefix}file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++_LT_EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac ++fi ++ ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ ++ ++ ++if test -z "$lt_cv_path_MAGIC_CMD"; then ++ if test -n "$ac_tool_prefix"; then ++ { echo "$as_me:$LINENO: checking for file" >&5 ++echo $ECHO_N "checking for file... $ECHO_C" >&6; } ++if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++_LT_EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac ++fi ++ ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ else ++ MAGIC_CMD=: ++ fi ++fi ++ ++ fi ++ ;; ++esac ++ ++# Use C for the default configuration in the libtool script ++ ++lt_save_CC="$CC" ++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 ++ ++ ++# Source file extension for C test sources. ++ac_ext=c ++ ++# Object file extension for compiled C test sources. ++objext=o ++objext=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(){return(0);}' ++ ++ ++ ++ ++ ++ ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++# Save the default compiler, since it gets overwritten when the other ++# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. ++compiler_DEFAULT=$CC ++ ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$RM conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$RM -r conftest* ++ ++ ++if test -n "$compiler"; then ++ ++lt_prog_compiler_no_builtin_flag= ++ ++if test "$GCC" = yes; then ++ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ++ ++ { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_rtti_exceptions=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="-fno-rtti -fno-exceptions" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:__oline__: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_rtti_exceptions=yes ++ fi ++ fi ++ $RM conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } ++ ++if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then ++ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" ++else ++ : ++fi ++ ++fi ++ ++ ++ ++ ++ ++ ++ lt_prog_compiler_wl= ++lt_prog_compiler_pic= ++lt_prog_compiler_static= ++ ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ++ ++ if test "$GCC" = yes; then ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_static='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ m68k) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ esac ++ ;; ++ ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; ++ ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ lt_prog_compiler_pic='-fno-common' ++ ;; ++ ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ ;; ++ ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ lt_prog_compiler_can_build_shared=no ++ enable_shared=no ++ ;; ++ ++ *nto* | *qnx*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ lt_prog_compiler_pic='-fPIC -shared' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ lt_prog_compiler_pic=-Kconform_pic ++ fi ++ ;; ++ ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ else ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ lt_prog_compiler_wl='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ else ++ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ lt_prog_compiler_static='${wl}-a ${wl}archive' ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC (with -KPIC) is the default. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ icc* | ecc* | ifort*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-fpic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ccc*) ++ lt_prog_compiler_wl='-Wl,' ++ # All Alpha code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ xl*) ++ # IBM XL C 8.0/Fortran 10.1 on PPC ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-qpic' ++ lt_prog_compiler_static='-qstaticlink' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ ++ newsos6) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ *nto* | *qnx*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ lt_prog_compiler_pic='-fPIC -shared' ++ ;; ++ ++ osf3* | osf4* | osf5*) ++ lt_prog_compiler_wl='-Wl,' ++ # All OSF/1 code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ rdos*) ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ solaris*) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ lt_prog_compiler_wl='-Qoption ld ';; ++ *) ++ lt_prog_compiler_wl='-Wl,';; ++ esac ++ ;; ++ ++ sunos4*) ++ lt_prog_compiler_wl='-Qoption ld ' ++ lt_prog_compiler_pic='-PIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ lt_prog_compiler_pic='-Kconform_pic' ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ ;; ++ ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ unicos*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_can_build_shared=no ++ ;; ++ ++ uts4*) ++ lt_prog_compiler_pic='-pic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ *) ++ lt_prog_compiler_can_build_shared=no ++ ;; ++ esac ++ fi ++ ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ lt_prog_compiler_pic= ++ ;; ++ *) ++ lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC" ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } ++ ++ ++ ++ ++ ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$lt_prog_compiler_pic"; then ++ { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_pic_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_pic_works=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:__oline__: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_pic_works=yes ++ fi ++ fi ++ $RM conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; } ++ ++if test x"$lt_cv_prog_compiler_pic_works" = xyes; then ++ case $lt_prog_compiler_pic in ++ "" | " "*) ;; ++ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; ++ esac ++else ++ lt_prog_compiler_pic= ++ lt_prog_compiler_can_build_shared=no ++fi ++ ++fi ++ ++ ++ ++ ++ ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_static_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_static_works=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_static_works=yes ++ fi ++ else ++ lt_cv_prog_compiler_static_works=yes ++ fi ++ fi ++ $RM -r conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; } ++ ++if test x"$lt_cv_prog_compiler_static_works" = xyes; then ++ : ++else ++ lt_prog_compiler_static= ++fi ++ ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o=no ++ $RM -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:__oline__: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $RM conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files ++ $RM out/* && rmdir out ++ cd .. ++ $RM -r conftest ++ $RM conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o=no ++ $RM -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:__oline__: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $RM conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files ++ $RM out/* && rmdir out ++ cd .. ++ $RM -r conftest ++ $RM conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } ++ ++ ++ ++ ++hard_links="nottested" ++if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } ++ hard_links=yes ++ $RM conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } ++ if test "$hard_links" = no; then ++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ++ ++ runpath_var= ++ allow_undefined_flag= ++ always_export_symbols=no ++ archive_cmds= ++ archive_expsym_cmds= ++ compiler_needs_object=no ++ enable_shared_with_static_runtimes=no ++ export_dynamic_flag_spec= ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ hardcode_automatic=no ++ hardcode_direct=no ++ hardcode_direct_absolute=no ++ hardcode_libdir_flag_spec= ++ hardcode_libdir_flag_spec_ld= ++ hardcode_libdir_separator= ++ hardcode_minus_L=no ++ hardcode_shlibpath_var=unsupported ++ inherit_rpath=no ++ link_all_deplibs=unknown ++ module_cmds= ++ module_expsym_cmds= ++ old_archive_from_new_cmds= ++ old_archive_from_expsyms_cmds= ++ thread_safe_flag_spec= ++ whole_archive_flag_spec= ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ include_expsyms= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ # Exclude shared library initialization/finalization symbols. ++ extract_expsyms_cmds= ++ ++ case $host_os in ++ cygwin* | mingw* | pw32*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no ++ ;; ++ esac ++ ++ ld_shlibs=yes ++ if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' ++ ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ export_dynamic_flag_spec='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ whole_archive_flag_spec= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac ++ ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix[3-9]*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. ++ ++_LT_EOF ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='' ++ ;; ++ m68k) ++ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ;; ++ esac ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, ++ # as there is no search path for DLLs. ++ hardcode_libdir_flag_spec='-L$libdir' ++ allow_undefined_flag=unsupported ++ always_export_symbols=no ++ enable_shared_with_static_runtimes=yes ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ interix[3-9]*) ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ ++ gnu* | linux* | tpf* | k*bsd*-gnu) ++ tmp_diet=no ++ if test "$host_os" = linux-dietlibc; then ++ case $cc_basename in ++ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) ++ esac ++ fi ++ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ ++ && test "$tmp_diet" = no ++ then ++ tmp_addflag= ++ tmp_sharedflag='-shared' ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) ++ tmp_sharedflag='-qmkshrobj' ++ tmp_addflag= ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ compiler_needs_object=yes ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ esac ++ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ ++ if test "x$supports_anon_versioning" = xyes; then ++ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ ++ case $cc_basename in ++ xlf*) ++ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself ++ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' ++ hardcode_libdir_flag_spec= ++ hardcode_libdir_flag_spec_ld='-rpath $libdir' ++ archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' ++ if test "x$supports_anon_versioning" = xyes; then ++ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' ++ fi ++ ;; ++ esac ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; ++ ++ solaris*) ++ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ # For security reasons, it is highly recommended that you always ++ # use absolute paths for naming shared libraries, and exclude the ++ # DT_RUNPATH tag from executables and libraries. But doing so ++ # requires that you compile everything twice, which is a pain. ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ sunos4*) ++ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *) ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ++ if test "$ld_shlibs" = no; then ++ runpath_var= ++ hardcode_libdir_flag_spec= ++ export_dynamic_flag_spec= ++ whole_archive_flag_spec= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ allow_undefined_flag=unsupported ++ always_export_symbols=yes ++ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ hardcode_minus_L=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ hardcode_direct=unsupported ++ fi ++ ;; ++ ++ aix[4-9]*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then ++ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ else ++ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ archive_cmds='' ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ file_list_spec='${wl}-f,' ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && ++ strings "$collect2name" | $GREP resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ hardcode_direct=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ hardcode_minus_L=yes ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_libdir_separator= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ always_export_symbols=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ allow_undefined_flag='-berok' ++ # Determine the default libpath from the value encoded in an ++ # empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ++ allow_undefined_flag="-z nodefs" ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an ++ # empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ no_undefined_flag=' ${wl}-bernotok' ++ allow_undefined_flag=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec='$convenience' ++ archive_cmds_need_lc=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='' ++ ;; ++ m68k) ++ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ;; ++ esac ++ ;; ++ ++ bsdi[45]*) ++ export_dynamic_flag_spec=-rdynamic ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ hardcode_libdir_flag_spec=' ' ++ allow_undefined_flag=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ old_archive_from_new_cmds='true' ++ # FIXME: Should let the user specify the lib program. ++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ fix_srcfile_path='`cygpath -w "$srcfile"`' ++ enable_shared_with_static_runtimes=yes ++ ;; ++ ++ darwin* | rhapsody*) ++ ++ ++ archive_cmds_need_lc=no ++ hardcode_direct=no ++ hardcode_automatic=yes ++ hardcode_shlibpath_var=unsupported ++ whole_archive_flag_spec='' ++ link_all_deplibs=yes ++ allow_undefined_flag="$_lt_dar_allow_undefined" ++ if test "$GCC" = "yes"; then ++ output_verbose_link_cmd=echo ++ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" ++ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" ++ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" ++ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" ++ ++ else ++ ld_shlibs=no ++ fi ++ ++ ;; ++ ++ dgux*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ freebsd1*) ++ ld_shlibs=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ hpux9*) ++ if test "$GCC" = yes; then ++ archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ;; ++ ++ hpux10*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_flag_spec_ld='+b $libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ export_dynamic_flag_spec='${wl}-E' ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ ;; ++ *) ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ ;; ++ esac ++ fi ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ # Try to use the -exported_symbol ld option, if it does not ++ # work, assume that -exports_file does not work either and ++ # implicitly export all symbols. ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" ++ cat >conftest.$ac_ext <<_ACEOF ++int foo(void) {} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' ++ ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS="$save_LDFLAGS" ++ else ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ inherit_rpath=yes ++ link_all_deplibs=yes ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ newsos6) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *nto* | *qnx*) ++ ;; ++ ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ hardcode_direct_absolute=yes ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ else ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ ;; ++ *) ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ os2*) ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ allow_undefined_flag=unsupported ++ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; ++ ++ osf3*) ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ;; ++ ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ ++ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' ++ ++ # Both c and cxx compiler support -rpath directly ++ hardcode_libdir_flag_spec='-rpath $libdir' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_separator=: ++ ;; ++ ++ solaris*) ++ no_undefined_flag=' -z defs' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ++ else ++ case `$CC -V 2>&1` in ++ *"Compilers 5.0"*) ++ wlarc='' ++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ++ ;; ++ *) ++ wlarc='${wl}' ++ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ++ ;; ++ esac ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_shlibpath_var=no ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ link_all_deplibs=yes ++ ;; ++ ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4) ++ case $host_vendor in ++ sni) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ reload_cmds='$CC -r -o $output$reload_objs' ++ hardcode_direct=no ++ ;; ++ motorola) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4.3*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ export_dynamic_flag_spec='-Bexport' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ld_shlibs=yes ++ fi ++ ;; ++ ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag='${wl}-z,text' ++ archive_cmds_need_lc=no ++ hardcode_shlibpath_var=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag='${wl}-z,text' ++ allow_undefined_flag='${wl}-z,nodefs' ++ archive_cmds_need_lc=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='${wl}-R,$libdir' ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ export_dynamic_flag_spec='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ uts4*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *) ++ ld_shlibs=no ++ ;; ++ esac ++ ++ if test x$host_vendor = xsni; then ++ case $host in ++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ ;; ++ esac ++ fi ++ fi ++ ++{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 ++echo "${ECHO_T}$ld_shlibs" >&6; } ++test "$ld_shlibs" = no && can_build_shared=no ++ ++with_gnu_ld=$with_gnu_ld ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$archive_cmds_need_lc" in ++x|xyes) ++ # Assume -lc should be added ++ archive_cmds_need_lc=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $archive_cmds in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } ++ $RM conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl ++ pic_flag=$lt_prog_compiler_pic ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag ++ allow_undefined_flag= ++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 ++ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++ then ++ archive_cmds_need_lc=no ++ else ++ archive_cmds_need_lc=yes ++ fi ++ allow_undefined_flag=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $RM conftest* ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc" >&6; } ++ ;; ++ esac ++ fi ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } ++ ++if test "$GCC" = yes; then ++ case $host_os in ++ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; ++ *) lt_awk_arg="/^libraries:/" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then ++ # if the path contains ";" then we assume it to be the separator ++ # otherwise default to the standard path separator (i.e. ":") - it is ++ # assumed that no part of a normal pathname contains ";" but that should ++ # okay in the real world where ";" in dirpaths is itself problematic. ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ # Ok, now we have the path, separated by spaces, we can step through it ++ # and add multilib dir if necessary. ++ lt_tmp_lt_search_path_spec= ++ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` ++ for lt_sys_path in $lt_search_path_spec; do ++ if test -d "$lt_sys_path/$lt_multi_os_dir"; then ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" ++ else ++ test -d "$lt_sys_path" && \ ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" ++ fi ++ done ++ lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' ++BEGIN {RS=" "; FS="/|\n";} { ++ lt_foo=""; ++ lt_count=0; ++ for (lt_i = NF; lt_i > 0; lt_i--) { ++ if ($lt_i != "" && $lt_i != ".") { ++ if ($lt_i == "..") { ++ lt_count++; ++ } else { ++ if (lt_count == 0) { ++ lt_foo="/" $lt_i lt_foo; ++ } else { ++ lt_count--; ++ } ++ } ++ } ++ } ++ if (lt_foo != "") { lt_freq[lt_foo]++; } ++ if (lt_freq[lt_foo] == 1) { print lt_foo; } ++}'` ++ sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` ++else ++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++fi ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix[4-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[01] | aix4.[01].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; ++ ++amigaos*) ++ case $host_cpu in ++ powerpc) ++ # Since July 2007 AmigaOS4 officially supports .so libraries. ++ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ ;; ++ m68k) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ ;; ++ esac ++ ;; ++ ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[45]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no ++ ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname~ ++ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then ++ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; ++ fi' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $RM \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; ++ ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; ++ ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++freebsd1*) ++ dynamic_linker=no ++ ;; ++ ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ postinstall_cmds='chmod 555 $lib' ++ ;; ++ ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ # Some binutils ld are patched to set DT_RUNPATH ++ save_LDFLAGS=$LDFLAGS ++ save_libdir=$libdir ++ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ ++ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then ++ shlibpath_overrides_runpath=yes ++fi ++ ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS=$save_LDFLAGS ++ libdir=$save_libdir ++ ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes ++ ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++*nto* | *qnx*) ++ version_type=qnx ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='ldqnx.so' ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[89] | openbsd2.[89].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++tpf*) ++ # TPF is a cross-target only. Preferred cross-host = GNU/Linux. ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++*) ++ dynamic_linker=no ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then ++ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" ++fi ++if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then ++ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } ++hardcode_action= ++if test -n "$hardcode_libdir_flag_spec" || ++ test -n "$runpath_var" || ++ test "X$hardcode_automatic" = "Xyes" ; then ++ ++ # We can hardcode non-existent directories. ++ if test "$hardcode_direct" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && ++ test "$hardcode_minus_L" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action=unsupported ++fi ++{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 ++echo "${ECHO_T}$hardcode_action" >&6; } ++ ++if test "$hardcode_action" = relink || ++ test "$inherit_rpath" = yes; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++ ++ ++ ++ ++ ++ ++ if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++ lt_cv_dlopen=no ++ lt_cv_dlopen_libs= ++ ++ case $host_os in ++ beos*) ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; ++ ++ mingw* | pw32*) ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ cygwin*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ darwin*) ++ # if libdl is installed we need to link against it ++ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dl_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dl_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dl_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } ++if test $ac_cv_lib_dl_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ ++ lt_cv_dlopen="dyld" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ++fi ++ ++ ;; ++ ++ *) ++ { echo "$as_me:$LINENO: checking for shl_load" >&5 ++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } ++if test "${ac_cv_func_shl_load+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define shl_load to an innocuous variant, in case declares shl_load. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define shl_load innocuous_shl_load ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char shl_load (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef shl_load ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shl_load (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_shl_load || defined __stub___shl_load ++choke me ++#endif ++ ++int ++main () ++{ ++return shl_load (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_shl_load=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_shl_load=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 ++echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } ++if test $ac_cv_func_shl_load = yes; then ++ lt_cv_dlopen="shl_load" ++else ++ { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 ++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dld_shl_load+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shl_load (); ++int ++main () ++{ ++return shl_load (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dld_shl_load=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dld_shl_load=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 ++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } ++if test $ac_cv_lib_dld_shl_load = yes; then ++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" ++else ++ { echo "$as_me:$LINENO: checking for dlopen" >&5 ++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } ++if test "${ac_cv_func_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define dlopen to an innocuous variant, in case declares dlopen. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define dlopen innocuous_dlopen ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char dlopen (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef dlopen ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_dlopen || defined __stub___dlopen ++choke me ++#endif ++ ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } ++if test $ac_cv_func_dlopen = yes; then ++ lt_cv_dlopen="dlopen" ++else ++ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dl_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dl_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dl_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } ++if test $ac_cv_lib_dl_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 ++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_svld_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsvld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_svld_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_svld_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } ++if test $ac_cv_lib_svld_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" ++else ++ { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 ++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dld_dld_link+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dld_link (); ++int ++main () ++{ ++return dld_link (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dld_dld_link=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dld_dld_link=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 ++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } ++if test $ac_cv_lib_dld_dld_link = yes; then ++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ;; ++ esac ++ ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ else ++ enable_dlopen=no ++ fi ++ ++ case $lt_cv_dlopen in ++ dlopen) ++ save_CPPFLAGS="$CPPFLAGS" ++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++ ++ save_LDFLAGS="$LDFLAGS" ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ ++ save_LIBS="$LIBS" ++ LIBS="$lt_cv_dlopen_libs $LIBS" ++ ++ { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 ++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } ++if test "${lt_cv_dlopen_self+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext <<_LT_EOF ++#line __oline__ "configure" ++#include "confdefs.h" ++ ++#if HAVE_DLFCN_H ++#include ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif ++ ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ exit (status); ++} ++_LT_EOF ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; ++ esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self=no ++ fi ++fi ++rm -fr conftest* ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 ++echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } ++ ++ if test "x$lt_cv_dlopen_self" = xyes; then ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" ++ { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 ++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } ++if test "${lt_cv_dlopen_self_static+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self_static=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext <<_LT_EOF ++#line __oline__ "configure" ++#include "confdefs.h" ++ ++#if HAVE_DLFCN_H ++#include ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif ++ ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ exit (status); ++} ++_LT_EOF ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; ++ esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self_static=no ++ fi ++fi ++rm -fr conftest* ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 ++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } ++ fi ++ ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ ;; ++ esac ++ ++ case $lt_cv_dlopen_self in ++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; ++ *) enable_dlopen_self=unknown ;; ++ esac ++ ++ case $lt_cv_dlopen_self_static in ++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; ++ *) enable_dlopen_self_static=unknown ;; ++ esac ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++striplib= ++old_striplib= ++{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 ++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } ++if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then ++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" ++ test -z "$striplib" && striplib="$STRIP --strip-unneeded" ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++else ++# FIXME - insert some real tests, host_os isn't really good enough ++ case $host_os in ++ darwin*) ++ if test -n "$STRIP" ; then ++ striplib="$STRIP -x" ++ old_striplib="$STRIP -S" ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ fi ++ ;; ++ *) ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ ;; ++ esac ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ # Report which library types will actually be built ++ { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 ++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } ++ { echo "$as_me:$LINENO: result: $can_build_shared" >&5 ++echo "${ECHO_T}$can_build_shared" >&6; } ++ ++ { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 ++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } ++ test "$can_build_shared" = "no" && enable_shared=no ++ ++ # On AIX, shared libraries and static libraries use the same namespace, and ++ # are all built from PIC. ++ case $host_os in ++ aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' ++ fi ++ ;; ++ ++ aix[4-9]*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++ esac ++ { echo "$as_me:$LINENO: result: $enable_shared" >&5 ++echo "${ECHO_T}$enable_shared" >&6; } ++ ++ { echo "$as_me:$LINENO: checking whether to build static libraries" >&5 ++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } ++ # Make sure either enable_shared or enable_static is yes. ++ test "$enable_shared" = yes || enable_static=yes ++ { echo "$as_me:$LINENO: result: $enable_static" >&5 ++echo "${ECHO_T}$enable_static" >&6; } ++ ++ ++ ++ ++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 ++ ++CC="$lt_save_CC" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ac_config_commands="$ac_config_commands libtool" ++ ++ ++ ++ ++# Only expand once: ++ ++ ++# Extract the first word of "ar", so it can be a program name with args. ++set dummy ar; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_path_AR+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $AR in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_AR="$AR" # Let the user override the test with a path. ++ ;; ++ *) ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++as_dummy="$PATH:/usr/ccs/bin" ++for as_dir in $as_dummy ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++ test -z "$ac_cv_path_AR" && ac_cv_path_AR="/usr/bin/ar" ++ ;; ++esac ++fi ++AR=$ac_cv_path_AR ++if test -n "$AR"; then ++ { echo "$as_me:$LINENO: result: $AR" >&5 ++echo "${ECHO_T}$AR" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++ ++# Options ++ ++ ++ ++# Check whether --with-tightvnc-filetransfer was given. ++if test "${with_tightvnc_filetransfer+set}" = set; then ++ withval=$with_tightvnc_filetransfer; ++else ++ with_tightvnc_filetransfer=yes ++fi ++ ++# AC_DEFINE moved to after libpthread check. ++ ++ ++ ++ ++# Check whether --with-24bpp was given. ++if test "${with_24bpp+set}" = set; then ++ withval=$with_24bpp; ++else ++ with_24bpp=yes ++fi ++ ++if test "x$with_24bpp" = "xyes"; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define ALLOW24BPP 1 ++_ACEOF ++ ++fi ++ ++ ++ ++# Check whether --with-ffmpeg was given. ++if test "${with_ffmpeg+set}" = set; then ++ withval=$with_ffmpeg; ++fi ++ ++ ++ if test ! -z "$with_ffmpeg"; then ++ WITH_FFMPEG_TRUE= ++ WITH_FFMPEG_FALSE='#' ++else ++ WITH_FFMPEG_TRUE='#' ++ WITH_FFMPEG_FALSE= ++fi ++ ++if test ! -z "$with_ffmpeg"; then ++ { echo "$as_me:$LINENO: checking for lame_init in -lmp3lame" >&5 ++echo $ECHO_N "checking for lame_init in -lmp3lame... $ECHO_C" >&6; } ++if test "${ac_cv_lib_mp3lame_lame_init+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lmp3lame $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char lame_init (); ++int ++main () ++{ ++return lame_init (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_mp3lame_lame_init=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_mp3lame_lame_init=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_mp3lame_lame_init" >&5 ++echo "${ECHO_T}$ac_cv_lib_mp3lame_lame_init" >&6; } ++if test $ac_cv_lib_mp3lame_lame_init = yes; then ++ HAVE_MP3LAME="true" ++else ++ HAVE_MP3LAME="false" ++fi ++ ++fi ++ if test "$HAVE_MP3LAME" = "true"; then ++ HAVE_MP3LAME_TRUE= ++ HAVE_MP3LAME_FALSE='#' ++else ++ HAVE_MP3LAME_TRUE='#' ++ HAVE_MP3LAME_FALSE= ++fi ++ ++ ++# Seem to need this dummy here to induce the 'checking for egrep... grep -E', etc. ++# before it seemed to be inside the with_jpeg conditional. ++if test "${ac_cv_header_thenonexistentheader_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for thenonexistentheader.h" >&5 ++echo $ECHO_N "checking for thenonexistentheader.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_thenonexistentheader_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_thenonexistentheader_h" >&5 ++echo "${ECHO_T}$ac_cv_header_thenonexistentheader_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking thenonexistentheader.h usability" >&5 ++echo $ECHO_N "checking thenonexistentheader.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking thenonexistentheader.h presence" >&5 ++echo $ECHO_N "checking thenonexistentheader.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for thenonexistentheader.h" >&5 ++echo $ECHO_N "checking for thenonexistentheader.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_thenonexistentheader_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_thenonexistentheader_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_thenonexistentheader_h" >&5 ++echo "${ECHO_T}$ac_cv_header_thenonexistentheader_h" >&6; } ++ ++fi ++if test $ac_cv_header_thenonexistentheader_h = yes; then ++ HAVE_THENONEXISTENTHEADER_H="true" ++fi ++ ++ ++ ++# Checks for X libraries ++HAVE_X="false" ++{ echo "$as_me:$LINENO: checking for X" >&5 ++echo $ECHO_N "checking for X... $ECHO_C" >&6; } ++ ++ ++# Check whether --with-x was given. ++if test "${with_x+set}" = set; then ++ withval=$with_x; ++fi ++ ++# $have_x is `yes', `no', `disabled', or empty when we do not yet know. ++if test "x$with_x" = xno; then ++ # The user explicitly disabled X. ++ have_x=disabled ++else ++ case $x_includes,$x_libraries in #( ++ *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5 ++echo "$as_me: error: Cannot use X directory names containing '" >&2;} ++ { (exit 1); exit 1; }; };; #( ++ *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # One or both of the vars are not set, and there is no cached value. ++ac_x_includes=no ac_x_libraries=no ++# Standard set of common directories for X headers. ++# Check X11 before X11Rn because it is often a symlink to the current release. ++ac_x_header_dirs='' ++ ++if test "$ac_x_includes" = no; then ++ # Guess where to find include files, by looking for Xlib.h. ++ # First, try using that file with no special directory specified. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ # We can compile using X headers with no special include directory. ++ac_x_includes= ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ for ac_dir in $ac_x_header_dirs; do ++ if test -r "$ac_dir/X11/Xlib.h"; then ++ ac_x_includes=$ac_dir ++ break ++ fi ++done ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++fi # $ac_x_includes = no ++ ++if test "$ac_x_libraries" = no; then ++ # Check for the libraries. ++ # See if we find them without any special options. ++ # Don't add to $LIBS permanently. ++ ac_save_LIBS=$LIBS ++ LIBS="-lX11 $LIBS" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++int ++main () ++{ ++XrmInitialize () ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ LIBS=$ac_save_LIBS ++# We can link X programs with no special library path. ++ac_x_libraries= ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ LIBS=$ac_save_LIBS ++for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` ++do ++ # Don't even attempt the hair of trying to link an X program! ++ for ac_extension in a so sl; do ++ if test -r "$ac_dir/libX11.$ac_extension"; then ++ ac_x_libraries=$ac_dir ++ break 2 ++ fi ++ done ++done ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi # $ac_x_libraries = no ++ ++case $ac_x_includes,$ac_x_libraries in #( ++ no,* | *,no | *\'*) ++ # Didn't find X, or a directory has "'" in its name. ++ ac_cv_have_x="have_x=no";; #( ++ *) ++ # Record where we found X for the cache. ++ ac_cv_have_x="have_x=yes\ ++ ac_x_includes='$ac_x_includes'\ ++ ac_x_libraries='$ac_x_libraries'" ++esac ++fi ++;; #( ++ *) have_x=yes;; ++ esac ++ eval "$ac_cv_have_x" ++fi # $with_x != no ++ ++if test "$have_x" != yes; then ++ { echo "$as_me:$LINENO: result: $have_x" >&5 ++echo "${ECHO_T}$have_x" >&6; } ++ no_x=yes ++else ++ # If each of the values was on the command line, it overrides each guess. ++ test "x$x_includes" = xNONE && x_includes=$ac_x_includes ++ test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries ++ # Update the cache value to reflect the command line values. ++ ac_cv_have_x="have_x=yes\ ++ ac_x_includes='$x_includes'\ ++ ac_x_libraries='$x_libraries'" ++ { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 ++echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; } ++fi ++ ++if test "$no_x" = yes; then ++ # Not all programs may use this symbol, but it does not hurt to define it. ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define X_DISPLAY_MISSING 1 ++_ACEOF ++ ++ X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= ++else ++ if test -n "$x_includes"; then ++ X_CFLAGS="$X_CFLAGS -I$x_includes" ++ fi ++ ++ # It would also be nice to do this for all -L options, not just this one. ++ if test -n "$x_libraries"; then ++ X_LIBS="$X_LIBS -L$x_libraries" ++ # For Solaris; some versions of Sun CC require a space after -R and ++ # others require no space. Words are not sufficient . . . . ++ { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 ++echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; } ++ ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" ++ ac_xsave_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ X_LIBS="$X_LIBS -R$x_libraries" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ LIBS="$ac_xsave_LIBS -R $x_libraries" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ X_LIBS="$X_LIBS -R $x_libraries" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ { echo "$as_me:$LINENO: result: neither works" >&5 ++echo "${ECHO_T}neither works" >&6; } ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ ac_c_werror_flag=$ac_xsave_c_werror_flag ++ LIBS=$ac_xsave_LIBS ++ fi ++ ++ # Check for system-dependent libraries X programs must link with. ++ # Do this before checking for the system-independent R6 libraries ++ # (-lICE), since we may need -lsocket or whatever for X linking. ++ ++ if test "$ISC" = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" ++ else ++ # Martyn Johnson says this is needed for Ultrix, if the X ++ # libraries were built with DECnet support. And Karl Berry says ++ # the Alpha needs dnet_stub (dnet does not exist). ++ ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XOpenDisplay (); ++int ++main () ++{ ++return XOpenDisplay (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 ++echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldnet $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dnet_ntoa (); ++int ++main () ++{ ++return dnet_ntoa (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dnet_dnet_ntoa=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dnet_dnet_ntoa=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 ++echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; } ++if test $ac_cv_lib_dnet_dnet_ntoa = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" ++fi ++ ++ if test $ac_cv_lib_dnet_dnet_ntoa = no; then ++ { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 ++echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldnet_stub $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dnet_ntoa (); ++int ++main () ++{ ++return dnet_ntoa (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dnet_stub_dnet_ntoa=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dnet_stub_dnet_ntoa=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 ++echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } ++if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" ++fi ++ ++ fi ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ LIBS="$ac_xsave_LIBS" ++ ++ # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, ++ # to get the SysV transport functions. ++ # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) ++ # needs -lnsl. ++ # The nsl library prevents programs from opening the X display ++ # on Irix 5.2, according to T.E. Dickey. ++ # The functions gethostbyname, getservbyname, and inet_addr are ++ # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. ++ { echo "$as_me:$LINENO: checking for gethostbyname" >&5 ++echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; } ++if test "${ac_cv_func_gethostbyname+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define gethostbyname to an innocuous variant, in case declares gethostbyname. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define gethostbyname innocuous_gethostbyname ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char gethostbyname (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef gethostbyname ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char gethostbyname (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_gethostbyname || defined __stub___gethostbyname ++choke me ++#endif ++ ++int ++main () ++{ ++return gethostbyname (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_gethostbyname=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_gethostbyname=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; } ++ ++ if test $ac_cv_func_gethostbyname = no; then ++ { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 ++echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lnsl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char gethostbyname (); ++int ++main () ++{ ++return gethostbyname (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_nsl_gethostbyname=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_nsl_gethostbyname=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; } ++if test $ac_cv_lib_nsl_gethostbyname = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" ++fi ++ ++ if test $ac_cv_lib_nsl_gethostbyname = no; then ++ { echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 ++echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; } ++if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lbsd $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char gethostbyname (); ++int ++main () ++{ ++return gethostbyname (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_bsd_gethostbyname=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_bsd_gethostbyname=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; } ++if test $ac_cv_lib_bsd_gethostbyname = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" ++fi ++ ++ fi ++ fi ++ ++ # lieder@skyler.mavd.honeywell.com says without -lsocket, ++ # socket/setsockopt and other routines are undefined under SCO ODT ++ # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary ++ # on later versions), says Simon Leinen: it contains gethostby* ++ # variants that don't use the name server (or something). -lsocket ++ # must be given before -lnsl if both are needed. We assume that ++ # if connect needs -lnsl, so does gethostbyname. ++ { echo "$as_me:$LINENO: checking for connect" >&5 ++echo $ECHO_N "checking for connect... $ECHO_C" >&6; } ++if test "${ac_cv_func_connect+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define connect to an innocuous variant, in case declares connect. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define connect innocuous_connect ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char connect (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef connect ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char connect (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_connect || defined __stub___connect ++choke me ++#endif ++ ++int ++main () ++{ ++return connect (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_connect=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_connect=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 ++echo "${ECHO_T}$ac_cv_func_connect" >&6; } ++ ++ if test $ac_cv_func_connect = no; then ++ { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 ++echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; } ++if test "${ac_cv_lib_socket_connect+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsocket $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char connect (); ++int ++main () ++{ ++return connect (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_socket_connect=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_socket_connect=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 ++echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; } ++if test $ac_cv_lib_socket_connect = yes; then ++ X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" ++fi ++ ++ fi ++ ++ # Guillermo Gomez says -lposix is necessary on A/UX. ++ { echo "$as_me:$LINENO: checking for remove" >&5 ++echo $ECHO_N "checking for remove... $ECHO_C" >&6; } ++if test "${ac_cv_func_remove+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define remove to an innocuous variant, in case declares remove. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define remove innocuous_remove ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char remove (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef remove ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char remove (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_remove || defined __stub___remove ++choke me ++#endif ++ ++int ++main () ++{ ++return remove (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_remove=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_remove=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 ++echo "${ECHO_T}$ac_cv_func_remove" >&6; } ++ ++ if test $ac_cv_func_remove = no; then ++ { echo "$as_me:$LINENO: checking for remove in -lposix" >&5 ++echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; } ++if test "${ac_cv_lib_posix_remove+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lposix $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char remove (); ++int ++main () ++{ ++return remove (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_posix_remove=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_posix_remove=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 ++echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; } ++if test $ac_cv_lib_posix_remove = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" ++fi ++ ++ fi ++ ++ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. ++ { echo "$as_me:$LINENO: checking for shmat" >&5 ++echo $ECHO_N "checking for shmat... $ECHO_C" >&6; } ++if test "${ac_cv_func_shmat+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define shmat to an innocuous variant, in case declares shmat. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define shmat innocuous_shmat ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char shmat (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef shmat ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shmat (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_shmat || defined __stub___shmat ++choke me ++#endif ++ ++int ++main () ++{ ++return shmat (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_shmat=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_shmat=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 ++echo "${ECHO_T}$ac_cv_func_shmat" >&6; } ++ ++ if test $ac_cv_func_shmat = no; then ++ { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 ++echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; } ++if test "${ac_cv_lib_ipc_shmat+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lipc $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shmat (); ++int ++main () ++{ ++return shmat (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_ipc_shmat=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_ipc_shmat=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 ++echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; } ++if test $ac_cv_lib_ipc_shmat = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" ++fi ++ ++ fi ++ fi ++ ++ # Check for libraries that X11R6 Xt/Xaw programs need. ++ ac_save_LDFLAGS=$LDFLAGS ++ test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" ++ # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to ++ # check for ICE first), but we must link in the order -lSM -lICE or ++ # we get undefined symbols. So assume we have SM if we have ICE. ++ # These have to be linked with before -lX11, unlike the other ++ # libraries we check for below, so use a different variable. ++ # John Interrante, Karl Berry ++ { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 ++echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; } ++if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lICE $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char IceConnectionNumber (); ++int ++main () ++{ ++return IceConnectionNumber (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_ICE_IceConnectionNumber=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_ICE_IceConnectionNumber=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 ++echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; } ++if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then ++ X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" ++fi ++ ++ LDFLAGS=$ac_save_LDFLAGS ++ ++fi ++ ++ ++ ++ ++# See if we are to build x11vnc: ++ ++ ++ ++# Check whether --with-system-libvncserver was given. ++if test "${with_system_libvncserver+set}" = set; then ++ withval=$with_system_libvncserver; ++fi ++ ++ ++# Check whether --with-x11vnc was given. ++if test "${with_x11vnc+set}" = set; then ++ withval=$with_x11vnc; ++fi ++ ++ ++if test ! -z "$with_x11vnc" -a "$with_x11vnc" = "yes"; then ++ build_x11vnc="yes" ++elif test "$PACKAGE_NAME" = "x11vnc"; then ++ build_x11vnc="yes" ++else ++ build_x11vnc="no" ++fi ++ ++# x11vnc only: ++if test "$build_x11vnc" = "yes"; then ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --with-xkeyboard was given. ++if test "${with_xkeyboard+set}" = set; then ++ withval=$with_xkeyboard; ++fi ++ ++ ++# Check whether --with-xinerama was given. ++if test "${with_xinerama+set}" = set; then ++ withval=$with_xinerama; ++fi ++ ++ ++# Check whether --with-xrandr was given. ++if test "${with_xrandr+set}" = set; then ++ withval=$with_xrandr; ++fi ++ ++ ++# Check whether --with-xfixes was given. ++if test "${with_xfixes+set}" = set; then ++ withval=$with_xfixes; ++fi ++ ++ ++# Check whether --with-xdamage was given. ++if test "${with_xdamage+set}" = set; then ++ withval=$with_xdamage; ++fi ++ ++ ++# Check whether --with-xtrap was given. ++if test "${with_xtrap+set}" = set; then ++ withval=$with_xtrap; ++fi ++ ++ ++# Check whether --with-xrecord was given. ++if test "${with_xrecord+set}" = set; then ++ withval=$with_xrecord; ++fi ++ ++ ++# Check whether --with-fbpm was given. ++if test "${with_fbpm+set}" = set; then ++ withval=$with_fbpm; ++fi ++ ++ ++# Check whether --with-dpms was given. ++if test "${with_dpms+set}" = set; then ++ withval=$with_dpms; ++fi ++ ++ ++# Check whether --with-v4l was given. ++if test "${with_v4l+set}" = set; then ++ withval=$with_v4l; ++fi ++ ++ ++# Check whether --with-fbdev was given. ++if test "${with_fbdev+set}" = set; then ++ withval=$with_fbdev; ++fi ++ ++ ++# Check whether --with-uinput was given. ++if test "${with_uinput+set}" = set; then ++ withval=$with_uinput; ++fi ++ ++ ++# Check whether --with-macosx-native was given. ++if test "${with_macosx_native+set}" = set; then ++ withval=$with_macosx_native; ++fi ++ ++ ++fi ++# end x11vnc only. ++ ++if test "x$with_x" = "xno"; then ++ HAVE_X="false" ++elif test "$X_CFLAGS" != "-DX_DISPLAY_MISSING"; then ++ { echo "$as_me:$LINENO: checking for XGetImage in -lX11" >&5 ++echo $ECHO_N "checking for XGetImage in -lX11... $ECHO_C" >&6; } ++if test "${ac_cv_lib_X11_XGetImage+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lX11 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XGetImage (); ++int ++main () ++{ ++return XGetImage (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_X11_XGetImage=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_X11_XGetImage=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XGetImage" >&5 ++echo "${ECHO_T}$ac_cv_lib_X11_XGetImage" >&6; } ++if test $ac_cv_lib_X11_XGetImage = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_X11 1 ++_ACEOF ++ HAVE_X="true" ++else ++ HAVE_X="false" ++fi ++ ++ ++ # x11vnc only: ++ if test $HAVE_X = "true" -a "$build_x11vnc" = "yes"; then ++ X_PRELIBS="$X_PRELIBS -lXext" ++ ++ { echo "$as_me:$LINENO: checking for XShmGetImage in -lXext" >&5 ++echo $ECHO_N "checking for XShmGetImage in -lXext... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xext_XShmGetImage+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XShmGetImage (); ++int ++main () ++{ ++return XShmGetImage (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xext_XShmGetImage=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xext_XShmGetImage=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XShmGetImage" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xext_XShmGetImage" >&6; } ++if test $ac_cv_lib_Xext_XShmGetImage = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_XSHM 1 ++_ACEOF ++ ++fi ++ ++ ++ { echo "$as_me:$LINENO: checking for XReadScreen in -lXext" >&5 ++echo $ECHO_N "checking for XReadScreen in -lXext... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xext_XReadScreen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XReadScreen (); ++int ++main () ++{ ++return XReadScreen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xext_XReadScreen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xext_XReadScreen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XReadScreen" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xext_XReadScreen" >&6; } ++if test $ac_cv_lib_Xext_XReadScreen = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_SOLARIS_XREADSCREEN 1 ++_ACEOF ++ ++fi ++ ++ ++ { echo "$as_me:$LINENO: checking for X11/extensions/readdisplay.h" >&5 ++echo $ECHO_N "checking for X11/extensions/readdisplay.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_X11_extensions_readdisplay_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_X11_extensions_readdisplay_h=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_X11_extensions_readdisplay_h=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_readdisplay_h" >&5 ++echo "${ECHO_T}$ac_cv_header_X11_extensions_readdisplay_h" >&6; } ++if test $ac_cv_header_X11_extensions_readdisplay_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_IRIX_XREADDISPLAY 1 ++_ACEOF ++ ++fi ++ ++ ++ ++ if test "x$with_fbpm" != "xno"; then ++ { echo "$as_me:$LINENO: checking for FBPMForceLevel in -lXext" >&5 ++echo $ECHO_N "checking for FBPMForceLevel in -lXext... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xext_FBPMForceLevel+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char FBPMForceLevel (); ++int ++main () ++{ ++return FBPMForceLevel (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xext_FBPMForceLevel=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xext_FBPMForceLevel=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_FBPMForceLevel" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xext_FBPMForceLevel" >&6; } ++if test $ac_cv_lib_Xext_FBPMForceLevel = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_FBPM 1 ++_ACEOF ++ ++fi ++ ++ fi ++ ++ if test "x$with_dpms" != "xno"; then ++ { echo "$as_me:$LINENO: checking for DPMSForceLevel in -lXext" >&5 ++echo $ECHO_N "checking for DPMSForceLevel in -lXext... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xext_DPMSForceLevel+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char DPMSForceLevel (); ++int ++main () ++{ ++return DPMSForceLevel (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xext_DPMSForceLevel=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xext_DPMSForceLevel=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_DPMSForceLevel" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xext_DPMSForceLevel" >&6; } ++if test $ac_cv_lib_Xext_DPMSForceLevel = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_DPMS 1 ++_ACEOF ++ ++fi ++ ++ fi ++ ++ { echo "$as_me:$LINENO: checking for XTestGrabControl in -lXtst" >&5 ++echo $ECHO_N "checking for XTestGrabControl in -lXtst... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xtst_XTestGrabControl+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXtst $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XTestGrabControl (); ++int ++main () ++{ ++return XTestGrabControl (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xtst_XTestGrabControl=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xtst_XTestGrabControl=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_XTestGrabControl" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xtst_XTestGrabControl" >&6; } ++if test $ac_cv_lib_Xtst_XTestGrabControl = yes; then ++ X_PRELIBS="-lXtst $X_PRELIBS" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_XTESTGRABCONTROL 1 ++_ACEOF ++ HAVE_XTESTGRABCONTROL="true" ++fi ++ ++ ++ { echo "$as_me:$LINENO: checking for XTestFakeKeyEvent in -lXtst" >&5 ++echo $ECHO_N "checking for XTestFakeKeyEvent in -lXtst... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xtst_XTestFakeKeyEvent+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXtst $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XTestFakeKeyEvent (); ++int ++main () ++{ ++return XTestFakeKeyEvent (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xtst_XTestFakeKeyEvent=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xtst_XTestFakeKeyEvent=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_XTestFakeKeyEvent" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xtst_XTestFakeKeyEvent" >&6; } ++if test $ac_cv_lib_Xtst_XTestFakeKeyEvent = yes; then ++ X_PRELIBS="-lXtst $X_PRELIBS" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_XTEST 1 ++_ACEOF ++ HAVE_XTEST="true" ++fi ++ ++ ++ if test "x$with_xrecord" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XRecordEnableContextAsync in -lXtst" >&5 ++echo $ECHO_N "checking for XRecordEnableContextAsync in -lXtst... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xtst_XRecordEnableContextAsync+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXtst $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XRecordEnableContextAsync (); ++int ++main () ++{ ++return XRecordEnableContextAsync (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xtst_XRecordEnableContextAsync=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xtst_XRecordEnableContextAsync=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_XRecordEnableContextAsync" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xtst_XRecordEnableContextAsync" >&6; } ++if test $ac_cv_lib_Xtst_XRecordEnableContextAsync = yes; then ++ X_PRELIBS="-lXtst $X_PRELIBS" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_RECORD 1 ++_ACEOF ++ ++fi ++ ++ fi ++ ++ # we use XTRAP on X11R5, or user can set X11VNC_USE_XTRAP ++ if test "x$with_xtrap" != "xno"; then ++ if test ! -z "$X11VNC_USE_XTRAP" -o -z "$HAVE_XTESTGRABCONTROL"; then ++ { echo "$as_me:$LINENO: checking for XETrapSetGrabServer in -lXTrap" >&5 ++echo $ECHO_N "checking for XETrapSetGrabServer in -lXTrap... $ECHO_C" >&6; } ++if test "${ac_cv_lib_XTrap_XETrapSetGrabServer+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXTrap $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XETrapSetGrabServer (); ++int ++main () ++{ ++return XETrapSetGrabServer (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_XTrap_XETrapSetGrabServer=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_XTrap_XETrapSetGrabServer=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_XTrap_XETrapSetGrabServer" >&5 ++echo "${ECHO_T}$ac_cv_lib_XTrap_XETrapSetGrabServer" >&6; } ++if test $ac_cv_lib_XTrap_XETrapSetGrabServer = yes; then ++ X_PRELIBS="$X_PRELIBS -lXTrap" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBXTRAP 1 ++_ACEOF ++ ++fi ++ ++ # tru64 uses libXETrap.so ++ { echo "$as_me:$LINENO: checking for XETrapSetGrabServer in -lXETrap" >&5 ++echo $ECHO_N "checking for XETrapSetGrabServer in -lXETrap... $ECHO_C" >&6; } ++if test "${ac_cv_lib_XETrap_XETrapSetGrabServer+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXETrap $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XETrapSetGrabServer (); ++int ++main () ++{ ++return XETrapSetGrabServer (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_XETrap_XETrapSetGrabServer=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_XETrap_XETrapSetGrabServer=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_XETrap_XETrapSetGrabServer" >&5 ++echo "${ECHO_T}$ac_cv_lib_XETrap_XETrapSetGrabServer" >&6; } ++if test $ac_cv_lib_XETrap_XETrapSetGrabServer = yes; then ++ X_PRELIBS="$X_PRELIBS -lXETrap" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBXTRAP 1 ++_ACEOF ++ ++fi ++ ++ fi ++ fi ++ ++ if test "x$with_xkeyboard" != "xno"; then ++ saved_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$CPPFLAGS $X_CFLAGS" ++ { echo "$as_me:$LINENO: checking for X11/XKBlib.h" >&5 ++echo $ECHO_N "checking for X11/XKBlib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_X11_XKBlib_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_X11_XKBlib_h=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_X11_XKBlib_h=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_XKBlib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_X11_XKBlib_h" >&6; } ++if test $ac_cv_header_X11_XKBlib_h = yes; then ++ HAVE_XKBLIB_H="true" ++else ++ HAVE_XKBLIB_H="false" ++fi ++ ++ ++ CPPFLAGS="$saved_CPPFLAGS" ++ if test $HAVE_XKBLIB_H = "true"; then ++ { echo "$as_me:$LINENO: checking for XkbSelectEvents in -lX11" >&5 ++echo $ECHO_N "checking for XkbSelectEvents in -lX11... $ECHO_C" >&6; } ++if test "${ac_cv_lib_X11_XkbSelectEvents+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lX11 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XkbSelectEvents (); ++int ++main () ++{ ++return XkbSelectEvents (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_X11_XkbSelectEvents=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_X11_XkbSelectEvents=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XkbSelectEvents" >&5 ++echo "${ECHO_T}$ac_cv_lib_X11_XkbSelectEvents" >&6; } ++if test $ac_cv_lib_X11_XkbSelectEvents = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_XKEYBOARD 1 ++_ACEOF ++ ++fi ++ ++ fi ++ fi ++ ++ if test "x$with_xinerama" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XineramaQueryScreens in -lXinerama" >&5 ++echo $ECHO_N "checking for XineramaQueryScreens in -lXinerama... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xinerama_XineramaQueryScreens+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXinerama $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XineramaQueryScreens (); ++int ++main () ++{ ++return XineramaQueryScreens (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xinerama_XineramaQueryScreens=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xinerama_XineramaQueryScreens=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xinerama_XineramaQueryScreens" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xinerama_XineramaQueryScreens" >&6; } ++if test $ac_cv_lib_Xinerama_XineramaQueryScreens = yes; then ++ X_PRELIBS="$X_PRELIBS -lXinerama" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBXINERAMA 1 ++_ACEOF ++ ++fi ++ ++ fi ++ ++ if test "x$with_xrandr" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XRRSelectInput in -lXrandr" >&5 ++echo $ECHO_N "checking for XRRSelectInput in -lXrandr... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xrandr_XRRSelectInput+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXrandr $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XRRSelectInput (); ++int ++main () ++{ ++return XRRSelectInput (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xrandr_XRRSelectInput=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xrandr_XRRSelectInput=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xrandr_XRRSelectInput" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xrandr_XRRSelectInput" >&6; } ++if test $ac_cv_lib_Xrandr_XRRSelectInput = yes; then ++ X_PRELIBS="$X_PRELIBS -lXrandr" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBXRANDR 1 ++_ACEOF ++ ++fi ++ ++ fi ++ ++ if test "x$with_xfixes" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XFixesGetCursorImage in -lXfixes" >&5 ++echo $ECHO_N "checking for XFixesGetCursorImage in -lXfixes... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xfixes_XFixesGetCursorImage+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXfixes $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XFixesGetCursorImage (); ++int ++main () ++{ ++return XFixesGetCursorImage (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xfixes_XFixesGetCursorImage=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xfixes_XFixesGetCursorImage=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xfixes_XFixesGetCursorImage" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xfixes_XFixesGetCursorImage" >&6; } ++if test $ac_cv_lib_Xfixes_XFixesGetCursorImage = yes; then ++ X_PRELIBS="$X_PRELIBS -lXfixes" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBXFIXES 1 ++_ACEOF ++ HAVE_LIBXFIXES="true" ++fi ++ ++ fi ++ ++ if test "x$with_xdamage" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XDamageQueryExtension in -lXdamage" >&5 ++echo $ECHO_N "checking for XDamageQueryExtension in -lXdamage... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xdamage_XDamageQueryExtension+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXdamage $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XDamageQueryExtension (); ++int ++main () ++{ ++return XDamageQueryExtension (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xdamage_XDamageQueryExtension=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xdamage_XDamageQueryExtension=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xdamage_XDamageQueryExtension" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xdamage_XDamageQueryExtension" >&6; } ++if test $ac_cv_lib_Xdamage_XDamageQueryExtension = yes; then ++ X_PRELIBS="$X_PRELIBS -lXdamage" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBXDAMAGE 1 ++_ACEOF ++ HAVE_LIBXDAMAGE="true" ++fi ++ ++ fi ++ ++ if test ! -z "$HAVE_LIBXFIXES" -o ! -z "$HAVE_LIBXDAMAGE"; then ++ # need /usr/sfw/lib in RPATH for Solaris 10 and later ++ case `(uname -sr) 2>/dev/null` in ++ "SunOS 5"*) X_EXTRA_LIBS="$X_EXTRA_LIBS -R/usr/sfw/lib" ;; ++ esac ++ fi ++ ++ X_LIBS="$X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS" ++ fi ++ # end x11vnc only. ++fi ++ ++ ++ if test $HAVE_X != "false"; then ++ HAVE_X_TRUE= ++ HAVE_X_FALSE='#' ++else ++ HAVE_X_TRUE='#' ++ HAVE_X_FALSE= ++fi ++ ++ ++# x11vnc only: ++if test "$build_x11vnc" = "yes"; then ++ ++if test "x$HAVE_X" = "xfalse" -a "x$with_x" != "xno"; then ++ { { echo "$as_me:$LINENO: error: ++========================================================================== ++A working X window system build environment is required to build x11vnc. ++Make sure any required X development packages are installed. If they are ++installed in non-standard locations, one can use the --x-includes=DIR ++and --x-libraries=DIR configure options or set the CPPFLAGS and LDFLAGS ++environment variables to indicate where the X window system header files ++and libraries may be found. On 64+32 bit machines you may need to point ++to lib64 or lib32 directories to pick up the correct word size. ++ ++If you want to build x11vnc without X support (e.g. for -rawfb use only ++or for native Mac OS X), specify the --without-x configure option. ++========================================================================== ++" >&5 ++echo "$as_me: error: ++========================================================================== ++A working X window system build environment is required to build x11vnc. ++Make sure any required X development packages are installed. If they are ++installed in non-standard locations, one can use the --x-includes=DIR ++and --x-libraries=DIR configure options or set the CPPFLAGS and LDFLAGS ++environment variables to indicate where the X window system header files ++and libraries may be found. On 64+32 bit machines you may need to point ++to lib64 or lib32 directories to pick up the correct word size. ++ ++If you want to build x11vnc without X support (e.g. for -rawfb use only ++or for native Mac OS X), specify the --without-x configure option. ++========================================================================== ++" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++if test "x$HAVE_X" = "xtrue" -a "x$HAVE_XTEST" != "xtrue"; then ++ { echo "$as_me:$LINENO: WARNING: ++========================================================================== ++A working build environment for the XTEST extension was not found (libXtst). ++An x11vnc built this way will be only barely usable. You will be able to ++move the mouse but not click or type. There can also be deadlocks if an ++application grabs the X server. ++ ++It is recommended that you install the necessary development packages ++for XTEST (perhaps it is named something like libxtst-dev) and run ++configure again. ++========================================================================== ++" >&5 ++echo "$as_me: WARNING: ++========================================================================== ++A working build environment for the XTEST extension was not found (libXtst). ++An x11vnc built this way will be only barely usable. You will be able to ++move the mouse but not click or type. There can also be deadlocks if an ++application grabs the X server. ++ ++It is recommended that you install the necessary development packages ++for XTEST (perhaps it is named something like libxtst-dev) and run ++configure again. ++========================================================================== ++" >&2;} ++fi ++ ++ ++ ++ ++# Check whether --with-crypt was given. ++if test "${with_crypt+set}" = set; then ++ withval=$with_crypt; ++fi ++ ++if test "x$with_crypt" != "xno"; then ++ ++for ac_func in crypt ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ HAVE_LIBC_CRYPT="true" ++fi ++done ++ ++ if test -z "$HAVE_LIBC_CRYPT"; then ++ { echo "$as_me:$LINENO: checking for crypt in -lcrypt" >&5 ++echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6; } ++if test "${ac_cv_lib_crypt_crypt+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lcrypt $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char crypt (); ++int ++main () ++{ ++return crypt (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_crypt_crypt=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_crypt_crypt=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5 ++echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6; } ++if test $ac_cv_lib_crypt_crypt = yes; then ++ CRYPT_LIBS="-lcrypt" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBCRYPT 1 ++_ACEOF ++ ++fi ++ ++ fi ++fi ++ ++ ++# some OS's need both -lssl and -lcrypto on link line: ++ ++ ++ ++# Check whether --with-crypto was given. ++if test "${with_crypto+set}" = set; then ++ withval=$with_crypto; ++fi ++ ++ ++ ++ ++ ++# Check whether --with-ssl was given. ++if test "${with_ssl+set}" = set; then ++ withval=$with_ssl; ++fi ++ ++ ++if test "x$with_crypto" != "xno" -a "x$with_ssl" != "xno"; then ++ { echo "$as_me:$LINENO: checking for RAND_file_name in -lcrypto" >&5 ++echo $ECHO_N "checking for RAND_file_name in -lcrypto... $ECHO_C" >&6; } ++if test "${ac_cv_lib_crypto_RAND_file_name+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lcrypto $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char RAND_file_name (); ++int ++main () ++{ ++return RAND_file_name (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_crypto_RAND_file_name=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_crypto_RAND_file_name=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_RAND_file_name" >&5 ++echo "${ECHO_T}$ac_cv_lib_crypto_RAND_file_name" >&6; } ++if test $ac_cv_lib_crypto_RAND_file_name = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBCRYPTO 1 ++_ACEOF ++ HAVE_LIBCRYPTO="true" ++fi ++ ++fi ++ ++if test "x$with_ssl" != "xno"; then ++ if test "x$HAVE_LIBCRYPTO" = "xtrue"; then ++ { echo "$as_me:$LINENO: checking for SSL_library_init in -lssl" >&5 ++echo $ECHO_N "checking for SSL_library_init in -lssl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_ssl_SSL_library_init+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lssl -lcrypto $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char SSL_library_init (); ++int ++main () ++{ ++return SSL_library_init (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_ssl_SSL_library_init=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_ssl_SSL_library_init=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_library_init" >&5 ++echo "${ECHO_T}$ac_cv_lib_ssl_SSL_library_init" >&6; } ++if test $ac_cv_lib_ssl_SSL_library_init = yes; then ++ SSL_LIBS="-lssl -lcrypto" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBSSL 1 ++_ACEOF ++ HAVE_LIBSSL="true" ++fi ++ ++ else ++ { echo "$as_me:$LINENO: checking for SSL_library_init in -lssl" >&5 ++echo $ECHO_N "checking for SSL_library_init in -lssl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_ssl_SSL_library_init+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lssl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char SSL_library_init (); ++int ++main () ++{ ++return SSL_library_init (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_ssl_SSL_library_init=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_ssl_SSL_library_init=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_library_init" >&5 ++echo "${ECHO_T}$ac_cv_lib_ssl_SSL_library_init" >&6; } ++if test $ac_cv_lib_ssl_SSL_library_init = yes; then ++ SSL_LIBS="-lssl" ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LIBSSL 1 ++_ACEOF ++ HAVE_LIBSSL="true" ++fi ++ ++ fi ++fi ++ ++ ++ if test "x$HAVE_LIBSSL" != "xtrue"; then ++ { echo "$as_me:$LINENO: WARNING: ++========================================================================== ++The openssl encryption library libssl.so was not found. An x11vnc built ++this way will not support SSL encryption. To enable SSL install the ++necessary development packages (perhaps it is named something like ++libssl-dev) and run configure again. ++========================================================================== ++" >&5 ++echo "$as_me: WARNING: ++========================================================================== ++The openssl encryption library libssl.so was not found. An x11vnc built ++this way will not support SSL encryption. To enable SSL install the ++necessary development packages (perhaps it is named something like ++libssl-dev) and run configure again. ++========================================================================== ++" >&2;} ++ fi ++ ++if test "x$with_v4l" != "xno"; then ++ if test "${ac_cv_header_linux_videodev_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for linux/videodev.h" >&5 ++echo $ECHO_N "checking for linux/videodev.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_videodev_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_videodev_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_videodev_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking linux/videodev.h usability" >&5 ++echo $ECHO_N "checking linux/videodev.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking linux/videodev.h presence" >&5 ++echo $ECHO_N "checking linux/videodev.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: linux/videodev.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: linux/videodev.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: linux/videodev.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: linux/videodev.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: linux/videodev.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: linux/videodev.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: linux/videodev.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: linux/videodev.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for linux/videodev.h" >&5 ++echo $ECHO_N "checking for linux/videodev.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_videodev_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_linux_videodev_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_videodev_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_videodev_h" >&6; } ++ ++fi ++if test $ac_cv_header_linux_videodev_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LINUX_VIDEODEV_H 1 ++_ACEOF ++ ++fi ++ ++ ++fi ++if test "x$with_fbdev" != "xno"; then ++ if test "${ac_cv_header_linux_fb_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for linux/fb.h" >&5 ++echo $ECHO_N "checking for linux/fb.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_fb_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_fb_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_fb_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking linux/fb.h usability" >&5 ++echo $ECHO_N "checking linux/fb.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking linux/fb.h presence" >&5 ++echo $ECHO_N "checking linux/fb.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: linux/fb.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: linux/fb.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: linux/fb.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: linux/fb.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: linux/fb.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: linux/fb.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: linux/fb.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: linux/fb.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for linux/fb.h" >&5 ++echo $ECHO_N "checking for linux/fb.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_fb_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_linux_fb_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_fb_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_fb_h" >&6; } ++ ++fi ++if test $ac_cv_header_linux_fb_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LINUX_FB_H 1 ++_ACEOF ++ ++fi ++ ++ ++fi ++if test "x$with_uinput" != "xno"; then ++ if test "${ac_cv_header_linux_input_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for linux/input.h" >&5 ++echo $ECHO_N "checking for linux/input.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_input_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_input_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_input_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking linux/input.h usability" >&5 ++echo $ECHO_N "checking linux/input.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking linux/input.h presence" >&5 ++echo $ECHO_N "checking linux/input.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: linux/input.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: linux/input.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: linux/input.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: linux/input.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: linux/input.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: linux/input.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: linux/input.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: linux/input.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for linux/input.h" >&5 ++echo $ECHO_N "checking for linux/input.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_input_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_linux_input_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_input_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_input_h" >&6; } ++ ++fi ++if test $ac_cv_header_linux_input_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LINUX_INPUT_H 1 ++_ACEOF ++ HAVE_LINUX_INPUT_H="true" ++fi ++ ++ ++ if test "x$HAVE_LINUX_INPUT_H" = "xtrue"; then ++ { echo "$as_me:$LINENO: checking for linux/uinput.h" >&5 ++echo $ECHO_N "checking for linux/uinput.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_uinput_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_linux_uinput_h=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_linux_uinput_h=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_uinput_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_uinput_h" >&6; } ++if test $ac_cv_header_linux_uinput_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_LINUX_UINPUT_H 1 ++_ACEOF ++ ++fi ++ ++ ++ fi ++fi ++ ++if test "x$with_macosx_native" != "xno"; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_MACOSX_NATIVE_DISPLAY 1 ++_ACEOF ++ ++fi ++ ++ ++ ++ ++# Check whether --with-avahi was given. ++if test "${with_avahi+set}" = set; then ++ withval=$with_avahi; ++fi ++ ++if test "x$with_avahi" != "xno"; then ++ printf "checking for avahi... " ++ if test ! -z "$with_avahi" -a "x$with_avahi" != "xyes"; then ++ AVAHI_CFLAGS="-I$with_avahi/include" ++ AVAHI_LIBS="-L$with_avahi/lib -lavahi-common -lavahi-client" ++ echo "using $with_avahi" ++ with_avahi=yes ++ elif pkg-config --atleast-version=0.6.4 avahi-client >/dev/null 2>&1; then ++ AVAHI_CFLAGS=`pkg-config --cflags avahi-client` ++ AVAHI_LIBS=`pkg-config --libs avahi-client` ++ with_avahi=yes ++ echo yes ++ else ++ with_avahi=no ++ echo no ++ fi ++fi ++if test "x$with_avahi" = "xyes"; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_AVAHI 1 ++_ACEOF ++ ++ ++ ++fi ++ ++fi ++# end x11vnc only. ++ ++# Checks for libraries. ++ ++uname_s=`(uname -s) 2>/dev/null` ++ld_minus_R="yes" ++if test "x$uname_s" = "xHP-UX"; then ++ ld_minus_R="no" ++elif test "x$uname_s" = "xOSF1"; then ++ ld_minus_R="no" ++elif test "x$uname_s" = "xDarwin"; then ++ ld_minus_R="no" ++fi ++ ++if test ! -z "$with_system_libvncserver" -a "x$with_system_libvncserver" != "xno"; then ++ printf "checking for system libvncserver... " ++ if test "x$with_system_libvncserver" != "xyes"; then ++ rflag="" ++ if test "x$ld_minus_R" = "xno"; then ++ : ++ elif test "x$GCC" = "xyes"; then ++ rflag="-Xlinker -R$with_system_libvncserver/lib" ++ else ++ rflag="-R$with_system_libvncserver/lib" ++ fi ++ SYSTEM_LIBVNCSERVER_CFLAGS="-I$with_system_libvncserver/include" ++ SYSTEM_LIBVNCSERVER_LIBS="-L$with_system_libvncserver/lib $rflag -lvncserver -lvncclient" ++ echo "using $with_system_libvncserver" ++ with_system_libvncserver=yes ++ elif libvncserver-config --version >/dev/null 2>&1; then ++ rflag="" ++ rprefix=`libvncserver-config --prefix` ++ if test "x$ld_minus_R" = "xno"; then ++ : ++ elif test "x$GCC" = "xyes"; then ++ rflag=" -Xlinker -R$rprefix/lib " ++ else ++ rflag=" -R$rprefix/lib " ++ fi ++ SYSTEM_LIBVNCSERVER_CFLAGS=`libvncserver-config --cflags` ++ SYSTEM_LIBVNCSERVER_LIBS="$rflag"`libvncserver-config --libs` ++ with_system_libvncserver=yes ++ echo yes ++ else ++ with_system_libvncserver=no ++ echo no ++ fi ++fi ++ ++if test "x$with_system_libvncserver" = "xyes"; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_SYSTEM_LIBVNCSERVER 1 ++_ACEOF ++ ++ ++ ++fi ++ if test "x$with_system_libvncserver" = "xyes"; then ++ HAVE_SYSTEM_LIBVNCSERVER_TRUE= ++ HAVE_SYSTEM_LIBVNCSERVER_FALSE='#' ++else ++ HAVE_SYSTEM_LIBVNCSERVER_TRUE='#' ++ HAVE_SYSTEM_LIBVNCSERVER_FALSE= ++fi ++ ++ ++ ++ ++# Check whether --with-jpeg was given. ++if test "${with_jpeg+set}" = set; then ++ withval=$with_jpeg; ++fi ++ ++ ++# At this point: ++# no jpeg on command line with_jpeg="" ++# -with-jpeg with_jpeg="yes" ++# -without-jpeg with_jpeg="no" ++# -with-jpeg=/foo/dir with_jpeg="/foo/dir" ++ ++if test "x$with_jpeg" != "xno"; then ++ if test ! -z "$with_jpeg" -a "x$with_jpeg" != "xyes"; then ++ # add user supplied directory to flags: ++ saved_CPPFLAGS="$CPPFLAGS" ++ saved_LDFLAGS="$LDFLAGS" ++ CPPFLAGS="$CPPFLAGS -I$with_jpeg/include" ++ LDFLAGS="$LDFLAGS -L$with_jpeg/lib" ++ if test "x$ld_minus_R" = "xno"; then ++ : ++ elif test "x$GCC" = "xyes"; then ++ # this is not complete... in general a rat's nest. ++ LDFLAGS="$LDFLAGS -Xlinker -R$with_jpeg/lib" ++ else ++ LDFLAGS="$LDFLAGS -R$with_jpeg/lib" ++ fi ++ fi ++ if test "${ac_cv_header_jpeglib_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for jpeglib.h" >&5 ++echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_jpeglib_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking jpeglib.h usability" >&5 ++echo $ECHO_N "checking jpeglib.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking jpeglib.h presence" >&5 ++echo $ECHO_N "checking jpeglib.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: jpeglib.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: jpeglib.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: jpeglib.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for jpeglib.h" >&5 ++echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_jpeglib_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_jpeglib_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6; } ++ ++fi ++if test $ac_cv_header_jpeglib_h = yes; then ++ HAVE_JPEGLIB_H="true" ++fi ++ ++ ++ if test "x$HAVE_JPEGLIB_H" = "xtrue"; then ++ ++{ echo "$as_me:$LINENO: checking for jpeg_CreateCompress in -ljpeg" >&5 ++echo $ECHO_N "checking for jpeg_CreateCompress in -ljpeg... $ECHO_C" >&6; } ++if test "${ac_cv_lib_jpeg_jpeg_CreateCompress+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ljpeg $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char jpeg_CreateCompress (); ++int ++main () ++{ ++return jpeg_CreateCompress (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_jpeg_jpeg_CreateCompress=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_jpeg_jpeg_CreateCompress=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_CreateCompress" >&5 ++echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_CreateCompress" >&6; } ++if test $ac_cv_lib_jpeg_jpeg_CreateCompress = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_LIBJPEG 1 ++_ACEOF ++ ++ LIBS="-ljpeg $LIBS" ++ ++else ++ HAVE_JPEGLIB_H="" ++fi ++ ++ fi ++ if test ! -z "$with_jpeg" -a "x$with_jpeg" != "xyes"; then ++ if test "x$HAVE_JPEGLIB_H" != "xtrue"; then ++ # restore old flags on failure: ++ CPPFLAGS="$saved_CPPFLAGS" ++ LDFLAGS="$saved_LDFLAGS" ++ fi ++ fi ++ if test "$build" = "yes"; then ++ if test "x$HAVE_JPEGLIB_H" != "xtrue"; then ++ { echo "$as_me:$LINENO: WARNING: ++========================================================================== ++The libjpeg compression library was not found: this may lead to reduced ++performance, especially over slow links. If libjpeg is in a non-standard ++location use --with-jpeg=DIR to indicate the header file is in ++DIR/include/jpeglib.h and the library in DIR/lib/libjpeg.a. A copy of ++libjpeg may be obtained from: ftp://ftp.uu.net/graphics/jpeg/ ++========================================================================== ++" >&5 ++echo "$as_me: WARNING: ++========================================================================== ++The libjpeg compression library was not found: this may lead to reduced ++performance, especially over slow links. If libjpeg is in a non-standard ++location use --with-jpeg=DIR to indicate the header file is in ++DIR/include/jpeglib.h and the library in DIR/lib/libjpeg.a. A copy of ++libjpeg may be obtained from: ftp://ftp.uu.net/graphics/jpeg/ ++========================================================================== ++" >&2;} ++ fi ++ fi ++fi ++ ++ ++# Check whether --with-libz was given. ++if test "${with_libz+set}" = set; then ++ withval=$with_libz; ++fi ++ ++ ++# Check whether --with-zlib was given. ++if test "${with_zlib+set}" = set; then ++ withval=$with_zlib; ++fi ++ ++ ++if test "x$with_zlib" != "xno" -a "x$with_libz" != "xno"; then ++ if test ! -z "$with_zlib" -a "x$with_zlib" != "xyes"; then ++ saved_CPPFLAGS="$CPPFLAGS" ++ saved_LDFLAGS="$LDFLAGS" ++ CPPFLAGS="$CPPFLAGS -I$with_zlib/include" ++ LDFLAGS="$LDFLAGS -L$with_zlib/lib" ++ if test "x$ld_minus_R" = "xno"; then ++ : ++ elif test "x$GCC" = "xyes"; then ++ LDFLAGS="$LDFLAGS -Xlinker -R$with_zlib/lib" ++ else ++ LDFLAGS="$LDFLAGS -R$with_zlib/lib" ++ fi ++ fi ++ if test "${ac_cv_header_zlib_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for zlib.h" >&5 ++echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_zlib_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking zlib.h usability" >&5 ++echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking zlib.h presence" >&5 ++echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for zlib.h" >&5 ++echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_zlib_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_zlib_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; } ++ ++fi ++if test $ac_cv_header_zlib_h = yes; then ++ HAVE_ZLIB_H="true" ++fi ++ ++ ++ if test "x$HAVE_ZLIB_H" = "xtrue"; then ++ ++{ echo "$as_me:$LINENO: checking for deflate in -lz" >&5 ++echo $ECHO_N "checking for deflate in -lz... $ECHO_C" >&6; } ++if test "${ac_cv_lib_z_deflate+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lz $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char deflate (); ++int ++main () ++{ ++return deflate (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_z_deflate=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_z_deflate=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_z_deflate" >&5 ++echo "${ECHO_T}$ac_cv_lib_z_deflate" >&6; } ++if test $ac_cv_lib_z_deflate = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_LIBZ 1 ++_ACEOF ++ ++ LIBS="-lz $LIBS" ++ ++else ++ HAVE_ZLIB_H="" ++fi ++ ++ fi ++ if test ! -z "$with_zlib" -a "x$with_zlib" != "xyes"; then ++ if test "x$HAVE_ZLIB_H" != "xtrue"; then ++ CPPFLAGS="$saved_CPPFLAGS" ++ LDFLAGS="$saved_LDFLAGS" ++ fi ++ fi ++ if test "$build_x11vnc" = "yes"; then ++ if test "x$HAVE_ZLIB_H" != "xtrue"; then ++ { echo "$as_me:$LINENO: WARNING: ++========================================================================== ++The libz compression library was not found: this may lead to reduced ++performance, especially over slow links. If libz is in a non-standard ++location use --with-zlib=DIR to indicate the header file is in ++DIR/include/zlib.h and the library in DIR/lib/libz.a. A copy of ++libz may be obtained from: http://www.gzip.org/zlib/ ++========================================================================== ++" >&5 ++echo "$as_me: WARNING: ++========================================================================== ++The libz compression library was not found: this may lead to reduced ++performance, especially over slow links. If libz is in a non-standard ++location use --with-zlib=DIR to indicate the header file is in ++DIR/include/zlib.h and the library in DIR/lib/libz.a. A copy of ++libz may be obtained from: http://www.gzip.org/zlib/ ++========================================================================== ++" >&2;} ++ fi ++ fi ++fi ++ ++ ++# Check whether --with-pthread was given. ++if test "${with_pthread+set}" = set; then ++ withval=$with_pthread; ++fi ++ ++ ++if test "x$with_pthread" != "xno"; then ++ if test "${ac_cv_header_pthread_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for pthread.h" >&5 ++echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_pthread_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 ++echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking pthread.h usability" >&5 ++echo $ECHO_N "checking pthread.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking pthread.h presence" >&5 ++echo $ECHO_N "checking pthread.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: pthread.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: pthread.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: pthread.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: pthread.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: pthread.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: pthread.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: pthread.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for pthread.h" >&5 ++echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_pthread_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_pthread_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 ++echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; } ++ ++fi ++if test $ac_cv_header_pthread_h = yes; then ++ HAVE_PTHREAD_H="true" ++fi ++ ++ ++ if test ! -z "$HAVE_PTHREAD_H"; then ++ ++{ echo "$as_me:$LINENO: checking for pthread_mutex_lock in -lpthread" >&5 ++echo $ECHO_N "checking for pthread_mutex_lock in -lpthread... $ECHO_C" >&6; } ++if test "${ac_cv_lib_pthread_pthread_mutex_lock+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lpthread $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char pthread_mutex_lock (); ++int ++main () ++{ ++return pthread_mutex_lock (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_pthread_pthread_mutex_lock=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_pthread_pthread_mutex_lock=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_lock" >&5 ++echo "${ECHO_T}$ac_cv_lib_pthread_pthread_mutex_lock" >&6; } ++if test $ac_cv_lib_pthread_pthread_mutex_lock = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_LIBPTHREAD 1 ++_ACEOF ++ ++ LIBS="-lpthread $LIBS" ++ ++fi ++ ++ { echo "$as_me:$LINENO: checking for pthread_mutex_lock in -lpthread" >&5 ++echo $ECHO_N "checking for pthread_mutex_lock in -lpthread... $ECHO_C" >&6; } ++if test "${ac_cv_lib_pthread_pthread_mutex_lock+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lpthread $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char pthread_mutex_lock (); ++int ++main () ++{ ++return pthread_mutex_lock (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_pthread_pthread_mutex_lock=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_pthread_pthread_mutex_lock=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_lock" >&5 ++echo "${ECHO_T}$ac_cv_lib_pthread_pthread_mutex_lock" >&6; } ++if test $ac_cv_lib_pthread_pthread_mutex_lock = yes; then ++ HAVE_LIBPTHREAD="true" ++fi ++ ++ fi ++fi ++ if test ! -z "$HAVE_LIBPTHREAD"; then ++ HAVE_LIBPTHREAD_TRUE= ++ HAVE_LIBPTHREAD_FALSE='#' ++else ++ HAVE_LIBPTHREAD_TRUE='#' ++ HAVE_LIBPTHREAD_FALSE= ++fi ++ ++ ++# tightvnc-filetransfer implemented using threads: ++if test -z "$HAVE_LIBPTHREAD"; then ++ with_tightvnc_filetransfer="" ++fi ++if test "x$with_tightvnc_filetransfer" = "xyes"; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define WITH_TIGHTVNC_FILETRANSFER 1 ++_ACEOF ++ ++fi ++ if test "$with_tightvnc_filetransfer" = "yes"; then ++ WITH_TIGHTVNC_FILETRANSFER_TRUE= ++ WITH_TIGHTVNC_FILETRANSFER_FALSE='#' ++else ++ WITH_TIGHTVNC_FILETRANSFER_TRUE='#' ++ WITH_TIGHTVNC_FILETRANSFER_FALSE= ++fi ++ ++ ++ if test ! -z "$HAVE_ZLIB_H"; then ++ HAVE_LIBZ_TRUE= ++ HAVE_LIBZ_FALSE='#' ++else ++ HAVE_LIBZ_TRUE='#' ++ HAVE_LIBZ_FALSE= ++fi ++ ++ if test ! -z "$HAVE_JPEGLIB_H"; then ++ HAVE_LIBJPEG_TRUE= ++ HAVE_LIBJPEG_FALSE='#' ++else ++ HAVE_LIBJPEG_TRUE='#' ++ HAVE_LIBJPEG_FALSE= ++fi ++ ++ ++if test -z "$with_sdl"; then ++ if sdl-config --version >/dev/null 2>&1; then ++ with_sdl=yes ++ SDL_CFLAGS=`sdl-config --cflags` ++ SDL_LIBS=`sdl-config --libs` ++ else ++ with_sdl=no ++ fi ++fi ++ if test "x$with_sdl" = "xyes"; then ++ HAVE_LIBSDL_TRUE= ++ HAVE_LIBSDL_FALSE='#' ++else ++ HAVE_LIBSDL_TRUE='#' ++ HAVE_LIBSDL_FALSE= ++fi ++ ++ ++ ++ ++MINGW=`uname -s | grep MINGW 2>/dev/null` ++ if test ! -z "$MINGW" ; then ++ MINGW_TRUE= ++ MINGW_FALSE='#' ++else ++ MINGW_TRUE='#' ++ MINGW_FALSE= ++fi ++ ++if test ! -z "$MINGW"; then ++ WSOCKLIB="-lws2_32" ++fi ++ ++ ++# Checks for header files. ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } ++if test "${ac_cv_header_stdc+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_stdc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_stdc=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "memchr" >/dev/null 2>&1; then ++ : ++else ++ ac_cv_header_stdc=no ++fi ++rm -f conftest* ++ ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "free" >/dev/null 2>&1; then ++ : ++else ++ ac_cv_header_stdc=no ++fi ++rm -f conftest* ++ ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. ++ if test "$cross_compiling" = yes; then ++ : ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#if ((' ' & 0x0FF) == 0x020) ++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) ++#else ++# define ISLOWER(c) \ ++ (('a' <= (c) && (c) <= 'i') \ ++ || ('j' <= (c) && (c) <= 'r') \ ++ || ('s' <= (c) && (c) <= 'z')) ++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) ++#endif ++ ++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) ++int ++main () ++{ ++ int i; ++ for (i = 0; i < 256; i++) ++ if (XOR (islower (i), ISLOWER (i)) ++ || toupper (i) != TOUPPER (i)) ++ return 2; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ : ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_header_stdc=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } ++if test $ac_cv_header_stdc = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define STDC_HEADERS 1 ++_ACEOF ++ ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_header in arpa/inet.h fcntl.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h sys/time.h sys/timeb.h syslog.h unistd.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include <$ac_header> ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ eval "$as_ac_Header=\$ac_header_preproc" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++ ++fi ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ ++# x11vnc only: ++if test "$build_x11vnc" = "yes"; then ++ ++ ++ ++ ++ ++ ++for ac_header in pwd.h sys/wait.h utmpx.h termios.h sys/ioctl.h sys/stropts.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include <$ac_header> ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ eval "$as_ac_Header=\$ac_header_preproc" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++ ++fi ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++fi ++ ++# Checks for typedefs, structures, and compiler characteristics. ++{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 ++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } ++if test "${ac_cv_c_const+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++/* FIXME: Include the comments suggested by Paul. */ ++#ifndef __cplusplus ++ /* Ultrix mips cc rejects this. */ ++ typedef int charset[2]; ++ const charset cs; ++ /* SunOS 4.1.1 cc rejects this. */ ++ char const *const *pcpcc; ++ char **ppc; ++ /* NEC SVR4.0.2 mips cc rejects this. */ ++ struct point {int x, y;}; ++ static struct point const zero = {0,0}; ++ /* AIX XL C 1.02.0.0 rejects this. ++ It does not let you subtract one const X* pointer from another in ++ an arm of an if-expression whose if-part is not a constant ++ expression */ ++ const char *g = "string"; ++ pcpcc = &g + (g ? g-g : 0); ++ /* HPUX 7.0 cc rejects these. */ ++ ++pcpcc; ++ ppc = (char**) pcpcc; ++ pcpcc = (char const *const *) ppc; ++ { /* SCO 3.2v4 cc rejects this. */ ++ char *t; ++ char const *s = 0 ? (char *) 0 : (char const *) 0; ++ ++ *t++ = 0; ++ if (s) return 0; ++ } ++ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ ++ int x[] = {25, 17}; ++ const int *foo = &x[0]; ++ ++foo; ++ } ++ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ ++ typedef const int *iptr; ++ iptr p = 0; ++ ++p; ++ } ++ { /* AIX XL C 1.02.0.0 rejects this saying ++ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ ++ struct s { int j; const int *ap[3]; }; ++ struct s *b; b->j = 5; ++ } ++ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ ++ const int foo = 10; ++ if (!foo) return 0; ++ } ++ return !cs[0] && !zero.x; ++#endif ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_const=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_c_const=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 ++echo "${ECHO_T}$ac_cv_c_const" >&6; } ++if test $ac_cv_c_const = no; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define const ++_ACEOF ++ ++fi ++ ++{ echo "$as_me:$LINENO: checking for inline" >&5 ++echo $ECHO_N "checking for inline... $ECHO_C" >&6; } ++if test "${ac_cv_c_inline+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_c_inline=no ++for ac_kw in inline __inline__ __inline; do ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifndef __cplusplus ++typedef int foo_t; ++static $ac_kw foo_t static_foo () {return 0; } ++$ac_kw foo_t foo () {return 0; } ++#endif ++ ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_inline=$ac_kw ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ test "$ac_cv_c_inline" != no && break ++done ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 ++echo "${ECHO_T}$ac_cv_c_inline" >&6; } ++ ++ ++case $ac_cv_c_inline in ++ inline | yes) ;; ++ *) ++ case $ac_cv_c_inline in ++ no) ac_val=;; ++ *) ac_val=$ac_cv_c_inline;; ++ esac ++ cat >>confdefs.h <<_ACEOF ++#ifndef __cplusplus ++#define inline $ac_val ++#endif ++_ACEOF ++ ;; ++esac ++ ++{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 ++echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } ++if test "${ac_cv_c_bigendian+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # See if sys/param.h defines the BYTE_ORDER macro. ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++ ++int ++main () ++{ ++#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ ++ && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) ++ bogus endian macros ++#endif ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ # It does; now see whether it defined to BIG_ENDIAN or not. ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++ ++int ++main () ++{ ++#if BYTE_ORDER != BIG_ENDIAN ++ not big endian ++#endif ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_bigendian=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_c_bigendian=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ # It does not; compile a test program. ++if test "$cross_compiling" = yes; then ++ # try to guess the endianness by grepping values into an object file ++ ac_cv_c_bigendian=unknown ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; ++short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; ++void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } ++short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; ++short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; ++void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } ++int ++main () ++{ ++ _ascii (); _ebcdic (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then ++ ac_cv_c_bigendian=yes ++fi ++if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then ++ if test "$ac_cv_c_bigendian" = unknown; then ++ ac_cv_c_bigendian=no ++ else ++ # finding both strings is unlikely to happen, but who knows? ++ ac_cv_c_bigendian=unknown ++ fi ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++int ++main () ++{ ++ ++ /* Are we little or big endian? From Harbison&Steele. */ ++ union ++ { ++ long int l; ++ char c[sizeof (long int)]; ++ } u; ++ u.l = 1; ++ return u.c[sizeof (long int) - 1] == 1; ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_c_bigendian=no ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_c_bigendian=yes ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 ++echo "${ECHO_T}$ac_cv_c_bigendian" >&6; } ++case $ac_cv_c_bigendian in ++ yes) ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define WORDS_BIGENDIAN 1 ++_ACEOF ++ ;; ++ no) ++ ;; ++ *) ++ { { echo "$as_me:$LINENO: error: unknown endianness ++presetting ac_cv_c_bigendian=no (or yes) will help" >&5 ++echo "$as_me: error: unknown endianness ++presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} ++ { (exit 1); exit 1; }; } ;; ++esac ++ ++{ echo "$as_me:$LINENO: checking for size_t" >&5 ++echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_size_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++typedef size_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_size_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_size_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 ++echo "${ECHO_T}$ac_cv_type_size_t" >&6; } ++if test $ac_cv_type_size_t = yes; then ++ : ++else ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define size_t unsigned int ++_ACEOF ++ ++fi ++ ++{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 ++echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; } ++if test "${ac_cv_header_time+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++ ++int ++main () ++{ ++if ((struct tm *) 0) ++return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_time=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_time=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 ++echo "${ECHO_T}$ac_cv_header_time" >&6; } ++if test $ac_cv_header_time = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define TIME_WITH_SYS_TIME 1 ++_ACEOF ++ ++fi ++ ++{ echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 ++echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6; } ++if test "${ac_cv_header_sys_wait_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#ifndef WEXITSTATUS ++# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) ++#endif ++#ifndef WIFEXITED ++# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) ++#endif ++ ++int ++main () ++{ ++ int s; ++ wait (&s); ++ s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_sys_wait_h=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_sys_wait_h=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 ++echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6; } ++if test $ac_cv_header_sys_wait_h = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_SYS_WAIT_H 1 ++_ACEOF ++ ++fi ++ ++{ echo "$as_me:$LINENO: checking for socklen_t" >&5 ++echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_socklen_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ #include ++int ++main () ++{ ++socklen_t len = 42; return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_socklen_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_socklen_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5 ++echo "${ECHO_T}$ac_cv_type_socklen_t" >&6; } ++ if test $ac_cv_type_socklen_t != yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define socklen_t int ++_ACEOF ++ ++ fi ++ ++if test ! -d ./rfb; then ++ echo "creating subdir ./rfb for rfbint.h" ++ mkdir ./rfb ++fi ++# ------ AC CREATE STDINT H ------------------------------------- ++{ echo "$as_me:$LINENO: checking for stdint-types...." >&5 ++echo $ECHO_N "checking for stdint-types....... $ECHO_C" >&6; } ++ac_stdint_h=`echo rfb/rfbint.h` ++if test "$ac_stdint_h" = "stdint.h" ; then ++ { echo "$as_me:$LINENO: result: \"(are you sure you want them in ./stdint.h?)\"" >&5 ++echo "${ECHO_T}\"(are you sure you want them in ./stdint.h?)\"" >&6; } ++elif test "$ac_stdint_h" = "inttypes.h" ; then ++ { echo "$as_me:$LINENO: result: \"(are you sure you want them in ./inttypes.h?)\"" >&5 ++echo "${ECHO_T}\"(are you sure you want them in ./inttypes.h?)\"" >&6; } ++else ++ { echo "$as_me:$LINENO: result: \"(putting them into $ac_stdint_h)\"" >&5 ++echo "${ECHO_T}\"(putting them into $ac_stdint_h)\"" >&6; } ++fi ++ ++inttype_headers=`echo inttypes.h sys/inttypes.h sys/inttypes.h \ ++| sed -e 's/,/ /g'` ++ ++ ac_cv_header_stdint_x="no-file" ++ ac_cv_header_stdint_o="no-file" ++ ac_cv_header_stdint_u="no-file" ++ for i in stdint.h $inttype_headers ; do ++ unset ac_cv_type_uintptr_t ++ unset ac_cv_type_uint64_t ++ { echo "$as_me:$LINENO: checking for uintptr_t" >&5 ++echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uintptr_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$i> ++ ++typedef uintptr_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uintptr_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_uintptr_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6; } ++if test $ac_cv_type_uintptr_t = yes; then ++ ac_cv_header_stdint_x=$i ++else ++ continue ++fi ++ ++ { echo "$as_me:$LINENO: checking for uint64_t" >&5 ++echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uint64_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include<$i> ++ ++typedef uint64_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uint64_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_uint64_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uint64_t" >&6; } ++if test $ac_cv_type_uint64_t = yes; then ++ and64="(uint64_t too)" ++else ++ and64="" ++fi ++ ++ { echo "$as_me:$LINENO: result: ... seen our uintptr_t in $i $and64" >&5 ++echo "${ECHO_T}... seen our uintptr_t in $i $and64" >&6; } ++ break; ++ done ++ if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ for i in stdint.h $inttype_headers ; do ++ unset ac_cv_type_uint32_t ++ unset ac_cv_type_uint64_t ++ { echo "$as_me:$LINENO: checking for uint32_t" >&5 ++echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uint32_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$i> ++ ++typedef uint32_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uint32_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_uint32_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uint32_t" >&6; } ++if test $ac_cv_type_uint32_t = yes; then ++ ac_cv_header_stdint_o=$i ++else ++ continue ++fi ++ ++ { echo "$as_me:$LINENO: checking for uint64_t" >&5 ++echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uint64_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include<$i> ++ ++typedef uint64_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uint64_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_uint64_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uint64_t" >&6; } ++if test $ac_cv_type_uint64_t = yes; then ++ and64="(uint64_t too)" ++else ++ and64="" ++fi ++ ++ { echo "$as_me:$LINENO: result: ... seen our uint32_t in $i $and64" >&5 ++echo "${ECHO_T}... seen our uint32_t in $i $and64" >&6; } ++ break; ++ done ++ if test "$ac_cv_header_stdint_o" = "no-file" ; then ++ for i in sys/types.h $inttype_headers ; do ++ unset ac_cv_type_u_int32_t ++ unset ac_cv_type_u_int64_t ++ { echo "$as_me:$LINENO: checking for u_int32_t" >&5 ++echo $ECHO_N "checking for u_int32_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_u_int32_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$i> ++ ++typedef u_int32_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_u_int32_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_u_int32_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int32_t" >&5 ++echo "${ECHO_T}$ac_cv_type_u_int32_t" >&6; } ++if test $ac_cv_type_u_int32_t = yes; then ++ ac_cv_header_stdint_u=$i ++else ++ continue ++fi ++ ++ { echo "$as_me:$LINENO: checking for uint64_t" >&5 ++echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uint64_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include<$i> ++ ++typedef uint64_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uint64_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_uint64_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uint64_t" >&6; } ++if test $ac_cv_type_uint64_t = yes; then ++ and64="(u_int64_t too)" ++else ++ and64="" ++fi ++ ++ { echo "$as_me:$LINENO: result: ... seen our u_int32_t in $i $and64" >&5 ++echo "${ECHO_T}... seen our u_int32_t in $i $and64" >&6; } ++ break; ++ done ++ fi ++ fi ++ ++# ----------------- DONE inttypes.h checks MAYBE C basic types -------- ++ ++if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ { echo "$as_me:$LINENO: checking size of char" >&5 ++echo $ECHO_N "checking size of char... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_char+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include "confdefs.h" ++#include ++ ++ ++int ++main () ++{ ++switch (0) case 0: case (sizeof (char) == $ac_size):; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_char=$ac_size ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_char != x ; then break; fi ++done ++ ++fi ++ ++if test x$ac_cv_sizeof_char = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for char" >&5 ++echo "$as_me: error: cannot determine a size for char" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_char" >&6; } ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define SIZEOF_CHAR $ac_cv_sizeof_char ++_ACEOF ++ ++ ++ { echo "$as_me:$LINENO: checking size of short" >&5 ++echo $ECHO_N "checking size of short... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_short+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include "confdefs.h" ++#include ++ ++ ++int ++main () ++{ ++switch (0) case 0: case (sizeof (short) == $ac_size):; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_short=$ac_size ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_short != x ; then break; fi ++done ++ ++fi ++ ++if test x$ac_cv_sizeof_short = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for short" >&5 ++echo "$as_me: error: cannot determine a size for short" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_short" >&6; } ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define SIZEOF_SHORT $ac_cv_sizeof_short ++_ACEOF ++ ++ ++ { echo "$as_me:$LINENO: checking size of int" >&5 ++echo $ECHO_N "checking size of int... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_int+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include "confdefs.h" ++#include ++ ++ ++int ++main () ++{ ++switch (0) case 0: case (sizeof (int) == $ac_size):; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_int=$ac_size ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_int != x ; then break; fi ++done ++ ++fi ++ ++if test x$ac_cv_sizeof_int = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for int" >&5 ++echo "$as_me: error: cannot determine a size for int" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_int" >&6; } ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define SIZEOF_INT $ac_cv_sizeof_int ++_ACEOF ++ ++ ++ { echo "$as_me:$LINENO: checking size of long" >&5 ++echo $ECHO_N "checking size of long... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_long+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include "confdefs.h" ++#include ++ ++ ++int ++main () ++{ ++switch (0) case 0: case (sizeof (long) == $ac_size):; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_long=$ac_size ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_long != x ; then break; fi ++done ++ ++fi ++ ++if test x$ac_cv_sizeof_long = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for long" >&5 ++echo "$as_me: error: cannot determine a size for long" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_long" >&6; } ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define SIZEOF_LONG $ac_cv_sizeof_long ++_ACEOF ++ ++ ++ { echo "$as_me:$LINENO: checking size of void*" >&5 ++echo $ECHO_N "checking size of void*... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_voidp+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include "confdefs.h" ++#include ++ ++ ++int ++main () ++{ ++switch (0) case 0: case (sizeof (void*) == $ac_size):; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_voidp=$ac_size ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_voidp != x ; then break; fi ++done ++ ++fi ++ ++if test x$ac_cv_sizeof_voidp = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for void*" >&5 ++echo "$as_me: error: cannot determine a size for void*" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_voidp" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_voidp" >&6; } ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define SIZEOF_VOIDP $ac_cv_sizeof_voidp ++_ACEOF ++ ++ ++ ac_cv_header_stdint_test="yes" ++else ++ ac_cv_header_stdint_test="no" ++fi ++ ++# ----------------- DONE inttypes.h checks START header ------------- ++_ac_stdint_h=`echo "_$ac_stdint_h" | $as_tr_cpp` ++{ echo "$as_me:$LINENO: result: creating $ac_stdint_h : $_ac_stdint_h" >&5 ++echo "${ECHO_T}creating $ac_stdint_h : $_ac_stdint_h" >&6; } ++echo "#ifndef" $_ac_stdint_h >$ac_stdint_h ++echo "#define" $_ac_stdint_h "1" >>$ac_stdint_h ++echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint_h ++echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint_h ++if test "$GCC" = "yes" ; then ++ echo "/* generated using a gnu compiler version" `$CC --version` "*/" \ ++ >>$ac_stdint_h ++else ++ echo "/* generated using $CC */" >>$ac_stdint_h ++fi ++echo "" >>$ac_stdint_h ++ ++if test "$ac_cv_header_stdint_x" != "no-file" ; then ++ ac_cv_header_stdint="$ac_cv_header_stdint_x" ++elif test "$ac_cv_header_stdint_o" != "no-file" ; then ++ ac_cv_header_stdint="$ac_cv_header_stdint_o" ++elif test "$ac_cv_header_stdint_u" != "no-file" ; then ++ ac_cv_header_stdint="$ac_cv_header_stdint_u" ++else ++ ac_cv_header_stdint="stddef.h" ++fi ++ ++# ----------------- See if int_least and int_fast types are present ++unset ac_cv_type_int_least32_t ++unset ac_cv_type_int_fast32_t ++{ echo "$as_me:$LINENO: checking for int_least32_t" >&5 ++echo $ECHO_N "checking for int_least32_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_int_least32_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$ac_cv_header_stdint> ++ ++typedef int_least32_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_int_least32_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_int_least32_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_int_least32_t" >&5 ++echo "${ECHO_T}$ac_cv_type_int_least32_t" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for int_fast32_t" >&5 ++echo $ECHO_N "checking for int_fast32_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_int_fast32_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include<$ac_cv_header_stdint> ++ ++typedef int_fast32_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_int_fast32_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_int_fast32_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_int_fast32_t" >&5 ++echo "${ECHO_T}$ac_cv_type_int_fast32_t" >&6; } ++ ++ ++if test "$ac_cv_header_stdint" != "stddef.h" ; then ++if test "$ac_cv_header_stdint" != "stdint.h" ; then ++{ echo "$as_me:$LINENO: result: ..adding include stddef.h" >&5 ++echo "${ECHO_T}..adding include stddef.h" >&6; } ++ echo "#include " >>$ac_stdint_h ++fi ; fi ++{ echo "$as_me:$LINENO: result: ..adding include $ac_cv_header_stdint" >&5 ++echo "${ECHO_T}..adding include $ac_cv_header_stdint" >&6; } ++ echo "#include <$ac_cv_header_stdint>" >>$ac_stdint_h ++echo "" >>$ac_stdint_h ++ ++# ----------------- DONE header START basic int types ------------- ++if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ { echo "$as_me:$LINENO: result: ... need to look at C basic types" >&5 ++echo "${ECHO_T}... need to look at C basic types" >&6; } ++else ++ { echo "$as_me:$LINENO: result: ... seen good stdint.h inttypes" >&5 ++echo "${ECHO_T}... seen good stdint.h inttypes" >&6; } ++fi ++ ++if test "$ac_cv_header_stdint_u" != "no-file" ; then ++ { echo "$as_me:$LINENO: result: ... seen bsd/sysv typedefs" >&5 ++echo "${ECHO_T}... seen bsd/sysv typedefs" >&6; } ++ cat >>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t normal 16-bit system" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t 32-bit system derived from a 16-bit" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t normal 32-bit system" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t 32-bit system prepared for 64-bit" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t normal 64-bit system" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t 64-bit system derived from a 32-bit" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "$as_me: error: $ac_cv_sizeof_X what is that a system? contact the author, quick! http://ac-archive.sf.net" >&2;} ++ { (exit 1); exit 1; }; } ++ exit 1 ++;; ++ esac ++fi ++ ++# ------------- DONE basic int types START int64_t types ------------ ++if test "$ac_cv_type_uint64_t" = "yes" ++then { echo "$as_me:$LINENO: result: ... seen good uint64_t" >&5 ++echo "${ECHO_T}... seen good uint64_t" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding typedef u_int64_t uint64_t" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding generic uint64_t runtime checks" >&6; } ++ cat >>$ac_stdint_h < 199901L ++ ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef long long int64_t; ++typedef unsigned long long uint64_t; ++#endif ++ ++#elif !defined __STRICT_ANSI__ ++#if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__ ++ ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef __int64 int64_t; ++typedef unsigned __int64 uint64_t; ++#endif ++ ++#elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__ ++ ++#if !defined _NO_LONGLONG ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef long long int64_t; ++typedef unsigned long long uint64_t; ++#endif ++#endif ++ ++#elif defined __alpha || (defined __mips && defined _ABIN32) ++ ++#if !defined _NO_LONGLONG ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef long int64_t; ++typedef unsigned long uint64_t; ++#endif ++#endif ++ /* compiler/cpu type ... or just ISO C99 */ ++#endif ++#endif ++EOF ++ ++# plus a default 64-bit for systems that are likely to be 64-bit ready ++ case "$ac_cv_sizeof_x:$ac_cv_sizeof_voidp:$ac_cv_sizeof_long" in ++ 1:2:8:8) { echo "$as_me:$LINENO: result: ..adding uint64_t default" >&5 ++echo "${ECHO_T}..adding uint64_t default" >&6; } ++cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding uint64_t default" >&6; } ++cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding uint64_t default" >&6; } ++cat >>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding typedef $a intptr_t" >&6; } ++fi ++ ++# ------------- DONE intptr types START int_least types ------------ ++if test "$ac_cv_type_int_least32_t" = "no"; then ++{ echo "$as_me:$LINENO: result: ..adding generic int_least-types" >&5 ++echo "${ECHO_T}..adding generic int_least-types" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding generic int_fast-types" >&6; } ++ cat >>$ac_stdint_h <>$ac_stdint_h <&5 ++echo "${ECHO_T}... DONE $ac_stdint_h" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo $ECHO_N "checking for in_addr_t... $ECHO_C" >&6; } ++if test "${inaddrt+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++int ++main () ++{ ++in_addr_t foo; return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ inaddrt=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ inaddrt=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext, ++ ++fi ++{ echo "$as_me:$LINENO: result: $inaddrt" >&5 ++echo "${ECHO_T}$inaddrt" >&6; } ++ ++ ++if test $inaddrt = no ; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define NEED_INADDR_T 1 ++_ACEOF ++ ++fi ++ ++# Checks for library functions. ++{ echo "$as_me:$LINENO: checking for working memcmp" >&5 ++echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6; } ++if test "${ac_cv_func_memcmp_working+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_memcmp_working=no ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++int ++main () ++{ ++ ++ /* Some versions of memcmp are not 8-bit clean. */ ++ char c0 = '\100', c1 = '\200', c2 = '\201'; ++ if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) ++ return 1; ++ ++ /* The Next x86 OpenStep bug shows up only when comparing 16 bytes ++ or more and with at least one buffer not starting on a 4-byte boundary. ++ William Lewis provided this test program. */ ++ { ++ char foo[21]; ++ char bar[21]; ++ int i; ++ for (i = 0; i < 4; i++) ++ { ++ char *a = foo + i; ++ char *b = bar + i; ++ strcpy (a, "--------01111111"); ++ strcpy (b, "--------10000000"); ++ if (memcmp (a, b, 16) >= 0) ++ return 1; ++ } ++ return 0; ++ } ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_func_memcmp_working=yes ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_func_memcmp_working=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 ++echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6; } ++test $ac_cv_func_memcmp_working = no && case " $LIB@&t@OBJS " in ++ *" memcmp.$ac_objext "* ) ;; ++ *) LIB@&t@OBJS="$LIB@&t@OBJS memcmp.$ac_objext" ++ ;; ++esac ++ ++ ++{ echo "$as_me:$LINENO: checking whether lstat dereferences a symlink specified with a trailing slash" >&5 ++echo $ECHO_N "checking whether lstat dereferences a symlink specified with a trailing slash... $ECHO_C" >&6; } ++if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ rm -f conftest.sym conftest.file ++echo >conftest.file ++if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_lstat_dereferences_slashed_symlink=no ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++int ++main () ++{ ++struct stat sbuf; ++ /* Linux will dereference the symlink and fail. ++ That is better in the sense that it means we will not ++ have to compile and use the lstat wrapper. */ ++ return lstat ("conftest.sym/", &sbuf) == 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_func_lstat_dereferences_slashed_symlink=yes ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_func_lstat_dereferences_slashed_symlink=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++else ++ # If the `ln -s' command failed, then we probably don't even ++ # have an lstat function. ++ ac_cv_func_lstat_dereferences_slashed_symlink=no ++fi ++rm -f conftest.sym conftest.file ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 ++echo "${ECHO_T}$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } ++ ++test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 ++_ACEOF ++ ++ ++if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then ++ case " $LIB@&t@OBJS " in ++ *" lstat.$ac_objext "* ) ;; ++ *) LIB@&t@OBJS="$LIB@&t@OBJS lstat.$ac_objext" ++ ;; ++esac ++ ++fi ++ ++{ echo "$as_me:$LINENO: checking whether stat accepts an empty string" >&5 ++echo $ECHO_N "checking whether stat accepts an empty string... $ECHO_C" >&6; } ++if test "${ac_cv_func_stat_empty_string_bug+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_stat_empty_string_bug=yes ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++int ++main () ++{ ++struct stat sbuf; ++ return stat ("", &sbuf) == 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_func_stat_empty_string_bug=no ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_func_stat_empty_string_bug=yes ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_stat_empty_string_bug" >&5 ++echo "${ECHO_T}$ac_cv_func_stat_empty_string_bug" >&6; } ++if test $ac_cv_func_stat_empty_string_bug = yes; then ++ case " $LIB@&t@OBJS " in ++ *" stat.$ac_objext "* ) ;; ++ *) LIB@&t@OBJS="$LIB@&t@OBJS stat.$ac_objext" ++ ;; ++esac ++ ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_STAT_EMPTY_STRING_BUG 1 ++_ACEOF ++ ++fi ++ ++ ++for ac_func in strftime ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++else ++ # strftime is in -lintl on SCO UNIX. ++{ echo "$as_me:$LINENO: checking for strftime in -lintl" >&5 ++echo $ECHO_N "checking for strftime in -lintl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_intl_strftime+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lintl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char strftime (); ++int ++main () ++{ ++return strftime (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_intl_strftime=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_intl_strftime=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_strftime" >&5 ++echo "${ECHO_T}$ac_cv_lib_intl_strftime" >&6; } ++if test $ac_cv_lib_intl_strftime = yes; then ++ cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_STRFTIME 1 ++_ACEOF ++ ++LIBS="-lintl $LIBS" ++fi ++ ++fi ++done ++ ++ ++for ac_func in vprintf ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++{ echo "$as_me:$LINENO: checking for _doprnt" >&5 ++echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6; } ++if test "${ac_cv_func__doprnt+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define _doprnt to an innocuous variant, in case declares _doprnt. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define _doprnt innocuous__doprnt ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char _doprnt (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef _doprnt ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char _doprnt (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub__doprnt || defined __stub____doprnt ++choke me ++#endif ++ ++int ++main () ++{ ++return _doprnt (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func__doprnt=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func__doprnt=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 ++echo "${ECHO_T}$ac_cv_func__doprnt" >&6; } ++if test $ac_cv_func__doprnt = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_DOPRNT 1 ++_ACEOF ++ ++fi ++ ++fi ++done ++ ++ ++{ echo "$as_me:$LINENO: checking for pid_t" >&5 ++echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_pid_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++typedef pid_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_pid_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_pid_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 ++echo "${ECHO_T}$ac_cv_type_pid_t" >&6; } ++if test $ac_cv_type_pid_t = yes; then ++ : ++else ++ ++cat >>confdefs.h <<_ACEOF ++@%:@define pid_t int ++_ACEOF ++ ++fi ++ ++ ++for ac_header in vfork.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include <$ac_header> ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ eval "$as_ac_Header=\$ac_header_preproc" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++ ++fi ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ ++ ++for ac_func in fork vfork ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++done ++ ++if test "x$ac_cv_func_fork" = xyes; then ++ { echo "$as_me:$LINENO: checking for working fork" >&5 ++echo $ECHO_N "checking for working fork... $ECHO_C" >&6; } ++if test "${ac_cv_func_fork_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_fork_works=cross ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++int ++main () ++{ ++ ++ /* By Ruediger Kuhlmann. */ ++ return fork () < 0; ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_func_fork_works=yes ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_func_fork_works=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_fork_works" >&5 ++echo "${ECHO_T}$ac_cv_func_fork_works" >&6; } ++ ++else ++ ac_cv_func_fork_works=$ac_cv_func_fork ++fi ++if test "x$ac_cv_func_fork_works" = xcross; then ++ case $host in ++ *-*-amigaos* | *-*-msdosdjgpp*) ++ # Override, as these systems have only a dummy fork() stub ++ ac_cv_func_fork_works=no ++ ;; ++ *) ++ ac_cv_func_fork_works=yes ++ ;; ++ esac ++ { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 ++echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} ++fi ++ac_cv_func_vfork_works=$ac_cv_func_vfork ++if test "x$ac_cv_func_vfork" = xyes; then ++ { echo "$as_me:$LINENO: checking for working vfork" >&5 ++echo $ECHO_N "checking for working vfork... $ECHO_C" >&6; } ++if test "${ac_cv_func_vfork_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_vfork_works=cross ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Thanks to Paul Eggert for this test. */ ++$ac_includes_default ++#include ++#ifdef HAVE_VFORK_H ++# include ++#endif ++/* On some sparc systems, changes by the child to local and incoming ++ argument registers are propagated back to the parent. The compiler ++ is told about this with #include , but some compilers ++ (e.g. gcc -O) don't grok . Test for this by using a ++ static variable whose address is put into a register that is ++ clobbered by the vfork. */ ++static void ++#ifdef __cplusplus ++sparc_address_test (int arg) ++# else ++sparc_address_test (arg) int arg; ++#endif ++{ ++ static pid_t child; ++ if (!child) { ++ child = vfork (); ++ if (child < 0) { ++ perror ("vfork"); ++ _exit(2); ++ } ++ if (!child) { ++ arg = getpid(); ++ write(-1, "", 0); ++ _exit (arg); ++ } ++ } ++} ++ ++int ++main () ++{ ++ pid_t parent = getpid (); ++ pid_t child; ++ ++ sparc_address_test (0); ++ ++ child = vfork (); ++ ++ if (child == 0) { ++ /* Here is another test for sparc vfork register problems. This ++ test uses lots of local variables, at least as many local ++ variables as main has allocated so far including compiler ++ temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris ++ 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should ++ reuse the register of parent for one of the local variables, ++ since it will think that parent can't possibly be used any more ++ in this routine. Assigning to the local variable will thus ++ munge parent in the parent process. */ ++ pid_t ++ p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), ++ p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); ++ /* Convince the compiler that p..p7 are live; otherwise, it might ++ use the same hardware register for all 8 local variables. */ ++ if (p != p1 || p != p2 || p != p3 || p != p4 ++ || p != p5 || p != p6 || p != p7) ++ _exit(1); ++ ++ /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent ++ from child file descriptors. If the child closes a descriptor ++ before it execs or exits, this munges the parent's descriptor ++ as well. Test for this by closing stdout in the child. */ ++ _exit(close(fileno(stdout)) != 0); ++ } else { ++ int status; ++ struct stat st; ++ ++ while (wait(&status) != child) ++ ; ++ return ( ++ /* Was there some problem with vforking? */ ++ child < 0 ++ ++ /* Did the child fail? (This shouldn't happen.) */ ++ || status ++ ++ /* Did the vfork/compiler bug occur? */ ++ || parent != getpid() ++ ++ /* Did the file descriptor bug occur? */ ++ || fstat(fileno(stdout), &st) != 0 ++ ); ++ } ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_func_vfork_works=yes ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_func_vfork_works=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_vfork_works" >&5 ++echo "${ECHO_T}$ac_cv_func_vfork_works" >&6; } ++ ++fi; ++if test "x$ac_cv_func_fork_works" = xcross; then ++ ac_cv_func_vfork_works=$ac_cv_func_vfork ++ { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 ++echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} ++fi ++ ++if test "x$ac_cv_func_vfork_works" = xyes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_WORKING_VFORK 1 ++_ACEOF ++ ++else ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define vfork fork ++_ACEOF ++ ++fi ++if test "x$ac_cv_func_fork_works" = xyes; then ++ ++cat >>confdefs.h <<\_ACEOF ++@%:@define HAVE_WORKING_FORK 1 ++_ACEOF ++ ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 ++echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lnsl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char gethostbyname (); ++int ++main () ++{ ++return gethostbyname (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_nsl_gethostbyname=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_nsl_gethostbyname=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; } ++if test $ac_cv_lib_nsl_gethostbyname = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_LIBNSL 1 ++_ACEOF ++ ++ LIBS="-lnsl $LIBS" ++ ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 ++echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6; } ++if test "${ac_cv_lib_socket_socket+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsocket $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char socket (); ++int ++main () ++{ ++return socket (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_socket_socket=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_socket_socket=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 ++echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6; } ++if test $ac_cv_lib_socket_socket = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_LIBSOCKET 1 ++_ACEOF ++ ++ LIBS="-lsocket $LIBS" ++ ++fi ++ ++ ++uname_s=`(uname -s) 2>/dev/null` ++if test "x$uname_s" = "xHP-UX"; then ++ # need -lsec for getspnam() ++ LDFLAGS="$LDFLAGS -lsec" ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_func in ftime gethostbyname gethostname gettimeofday inet_ntoa memmove memset mmap mkfifo select socket strchr strcspn strdup strerror strstr ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++done ++ ++# x11vnc only: ++if test "$build_x11vnc" = "yes"; then ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_func in setsid setpgrp getpwuid getpwnam getspnam getuid geteuid setuid setgid seteuid setegid initgroups waitpid setutxent grantpt ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++done ++ ++fi ++ ++# check, if shmget is in cygipc.a ++ ++{ echo "$as_me:$LINENO: checking for shmget in -lcygipc" >&5 ++echo $ECHO_N "checking for shmget in -lcygipc... $ECHO_C" >&6; } ++if test "${ac_cv_lib_cygipc_shmget+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lcygipc $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shmget (); ++int ++main () ++{ ++return shmget (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_cygipc_shmget=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_cygipc_shmget=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_cygipc_shmget" >&5 ++echo "${ECHO_T}$ac_cv_lib_cygipc_shmget" >&6; } ++if test $ac_cv_lib_cygipc_shmget = yes; then ++ cat >>confdefs.h <<_ACEOF ++@%:@define HAVE_LIBCYGIPC 1 ++_ACEOF ++ ++ LIBS="-lcygipc $LIBS" ++ ++fi ++ ++ if test "$HAVE_CYGIPC" = "true"; then ++ CYGIPC_TRUE= ++ CYGIPC_FALSE='#' ++else ++ CYGIPC_TRUE='#' ++ CYGIPC_FALSE= ++fi ++ ++ ++# Check if /dev/vcsa1 exists, if so, define LINUX ++ if test -c /dev/vcsa1; then ++ LINUX_TRUE= ++ LINUX_FALSE='#' ++else ++ LINUX_TRUE='#' ++ LINUX_FALSE= ++fi ++ ++ ++# Check for OS X specific header ++if test "${ac_cv_header_ApplicationServices_ApplicationServices_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for ApplicationServices/ApplicationServices.h" >&5 ++echo $ECHO_N "checking for ApplicationServices/ApplicationServices.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_ApplicationServices_ApplicationServices_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_ApplicationServices_ApplicationServices_h" >&5 ++echo "${ECHO_T}$ac_cv_header_ApplicationServices_ApplicationServices_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking ApplicationServices/ApplicationServices.h usability" >&5 ++echo $ECHO_N "checking ApplicationServices/ApplicationServices.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++@%:@include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking ApplicationServices/ApplicationServices.h presence" >&5 ++echo $ECHO_N "checking ApplicationServices/ApplicationServices.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++@%:@include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no ++fi ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++@%:@@%:@ Report this to http://sourceforge.net/projects/libvncserver @%:@@%:@ ++@%:@@%:@ ----------------------------------------------------------- @%:@@%:@ ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for ApplicationServices/ApplicationServices.h" >&5 ++echo $ECHO_N "checking for ApplicationServices/ApplicationServices.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_ApplicationServices_ApplicationServices_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_ApplicationServices_ApplicationServices_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_ApplicationServices_ApplicationServices_h" >&5 ++echo "${ECHO_T}$ac_cv_header_ApplicationServices_ApplicationServices_h" >&6; } ++ ++fi ++if test $ac_cv_header_ApplicationServices_ApplicationServices_h = yes; then ++ HAVE_OSX="true" ++fi ++ ++ ++ if test "$HAVE_OSX" = "true"; then ++ OSX_TRUE= ++ OSX_FALSE='#' ++else ++ OSX_TRUE='#' ++ OSX_FALSE= ++fi ++ ++ ++# On Solaris 2.7, write() returns ENOENT when it really means EAGAIN ++ ++ ++case `(uname -sr) 2>/dev/null` in ++ "SunOS 5.7") ++ cat >>confdefs.h <<\_ACEOF ++@%:@define ENOENT_WORKAROUND 1 ++_ACEOF ++ ++ ;; ++esac ++ ++# Check for rpm SOURCES path ++printf "checking for rpm sources path... " ++RPMSOURCEDIR="NOT-FOUND" ++for directory in packages OpenLinux redhat RedHat rpm RPM "" ; do ++ if test -d /usr/src/${directory}/SOURCES; then ++ RPMSOURCEDIR="/usr/src/${directory}/SOURCES/" ++ fi ++done ++echo "$RPMSOURCEDIR" ++ if test "$RPMSOURCEDIR" != "NOT-FOUND"; then ++ HAVE_RPM_TRUE= ++ HAVE_RPM_FALSE='#' ++else ++ HAVE_RPM_TRUE='#' ++ HAVE_RPM_FALSE= ++fi ++ ++ ++ ++ac_config_files="$ac_config_files Makefile libvncserver/Makefile contrib/Makefile examples/Makefile vncterm/Makefile classes/Makefile classes/ssl/Makefile libvncclient/Makefile client_examples/Makefile test/Makefile libvncserver-config LibVNCServer.spec" ++ ++# x11vnc only: ++# if test "$build_x11vnc" = "yes"; then ++# AC_CONFIG_FILES([x11vnc/Makefile x11vnc/misc/Makefile]) ++# fi ++ ++ac_config_commands="$ac_config_commands chmod-libvncserver-config" ++ ++cat >confcache <<\_ACEOF ++# This file is a shell script that caches the results of configure ++# tests run on this system so they can be shared between configure ++# scripts and configure runs, see configure's option --config-cache. ++# It is not useful on other systems. If it contains results you don't ++# want to keep, you may remove or edit it. ++# ++# config.status only pays attention to the cache file if you give it ++# the --recheck option to rerun configure. ++# ++# `ac_cv_env_foo' variables (set or unset) will be overridden when ++# loading this file, other *unset* `ac_cv_foo' will be assigned the ++# following values. ++ ++_ACEOF ++ ++# The following way of writing the cache mishandles newlines in values, ++# but we know of no workaround that is simple, portable, and efficient. ++# So, we kill variables containing newlines. ++# Ultrix sh set writes to stderr and can't be redirected directly, ++# and sets the high bit in the cache file unless we assign to the vars. ++( ++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ ++ (set) 2>&1 | ++ case $as_nl`(ac_space=' '; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) ++ # `set' does not quote correctly, so add quotes (double-quote ++ # substitution turns \\\\ into \\, and sed turns \\ into \). ++ sed -n \ ++ "s/'/'\\\\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ++ ;; #( ++ *) ++ # `set' quotes correctly as required by POSIX, so do not add quotes. ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ++ ;; ++ esac | ++ sort ++) | ++ sed ' ++ /^ac_cv_env_/b end ++ t clear ++ :clear ++ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ ++ t end ++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ ++ :end' >>confcache ++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else ++ if test -w "$cache_file"; then ++ test "x$cache_file" != "x/dev/null" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} ++ cat confcache >$cache_file ++ else ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} ++ fi ++fi ++rm -f confcache ++ ++test "x$prefix" = xNONE && prefix=$ac_default_prefix ++# Let make expand exec_prefix. ++test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' ++ ++DEFS=-DHAVE_CONFIG_H ++ ++ac_libobjs= ++ac_ltlibobjs= ++for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue ++ # 1. Remove the extension, and $U if already installed. ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`echo "$ac_i" | sed "$ac_script"` ++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR ++ # will be set to the directory where LIBOBJS objects are built. ++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' ++done ++LIB@&t@OBJS=$ac_libobjs ++ ++LTLIBOBJS=$ac_ltlibobjs ++ ++ ++if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"AMDEP\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${WITH_FFMPEG_TRUE}" && test -z "${WITH_FFMPEG_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"WITH_FFMPEG\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"WITH_FFMPEG\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_MP3LAME_TRUE}" && test -z "${HAVE_MP3LAME_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_MP3LAME\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_MP3LAME\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_X_TRUE}" && test -z "${HAVE_X_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_X\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_X\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_SYSTEM_LIBVNCSERVER_TRUE}" && test -z "${HAVE_SYSTEM_LIBVNCSERVER_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_SYSTEM_LIBVNCSERVER\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_SYSTEM_LIBVNCSERVER\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_LIBPTHREAD_TRUE}" && test -z "${HAVE_LIBPTHREAD_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBPTHREAD\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_LIBPTHREAD\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${WITH_TIGHTVNC_FILETRANSFER_TRUE}" && test -z "${WITH_TIGHTVNC_FILETRANSFER_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"WITH_TIGHTVNC_FILETRANSFER\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"WITH_TIGHTVNC_FILETRANSFER\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_LIBZ_TRUE}" && test -z "${HAVE_LIBZ_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBZ\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_LIBZ\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_LIBJPEG_TRUE}" && test -z "${HAVE_LIBJPEG_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBJPEG\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_LIBJPEG\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_LIBSDL_TRUE}" && test -z "${HAVE_LIBSDL_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBSDL\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_LIBSDL\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${MINGW_TRUE}" && test -z "${MINGW_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"MINGW\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"MINGW\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${CYGIPC_TRUE}" && test -z "${CYGIPC_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"CYGIPC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"CYGIPC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${LINUX_TRUE}" && test -z "${LINUX_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"LINUX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"LINUX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${OSX_TRUE}" && test -z "${OSX_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"OSX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"OSX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_RPM_TRUE}" && test -z "${HAVE_RPM_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_RPM\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_RPM\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++: ${CONFIG_STATUS=./config.status} ++ac_clean_files_save=$ac_clean_files ++ac_clean_files="$ac_clean_files $CONFIG_STATUS" ++{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 ++echo "$as_me: creating $CONFIG_STATUS" >&6;} ++cat >$CONFIG_STATUS <<_ACEOF ++#! $SHELL ++# Generated by $as_me. ++# Run this file to recreate the current configuration. ++# Compiler output produced by configure, useful for debugging ++# configure, is in config.log if it exists. ++ ++debug=false ++ac_cs_recheck=false ++ac_cs_silent=false ++SHELL=\${CONFIG_SHELL-$SHELL} ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++## --------------------- ## ++## M4sh Initialization. ## ++## --------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh ++fi ++ ++# Support unset when possible. ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ as_unset=unset ++else ++ as_unset=false ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ ++# Work around bugs in pre-3.0 UWIN ksh. ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++for as_var in \ ++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ ++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ ++ LC_TELEPHONE LC_TIME ++do ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then ++ eval $as_var=C; export $as_var ++ else ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ fi ++done ++ ++# Required to use basename. ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++ ++# Name of the executable. ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# CDPATH. ++$as_unset CDPATH ++ ++ ++ ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { ++ ++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO ++ # uniformly replaced by the line number. The first 'sed' inserts a ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. ++ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | ++ sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno ++ N ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ ++ t loop ++ s/-\n.*// ++ ' >$as_me.lineno && ++ chmod +x "$as_me.lineno" || ++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 ++ { (exit 1); exit 1; }; } ++ ++ # Don't try to exec as it changes $[0], causing all sort of problems ++ # (the dirname of $[0] is not the place where we might find the ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" ++ # Exit status is that of the last command. ++ exit ++} ++ ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi ++echo >conf$$.file ++if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -p' ++elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++else ++ as_ln_s='cp -p' ++fi ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null ++ ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p=: ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' ++fi ++as_executable_p=$as_test_x ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++ ++exec 6>&1 ++ ++# Save the log message, to keep $[0] and so on meaningful, and to ++# report actual input values of CONFIG_FILES etc. instead of their ++# values after options handling. ++ac_log=" ++This file was extended by LibVNCServer $as_me 0.9.1, which was ++generated by GNU Autoconf 2.61. Invocation command line was ++ ++ CONFIG_FILES = $CONFIG_FILES ++ CONFIG_HEADERS = $CONFIG_HEADERS ++ CONFIG_LINKS = $CONFIG_LINKS ++ CONFIG_COMMANDS = $CONFIG_COMMANDS ++ $ $0 $@ ++ ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" ++ ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++# Files that config.status was made for. ++config_files="$ac_config_files" ++config_headers="$ac_config_headers" ++config_commands="$ac_config_commands" ++ ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++ac_cs_usage="\ ++\`$as_me' instantiates files from templates according to the ++current configuration. ++ ++Usage: $0 [OPTIONS] [FILE]... ++ ++ -h, --help print this help, then exit ++ -V, --version print version number and configuration settings, then exit ++ -q, --quiet do not print progress messages ++ -d, --debug don't remove temporary files ++ --recheck update $as_me by reconfiguring in the same conditions ++ --file=FILE[:TEMPLATE] ++ instantiate the configuration file FILE ++ --header=FILE[:TEMPLATE] ++ instantiate the configuration header FILE ++ ++Configuration files: ++$config_files ++ ++Configuration headers: ++$config_headers ++ ++Configuration commands: ++$config_commands ++ ++Report bugs to ." ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++ac_cs_version="\\ ++LibVNCServer config.status 0.9.1 ++configured by $0, generated by GNU Autoconf 2.61, ++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" ++ ++Copyright (C) 2006 Free Software Foundation, Inc. ++This config.status script is free software; the Free Software Foundation ++gives unlimited permission to copy, distribute and modify it." ++ ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' ++INSTALL='$INSTALL' ++MKDIR_P='$MKDIR_P' ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++# If no file are specified by the user, then we need to provide default ++# value. By we need to know if files were specified by the user. ++ac_need_defaults=: ++while test $# != 0 ++do ++ case $1 in ++ --*=*) ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ++ ac_shift=: ++ ;; ++ *) ++ ac_option=$1 ++ ac_optarg=$2 ++ ac_shift=shift ++ ;; ++ esac ++ ++ case $ac_option in ++ # Handling of the options. ++ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ++ ac_cs_recheck=: ;; ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ echo "$ac_cs_version"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) ++ debug=: ;; ++ --file | --fil | --fi | --f ) ++ $ac_shift ++ CONFIG_FILES="$CONFIG_FILES $ac_optarg" ++ ac_need_defaults=false;; ++ --header | --heade | --head | --hea ) ++ $ac_shift ++ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ++ ac_need_defaults=false;; ++ --he | --h) ++ # Conflict between --help and --header ++ { echo "$as_me: error: ambiguous option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; };; ++ --help | --hel | -h ) ++ echo "$ac_cs_usage"; exit ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil | --si | --s) ++ ac_cs_silent=: ;; ++ ++ # This is an error. ++ -*) { echo "$as_me: error: unrecognized option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; } ;; ++ ++ *) ac_config_targets="$ac_config_targets $1" ++ ac_need_defaults=false ;; ++ ++ esac ++ shift ++done ++ ++ac_configure_extra_args= ++ ++if $ac_cs_silent; then ++ exec 6>/dev/null ++ ac_configure_extra_args="$ac_configure_extra_args --silent" ++fi ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++if \$ac_cs_recheck; then ++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 ++ CONFIG_SHELL=$SHELL ++ export CONFIG_SHELL ++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++fi ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX ++@%:@@%:@ Running $as_me. @%:@@%:@ ++_ASBOX ++ echo "$ac_log" ++} >&5 ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++# ++# INIT-COMMANDS ++# ++PACKAGE="$PACKAGE" ++AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" ++ ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++sed_quote_subst='$sed_quote_subst' ++double_quote_subst='$double_quote_subst' ++delay_variable_subst='$delay_variable_subst' ++macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' ++macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' ++enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' ++enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' ++pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' ++enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' ++host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' ++host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' ++host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' ++build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' ++build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' ++build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' ++SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' ++Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' ++GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' ++EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' ++FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' ++LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' ++NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' ++LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' ++max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ++ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' ++exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' ++lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' ++lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' ++lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' ++reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' ++reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' ++file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' ++AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' ++AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' ++STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' ++RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' ++old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' ++CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' ++compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' ++GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' ++objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' ++SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ++ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' ++MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' ++lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' ++lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' ++lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' ++lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' ++need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' ++DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' ++NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' ++LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' ++OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' ++OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' ++libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' ++shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' ++enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' ++export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' ++whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' ++compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' ++old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' ++allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' ++no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' ++inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' ++link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' ++fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' ++always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' ++export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' ++include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' ++prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' ++variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' ++need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' ++need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' ++version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' ++runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' ++shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' ++shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' ++libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' ++library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' ++soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' ++postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' ++sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' ++sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' ++enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' ++enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' ++enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' ++old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' ++striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' ++ ++LTCC='$LTCC' ++LTCFLAGS='$LTCFLAGS' ++compiler='$compiler_DEFAULT' ++ ++# Quote evaled strings. ++for var in SED \ ++GREP \ ++EGREP \ ++FGREP \ ++LD \ ++NM \ ++LN_S \ ++lt_SP2NL \ ++lt_NL2SP \ ++reload_flag \ ++deplibs_check_method \ ++file_magic_cmd \ ++AR \ ++AR_FLAGS \ ++STRIP \ ++RANLIB \ ++CC \ ++CFLAGS \ ++compiler \ ++lt_cv_sys_global_symbol_pipe \ ++lt_cv_sys_global_symbol_to_cdecl \ ++lt_cv_sys_global_symbol_to_c_name_address \ ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ ++SHELL \ ++ECHO \ ++lt_prog_compiler_no_builtin_flag \ ++lt_prog_compiler_wl \ ++lt_prog_compiler_pic \ ++lt_prog_compiler_static \ ++lt_cv_prog_compiler_c_o \ ++need_locks \ ++DSYMUTIL \ ++NMEDIT \ ++LIPO \ ++OTOOL \ ++OTOOL64 \ ++shrext_cmds \ ++export_dynamic_flag_spec \ ++whole_archive_flag_spec \ ++compiler_needs_object \ ++with_gnu_ld \ ++allow_undefined_flag \ ++no_undefined_flag \ ++hardcode_libdir_flag_spec \ ++hardcode_libdir_flag_spec_ld \ ++hardcode_libdir_separator \ ++fix_srcfile_path \ ++exclude_expsyms \ ++include_expsyms \ ++file_list_spec \ ++variables_saved_for_relink \ ++libname_spec \ ++library_names_spec \ ++soname_spec \ ++finish_eval \ ++old_striplib \ ++striplib; do ++ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in ++ *[\\\\\\\`\\"\\\$]*) ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ++ ;; ++ *) ++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ++ ;; ++ esac ++done ++ ++# Double-quote double-evaled strings. ++for var in reload_cmds \ ++old_postinstall_cmds \ ++old_postuninstall_cmds \ ++old_archive_cmds \ ++extract_expsyms_cmds \ ++old_archive_from_new_cmds \ ++old_archive_from_expsyms_cmds \ ++archive_cmds \ ++archive_expsym_cmds \ ++module_cmds \ ++module_expsym_cmds \ ++export_symbols_cmds \ ++prelink_cmds \ ++postinstall_cmds \ ++postuninstall_cmds \ ++finish_cmds \ ++sys_lib_search_path_spec \ ++sys_lib_dlsearch_path_spec; do ++ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in ++ *[\\\\\\\`\\"\\\$]*) ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ++ ;; ++ *) ++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ++ ;; ++ esac ++done ++ ++# Fix-up fallback echo if it was mangled by the above quoting rules. ++case \$lt_ECHO in ++*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ++ ;; ++esac ++ ++ac_aux_dir='$ac_aux_dir' ++xsi_shell='$xsi_shell' ++lt_shell_append='$lt_shell_append' ++ ++# See if we are running on zsh, and set the options which allow our ++# commands through without removal of \ escapes INIT. ++if test -n "\${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++fi ++ ++ ++ PACKAGE='$PACKAGE' ++ VERSION='$VERSION' ++ TIMESTAMP='$TIMESTAMP' ++ RM='$RM' ++ ofile='$ofile' ++ ++ ++ ++ ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++ ++# Handling of arguments. ++for ac_config_target in $ac_config_targets ++do ++ case $ac_config_target in ++ "rfbconfig.h") CONFIG_HEADERS="$CONFIG_HEADERS rfbconfig.h" ;; ++ "rfb/rfbconfig.h") CONFIG_COMMANDS="$CONFIG_COMMANDS rfb/rfbconfig.h" ;; ++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ "libvncserver/Makefile") CONFIG_FILES="$CONFIG_FILES libvncserver/Makefile" ;; ++ "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;; ++ "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; ++ "vncterm/Makefile") CONFIG_FILES="$CONFIG_FILES vncterm/Makefile" ;; ++ "classes/Makefile") CONFIG_FILES="$CONFIG_FILES classes/Makefile" ;; ++ "classes/ssl/Makefile") CONFIG_FILES="$CONFIG_FILES classes/ssl/Makefile" ;; ++ "libvncclient/Makefile") CONFIG_FILES="$CONFIG_FILES libvncclient/Makefile" ;; ++ "client_examples/Makefile") CONFIG_FILES="$CONFIG_FILES client_examples/Makefile" ;; ++ "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; ++ "libvncserver-config") CONFIG_FILES="$CONFIG_FILES libvncserver-config" ;; ++ "LibVNCServer.spec") CONFIG_FILES="$CONFIG_FILES LibVNCServer.spec" ;; ++ "chmod-libvncserver-config") CONFIG_COMMANDS="$CONFIG_COMMANDS chmod-libvncserver-config" ;; ++ ++ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 ++echo "$as_me: error: invalid argument: $ac_config_target" >&2;} ++ { (exit 1); exit 1; }; };; ++ esac ++done ++ ++ ++# If the user did not use the arguments to specify the items to instantiate, ++# then the envvar interface is used. Set only those that are not. ++# We use the long form for the default assignment because of an extremely ++# bizarre bug on SunOS 4.1.3. ++if $ac_need_defaults; then ++ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files ++ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers ++ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands ++fi ++ ++# Have a temporary directory for convenience. Make it in the build tree ++# simply because there is no reason against having it here, and in addition, ++# creating and moving files from /tmp can sometimes cause problems. ++# Hook for its removal unless debugging. ++# Note that there is a small window in which the directory will not be cleaned: ++# after its creation but before its name has been assigned to `$tmp'. ++$debug || ++{ ++ tmp= ++ trap 'exit_status=$? ++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ++' 0 ++ trap '{ (exit 1); exit 1; }' 1 2 13 15 ++} ++# Create a (secure) tmp directory for tmp files. ++ ++{ ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && ++ test -n "$tmp" && test -d "$tmp" ++} || ++{ ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") ++} || ++{ ++ echo "$me: cannot create a temporary directory in ." >&2 ++ { (exit 1); exit 1; } ++} ++ ++# ++# Set up the sed scripts for CONFIG_FILES section. ++# ++ ++# No need to generate the scripts if there are no CONFIG_FILES. ++# This happens for instance when ./config.status config.h ++if test -n "$CONFIG_FILES"; then ++ ++_ACEOF ++ ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++SHELL!$SHELL$ac_delim ++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim ++PACKAGE_NAME!$PACKAGE_NAME$ac_delim ++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim ++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim ++PACKAGE_STRING!$PACKAGE_STRING$ac_delim ++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim ++exec_prefix!$exec_prefix$ac_delim ++prefix!$prefix$ac_delim ++program_transform_name!$program_transform_name$ac_delim ++bindir!$bindir$ac_delim ++sbindir!$sbindir$ac_delim ++libexecdir!$libexecdir$ac_delim ++datarootdir!$datarootdir$ac_delim ++datadir!$datadir$ac_delim ++sysconfdir!$sysconfdir$ac_delim ++sharedstatedir!$sharedstatedir$ac_delim ++localstatedir!$localstatedir$ac_delim ++includedir!$includedir$ac_delim ++oldincludedir!$oldincludedir$ac_delim ++docdir!$docdir$ac_delim ++infodir!$infodir$ac_delim ++htmldir!$htmldir$ac_delim ++dvidir!$dvidir$ac_delim ++pdfdir!$pdfdir$ac_delim ++psdir!$psdir$ac_delim ++libdir!$libdir$ac_delim ++localedir!$localedir$ac_delim ++mandir!$mandir$ac_delim ++DEFS!$DEFS$ac_delim ++ECHO_C!$ECHO_C$ac_delim ++ECHO_N!$ECHO_N$ac_delim ++ECHO_T!$ECHO_T$ac_delim ++LIBS!$LIBS$ac_delim ++build_alias!$build_alias$ac_delim ++host_alias!$host_alias$ac_delim ++target_alias!$target_alias$ac_delim ++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim ++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim ++INSTALL_DATA!$INSTALL_DATA$ac_delim ++am__isrc!$am__isrc$ac_delim ++CYGPATH_W!$CYGPATH_W$ac_delim ++PACKAGE!$PACKAGE$ac_delim ++VERSION!$VERSION$ac_delim ++ACLOCAL!$ACLOCAL$ac_delim ++AUTOCONF!$AUTOCONF$ac_delim ++AUTOMAKE!$AUTOMAKE$ac_delim ++AUTOHEADER!$AUTOHEADER$ac_delim ++MAKEINFO!$MAKEINFO$ac_delim ++install_sh!$install_sh$ac_delim ++STRIP!$STRIP$ac_delim ++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim ++mkdir_p!$mkdir_p$ac_delim ++AWK!$AWK$ac_delim ++SET_MAKE!$SET_MAKE$ac_delim ++am__leading_dot!$am__leading_dot$ac_delim ++AMTAR!$AMTAR$ac_delim ++am__tar!$am__tar$ac_delim ++am__untar!$am__untar$ac_delim ++CC!$CC$ac_delim ++CFLAGS!$CFLAGS$ac_delim ++LDFLAGS!$LDFLAGS$ac_delim ++CPPFLAGS!$CPPFLAGS$ac_delim ++ac_ct_CC!$ac_ct_CC$ac_delim ++EXEEXT!$EXEEXT$ac_delim ++OBJEXT!$OBJEXT$ac_delim ++DEPDIR!$DEPDIR$ac_delim ++am__include!$am__include$ac_delim ++am__quote!$am__quote$ac_delim ++AMDEP_TRUE!$AMDEP_TRUE$ac_delim ++AMDEP_FALSE!$AMDEP_FALSE$ac_delim ++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim ++CCDEPMODE!$CCDEPMODE$ac_delim ++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim ++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim ++LIBTOOL!$LIBTOOL$ac_delim ++build!$build$ac_delim ++build_cpu!$build_cpu$ac_delim ++build_vendor!$build_vendor$ac_delim ++build_os!$build_os$ac_delim ++host!$host$ac_delim ++host_cpu!$host_cpu$ac_delim ++host_vendor!$host_vendor$ac_delim ++host_os!$host_os$ac_delim ++SED!$SED$ac_delim ++GREP!$GREP$ac_delim ++EGREP!$EGREP$ac_delim ++FGREP!$FGREP$ac_delim ++LD!$LD$ac_delim ++DUMPBIN!$DUMPBIN$ac_delim ++ac_ct_DUMPBIN!$ac_ct_DUMPBIN$ac_delim ++NM!$NM$ac_delim ++LN_S!$LN_S$ac_delim ++AR!$AR$ac_delim ++RANLIB!$RANLIB$ac_delim ++lt_ECHO!$lt_ECHO$ac_delim ++DSYMUTIL!$DSYMUTIL$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++CEOF$ac_eof ++_ACEOF ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++NMEDIT!$NMEDIT$ac_delim ++LIPO!$LIPO$ac_delim ++OTOOL!$OTOOL$ac_delim ++OTOOL64!$OTOOL64$ac_delim ++CPP!$CPP$ac_delim ++with_ffmpeg!$with_ffmpeg$ac_delim ++WITH_FFMPEG_TRUE!$WITH_FFMPEG_TRUE$ac_delim ++WITH_FFMPEG_FALSE!$WITH_FFMPEG_FALSE$ac_delim ++HAVE_MP3LAME_TRUE!$HAVE_MP3LAME_TRUE$ac_delim ++HAVE_MP3LAME_FALSE!$HAVE_MP3LAME_FALSE$ac_delim ++X_CFLAGS!$X_CFLAGS$ac_delim ++X_PRE_LIBS!$X_PRE_LIBS$ac_delim ++X_LIBS!$X_LIBS$ac_delim ++X_EXTRA_LIBS!$X_EXTRA_LIBS$ac_delim ++HAVE_X_TRUE!$HAVE_X_TRUE$ac_delim ++HAVE_X_FALSE!$HAVE_X_FALSE$ac_delim ++CRYPT_LIBS!$CRYPT_LIBS$ac_delim ++SSL_LIBS!$SSL_LIBS$ac_delim ++AVAHI_CFLAGS!$AVAHI_CFLAGS$ac_delim ++AVAHI_LIBS!$AVAHI_LIBS$ac_delim ++SYSTEM_LIBVNCSERVER_CFLAGS!$SYSTEM_LIBVNCSERVER_CFLAGS$ac_delim ++SYSTEM_LIBVNCSERVER_LIBS!$SYSTEM_LIBVNCSERVER_LIBS$ac_delim ++HAVE_SYSTEM_LIBVNCSERVER_TRUE!$HAVE_SYSTEM_LIBVNCSERVER_TRUE$ac_delim ++HAVE_SYSTEM_LIBVNCSERVER_FALSE!$HAVE_SYSTEM_LIBVNCSERVER_FALSE$ac_delim ++HAVE_LIBPTHREAD_TRUE!$HAVE_LIBPTHREAD_TRUE$ac_delim ++HAVE_LIBPTHREAD_FALSE!$HAVE_LIBPTHREAD_FALSE$ac_delim ++WITH_TIGHTVNC_FILETRANSFER_TRUE!$WITH_TIGHTVNC_FILETRANSFER_TRUE$ac_delim ++WITH_TIGHTVNC_FILETRANSFER_FALSE!$WITH_TIGHTVNC_FILETRANSFER_FALSE$ac_delim ++HAVE_LIBZ_TRUE!$HAVE_LIBZ_TRUE$ac_delim ++HAVE_LIBZ_FALSE!$HAVE_LIBZ_FALSE$ac_delim ++HAVE_LIBJPEG_TRUE!$HAVE_LIBJPEG_TRUE$ac_delim ++HAVE_LIBJPEG_FALSE!$HAVE_LIBJPEG_FALSE$ac_delim ++HAVE_LIBSDL_TRUE!$HAVE_LIBSDL_TRUE$ac_delim ++HAVE_LIBSDL_FALSE!$HAVE_LIBSDL_FALSE$ac_delim ++SDL_CFLAGS!$SDL_CFLAGS$ac_delim ++SDL_LIBS!$SDL_LIBS$ac_delim ++MINGW_TRUE!$MINGW_TRUE$ac_delim ++MINGW_FALSE!$MINGW_FALSE$ac_delim ++WSOCKLIB!$WSOCKLIB$ac_delim ++LIB@&t@OBJS!$LIB@&t@OBJS$ac_delim ++CYGIPC_TRUE!$CYGIPC_TRUE$ac_delim ++CYGIPC_FALSE!$CYGIPC_FALSE$ac_delim ++LINUX_TRUE!$LINUX_TRUE$ac_delim ++LINUX_FALSE!$LINUX_FALSE$ac_delim ++OSX_TRUE!$OSX_TRUE$ac_delim ++OSX_FALSE!$OSX_FALSE$ac_delim ++HAVE_RPM_TRUE!$HAVE_RPM_TRUE$ac_delim ++HAVE_RPM_FALSE!$HAVE_RPM_FALSE$ac_delim ++RPMSOURCEDIR!$RPMSOURCEDIR$ac_delim ++LTLIBOBJS!$LTLIBOBJS$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 50; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++:end ++s/|#_!!_#|//g ++CEOF$ac_eof ++_ACEOF ++ ++ ++# VPATH may cause trouble with some makes, so we remove $(srcdir), ++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and ++# trailing colons and then remove the whole line if VPATH becomes empty ++# (actually we leave an empty line to preserve line numbers). ++if test "x$srcdir" = x.; then ++ ac_vpsub='/^[ ]*VPATH[ ]*=/{ ++s/:*\$(srcdir):*/:/ ++s/:*\${srcdir}:*/:/ ++s/:*@srcdir@:*/:/ ++s/^\([^=]*=[ ]*\):*/\1/ ++s/:*$// ++s/^[^=]*=[ ]*$// ++}' ++fi ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++fi # test -n "$CONFIG_FILES" ++ ++ ++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 ++echo "$as_me: error: Invalid tag $ac_tag." >&2;} ++ { (exit 1); exit 1; }; };; ++ :[FH]-) ac_tag=-:-;; ++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; ++ esac ++ ac_save_IFS=$IFS ++ IFS=: ++ set x $ac_tag ++ IFS=$ac_save_IFS ++ shift ++ ac_file=$1 ++ shift ++ ++ case $ac_mode in ++ :L) ac_source=$1;; ++ :[FH]) ++ ac_file_inputs= ++ for ac_f ++ do ++ case $ac_f in ++ -) ac_f="$tmp/stdin";; ++ *) # Look for the file first in the build tree, then in the source tree ++ # (if the path is not absolute). The absolute path cannot be DOS-style, ++ # because $ac_f cannot contain `:'. ++ test -f "$ac_f" || ++ case $ac_f in ++ [\\/$]*) false;; ++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; ++ esac || ++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 ++echo "$as_me: error: cannot find input file: $ac_f" >&2;} ++ { (exit 1); exit 1; }; };; ++ esac ++ ac_file_inputs="$ac_file_inputs $ac_f" ++ done ++ ++ # Let's still pretend it is `configure' which instantiates (i.e., don't ++ # use $as_me), people would be surprised to read: ++ # /* config.h. Generated by config.status. */ ++ configure_input="Generated from "`IFS=: ++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { echo "$as_me:$LINENO: creating $ac_file" >&5 ++echo "$as_me: creating $ac_file" >&6;} ++ fi ++ ++ case $ac_tag in ++ *:-:* | *:-) cat >"$tmp/stdin";; ++ esac ++ ;; ++ esac ++ ++ ac_dir=`$as_dirname -- "$ac_file" || ++$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$ac_file" : 'X\(//\)[^/]' \| \ ++ X"$ac_file" : 'X\(//\)$' \| \ ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$ac_file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir="$ac_dir" ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } ++ ac_builddir=. ++ ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # ++ ++ case $INSTALL in ++ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; ++ esac ++ ac_MKDIR_P=$MKDIR_P ++ case $MKDIR_P in ++ [\\/$]* | ?:[\\/]* ) ;; ++ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; ++ esac ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++# If the template does not know about datarootdir, expand it. ++# FIXME: This hack should be removed a few years after 2.60. ++ac_datarootdir_hack=; ac_datarootdir_seen= ++ ++case `sed -n '/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p ++' $ac_file_inputs` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++ ac_datarootdir_hack=' ++ s&@datadir@&$datadir&g ++ s&@docdir@&$docdir&g ++ s&@infodir@&$infodir&g ++ s&@localedir@&$localedir&g ++ s&@mandir@&$mandir&g ++ s&\\\${datarootdir}&$datarootdir&g' ;; ++esac ++_ACEOF ++ ++# Neutralize VPATH when `$srcdir' = `.'. ++# Shell code in configure.ac might set extrasub. ++# FIXME: do we really want to maintain this feature? ++cat >>$CONFIG_STATUS <<_ACEOF ++ sed "$ac_vpsub ++$extrasub ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++:t ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++s&@configure_input@&$configure_input&;t t ++s&@top_builddir@&$ac_top_builddir_sub&;t t ++s&@srcdir@&$ac_srcdir&;t t ++s&@abs_srcdir@&$ac_abs_srcdir&;t t ++s&@top_srcdir@&$ac_top_srcdir&;t t ++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t ++s&@builddir@&$ac_builddir&;t t ++s&@abs_builddir@&$ac_abs_builddir&;t t ++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t ++s&@INSTALL@&$ac_INSTALL&;t t ++s&@MKDIR_P@&$ac_MKDIR_P&;t t ++$ac_datarootdir_hack ++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out ++ ++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && ++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && ++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && ++ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&5 ++echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&2;} ++ ++ rm -f "$tmp/stdin" ++ case $ac_file in ++ -) cat "$tmp/out"; rm -f "$tmp/out";; ++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; ++ esac ++ ;; ++ :H) ++ # ++ # CONFIG_HEADER ++ # ++_ACEOF ++ ++# Transform confdefs.h into a sed script `conftest.defines', that ++# substitutes the proper values into config.h.in to produce config.h. ++rm -f conftest.defines conftest.tail ++# First, append a space to every undef/define line, to ease matching. ++echo 's/$/ /' >conftest.defines ++# Then, protect against being on the right side of a sed subst, or in ++# an unquoted here document, in config.status. If some macros were ++# called several times there might be several #defines for the same ++# symbol, which is useless. But do not sort them, since the last ++# AC_DEFINE must be honored. ++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* ++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where ++# NAME is the cpp macro being defined, VALUE is the value it is being given. ++# PARAMS is the parameter list in the macro definition--in most cases, it's ++# just an empty string. ++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ++ac_dB='\\)[ (].*,\\1define\\2' ++ac_dC=' ' ++ac_dD=' ,' ++ ++uniq confdefs.h | ++ sed -n ' ++ t rset ++ :rset ++ s/^[ ]*#[ ]*define[ ][ ]*// ++ t ok ++ d ++ :ok ++ s/[\\&,]/\\&/g ++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p ++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ++ ' >>conftest.defines ++ ++# Remove the space that was appended to ease matching. ++# Then replace #undef with comments. This is necessary, for ++# example, in the case of _POSIX_SOURCE, which is predefined and required ++# on some systems where configure will not decide to define it. ++# (The regexp can be short, since the line contains either #define or #undef.) ++echo 's/ $// ++s,^[ #]*u.*,/* & */,' >>conftest.defines ++ ++# Break up conftest.defines: ++ac_max_sed_lines=50 ++ ++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" ++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" ++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" ++# et cetera. ++ac_in='$ac_file_inputs' ++ac_out='"$tmp/out1"' ++ac_nxt='"$tmp/out2"' ++ ++while : ++do ++ # Write a here document: ++ cat >>$CONFIG_STATUS <<_ACEOF ++ # First, check the format of the line: ++ cat >"\$tmp/defines.sed" <<\\CEOF ++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def ++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def ++b ++:def ++_ACEOF ++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS ++ echo 'CEOF ++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in ++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail ++ grep . conftest.tail >/dev/null || break ++ rm -f conftest.defines ++ mv conftest.tail conftest.defines ++done ++rm -f conftest.defines conftest.tail ++ ++echo "ac_result=$ac_in" >>$CONFIG_STATUS ++cat >>$CONFIG_STATUS <<\_ACEOF ++ if test x"$ac_file" != x-; then ++ echo "/* $configure_input */" >"$tmp/config.h" ++ cat "$ac_result" >>"$tmp/config.h" ++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then ++ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 ++echo "$as_me: $ac_file is unchanged" >&6;} ++ else ++ rm -f $ac_file ++ mv "$tmp/config.h" $ac_file ++ fi ++ else ++ echo "/* $configure_input */" ++ cat "$ac_result" ++ fi ++ rm -f "$tmp/out12" ++# Compute $ac_file's index in $config_headers. ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $ac_file | $ac_file:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; ++ esac ++done ++echo "timestamp for $ac_file" >`$as_dirname -- $ac_file || ++$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X$ac_file : 'X\(//\)[^/]' \| \ ++ X$ac_file : 'X\(//\)$' \| \ ++ X$ac_file : 'X\(/\)' \| . 2>/dev/null || ++echo X$ac_file | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'`/stamp-h$_am_stamp_count ++ ;; ++ ++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 ++echo "$as_me: executing $ac_file commands" >&6;} ++ ;; ++ esac ++ ++ ++ case $ac_file$ac_mode in ++ "rfb/rfbconfig.h":C) ac_prefix_conf_OUT=`echo rfb/rfbconfig.h` ++ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e "y:abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:" -e "s/@<:@^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@:>@/_/g"` ++ac_prefix_conf_PKG=`echo $PACKAGE` ++ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e "y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:"` ++ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e "y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:" -e "/^@<:@0123456789@:>@/s/^/_/"` ++ac_prefix_conf_INP=`echo _` ++if test "$ac_prefix_conf_INP" = "_"; then ++ for ac_file in : $CONFIG_HEADERS; do test "_$ac_file" = _: && continue ++ test -f "$ac_prefix_conf_INP" && continue ++ case $ac_file in ++ *.h) test -f $ac_file && ac_prefix_conf_INP=$ac_file ;; ++ *) ++ esac ++ done ++fi ++if test "$ac_prefix_conf_INP" = "_"; then ++ case "$ac_prefix_conf_OUT" in ++ */*) ac_prefix_conf_INP=`basename "$ac_prefix_conf_OUT"` ++ ;; ++ *-*) ac_prefix_conf_INP=`echo "$ac_prefix_conf_OUT" | sed -e "s/@<:@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_@:>@*-//"` ++ ;; ++ *) ac_prefix_conf_INP=config.h ++ ;; ++ esac ++fi ++if test -z "$ac_prefix_conf_PKG" ; then ++ { { echo "$as_me:$LINENO: error: no prefix for _PREFIX_PKG_CONFIG_H" >&5 ++echo "$as_me: error: no prefix for _PREFIX_PKG_CONFIG_H" >&2;} ++ { (exit 1); exit 1; }; } ++else ++ if test ! -f "$ac_prefix_conf_INP" ; then if test -f "$srcdir/$ac_prefix_conf_INP" ; then ++ ac_prefix_conf_INP="$srcdir/$ac_prefix_conf_INP" ++ fi fi ++ { echo "$as_me:$LINENO: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&5 ++echo "$as_me: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&6;} ++ if test -f $ac_prefix_conf_INP ; then ++ echo "s/@%:@undef *\\(@<:@ABCDEFGHIJKLMNOPQRSTUVWXYZ_@:>@\\)/@%:@undef $ac_prefix_conf_UPP""_\\1/" > conftest.prefix ++ # no! these are things like socklen_t, const, vfork ++ # echo "s/@%:@undef *\\(@<:@m4_cr_letters@:>@\\)/@%:@undef $_LOW""_\\1/" >> _script ++ echo "s/@%:@define *\\(@<:@ABCDEFGHIJKLMNOPQRSTUVWXYZ_@:>@@<:@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_@:>@*\\)\\(.*\\)/@%:@ifndef $ac_prefix_conf_UPP""_\\1 \\" >> conftest.prefix ++ echo "@%:@define $ac_prefix_conf_UPP""_\\1 \\2 \\" >> conftest.prefix ++ echo "@%:@endif/" >>conftest.prefix ++ # no! these are things like socklen_t, const, vfork ++ # echo "s/@%:@def[]ine *\\(@<:@m4_cr_letters@:>@@<:@_symbol@:>@*\\)\\(.*\\)/@%:@ifndef $_LOW""_\\1 \\" >> _script ++ # echo "@%:@define $_LOW""_\\1 \\2 \\" >> _script ++ # echo "@%:@endif/" >> _script ++ # now executing _script on _DEF input to create _OUT output file ++ echo "@%:@ifndef $ac_prefix_conf_DEF" >$tmp/pconfig.h ++ echo "@%:@define $ac_prefix_conf_DEF 1" >>$tmp/pconfig.h ++ echo ' ' >>$tmp/pconfig.h ++ echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$tmp/pconfig.h ++ ++ sed -f conftest.prefix $ac_prefix_conf_INP >>$tmp/pconfig.h ++ echo ' ' >>$tmp/pconfig.h ++ echo '/* once:' $ac_prefix_conf_DEF '*/' >>$tmp/pconfig.h ++ echo "@%:@endif" >>$tmp/pconfig.h ++ if cmp -s $ac_prefix_conf_OUT $tmp/pconfig.h 2>/dev/null; then ++ { echo "$as_me:$LINENO: $ac_prefix_conf_OUT is unchanged" >&5 ++echo "$as_me: $ac_prefix_conf_OUT is unchanged" >&6;} ++ else ++ ac_dir=`$as_dirname -- "$ac_prefix_conf_OUT" || ++$as_expr X"$ac_prefix_conf_OUT" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$ac_prefix_conf_OUT" : 'X\(//\)[^/]' \| \ ++ X"$ac_prefix_conf_OUT" : 'X\(//\)$' \| \ ++ X"$ac_prefix_conf_OUT" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$ac_prefix_conf_OUT" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir="$ac_dir" ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } ++ rm -f "$ac_prefix_conf_OUT" ++ mv $tmp/pconfig.h "$ac_prefix_conf_OUT" ++ fi ++ cp conftest.prefix _configs.sed ++ else ++ { { echo "$as_me:$LINENO: error: input file $ac_prefix_conf_INP does not exist - skip generating $ac_prefix_conf_OUT" >&5 ++echo "$as_me: error: input file $ac_prefix_conf_INP does not exist - skip generating $ac_prefix_conf_OUT" >&2;} ++ { (exit 1); exit 1; }; } ++ fi ++ rm -f conftest.* ++fi ++ ;; ++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do ++ # 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 ++ # 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. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then ++ dirpart=`$as_dirname -- "$mf" || ++$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$mf" : 'X\(//\)[^/]' \| \ ++ X"$mf" : 'X\(//\)$' \| \ ++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$mf" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # 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 ++ 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 ++ # Make sure the directory exists. ++ test -f "$dirpart/$file" && continue ++ fdir=`$as_dirname -- "$file" || ++$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$file" : 'X\(//\)[^/]' \| \ ++ X"$file" : 'X\(//\)$' \| \ ++ X"$file" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir=$dirpart/$fdir ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } ++ # echo "creating $dirpart/$file" ++ echo '# dummy' > "$dirpart/$file" ++ done ++done ++ ;; ++ "libtool":C) ++ ++ # See if we are running on zsh, and set the options which allow our ++ # commands through without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ ++ cfgfile="${ofile}T" ++ trap "$RM \"$cfgfile\"; exit 1" 1 2 15 ++ $RM "$cfgfile" ++ ++ cat <<_LT_EOF >> "$cfgfile" ++#! $SHELL ++ ++# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. ++# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++# NOTE: Changes made to this file will be lost: look at ltmain.sh. ++# ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, ++# 2006, 2007, 2008 Free Software Foundation, Inc. ++# Written by Gordon Matzigkeit, 1996 ++# ++# This file is part of GNU Libtool. ++# ++# GNU Libtool is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License as ++# published by the Free Software Foundation; either version 2 of ++# the License, or (at your option) any later version. ++# ++# As a special exception to the GNU General Public License, ++# if you distribute this file as part of a program or library that ++# is built using GNU Libtool, you may include this file under the ++# same distribution terms that you use for the rest of that program. ++# ++# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy ++# can be downloaded from http://www.gnu.org/licenses/gpl.html, or ++# obtained by writing to the Free Software Foundation, Inc., ++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ ++ ++# The names of the tagged configurations supported by this script. ++available_tags="" ++ ++# ### BEGIN LIBTOOL CONFIG ++ ++# Which release of libtool.m4 was used? ++macro_version=$macro_version ++macro_revision=$macro_revision ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# What type of objects to build. ++pic_mode=$pic_mode ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# A sed program that does not truncate output. ++SED=$lt_SED ++ ++# Sed that helps us avoid accidentally triggering echo(1) options like -n. ++Xsed="\$SED -e 1s/^X//" ++ ++# A grep program that handles long lines. ++GREP=$lt_GREP ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# A literal string matcher. ++FGREP=$lt_FGREP ++ ++# A BSD- or MS-compatible name lister. ++NM=$lt_NM ++ ++# Whether we need soft or hard links. ++LN_S=$lt_LN_S ++ ++# What is the maximum length of a command? ++max_cmd_len=$max_cmd_len ++ ++# Object file suffix (normally "o"). ++objext=$ac_objext ++ ++# Executable file suffix (normally ""). ++exeext=$exeext ++ ++# whether the shell understands "unset". ++lt_unset=$lt_unset ++ ++# turn spaces into newlines. ++SP2NL=$lt_lt_SP2NL ++ ++# turn newlines into spaces. ++NL2SP=$lt_lt_NL2SP ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method ++ ++# Command to use when deplibs_check_method == "file_magic". ++file_magic_cmd=$lt_file_magic_cmd ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A symbol stripping program. ++STRIP=$lt_STRIP ++ ++# Commands used to install an old-style archive. ++RANLIB=$lt_RANLIB ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ ++# A C compiler. ++LTCC=$lt_CC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_CFLAGS ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration. ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++ ++# Transform the output of nm in a C name address pair. ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++ ++# Transform the output of nm in a C name address pair when lib prefix is needed. ++global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# An echo program that does not interpret backslashes. ++ECHO=$lt_ECHO ++ ++# Used to examine libraries when file_magic_cmd begins with "file". ++MAGIC_CMD=$MAGIC_CMD ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Tool to manipulate archived DWARF debug symbol files on Mac OS X. ++DSYMUTIL=$lt_DSYMUTIL ++ ++# Tool to change global to local symbols on Mac OS X. ++NMEDIT=$lt_NMEDIT ++ ++# Tool to manipulate fat objects and archives on Mac OS X. ++LIPO=$lt_LIPO ++ ++# ldd/readelf like tool for Mach-O binaries on Mac OS X. ++OTOOL=$lt_OTOOL ++ ++# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. ++OTOOL64=$lt_OTOOL64 ++ ++# Old archive suffix (normally "a"). ++libext=$libext ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds=$lt_shrext_cmds ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at link time. ++variables_saved_for_relink=$lt_variables_saved_for_relink ++ ++# Do we need the "lib" prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Library versioning type. ++version_type=$version_type ++ ++# Shared library runtime path variable. ++runpath_var=$runpath_var ++ ++# Shared library path variable. ++shlibpath_var=$shlibpath_var ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ++# Format of library name prefix. ++libname_spec=$lt_libname_spec ++ ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME ++library_names_spec=$lt_library_names_spec ++ ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec ++ ++# Command to use after installation of a shared archive. ++postinstall_cmds=$lt_postinstall_cmds ++ ++# Command to use after uninstallation of a shared archive. ++postuninstall_cmds=$lt_postuninstall_cmds ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds ++ ++# As "finish_cmds", except a single script fragment to be evaled but ++# not shown. ++finish_eval=$lt_finish_eval ++ ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs ++ ++# Compile-time system search path for libraries. ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++ ++# Run-time system search path for libraries. ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen ++ ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static ++ ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib ++ ++ ++# The linker used to build libraries. ++LD=$lt_LD ++ ++# Commands used to build an old-style archive. ++old_archive_cmds=$lt_old_archive_cmds ++ ++# A language specific compiler. ++CC=$lt_compiler ++ ++# Is the compiler the GNU compiler? ++with_gcc=$GCC ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc ++ ++# Whether or not to disallow shared libs when runtime libs are static. ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec ++ ++# Whether the compiler copes with passing no objects directly. ++compiler_needs_object=$lt_compiler_needs_object ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds ++ ++# Commands used to build a shared archive. ++archive_cmds=$lt_archive_cmds ++archive_expsym_cmds=$lt_archive_expsym_cmds ++ ++# Commands used to build a loadable module if different from building ++# a shared archive. ++module_cmds=$lt_module_cmds ++module_expsym_cmds=$lt_module_expsym_cmds ++ ++# Whether we are building with GNU ld or not. ++with_gnu_ld=$lt_with_gnu_ld ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag ++ ++# Flag that enforces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec ++ ++# If ld is used when linking, flag to hardcode \$libdir into a binary ++# during linking. This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld ++ ++# Whether we need a single "-rpath" flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator ++ ++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes ++# DIR into the resulting binary. ++hardcode_direct=$hardcode_direct ++ ++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes ++# DIR into the resulting binary and the resulting library dependency is ++# "absolute",i.e impossible to change by setting \${shlibpath_var} if the ++# library is relocated. ++hardcode_direct_absolute=$hardcode_direct_absolute ++ ++# Set to "yes" if using the -LDIR flag during linking hardcodes DIR ++# into the resulting binary. ++hardcode_minus_L=$hardcode_minus_L ++ ++# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR ++# into the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var ++ ++# Set to "yes" if building a shared library automatically hardcodes DIR ++# into the library and all subsequent libraries and executables linked ++# against it. ++hardcode_automatic=$hardcode_automatic ++ ++# Set to yes if linker adds runtime paths of dependent libraries ++# to runtime path list. ++inherit_rpath=$inherit_rpath ++ ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs ++ ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path ++ ++# Set to "yes" if exported symbols are required. ++always_export_symbols=$always_export_symbols ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms ++ ++# Commands necessary for linking programs (against libraries) with templates. ++prelink_cmds=$lt_prelink_cmds ++ ++# Specify filename containing input files. ++file_list_spec=$lt_file_list_spec ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action ++ ++# ### END LIBTOOL CONFIG ++ ++_LT_EOF ++ ++ case $host_os in ++ aix3*) ++ cat <<\_LT_EOF >> "$cfgfile" ++# AIX sometimes has problems with the GCC collect2 program. For some ++# reason, if we set the COLLECT_NAMES environment variable, the problems ++# vanish in a puff of smoke. ++if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++fi ++_LT_EOF ++ ;; ++ esac ++ ++ ++ltmain="$ac_aux_dir/ltmain.sh" ++ ++ ++ # We use sed instead of cat because bash on DJGPP gets confused if ++ # if finds mixed CR/LF and LF-only lines. Since sed operates in ++ # text mode, it properly converts lines to CR/LF. This bash problem ++ # is reportedly fixed, but why not run on old versions too? ++ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) ++ ++ case $xsi_shell in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++} ++ ++# func_basename file ++func_basename () ++{ ++ func_basename_result="${1##*/}" ++} ++ ++# func_dirname_and_basename file append nondir_replacement ++# perform func_basename and func_dirname in a single function ++# call: ++# dirname: Compute the dirname of FILE. If nonempty, ++# add APPEND to the result, otherwise set result ++# to NONDIR_REPLACEMENT. ++# value returned in "$func_dirname_result" ++# basename: Compute filename of FILE. ++# value retuned in "$func_basename_result" ++# Implementation must be kept synchronized with func_dirname ++# and func_basename. For efficiency, we do not delegate to ++# those functions but instead duplicate the functionality here. ++func_dirname_and_basename () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++ func_basename_result="${1##*/}" ++} ++ ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++func_stripname () ++{ ++ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are ++ # positional parameters, so assign one to ordinary parameter first. ++ func_stripname_result=${3} ++ func_stripname_result=${func_stripname_result#"${1}"} ++ func_stripname_result=${func_stripname_result%"${2}"} ++} ++ ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=${1%%=*} ++ func_opt_split_arg=${1#*=} ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ case ${1} in ++ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; ++ *) func_lo2o_result=${1} ;; ++ esac ++} ++ ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=${1%.*}.lo ++} ++ ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=$(( $* )) ++} ++ ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=${#1} ++} ++ ++_LT_EOF ++ ;; ++ *) # Bourne compatible functions. ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ # Extract subdirectory from the argument. ++ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` ++ if test "X$func_dirname_result" = "X${1}"; then ++ func_dirname_result="${3}" ++ else ++ func_dirname_result="$func_dirname_result${2}" ++ fi ++} ++ ++# func_basename file ++func_basename () ++{ ++ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` ++} ++ ++ ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++# func_strip_suffix prefix name ++func_stripname () ++{ ++ case ${2} in ++ .*) func_stripname_result=`$ECHO "X${3}" \ ++ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; ++ *) func_stripname_result=`$ECHO "X${3}" \ ++ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; ++ esac ++} ++ ++# sed scripts: ++my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' ++my_sed_long_arg='1s/^-[^=]*=//' ++ ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` ++ func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` ++} ++ ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` ++} ++ ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=`expr "$@"` ++} ++ ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` ++} ++ ++_LT_EOF ++esac ++ ++case $lt_shell_append in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$1+=\$2" ++} ++_LT_EOF ++ ;; ++ *) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$1=\$$1\$2" ++} ++ ++_LT_EOF ++ ;; ++ esac ++ ++ ++ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) ++ ++ mv -f "$cfgfile" "$ofile" || ++ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") ++ chmod +x "$ofile" ++ ++ ;; ++ "chmod-libvncserver-config":C) chmod a+x libvncserver-config ;; ++ ++ esac ++done # for ac_tag ++ ++ ++{ (exit 0); exit 0; } ++_ACEOF ++chmod +x $CONFIG_STATUS ++ac_clean_files=$ac_clean_files_save ++ ++ ++# configure is writing to config.log, and then calls config.status. ++# config.status does its own redirection, appending to config.log. ++# Unfortunately, on DOS this fails, as config.log is still kept open ++# by configure, so config.status won't be able to write to it; its ++# output is simply discarded. So we exec the FD to /dev/null, ++# effectively closing config.log, so it can be properly (re)opened and ++# appended to by config.status. When coming back to configure, we ++# need to make the FD available again. ++if test "$no_create" != yes; then ++ ac_cs_success=: ++ ac_config_status_args= ++ test "$silent" = yes && ++ ac_config_status_args="$ac_config_status_args --quiet" ++ exec 5>/dev/null ++ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false ++ exec 5>>config.log ++ # Use ||, not &&, to avoid exiting from the if with $? = 1, which ++ # would make configure fail if this is the last instruction. ++ $ac_cs_success || { (exit 1); exit 1; } ++fi ++ ++chmod a+x ./libvncserver-config ++ +diff -Nur LibVNCServer-0.9.1.orig/autom4te.cache/requests LibVNCServer-0.9.1/autom4te.cache/requests +--- LibVNCServer-0.9.1.orig/autom4te.cache/requests 1969-12-31 21:00:00.000000000 -0300 ++++ LibVNCServer-0.9.1/autom4te.cache/requests 2008-10-31 18:46:27.000000000 -0200 +@@ -0,0 +1,273 @@ ++# This file was generated. ++# It contains the lists of macros which have been traced. ++# It can be safely removed. ++ ++@request = ( ++ bless( [ ++ '0', ++ 1, ++ [ ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/autoconf' ++ ], ++ [ ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/autoconf/autoconf/autoconf.m4f', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/argz.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltsugar.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltversion.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/amversion.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/auxdir.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/cond.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/depend.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/depout.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/header.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/init.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/install-sh.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/lead-dot.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/make.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/missing.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/mkdirp.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/options.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/runlog.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/sanity.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/strip.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/substnot.m4', ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/tar.m4', ++ 'acinclude.m4', ++ 'configure.ac' ++ ], ++ { ++ 'AM_ENABLE_STATIC' => 1, ++ 'AC_LIBTOOL_LANG_RC_CONFIG' => 1, ++ '_LT_AC_SHELL_INIT' => 1, ++ 'AC_DEFUN' => 1, ++ 'AC_PROG_LIBTOOL' => 1, ++ '_LT_AC_LANG_CXX_CONFIG' => 1, ++ 'AM_PROG_MKDIR_P' => 1, ++ 'AM_AUTOMAKE_VERSION' => 1, ++ 'AM_MISSING_PROG' => 1, ++ 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1, ++ '_LT_AC_LANG_C_CONFIG' => 1, ++ 'AM_PROG_INSTALL_STRIP' => 1, ++ '_m4_warn' => 1, ++ 'AC_LIBTOOL_OBJDIR' => 1, ++ 'gl_FUNC_ARGZ' => 1, ++ 'AM_SANITY_CHECK' => 1, ++ 'LTOBSOLETE_VERSION' => 1, ++ 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1, ++ 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1, ++ 'LT_LIB_M' => 1, ++ '_LT_AC_CHECK_DLFCN' => 1, ++ 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1, ++ 'LTSUGAR_VERSION' => 1, ++ '_LT_PROG_LTMAIN' => 1, ++ 'AC_COMPILE_CHECK_SIZEOF' => 1, ++ 'LT_SYS_SYMBOL_USCORE' => 1, ++ '_AM_PROG_TAR' => 1, ++ 'AC_LIBTOOL_GCJ' => 1, ++ 'LT_SYS_DLOPEN_DEPLIBS' => 1, ++ 'LT_FUNC_DLSYM_USCORE' => 1, ++ '_LT_AC_LANG_F77' => 1, ++ 'AC_LIBTOOL_CONFIG' => 1, ++ 'AC_LTDL_DLLIB' => 1, ++ '_AM_SUBST_NOTMAKE' => 1, ++ '_AM_AUTOCONF_VERSION' => 1, ++ 'AM_DISABLE_SHARED' => 1, ++ '_LTDL_SETUP' => 1, ++ '_LT_AC_LANG_CXX' => 1, ++ 'AM_PROG_LIBTOOL' => 1, ++ 'AC_LIB_LTDL' => 1, ++ '_LT_AC_FILE_LTDLL_C' => 1, ++ 'AM_PROG_LD' => 1, ++ 'AU_DEFUN' => 1, ++ 'AC_PROG_NM' => 1, ++ 'AC_LIBTOOL_DLOPEN' => 1, ++ 'AC_PROG_LD' => 1, ++ 'AC_PROG_LD_GNU' => 1, ++ 'AC_ENABLE_FAST_INSTALL' => 1, ++ 'AC_LIBTOOL_FC' => 1, ++ 'LTDL_CONVENIENCE' => 1, ++ '_AM_SET_OPTION' => 1, ++ 'AC_LTDL_PREOPEN' => 1, ++ '_LT_LINKER_BOILERPLATE' => 1, ++ 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1, ++ 'AC_LIBTOOL_PROG_CC_C_O' => 1, ++ 'gl_PREREQ_ARGZ' => 1, ++ 'LT_SUPPORTED_TAG' => 1, ++ 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, ++ 'LT_PROG_RC' => 1, ++ 'LT_SYS_MODULE_EXT' => 1, ++ 'AC_DEFUN_ONCE' => 1, ++ 'AC_CREATE_STDINT_H' => 1, ++ '_LT_AC_LANG_GCJ' => 1, ++ 'AC_LTDL_OBJDIR' => 1, ++ '_LT_PATH_TOOL_PREFIX' => 1, ++ 'AC_LIBTOOL_RC' => 1, ++ 'AC_DISABLE_FAST_INSTALL' => 1, ++ '_LT_AC_PROG_ECHO_BACKSLASH' => 1, ++ '_LT_AC_SYS_LIBPATH_AIX' => 1, ++ '_LT_AC_TRY_DLOPEN_SELF' => 1, ++ 'include' => 1, ++ 'LT_AC_PROG_SED' => 1, ++ 'AM_ENABLE_SHARED' => 1, ++ 'LTDL_INSTALLABLE' => 1, ++ '_LT_AC_LANG_GCJ_CONFIG' => 1, ++ 'AC_ENABLE_SHARED' => 1, ++ 'AC_ENABLE_STATIC' => 1, ++ 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1, ++ '_LT_AC_TAGVAR' => 1, ++ 'AC_LIBTOOL_LANG_F77_CONFIG' => 1, ++ 'AM_CONDITIONAL' => 1, ++ 'LT_LIB_DLLOAD' => 1, ++ 'LTDL_INIT' => 1, ++ 'LTVERSION_VERSION' => 1, ++ 'AM_PROG_INSTALL_SH' => 1, ++ 'm4_include' => 1, ++ 'AC_PROG_EGREP' => 1, ++ '_AC_AM_CONFIG_HEADER_HOOK' => 1, ++ 'AC_PATH_MAGIC' => 1, ++ 'AC_LTDL_SYSSEARCHPATH' => 1, ++ 'AM_MAKE_INCLUDE' => 1, ++ 'LT_CMD_MAX_LEN' => 1, ++ '_LT_AC_TAGCONFIG' => 1, ++ 'm4_pattern_forbid' => 1, ++ '_LT_LINKER_OPTION' => 1, ++ 'AC_LIBTOOL_COMPILER_OPTION' => 1, ++ 'AC_DISABLE_SHARED' => 1, ++ '_LT_COMPILER_BOILERPLATE' => 1, ++ 'AC_LIBTOOL_WIN32_DLL' => 1, ++ 'AC_LIBTOOL_SETUP' => 1, ++ 'AC_PROG_LD_RELOAD_FLAG' => 1, ++ 'AC_LTDL_DLSYM_USCORE' => 1, ++ 'AM_MISSING_HAS_RUN' => 1, ++ 'LT_LANG' => 1, ++ 'LT_SYS_DLSEARCH_PATH' => 1, ++ 'LT_CONFIG_LTDL_DIR' => 1, ++ 'AC_LIBTOOL_DLOPEN_SELF' => 1, ++ 'LT_OUTPUT' => 1, ++ 'AC_TYPE_SOCKLEN_T' => 1, ++ 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1, ++ 'AX_PREFIX_CONFIG_H' => 1, ++ 'AC_WITH_LTDL' => 1, ++ 'AC_LIBTOOL_LINKER_OPTION' => 1, ++ 'LT_AC_PROG_RC' => 1, ++ 'AC_LIBTOOL_CXX' => 1, ++ 'LT_INIT' => 1, ++ 'LT_AC_PROG_GCJ' => 1, ++ 'LT_SYS_DLOPEN_SELF' => 1, ++ 'AM_DEP_TRACK' => 1, ++ 'AM_DISABLE_STATIC' => 1, ++ 'AM_CONFIG_HEADER' => 1, ++ '_AC_PROG_LIBTOOL' => 1, ++ '_AM_IF_OPTION' => 1, ++ 'AC_PATH_TOOL_PREFIX' => 1, ++ 'm4_pattern_allow' => 1, ++ 'AC_LIBTOOL_F77' => 1, ++ 'AM_SET_LEADING_DOT' => 1, ++ 'LT_AC_PROG_EGREP' => 1, ++ '_AM_DEPENDENCIES' => 1, ++ 'AC_LIBTOOL_LANG_C_CONFIG' => 1, ++ 'LTOPTIONS_VERSION' => 1, ++ '_LT_AC_SYS_COMPILER' => 1, ++ 'AM_PROG_NM' => 1, ++ 'AC_LIBLTDL_CONVENIENCE' => 1, ++ 'AC_DEPLIBS_CHECK_METHOD' => 1, ++ 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, ++ 'AC_LIBLTDL_INSTALLABLE' => 1, ++ 'AC_LTDL_ENABLE_INSTALL' => 1, ++ 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1, ++ 'LT_PROG_GCJ' => 1, ++ 'AM_INIT_AUTOMAKE' => 1, ++ 'AC_DISABLE_STATIC' => 1, ++ 'LT_PATH_NM' => 1, ++ 'AC_LTDL_SHLIBEXT' => 1, ++ '_LT_AC_LOCK' => 1, ++ '_LT_AC_LANG_RC_CONFIG' => 1, ++ 'LT_SYS_MODULE_PATH' => 1, ++ 'AC_LIBTOOL_POSTDEP_PREDEP' => 1, ++ 'LT_WITH_LTDL' => 1, ++ 'AC_LTDL_SHLIBPATH' => 1, ++ 'AM_AUX_DIR_EXPAND' => 1, ++ '_LT_AC_LANG_F77_CONFIG' => 1, ++ 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1, ++ '_AM_SET_OPTIONS' => 1, ++ '_LT_COMPILER_OPTION' => 1, ++ '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, ++ 'AM_RUN_LOG' => 1, ++ 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1, ++ 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1, ++ 'AC_LIBTOOL_PICMODE' => 1, ++ 'LT_PATH_LD' => 1, ++ 'AC_CHECK_LIBM' => 1, ++ 'AC_LIBTOOL_SYS_LIB_STRIP' => 1, ++ '_AM_MANGLE_OPTION' => 1, ++ 'AC_LTDL_SYMBOL_USCORE' => 1, ++ 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1, ++ 'AM_SET_DEPDIR' => 1, ++ '_LT_CC_BASENAME' => 1, ++ '_LT_LIBSOURCES' => 1, ++ '_LT_LIBOBJ' => 1 ++ } ++ ], 'Autom4te::Request' ), ++ bless( [ ++ '1', ++ 1, ++ [ ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/autoconf' ++ ], ++ [ ++ '/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/autoconf/autoconf/autoconf.m4f', ++ 'aclocal.m4', ++ 'configure.ac' ++ ], ++ { ++ '_LT_AC_TAGCONFIG' => 1, ++ 'AM_PROG_F77_C_O' => 1, ++ 'm4_pattern_forbid' => 1, ++ 'AC_INIT' => 1, ++ 'AC_CANONICAL_TARGET' => 1, ++ 'AC_SUBST' => 1, ++ 'AC_CONFIG_LIBOBJ_DIR' => 1, ++ 'AC_FC_SRCEXT' => 1, ++ 'AC_CANONICAL_HOST' => 1, ++ 'AC_PROG_LIBTOOL' => 1, ++ 'AM_INIT_AUTOMAKE' => 1, ++ 'AC_CONFIG_SUBDIRS' => 1, ++ 'AM_AUTOMAKE_VERSION' => 1, ++ 'LT_CONFIG_LTDL_DIR' => 1, ++ 'AC_REQUIRE_AUX_FILE' => 1, ++ 'AC_CONFIG_LINKS' => 1, ++ 'm4_sinclude' => 1, ++ 'LT_SUPPORTED_TAG' => 1, ++ 'AM_MAINTAINER_MODE' => 1, ++ 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, ++ '_m4_warn' => 1, ++ 'AM_PROG_CXX_C_O' => 1, ++ 'AM_ENABLE_MULTILIB' => 1, ++ 'AC_CONFIG_FILES' => 1, ++ 'LT_INIT' => 1, ++ 'include' => 1, ++ 'AM_GNU_GETTEXT' => 1, ++ 'AC_LIBSOURCE' => 1, ++ 'AM_PROG_FC_C_O' => 1, ++ 'AC_CANONICAL_BUILD' => 1, ++ 'AC_FC_FREEFORM' => 1, ++ 'AH_OUTPUT' => 1, ++ '_AM_SUBST_NOTMAKE' => 1, ++ 'AC_CONFIG_AUX_DIR' => 1, ++ 'sinclude' => 1, ++ 'm4_pattern_allow' => 1, ++ 'AM_PROG_CC_C_O' => 1, ++ 'AC_CANONICAL_SYSTEM' => 1, ++ 'AM_CONDITIONAL' => 1, ++ 'AC_CONFIG_HEADERS' => 1, ++ 'AC_DEFINE_TRACE_LITERAL' => 1, ++ 'm4_include' => 1, ++ 'AC_SUBST_TRACE' => 1 ++ } ++ ], 'Autom4te::Request' ) ++ ); ++ +diff -Nur LibVNCServer-0.9.1.orig/autom4te.cache/traces.0 LibVNCServer-0.9.1/autom4te.cache/traces.0 +--- LibVNCServer-0.9.1.orig/autom4te.cache/traces.0 1969-12-31 21:00:00.000000000 -0300 ++++ LibVNCServer-0.9.1/autom4te.cache/traces.0 2008-10-31 18:46:23.000000000 -0200 +@@ -0,0 +1,3027 @@ ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/argz.m4:12: -1- AC_DEFUN([gl_FUNC_ARGZ], [gl_PREREQ_ARGZ ++ ++AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT]) ++ ++AC_CHECK_TYPES([error_t], ++ [], ++ [AC_DEFINE([error_t], [int], ++ [Define to a type to use for `error_t' if it is not otherwise available.]) ++ AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h ++ does not typedef error_t.])], ++ [#if defined(HAVE_ARGZ_H) ++# include ++#endif]) ++ ++ARGZ_H= ++AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \ ++ argz_next argz_stringify], [], [ARGZ_H=argz.h; AC_LIBOBJ([argz])]) ++ ++dnl if have system argz functions, allow forced use of ++dnl libltdl-supplied implementation (and default to do so ++dnl on "known bad" systems). Could use a runtime check, but ++dnl (a) detecting malloc issues is notoriously unreliable ++dnl (b) only known system that declares argz functions, ++dnl provides them, yet they are broken, is cygwin ++dnl releases prior to 16-Mar-2007 (1.5.24 and earlier) ++dnl So, it's more straightforward simply to special case ++dnl this for known bad systems. ++AS_IF([test -z "$ARGZ_H"], ++ [AC_CACHE_CHECK( ++ [if argz actually works], ++ [lt_cv_sys_argz_works], ++ [[case $host_os in #( ++ *cygwin*) ++ lt_cv_sys_argz_works=no ++ if test "$cross_compiling" != no; then ++ lt_cv_sys_argz_works="guessing no" ++ else ++ lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/' ++ save_IFS=$IFS ++ IFS=-. ++ set x `uname -r | sed -e "$lt_sed_extract_leading_digits"` ++ IFS=$save_IFS ++ lt_os_major=${2-0} ++ lt_os_minor=${3-0} ++ lt_os_micro=${4-0} ++ if test "$lt_os_major" -gt 1 \ ++ || { test "$lt_os_major" -eq 1 \ ++ && { test "$lt_os_minor" -gt 5 \ ++ || { test "$lt_os_minor" -eq 5 \ ++ && test "$lt_os_micro" -gt 24; }; }; }; then ++ lt_cv_sys_argz_works=yes ++ fi ++ fi ++ ;; #( ++ *) lt_cv_sys_argz_works=yes ;; ++ esac]]) ++ AS_IF([test $lt_cv_sys_argz_works = yes], ++ [AC_DEFINE([HAVE_WORKING_ARGZ], 1, ++ [This value is set to 1 to indicate that the system argz facility works])], ++ [ARGZ_H=argz.h ++ AC_LIBOBJ([argz])])]) ++ ++AC_SUBST([ARGZ_H]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/argz.m4:79: -1- AC_DEFUN([gl_PREREQ_ARGZ], [:]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:67: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT ++AC_BEFORE([$0], [LT_LANG])dnl ++AC_BEFORE([$0], [LT_OUTPUT])dnl ++AC_BEFORE([$0], [LTDL_INIT])dnl ++m4_require([_LT_CHECK_BUILDDIR])dnl ++ ++dnl Autoconf doesn't catch unexpanded LT_ macros by default: ++m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl ++m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl ++dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 ++dnl unless we require an AC_DEFUNed macro: ++AC_REQUIRE([LTOPTIONS_VERSION])dnl ++AC_REQUIRE([LTSUGAR_VERSION])dnl ++AC_REQUIRE([LTVERSION_VERSION])dnl ++AC_REQUIRE([LTOBSOLETE_VERSION])dnl ++m4_require([_LT_PROG_LTMAIN])dnl ++ ++dnl Parse OPTIONS ++_LT_SET_OPTIONS([$0], [$1]) ++ ++# This can be used to rebuild libtool when needed ++LIBTOOL_DEPS="$ltmain" ++ ++# Always use our own libtool. ++LIBTOOL='$(SHELL) $(top_builddir)' ++LIBTOOL="$LIBTOOL/$host_alias-libtool" ++AC_SUBST(LIBTOOL)dnl ++ ++_LT_SETUP ++ ++# Only expand once: ++m4_define([LT_INIT]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:103: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:103: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:104: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:104: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:563: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} ++AC_MSG_NOTICE([creating $CONFIG_LT]) ++cat >"$CONFIG_LT" <<_LTEOF ++#! $SHELL ++# Generated by $as_me. ++# Run this file to recreate a libtool stub with the current configuration. ++ ++lt_cl_silent=false ++SHELL=\${CONFIG_SHELL-$SHELL} ++_LTEOF ++ ++cat >>"$CONFIG_LT" <<\_LTEOF ++AS_SHELL_SANITIZE ++_AS_PREPARE ++ ++exec AS_MESSAGE_FD>&1 ++exec AS_MESSAGE_LOG_FD>>config.log ++{ ++ echo ++ AS_BOX([Running $as_me.]) ++} >&AS_MESSAGE_LOG_FD ++ ++lt_cl_help="\ ++\`$as_me' creates a local libtool stub from the current configuration, ++for use in further configure time tests before the real libtool is ++generated. ++ ++Usage: $[0] [[OPTIONS]] ++ ++ -h, --help print this help, then exit ++ -V, --version print version number, then exit ++ -q, --quiet do not print progress messages ++ -d, --debug don't remove temporary files ++ ++Report bugs to ." ++ ++lt_cl_version="\ ++m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl ++m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) ++configured by $[0], generated by m4_PACKAGE_STRING. ++ ++Copyright (C) 2008 Free Software Foundation, Inc. ++This config.lt script is free software; the Free Software Foundation ++gives unlimited permision to copy, distribute and modify it." ++ ++while test $[#] != 0 ++do ++ case $[1] in ++ --version | --v* | -V ) ++ echo "$lt_cl_version"; exit 0 ;; ++ --help | --h* | -h ) ++ echo "$lt_cl_help"; exit 0 ;; ++ --debug | --d* | -d ) ++ debug=: ;; ++ --quiet | --q* | --silent | --s* | -q ) ++ lt_cl_silent=: ;; ++ ++ -*) AC_MSG_ERROR([unrecognized option: $[1] ++Try \`$[0] --help' for more information.]) ;; ++ ++ *) AC_MSG_ERROR([unrecognized argument: $[1] ++Try \`$[0] --help' for more information.]) ;; ++ esac ++ shift ++done ++ ++if $lt_cl_silent; then ++ exec AS_MESSAGE_FD>/dev/null ++fi ++_LTEOF ++ ++cat >>"$CONFIG_LT" <<_LTEOF ++_LT_OUTPUT_LIBTOOL_COMMANDS_INIT ++_LTEOF ++ ++cat >>"$CONFIG_LT" <<\_LTEOF ++AC_MSG_NOTICE([creating $ofile]) ++_LT_OUTPUT_LIBTOOL_COMMANDS ++AS_EXIT(0) ++_LTEOF ++chmod +x "$CONFIG_LT" ++ ++# configure is writing to config.log, but config.lt does its own redirection, ++# appending to config.log, which fails on DOS, as config.log is still kept ++# open by configure. Here we exec the FD to /dev/null, effectively closing ++# config.log, so it can be properly (re)opened and appended to by config.lt. ++if test "$no_create" != yes; then ++ lt_cl_success=: ++ test "$silent" = yes && ++ lt_config_lt_args="$lt_config_lt_args --quiet" ++ exec AS_MESSAGE_LOG_FD>/dev/null ++ $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false ++ exec AS_MESSAGE_LOG_FD>>config.log ++ $lt_cl_success || AS_EXIT(1) ++fi ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:758: -1- AC_DEFUN([LT_SUPPORTED_TAG], []) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:769: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl ++m4_case([$1], ++ [C], [_LT_LANG(C)], ++ [C++], [_LT_LANG(CXX)], ++ [Java], [_LT_LANG(GCJ)], ++ [Fortran 77], [_LT_LANG(F77)], ++ [Fortran], [_LT_LANG(FC)], ++ [Windows Resource], [_LT_LANG(RC)], ++ [m4_ifdef([_LT_LANG_]$1[_CONFIG], ++ [_LT_LANG($1)], ++ [m4_fatal([$0: unsupported language: "$1"])])])dnl ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:831: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:831: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete. ++You should run autoupdate.])dnl ++LT_LANG(C++)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:832: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:832: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete. ++You should run autoupdate.])dnl ++LT_LANG(Fortran 77)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:833: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:833: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete. ++You should run autoupdate.])dnl ++LT_LANG(Fortran)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:834: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:834: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete. ++You should run autoupdate.])dnl ++LT_LANG(Java)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:1399: -1- AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl ++m4_require([_LT_DECL_SED])dnl ++AC_CACHE_CHECK([$1], [$2], ++ [$2=no ++ m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$3" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&AS_MESSAGE_LOG_FD ++ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ $2=yes ++ fi ++ fi ++ $RM conftest* ++]) ++ ++if test x"[$]$2" = xyes; then ++ m4_if([$5], , :, [$5]) ++else ++ m4_if([$6], , :, [$6]) ++fi ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:1441: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:1441: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:1450: -1- AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl ++m4_require([_LT_DECL_SED])dnl ++AC_CACHE_CHECK([$1], [$2], ++ [$2=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $3" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&AS_MESSAGE_LOG_FD ++ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ $2=yes ++ fi ++ else ++ $2=yes ++ fi ++ fi ++ $RM -r conftest* ++ LDFLAGS="$save_LDFLAGS" ++]) ++ ++if test x"[$]$2" = xyes; then ++ m4_if([$4], , :, [$4]) ++else ++ m4_if([$5], , :, [$5]) ++fi ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:1485: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:1485: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:1492: -1- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl ++# find the maximum length of command line arguments ++AC_MSG_CHECKING([the maximum length of command line arguments]) ++AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl ++ i=0 ++ teststring="ABCD" ++ ++ case $build_os in ++ msdosdjgpp*) ++ # On DJGPP, this test can blow up pretty badly due to problems in libc ++ # (any single argument exceeding 2000 bytes causes a buffer overrun ++ # during glob expansion). Even if it were fixed, the result of this ++ # check would be larger than it should be. ++ lt_cv_sys_max_cmd_len=12288; # 12K is about right ++ ;; ++ ++ gnu*) ++ # Under GNU Hurd, this test is not required because there is ++ # no limit to the length of command line arguments. ++ # Libtool will interpret -1 as no limit whatsoever ++ lt_cv_sys_max_cmd_len=-1; ++ ;; ++ ++ cygwin* | mingw*) ++ # On Win9x/ME, this test blows up -- it succeeds, but takes ++ # about 5 minutes as the teststring grows exponentially. ++ # Worse, since 9x/ME are not pre-emptively multitasking, ++ # you end up with a "frozen" computer, even though with patience ++ # the test eventually succeeds (with a max line length of 256k). ++ # Instead, let's just punt: use the minimum linelength reported by ++ # all of the supported platforms: 8192 (on NT/2K/XP). ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ amigaos*) ++ # On AmigaOS with pdksh, this test takes hours, literally. ++ # So we just punt and use a minimum line length of 8192. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) ++ # This has been around since 386BSD, at least. Likely further. ++ if test -x /sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` ++ elif test -x /usr/sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` ++ else ++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs ++ fi ++ # And add a safety zone ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ ;; ++ ++ interix*) ++ # We know the value 262144 and hardcode it with a safety zone (like BSD) ++ lt_cv_sys_max_cmd_len=196608 ++ ;; ++ ++ osf*) ++ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure ++ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not ++ # nice to cause kernel panics so lets avoid the loop below. ++ # First set a reasonable default. ++ lt_cv_sys_max_cmd_len=16384 ++ # ++ if test -x /sbin/sysconfig; then ++ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in ++ *1*) lt_cv_sys_max_cmd_len=-1 ;; ++ esac ++ fi ++ ;; ++ sco3.2v5*) ++ lt_cv_sys_max_cmd_len=102400 ++ ;; ++ sysv5* | sco5v6* | sysv4.2uw2*) ++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` ++ if test -n "$kargmax"; then ++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` ++ else ++ lt_cv_sys_max_cmd_len=32768 ++ fi ++ ;; ++ *) ++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` ++ if test -n "$lt_cv_sys_max_cmd_len"; then ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ else ++ # Make teststring a little bigger before we do anything with it. ++ # a 1K string should be a reasonable start. ++ for i in 1 2 3 4 5 6 7 8 ; do ++ teststring=$teststring$teststring ++ done ++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} ++ # If test is not a shell built-in, we'll probably end up computing a ++ # maximum length that is only half of the actual maximum length, but ++ # we can't tell. ++ while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ ++ = "XX$teststring$teststring"; } >/dev/null 2>&1 && ++ test $i != 17 # 1/2 MB should be enough ++ do ++ i=`expr $i + 1` ++ teststring=$teststring$teststring ++ done ++ # Only check the string length outside the loop. ++ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` ++ teststring= ++ # Add a significant safety factor because C++ compilers can tack on ++ # massive amounts of additional arguments before passing them to the ++ # linker. It appears as though 1/2 is a usable value. ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ++ fi ++ ;; ++ esac ++]) ++if test -n $lt_cv_sys_max_cmd_len ; then ++ AC_MSG_RESULT($lt_cv_sys_max_cmd_len) ++else ++ AC_MSG_RESULT(none) ++fi ++max_cmd_len=$lt_cv_sys_max_cmd_len ++_LT_DECL([], [max_cmd_len], [0], ++ [What is the maximum length of a command?]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:1620: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:1620: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:1725: -1- AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl ++if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++ lt_cv_dlopen=no ++ lt_cv_dlopen_libs= ++ ++ case $host_os in ++ beos*) ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; ++ ++ mingw* | pw32*) ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ cygwin*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ darwin*) ++ # if libdl is installed we need to link against it ++ AC_CHECK_LIB([dl], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ ++ lt_cv_dlopen="dyld" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ]) ++ ;; ++ ++ *) ++ AC_CHECK_FUNC([shl_load], ++ [lt_cv_dlopen="shl_load"], ++ [AC_CHECK_LIB([dld], [shl_load], ++ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], ++ [AC_CHECK_FUNC([dlopen], ++ [lt_cv_dlopen="dlopen"], ++ [AC_CHECK_LIB([dl], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], ++ [AC_CHECK_LIB([svld], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], ++ [AC_CHECK_LIB([dld], [dld_link], ++ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ++ ]) ++ ]) ++ ]) ++ ]) ++ ]) ++ ;; ++ esac ++ ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ else ++ enable_dlopen=no ++ fi ++ ++ case $lt_cv_dlopen in ++ dlopen) ++ save_CPPFLAGS="$CPPFLAGS" ++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++ ++ save_LDFLAGS="$LDFLAGS" ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ ++ save_LIBS="$LIBS" ++ LIBS="$lt_cv_dlopen_libs $LIBS" ++ ++ AC_CACHE_CHECK([whether a program can dlopen itself], ++ lt_cv_dlopen_self, [dnl ++ _LT_TRY_DLOPEN_SELF( ++ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, ++ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ++ ]) ++ ++ if test "x$lt_cv_dlopen_self" = xyes; then ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" ++ AC_CACHE_CHECK([whether a statically linked program can dlopen itself], ++ lt_cv_dlopen_self_static, [dnl ++ _LT_TRY_DLOPEN_SELF( ++ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, ++ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ++ ]) ++ fi ++ ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ ;; ++ esac ++ ++ case $lt_cv_dlopen_self in ++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; ++ *) enable_dlopen_self=unknown ;; ++ esac ++ ++ case $lt_cv_dlopen_self_static in ++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; ++ *) enable_dlopen_self_static=unknown ;; ++ esac ++fi ++_LT_DECL([dlopen_support], [enable_dlopen], [0], ++ [Whether dlopen is supported]) ++_LT_DECL([dlopen_self], [enable_dlopen_self], [0], ++ [Whether dlopen of programs is supported]) ++_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], ++ [Whether dlopen of statically linked programs is supported]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:1842: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:1842: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:2729: -1- AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl ++AC_MSG_CHECKING([for $1]) ++AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, ++[case $MAGIC_CMD in ++[[\\/*] | ?:[\\/]*]) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++dnl $ac_dummy forces splitting on constant user-supplied paths. ++dnl POSIX.2 word splitting is done only on the output of word expansions, ++dnl not every word. This closes a longstanding sh security hole. ++ ac_dummy="m4_if([$2], , $PATH, [$2])" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/$1; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/$1" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++_LT_EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac]) ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ AC_MSG_RESULT($MAGIC_CMD) ++else ++ AC_MSG_RESULT(no) ++fi ++_LT_DECL([], [MAGIC_CMD], [0], ++ [Used to examine libraries when file_magic_cmd begins with "file"])dnl ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:2791: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:2791: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:2814: -1- AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([AC_CANONICAL_HOST])dnl ++AC_REQUIRE([AC_CANONICAL_BUILD])dnl ++m4_require([_LT_DECL_SED])dnl ++m4_require([_LT_DECL_EGREP])dnl ++ ++AC_ARG_WITH([gnu-ld], ++ [AS_HELP_STRING([--with-gnu-ld], ++ [assume the C compiler uses GNU ld @<:@default=no@:>@])], ++ [test "$withval" = no || with_gnu_ld=yes], ++ [with_gnu_ld=no])dnl ++ ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ AC_MSG_CHECKING([for ld used by $CC]) ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [[\\/]]* | ?:[[\\/]]*) ++ re_direlt='/[[^/]][[^/]]*/\.\./' ++ # Canonicalize the pathname of ld ++ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` ++ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown ++ ;; ++ esac ++elif test "$with_gnu_ld" = yes; then ++ AC_MSG_CHECKING([for GNU ld]) ++else ++ AC_MSG_CHECKING([for non-GNU ld]) ++fi ++AC_CACHE_VAL(lt_cv_path_LD, ++[if test -z "$LD"; then ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ lt_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some variants of GNU ld only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$lt_cv_path_LD" -v 2>&1 &1 | sed '1q'` in ++ */dev/null* | *'Invalid file or object type'*) ++ lt_cv_path_NM="$tmp_nm -B" ++ break ++ ;; ++ *) ++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in ++ */dev/null*) ++ lt_cv_path_NM="$tmp_nm -p" ++ break ++ ;; ++ *) ++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ done ++ IFS="$lt_save_ifs" ++ done ++ : ${lt_cv_path_NM=no} ++fi]) ++if test "$lt_cv_path_NM" != "no"; then ++ NM="$lt_cv_path_NM" ++else ++ # Didn't find any BSD compatible name lister, look for dumpbin. ++ AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) ++ AC_SUBST([DUMPBIN]) ++ if test "$DUMPBIN" != ":"; then ++ NM="$DUMPBIN" ++ fi ++fi ++test -z "$NM" && NM=nm ++AC_SUBST([NM]) ++_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl ++ ++AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], ++ [lt_cv_nm_interface="BSD nm" ++ echo "int some_variable = 0;" > conftest.$ac_ext ++ (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval "$ac_compile" 2>conftest.err) ++ cat conftest.err >&AS_MESSAGE_LOG_FD ++ (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) ++ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) ++ cat conftest.err >&AS_MESSAGE_LOG_FD ++ (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) ++ cat conftest.out >&AS_MESSAGE_LOG_FD ++ if $GREP 'External.*some_variable' conftest.out > /dev/null; then ++ lt_cv_nm_interface="MS dumpbin" ++ fi ++ rm -f conftest*]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:3238: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:3238: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:3239: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:3239: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:3248: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl ++LIBM= ++case $host in ++*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) ++ # These system don't have libm, or don't need it ++ ;; ++*-ncr-sysv4.3*) ++ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") ++ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ++ ;; ++*) ++ AC_CHECK_LIB(m, cos, LIBM="-lm") ++ ;; ++esac ++AC_SUBST([LIBM]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:3267: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:3267: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:6932: -1- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], ++ [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], ++ [AC_CHECK_TOOL(GCJ, gcj,) ++ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" ++ AC_SUBST(GCJFLAGS)])])[]dnl ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:6941: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:6941: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:6948: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:6953: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:6953: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:7052: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:7052: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT]) ++_$0($*) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl ++dnl Although the argument is deprecated and no longer documented, ++dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one ++dnl here make sure it is the same as any other declaration of libltdl's ++dnl location! This also ensures lt_ltdl_dir is set when configure.ac is ++dnl not yet using an explicit LT_CONFIG_LTDL_DIR. ++m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl ++_$0() ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) ++_LTDL_CONVENIENCE]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete. ++You should run autoupdate.])dnl ++_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) ++_LTDL_CONVENIENCE]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl ++dnl Although the argument is deprecated and no longer documented, ++dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one ++dnl here make sure it is the same as any other declaration of libltdl's ++dnl location! This also ensures lt_ltdl_dir is set when configure.ac is ++dnl not yet using an explicit LT_CONFIG_LTDL_DIR. ++m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl ++_$0() ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) ++_LTDL_INSTALLABLE]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete. ++You should run autoupdate.])dnl ++_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) ++_LTDL_INSTALLABLE]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [ ++ m4_pattern_allow([^_LT_LIBOBJS$]) ++ AS_LITERAL_IF([$1], [_LT_LIBSOURCES([$1.c])])dnl ++ _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext" ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:224: -1- AC_DEFUN([_LT_LIBSOURCES], [ ++ m4_foreach([_LTNAME], [$1], [ ++ m4_syscmd([test -r "$lt_libobj_prefix]_LTNAME[" || ++ test -z "$lt_libobj_prefix" || ++ test ! -d "$lt_libobj_prefix"])dnl ++ m4_if(m4_sysval, [0], [], ++ [AC_FATAL([missing $lt_libobj_prefix/]_LTNAME)]) ++ ]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:242: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS ++_LT_SET_OPTIONS([$0], [$1]) ++ ++dnl We need to keep our own list of libobjs separate from our parent project, ++dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while ++dnl we look for our own LIBOBJs. Definitions in ltdl-libobj.m4. ++m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ])) ++m4_pushdef([AC_LIBSOURCES], m4_defn([_LT_LIBSOURCES])) ++ ++dnl If not otherwise defined, default to the 1.5.x compatible subproject mode: ++m4_if(_LTDL_MODE, [], ++ [m4_define([_LTDL_MODE], m4_default([$2], [subproject])) ++ m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])], ++ [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])]) ++ ++AC_ARG_WITH([included_ltdl], ++ [AS_HELP_STRING([--with-included-ltdl], ++ [use the GNU ltdl sources included here])]) ++ ++if test "x$with_included_ltdl" != xyes; then ++ # We are not being forced to use the included libltdl sources, so ++ # decide whether there is a useful installed version we can use. ++ AC_CHECK_HEADER([ltdl.h], ++ [AC_CHECK_DECL([lt_dlinterface_register], ++ [AC_CHECK_LIB([ltdl], [lt_dlinterface_register], ++ [with_included_ltdl=no], ++ [with_included_ltdl=yes])], ++ [with_included_ltdl=yes], ++ [AC_INCLUDES_DEFAULT ++ #include ])], ++ [with_included_ltdl=yes], ++ [AC_INCLUDES_DEFAULT] ++ ) ++fi ++ ++dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE ++dnl was called yet, then for old times' sake, we assume libltdl is in an ++dnl eponymous directory: ++AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])]) ++ ++AC_ARG_WITH([ltdl_include], ++ [AS_HELP_STRING([--with-ltdl-include=DIR], ++ [use the ltdl headers installed in DIR])]) ++ ++if test -n "$with_ltdl_include"; then ++ if test -f "$with_ltdl_include/ltdl.h"; then : ++ else ++ AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include']) ++ fi ++else ++ with_ltdl_include=no ++fi ++ ++AC_ARG_WITH([ltdl_lib], ++ [AS_HELP_STRING([--with-ltdl-lib=DIR], ++ [use the libltdl.la installed in DIR])]) ++ ++if test -n "$with_ltdl_lib"; then ++ if test -f "$with_ltdl_lib/libltdl.la"; then : ++ else ++ AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib']) ++ fi ++else ++ with_ltdl_lib=no ++fi ++ ++case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in ++ ,yes,no,no,) ++ m4_case(m4_default(_LTDL_TYPE, [convenience]), ++ [convenience], [_LTDL_CONVENIENCE], ++ [installable], [_LTDL_INSTALLABLE], ++ [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)]) ++ ;; ++ ,no,no,no,) ++ # If the included ltdl is not to be used, then use the ++ # preinstalled libltdl we found. ++ AC_DEFINE([HAVE_LTDL], [1], ++ [Define this if a modern libltdl is already installed]) ++ LIBLTDL=-lltdl ++ LTDLDEPS= ++ LTDLINCL= ++ ;; ++ ,no*,no,*) ++ AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together]) ++ ;; ++ *) with_included_ltdl=no ++ LIBLTDL="-L$with_ltdl_lib -lltdl" ++ LTDLDEPS= ++ LTDLINCL="-I$with_ltdl_include" ++ ;; ++esac ++INCLTDL="$LTDLINCL" ++ ++# Report our decision... ++AC_MSG_CHECKING([where to find libltdl headers]) ++AC_MSG_RESULT([$LTDLINCL]) ++AC_MSG_CHECKING([where to find libltdl library]) ++AC_MSG_RESULT([$LIBLTDL]) ++ ++_LTDL_SETUP ++ ++dnl restore autoconf definition. ++m4_popdef([AC_LIBOBJ]) ++m4_popdef([AC_LIBSOURCES]) ++ ++AC_CONFIG_COMMANDS_PRE([ ++ _ltdl_libobjs= ++ _ltdl_ltlibobjs= ++ if test -n "$_LT_LIBOBJS"; then ++ # Remove the extension. ++ _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' ++ for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do ++ _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" ++ _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" ++ done ++ fi ++ AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs]) ++ AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs]) ++]) ++ ++# Only expand once: ++m4_define([LTDL_INIT]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:368: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:368: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete. ++You should run autoupdate.])dnl ++LTDL_INIT($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:369: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:369: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete. ++You should run autoupdate.])dnl ++LTDL_INIT($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:370: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:370: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete. ++You should run autoupdate.])dnl ++LTDL_INIT($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:383: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([LT_SYS_MODULE_EXT])dnl ++AC_REQUIRE([LT_SYS_MODULE_PATH])dnl ++AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl ++AC_REQUIRE([LT_LIB_DLLOAD])dnl ++AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl ++AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl ++AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl ++AC_REQUIRE([gl_FUNC_ARGZ])dnl ++ ++m4_require([_LT_CHECK_OBJDIR])dnl ++m4_require([_LT_HEADER_DLFCN])dnl ++m4_require([_LT_CHECK_DLPREOPEN])dnl ++m4_require([_LT_DECL_SED])dnl ++ ++# lt_cv_dlopen_self gets defined by LT_SYS_DLOPEN_SELF, called by LT_INIT ++if test "$lt_cv_dlopen_self" = yes; then ++ AC_DEFINE([LTDL_DLOPEN_SELF_WORKS], [1], ++ [Define if dlopen(NULL) is able to resolve symbols from the main program.]) ++fi ++ ++dnl Don't require this, or it will be expanded earlier than the code ++dnl that sets the variables it relies on: ++_LT_ENABLE_INSTALL ++ ++dnl _LTDL_MODE specific code must be called at least once: ++_LTDL_MODE_DISPATCH ++ ++# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS ++# the user used. This is so that ltdl.h can pick up the parent projects ++# config.h file, The first file in AC_CONFIG_HEADERS must contain the ++# definitions required by ltdl.c. ++# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility). ++AC_CONFIG_COMMANDS_PRE([dnl ++m4_pattern_allow([^LT_CONFIG_H$])dnl ++m4_ifset([AH_HEADER], ++ [LT_CONFIG_H=AH_HEADER], ++ [m4_ifset([AC_LIST_HEADERS], ++ [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[ ]]*,,;s,[[ :]].*$,,'`], ++ [])])]) ++AC_SUBST([LT_CONFIG_H]) ++ ++AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], ++ [], [], [AC_INCLUDES_DEFAULT]) ++ ++AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) ++AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) ++ ++name=ltdl ++LTDLOPEN=`eval "\\$ECHO \"$libname_spec\""` ++AC_SUBST([LTDLOPEN]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:457: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl ++AC_CACHE_CHECK([whether deplibs are loaded by dlopen], ++ [lt_cv_sys_dlopen_deplibs], ++ [# PORTME does your system automatically load deplibs for dlopen? ++ # or its logical equivalent (e.g. shl_load for HP-UX < 11) ++ # For now, we just catch OSes we know something about -- in the ++ # future, we'll try test this programmatically. ++ lt_cv_sys_dlopen_deplibs=unknown ++ case $host_os in ++ aix3*|aix4.1.*|aix4.2.*) ++ # Unknown whether this is true for these versions of AIX, but ++ # we want this `case' here to explicitly catch those versions. ++ lt_cv_sys_dlopen_deplibs=unknown ++ ;; ++ aix[[4-9]]*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ lt_cv_sys_dlopen_deplibs=no ++ ;; ++ esac ++ ;; ++ darwin*) ++ # Assuming the user has installed a libdl from somewhere, this is true ++ # If you are looking for one http://www.opendarwin.org/projects/dlcompat ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ freebsd* | dragonfly*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ gnu* | linux* | k*bsd*-gnu) ++ # GNU and its variants, using gnu ld.so (Glibc) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ hpux10*|hpux11*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ interix*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ irix[[12345]]*|irix6.[[01]]*) ++ # Catch all versions of IRIX before 6.2, and indicate that we don't ++ # know how it worked for any of those versions. ++ lt_cv_sys_dlopen_deplibs=unknown ++ ;; ++ irix*) ++ # The case above catches anything before 6.2, and it's known that ++ # at 6.2 and later dlopen does load deplibs. ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ netbsd*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ openbsd*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ osf[[1234]]*) ++ # dlopen did load deplibs (at least at 4.x), but until the 5.x series, ++ # it did *not* use an RPATH in a shared library to find objects the ++ # library depends on, so we explicitly say `no'. ++ lt_cv_sys_dlopen_deplibs=no ++ ;; ++ osf5.0|osf5.0a|osf5.1) ++ # dlopen *does* load deplibs and with the right loader patch applied ++ # it even uses RPATH in a shared library to search for shared objects ++ # that the library depends on, but there's no easy way to know if that ++ # patch is installed. Since this is the case, all we can really ++ # say is unknown -- it depends on the patch being installed. If ++ # it is, this changes to `yes'. Without it, it would be `no'. ++ lt_cv_sys_dlopen_deplibs=unknown ++ ;; ++ osf*) ++ # the two cases above should catch all versions of osf <= 5.1. Read ++ # the comments above for what we know about them. ++ # At > 5.1, deplibs are loaded *and* any RPATH in a shared library ++ # is used to find them so we can finally say `yes'. ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ qnx*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ solaris*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ libltdl_cv_sys_dlopen_deplibs=yes ++ ;; ++ esac ++ ]) ++if test "$lt_cv_sys_dlopen_deplibs" != yes; then ++ AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], ++ [Define if the OS needs help to load dependent libraries for dlopen().]) ++fi ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:556: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:556: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:563: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl ++AC_CACHE_CHECK([which extension is used for runtime loadable modules], ++ [libltdl_cv_shlibext], ++[ ++module=yes ++eval libltdl_cv_shlibext=$shrext_cmds ++ ]) ++if test -n "$libltdl_cv_shlibext"; then ++ m4_pattern_allow([LT_MODULE_EXT])dnl ++ AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], ++ [Define to the extension used for runtime loadable modules, say, ".so".]) ++fi ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:579: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:579: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:586: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl ++AC_CACHE_CHECK([which variable specifies run-time module search path], ++ [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"]) ++if test -n "$lt_cv_module_path_var"; then ++ m4_pattern_allow([LT_MODULE_PATH_VAR])dnl ++ AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"], ++ [Define to the name of the environment variable that determines the run-time module search path.]) ++fi ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:598: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:598: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:605: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl ++AC_CACHE_CHECK([for the default library search path], ++ [lt_cv_sys_dlsearch_path], ++ [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"]) ++if test -n "$lt_cv_sys_dlsearch_path"; then ++ sys_dlsearch_path= ++ for dir in $lt_cv_sys_dlsearch_path; do ++ if test -z "$sys_dlsearch_path"; then ++ sys_dlsearch_path="$dir" ++ else ++ sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir" ++ fi ++ done ++ m4_pattern_allow([LT_DLSEARCH_PATH])dnl ++ AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"], ++ [Define to the system default library search path.]) ++fi ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:626: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:626: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:652: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$]) ++LT_DLLOADERS= ++AC_SUBST([LT_DLLOADERS]) ++ ++AC_LANG_PUSH([C]) ++ ++LIBADD_DLOPEN= ++AC_SEARCH_LIBS([dlopen], [dl], ++ [AC_DEFINE([HAVE_LIBDL], [1], ++ [Define if you have the libdl library or equivalent.]) ++ if test "$ac_cv_search_dlopen" != "none required" ; then ++ LIBADD_DLOPEN="-ldl" ++ fi ++ libltdl_cv_lib_dl_dlopen="yes" ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], ++ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H ++# include ++#endif ++ ]], [[dlopen(0, 0);]])], ++ [AC_DEFINE([HAVE_LIBDL], [1], ++ [Define if you have the libdl library or equivalent.]) ++ libltdl_cv_func_dlopen="yes" ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], ++ [AC_CHECK_LIB([svld], [dlopen], ++ [AC_DEFINE([HAVE_LIBDL], [1], ++ [Define if you have the libdl library or equivalent.]) ++ LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes" ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])]) ++if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes ++then ++ lt_save_LIBS="$LIBS" ++ LIBS="$LIBS $LIBADD_DLOPEN" ++ AC_CHECK_FUNCS([dlerror]) ++ LIBS="$lt_save_LIBS" ++fi ++AC_SUBST([LIBADD_DLOPEN]) ++ ++LIBADD_SHL_LOAD= ++AC_CHECK_FUNC([shl_load], ++ [AC_DEFINE([HAVE_SHL_LOAD], [1], ++ [Define if you have the shl_load function.]) ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"], ++ [AC_CHECK_LIB([dld], [shl_load], ++ [AC_DEFINE([HAVE_SHL_LOAD], [1], ++ [Define if you have the shl_load function.]) ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" ++ LIBADD_SHL_LOAD="-ldld"])]) ++AC_SUBST([LIBADD_SHL_LOAD]) ++ ++case $host_os in ++darwin[[1567]].*) ++# We only want this for pre-Mac OS X 10.4. ++ AC_CHECK_FUNC([_dyld_func_lookup], ++ [AC_DEFINE([HAVE_DYLD], [1], ++ [Define if you have the _dyld_func_lookup function.]) ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"]) ++ ;; ++beos*) ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" ++ ;; ++cygwin* | mingw* | os2* | pw32*) ++ AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include ]]) ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" ++ ;; ++esac ++ ++AC_CHECK_LIB([dld], [dld_link], ++ [AC_DEFINE([HAVE_DLD], [1], ++ [Define if you have the GNU dld library.]) ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"]) ++AC_SUBST([LIBADD_DLD_LINK]) ++ ++m4_pattern_allow([^LT_DLPREOPEN$]) ++LT_DLPREOPEN= ++if test -n "$LT_DLLOADERS" ++then ++ for lt_loader in $LT_DLLOADERS; do ++ LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " ++ done ++ AC_DEFINE([HAVE_LIBDLLOADER], [1], ++ [Define if libdlloader will be built on this platform]) ++fi ++AC_SUBST([LT_DLPREOPEN]) ++ ++dnl This isn't used anymore, but set it for backwards compatibility ++LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" ++AC_SUBST([LIBADD_DL]) ++ ++AC_LANG_POP ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:745: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:745: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:753: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl ++AC_CACHE_CHECK([for _ prefix in compiled symbols], ++ [lt_cv_sys_symbol_underscore], ++ [lt_cv_sys_symbol_underscore=no ++ cat > conftest.$ac_ext <<_LT_EOF ++void nm_test_func(){} ++int main(){nm_test_func;return 0;} ++_LT_EOF ++ if AC_TRY_EVAL(ac_compile); then ++ # Now try to grab the symbols. ++ ac_nlist=conftest.nm ++ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then ++ # See whether the symbols have a leading underscore. ++ if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then ++ lt_cv_sys_symbol_underscore=yes ++ else ++ if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then ++ : ++ else ++ echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD ++ fi ++ fi ++ else ++ echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD ++ fi ++ else ++ echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD ++ cat conftest.c >&AS_MESSAGE_LOG_FD ++ fi ++ rm -rf conftest* ++ ]) ++ sys_symbol_underscore=$lt_cv_sys_symbol_underscore ++ AC_SUBST([sys_symbol_underscore]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:790: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:790: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:797: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl ++if test x"$lt_cv_sys_symbol_underscore" = xyes; then ++ if test x"$libltdl_cv_func_dlopen" = xyes || ++ test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then ++ AC_CACHE_CHECK([whether we have to add an underscore for dlsym], ++ [libltdl_cv_need_uscore], ++ [libltdl_cv_need_uscore=unknown ++ save_LIBS="$LIBS" ++ LIBS="$LIBS $LIBADD_DLOPEN" ++ _LT_TRY_DLOPEN_SELF( ++ [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes], ++ [], [libltdl_cv_need_uscore=cross]) ++ LIBS="$save_LIBS" ++ ]) ++ fi ++fi ++ ++if test x"$libltdl_cv_need_uscore" = xyes; then ++ AC_DEFINE([NEED_USCORE], [1], ++ [Define if dlsym() requires a leading underscore in symbol names.]) ++fi ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:822: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltdl.m4:822: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete. ++You should run autoupdate.])dnl ++m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:13: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:110: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you ++put the `dlopen' option into LT_INIT's first parameter.]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:110: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete. ++You should run autoupdate.])dnl ++_LT_SET_OPTION([LT_INIT], [dlopen]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you ++put the `dlopen' option into LT_INIT's first parameter.]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:145: -1- AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl ++_LT_SET_OPTION([LT_INIT], [win32-dll]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you ++put the `win32-dll' option into LT_INIT's first parameter.]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:145: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete. ++You should run autoupdate.])dnl ++AC_REQUIRE([AC_CANONICAL_HOST])dnl ++_LT_SET_OPTION([LT_INIT], [win32-dll]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you ++put the `win32-dll' option into LT_INIT's first parameter.]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:194: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:198: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:202: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:202: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete. ++You should run autoupdate.])dnl ++AC_ENABLE_SHARED($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:203: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:203: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete. ++You should run autoupdate.])dnl ++AC_DISABLE_SHARED($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:248: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:252: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:256: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:256: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete. ++You should run autoupdate.])dnl ++AC_ENABLE_STATIC($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:257: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:257: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete. ++You should run autoupdate.])dnl ++AC_DISABLE_STATIC($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:302: -1- AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you put ++the `fast-install' option into LT_INIT's first parameter.]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:302: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete. ++You should run autoupdate.])dnl ++_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you put ++the `fast-install' option into LT_INIT's first parameter.]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:309: -1- AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you put ++the `disable-fast-install' option into LT_INIT's first parameter.]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:309: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete. ++You should run autoupdate.])dnl ++_LT_SET_OPTION([LT_INIT], [disable-fast-install]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you put ++the `disable-fast-install' option into LT_INIT's first parameter.]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:342: -1- AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you ++put the `pic-only' option into LT_INIT's first parameter.]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltoptions.m4:342: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete. ++You should run autoupdate.])dnl ++_LT_SET_OPTION([LT_INIT], [pic-only]) ++AC_DIAGNOSE([obsolete], ++[$0: Remove this warning and the call to _LT_SET_OPTION when you ++put the `pic-only' option into LT_INIT's first parameter.]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltsugar.m4:13: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.2.4' ++macro_revision='1.2976' ++_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) ++_LT_DECL(, macro_revision, 0) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:36: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:40: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_SHELL_INIT]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_AC_TAGVAR]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:45: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_PREOPEN]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:47: -1- AC_DEFUN([_LT_AC_SYS_COMPILER]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_LOCK]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:49: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:50: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:51: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LTDL_OBJDIR]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:57: -1- AC_DEFUN([AC_PATH_MAGIC]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PROG_LD_GNU]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:60: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:61: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:66: -1- AC_DEFUN([LT_AC_PROG_EGREP]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:71: -1- AC_DEFUN([_AC_PROG_LIBTOOL]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:72: -1- AC_DEFUN([AC_LIBTOOL_SETUP]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:73: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:74: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:75: -1- AC_DEFUN([_LT_AC_TAGCONFIG]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:77: -1- AC_DEFUN([_LT_AC_LANG_CXX]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_F77]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_GCJ]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:80: -1- AC_DEFUN([AC_LIBTOOL_RC]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:81: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:82: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:83: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:84: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:85: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:86: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:87: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:88: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:89: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:90: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:91: -1- AC_DEFUN([AC_LIBTOOL_CONFIG]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/lt~obsolete.m4:92: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.10' ++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.10], [], ++ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.10])dnl ++_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/auxdir.m4:47: -1- 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` ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/cond.m4:15: -1- 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_SUBST([$1_TRUE])dnl ++AC_SUBST([$1_FALSE])dnl ++_AM_SUBST_NOTMAKE([$1_TRUE])dnl ++_AM_SUBST_NOTMAKE([$1_FALSE])dnl ++if $2; then ++ $1_TRUE= ++ $1_FALSE='#' ++else ++ $1_TRUE='#' ++ $1_FALSE= ++fi ++AC_CONFIG_COMMANDS_PRE( ++[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then ++ AC_MSG_ERROR([[conditional "$1" was never defined. ++Usually this means the macro was only invoked conditionally.]]) ++fi])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/depend.m4:28: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl ++AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl ++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=]) ++ ++AC_CACHE_CHECK([dependency style of $depcc], ++ [am_cv_$1_dependencies_compiler_type], ++[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # 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'. ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub ++ ++ am_cv_$1_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` ++ fi ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > 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 ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf ++ ++ case $depmode in ++ nosideeffect) ++ # 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 ++ break ++ fi ++ ;; ++ none) break ;; ++ esac ++ # 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. ++ if depmode=$depmode \ ++ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_$1_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done ++ ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_$1_dependencies_compiler_type=none ++fi ++]) ++AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) ++AM_CONDITIONAL([am__fastdep$1], [ ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/depend.m4:139: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/depend.m4:147: -1- 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]) ++if test "x$enable_dependency_tracking" != xno; then ++ am_depcomp="$ac_aux_dir/depcomp" ++ AMDEPBACKSLASH='\' ++fi ++AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) ++AC_SUBST([AMDEPBACKSLASH])dnl ++_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/depout.m4:14: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; do ++ # 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 ++ # 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. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then ++ dirpart=`AS_DIRNAME("$mf")` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # 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 ++ 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 ++ # Make sure the directory exists. ++ test -f "$dirpart/$file" && continue ++ fdir=`AS_DIRNAME(["$file"])` ++ AS_MKDIR_P([$dirpart/$fdir]) ++ # echo "creating $dirpart/$file" ++ echo '# dummy' > "$dirpart/$file" ++ done ++done ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/depout.m4:64: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], ++ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], ++ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/header.m4:12: -1- AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/header.m4:12: -1- AC_DEFUN([AM_CONFIG_HEADER], [AC_DIAGNOSE([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. ++You should run autoupdate.])dnl ++AC_CONFIG_HEADERS($@)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/init.m4:26: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.60])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 ++AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl ++AC_REQUIRE([AC_PROG_INSTALL])dnl ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) ++ fi ++fi ++ ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' ++ else ++ CYGPATH_W=echo ++ fi ++fi ++AC_SUBST([CYGPATH_W]) ++ ++# 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_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_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 ++ ++# 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_PROG_INSTALL_SH ++AM_PROG_INSTALL_STRIP ++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_AWK])dnl ++AC_REQUIRE([AC_PROG_MAKE_SET])dnl ++AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], ++ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], ++ [_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 ++AC_PROVIDE_IFELSE([AC_PROG_CXX], ++ [_AM_DEPENDENCIES(CXX)], ++ [define([AC_PROG_CXX], ++ 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 ++]) ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/init.m4:113: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $1 | $1:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; ++ esac ++done ++echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} ++AC_SUBST(install_sh)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/lead-dot.m4:12: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null ++mkdir .tst 2>/dev/null ++if test -d .tst; then ++ am__leading_dot=. ++else ++ am__leading_dot=_ ++fi ++rmdir .tst 2>/dev/null ++AC_SUBST([am__leading_dot])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/make.m4:14: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: ++ @echo done ++.PHONY: am__doit ++END ++# If we don't find an include directive, just comment out the code. ++AC_MSG_CHECKING([for style of include used by $am_make]) ++am__include="#" ++am__quote= ++_am_result=none ++# First try GNU make style include. ++echo "include confinc" > confmf ++# We grep out `Entering directory' and `Leaving directory' ++# messages which can occur if `w' ends up in MAKEFLAGS. ++# In particular we don't look at `^make:' because GNU make might ++# be invoked under some other name (usually "gmake"), in which ++# case it prints its new name instead of `make'. ++if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then ++ am__include=include ++ am__quote= ++ _am_result=GNU ++fi ++# Now try BSD make style include. ++if test "$am__include" = "#"; then ++ echo '.include "confinc"' > confmf ++ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then ++ am__include=.include ++ am__quote="\"" ++ _am_result=BSD ++ fi ++fi ++AC_SUBST([am__include]) ++AC_SUBST([am__quote]) ++AC_MSG_RESULT([$_am_result]) ++rm -f confinc confmf ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/missing.m4:14: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) ++$1=${$1-"${am_missing_run}$2"} ++AC_SUBST($1)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/missing.m4:24: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++AC_REQUIRE_AUX_FILE([missing])dnl ++test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" ++# Use eval to expand $SHELL ++if eval "$MISSING --run true"; then ++ am_missing_run="$MISSING --run " ++else ++ am_missing_run= ++ AC_MSG_WARN([`missing' script is too old or missing]) ++fi ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/mkdirp.m4:11: -1- 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 ++]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/options.m4:13: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/options.m4:19: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/options.m4:25: -1- AC_DEFUN([_AM_SET_OPTIONS], [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/options.m4:31: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/runlog.m4:12: -1- 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); }]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/sanity.m4:14: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) ++# Just in case ++sleep 1 ++echo timestamp > conftest.file ++# 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 ++ ++ test "$[2]" = conftest.file ++ ) ++then ++ # Ok. ++ : ++else ++ AC_MSG_ERROR([newly created file is older than distributed files! ++Check your system clock]) ++fi ++AC_MSG_RESULT(yes)]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/strip.m4:17: -1- 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 ++# 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'. ++if test "$cross_compiling" != no; then ++ AC_CHECK_TOOL([STRIP], [strip], :) ++fi ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" ++AC_SUBST([INSTALL_STRIP_PROGRAM])]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) ++m4trace:/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/tar.m4:24: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. ++AM_MISSING_PROG([AMTAR], [tar]) ++m4_if([$1], [v7], ++ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} 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. ++_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 ++ ++ # 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 ++ ++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]) ++]) ++m4trace:acinclude.m4:2: -1- AC_DEFUN([AC_TYPE_SOCKLEN_T], [AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t, ++[ ++ AC_TRY_COMPILE( ++ [#include ++ #include ], ++ [socklen_t len = 42; return 0;], ++ ac_cv_type_socklen_t=yes, ++ ac_cv_type_socklen_t=no) ++]) ++ if test $ac_cv_type_socklen_t != yes; then ++ AC_DEFINE(socklen_t, int) ++ fi ++]) ++m4trace:acinclude.m4:20: -1- AC_DEFUN([AC_COMPILE_CHECK_SIZEOF], [changequote(<<, >>)dnl ++dnl The name to #define. ++define(<>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl ++dnl The cache variable name. ++define(<>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl ++changequote([, ])dnl ++AC_MSG_CHECKING(size of $1) ++AC_CACHE_VAL(AC_CV_NAME, ++[for ac_size in 4 8 1 2 16 $2 ; do # List sizes in rough order of prevalence. ++ AC_TRY_COMPILE([#include "confdefs.h" ++#include ++$2 ++], [switch (0) case 0: case (sizeof ($1) == $ac_size):;], AC_CV_NAME=$ac_size) ++ if test x$AC_CV_NAME != x ; then break; fi ++done ++]) ++if test x$AC_CV_NAME = x ; then ++ AC_MSG_ERROR([cannot determine a size for $1]) ++fi ++AC_MSG_RESULT($AC_CV_NAME) ++AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The number of bytes in type $1]) ++undefine([AC_TYPE_NAME])dnl ++undefine([AC_CV_NAME])dnl ++]) ++m4trace:acinclude.m4:49: -1- AC_DEFUN([AC_CREATE_STDINT_H], [# ------ AC CREATE STDINT H ------------------------------------- ++AC_MSG_CHECKING([for stdint-types....]) ++ac_stdint_h=`echo ifelse($1, , _stdint.h, $1)` ++if test "$ac_stdint_h" = "stdint.h" ; then ++ AC_MSG_RESULT("(are you sure you want them in ./stdint.h?)") ++elif test "$ac_stdint_h" = "inttypes.h" ; then ++ AC_MSG_RESULT("(are you sure you want them in ./inttypes.h?)") ++else ++ AC_MSG_RESULT("(putting them into $ac_stdint_h)") ++fi ++ ++inttype_headers=`echo inttypes.h sys/inttypes.h sys/inttypes.h $2 \ ++| sed -e 's/,/ /g'` ++ ++ ac_cv_header_stdint_x="no-file" ++ ac_cv_header_stdint_o="no-file" ++ ac_cv_header_stdint_u="no-file" ++ for i in stdint.h $inttype_headers ; do ++ unset ac_cv_type_uintptr_t ++ unset ac_cv_type_uint64_t ++ _AC_CHECK_TYPE_NEW(uintptr_t,[ac_cv_header_stdint_x=$i],dnl ++ continue,[#include <$i>]) ++ AC_CHECK_TYPE(uint64_t,[and64="(uint64_t too)"],[and64=""],[#include<$i>]) ++ AC_MSG_RESULT(... seen our uintptr_t in $i $and64) ++ break; ++ done ++ if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ for i in stdint.h $inttype_headers ; do ++ unset ac_cv_type_uint32_t ++ unset ac_cv_type_uint64_t ++ AC_CHECK_TYPE(uint32_t,[ac_cv_header_stdint_o=$i],dnl ++ continue,[#include <$i>]) ++ AC_CHECK_TYPE(uint64_t,[and64="(uint64_t too)"],[and64=""],[#include<$i>]) ++ AC_MSG_RESULT(... seen our uint32_t in $i $and64) ++ break; ++ done ++ if test "$ac_cv_header_stdint_o" = "no-file" ; then ++ for i in sys/types.h $inttype_headers ; do ++ unset ac_cv_type_u_int32_t ++ unset ac_cv_type_u_int64_t ++ AC_CHECK_TYPE(u_int32_t,[ac_cv_header_stdint_u=$i],dnl ++ continue,[#include <$i>]) ++ AC_CHECK_TYPE(uint64_t,[and64="(u_int64_t too)"],[and64=""],[#include<$i>]) ++ AC_MSG_RESULT(... seen our u_int32_t in $i $and64) ++ break; ++ done ++ fi ++ fi ++ ++# ----------------- DONE inttypes.h checks MAYBE C basic types -------- ++ ++if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ AC_COMPILE_CHECK_SIZEOF(char) ++ AC_COMPILE_CHECK_SIZEOF(short) ++ AC_COMPILE_CHECK_SIZEOF(int) ++ AC_COMPILE_CHECK_SIZEOF(long) ++ AC_COMPILE_CHECK_SIZEOF(void*) ++ ac_cv_header_stdint_test="yes" ++else ++ ac_cv_header_stdint_test="no" ++fi ++ ++# ----------------- DONE inttypes.h checks START header ------------- ++_ac_stdint_h=AS_TR_CPP(_$ac_stdint_h) ++AC_MSG_RESULT(creating $ac_stdint_h : $_ac_stdint_h) ++echo "#ifndef" $_ac_stdint_h >$ac_stdint_h ++echo "#define" $_ac_stdint_h "1" >>$ac_stdint_h ++echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint_h ++echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint_h ++if test "$GCC" = "yes" ; then ++ echo "/* generated using a gnu compiler version" `$CC --version` "*/" \ ++ >>$ac_stdint_h ++else ++ echo "/* generated using $CC */" >>$ac_stdint_h ++fi ++echo "" >>$ac_stdint_h ++ ++if test "$ac_cv_header_stdint_x" != "no-file" ; then ++ ac_cv_header_stdint="$ac_cv_header_stdint_x" ++elif test "$ac_cv_header_stdint_o" != "no-file" ; then ++ ac_cv_header_stdint="$ac_cv_header_stdint_o" ++elif test "$ac_cv_header_stdint_u" != "no-file" ; then ++ ac_cv_header_stdint="$ac_cv_header_stdint_u" ++else ++ ac_cv_header_stdint="stddef.h" ++fi ++ ++# ----------------- See if int_least and int_fast types are present ++unset ac_cv_type_int_least32_t ++unset ac_cv_type_int_fast32_t ++AC_CHECK_TYPE(int_least32_t,,,[#include <$ac_cv_header_stdint>]) ++AC_CHECK_TYPE(int_fast32_t,,,[#include<$ac_cv_header_stdint>]) ++ ++if test "$ac_cv_header_stdint" != "stddef.h" ; then ++if test "$ac_cv_header_stdint" != "stdint.h" ; then ++AC_MSG_RESULT(..adding include stddef.h) ++ echo "#include " >>$ac_stdint_h ++fi ; fi ++AC_MSG_RESULT(..adding include $ac_cv_header_stdint) ++ echo "#include <$ac_cv_header_stdint>" >>$ac_stdint_h ++echo "" >>$ac_stdint_h ++ ++# ----------------- DONE header START basic int types ------------- ++if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ AC_MSG_RESULT(... need to look at C basic types) ++dnl ac_cv_header_stdint_test="yes" # moved up before creating the file ++else ++ AC_MSG_RESULT(... seen good stdint.h inttypes) ++dnl ac_cv_header_stdint_test="no" # moved up before creating the file ++fi ++ ++if test "$ac_cv_header_stdint_u" != "no-file" ; then ++ AC_MSG_RESULT(... seen bsd/sysv typedefs) ++ cat >>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h < 199901L ++ ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef long long int64_t; ++typedef unsigned long long uint64_t; ++#endif ++ ++#elif !defined __STRICT_ANSI__ ++#if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__ ++ ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef __int64 int64_t; ++typedef unsigned __int64 uint64_t; ++#endif ++ ++#elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__ ++dnl /* note: all ELF-systems seem to have loff-support which needs 64-bit */ ++ ++#if !defined _NO_LONGLONG ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef long long int64_t; ++typedef unsigned long long uint64_t; ++#endif ++#endif ++ ++#elif defined __alpha || (defined __mips && defined _ABIN32) ++ ++#if !defined _NO_LONGLONG ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef long int64_t; ++typedef unsigned long uint64_t; ++#endif ++#endif ++ /* compiler/cpu type ... or just ISO C99 */ ++#endif ++#endif ++EOF ++ ++# plus a default 64-bit for systems that are likely to be 64-bit ready ++ case "$ac_cv_sizeof_x:$ac_cv_sizeof_voidp:$ac_cv_sizeof_long" in ++ 1:2:8:8) AC_MSG_RESULT(..adding uint64_t default, normal 64-bit system) ++cat >>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <@/_/g"` ++_PKG=`echo ifelse($2, , $PACKAGE, $2)` ++_LOW=`echo _$_PKG | sed -e "y:m4_cr_LETTERS-:m4_cr_letters[]_:"` ++_UPP=`echo $_PKG | sed -e "y:m4_cr_letters-:m4_cr_LETTERS[]_:" -e "/^@<:@m4_cr_digits@:>@/s/^/_/"` ++_INP=`echo ifelse($3, , _, $3)` ++if test "$ac_prefix_conf_INP" = "_"; then ++ for ac_file in : $CONFIG_HEADERS; do test "_$ac_file" = _: && continue ++ test -f "$ac_prefix_conf_INP" && continue ++ case $ac_file in ++ *.h) test -f $ac_file && _INP=$ac_file ;; ++ *) ++ esac ++ done ++fi ++if test "$_INP" = "_"; then ++ case "$_OUT" in ++ */*) _INP=`basename "$_OUT"` ++ ;; ++ *-*) _INP=`echo "$_OUT" | sed -e "s/@<:@_symbol@:>@*-//"` ++ ;; ++ *) _INP=config.h ++ ;; ++ esac ++fi ++if test -z "$_PKG" ; then ++ AC_MSG_ERROR([no prefix for _PREFIX_PKG_CONFIG_H]) ++else ++ if test ! -f "$_INP" ; then if test -f "$srcdir/$_INP" ; then ++ _INP="$srcdir/$_INP" ++ fi fi ++ AC_MSG_NOTICE(creating $_OUT - prefix $_UPP for $_INP defines) ++ if test -f $_INP ; then ++ echo "s/@%:@undef *\\(@<:@m4_cr_LETTERS[]_@:>@\\)/@%:@undef $_UPP""_\\1/" > _script ++ # no! these are things like socklen_t, const, vfork ++ # echo "s/@%:@undef *\\(@<:@m4_cr_letters@:>@\\)/@%:@undef $_LOW""_\\1/" >> _script ++ echo "s/@%:@def[]ine *\\(@<:@m4_cr_LETTERS[]_@:>@@<:@_symbol@:>@*\\)\\(.*\\)/@%:@ifndef $_UPP""_\\1 \\" >> _script ++ echo "@%:@def[]ine $_UPP""_\\1 \\2 \\" >> _script ++ echo "@%:@endif/" >>_script ++ # no! these are things like socklen_t, const, vfork ++ # echo "s/@%:@def[]ine *\\(@<:@m4_cr_letters@:>@@<:@_symbol@:>@*\\)\\(.*\\)/@%:@ifndef $_LOW""_\\1 \\" >> _script ++ # echo "@%:@define $_LOW""_\\1 \\2 \\" >> _script ++ # echo "@%:@endif/" >> _script ++ # now executing _script on _DEF input to create _OUT output file ++ echo "@%:@ifndef $_DEF" >$tmp/pconfig.h ++ echo "@%:@def[]ine $_DEF 1" >>$tmp/pconfig.h ++ echo ' ' >>$tmp/pconfig.h ++ echo /'*' $_OUT. Generated automatically at end of configure. '*'/ >>$tmp/pconfig.h ++ ++ sed -f _script $_INP >>$tmp/pconfig.h ++ echo ' ' >>$tmp/pconfig.h ++ echo '/* once:' $_DEF '*/' >>$tmp/pconfig.h ++ echo "@%:@endif" >>$tmp/pconfig.h ++ if cmp -s $_OUT $tmp/pconfig.h 2>/dev/null; then ++ AC_MSG_NOTICE([$_OUT is unchanged]) ++ else ++ ac_dir=`AS_DIRNAME(["$_OUT"])` ++ AS_MKDIR_P(["$ac_dir"]) ++ rm -f "$_OUT" ++ mv $tmp/pconfig.h "$_OUT" ++ fi ++ cp _script _configs.sed ++ else ++ AC_MSG_ERROR([input file $_INP does not exist - skip generating $_OUT]) ++ fi ++ rm -f conftest.* ++fi ++m4_popdef([_symbol])dnl ++m4_popdef([_script])dnl ++AS_VAR_POPDEF([_INP])dnl ++AS_VAR_POPDEF([_UPP])dnl ++AS_VAR_POPDEF([_LOW])dnl ++AS_VAR_POPDEF([_PKG])dnl ++AS_VAR_POPDEF([_DEF])dnl ++AS_VAR_POPDEF([_OUT])dnl ++],[PACKAGE="$PACKAGE"])]) ++m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_]) ++m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_]) ++m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^AS_FLAGS$]) ++m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?m4_]) ++m4trace:configure.ac:2: -1- m4_pattern_forbid([^dnl$]) ++m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?AS_]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^SHELL$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PATH_SEPARATOR$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^exec_prefix$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^prefix$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^program_transform_name$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^bindir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^sbindir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^libexecdir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^datarootdir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^datadir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^sysconfdir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^sharedstatedir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^localstatedir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^includedir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^oldincludedir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^docdir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^infodir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^htmldir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^dvidir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^pdfdir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^psdir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^libdir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^localedir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^mandir$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^DEFS$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_C$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_N$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_T$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^LIBS$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^build_alias$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^host_alias$]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^target_alias$]) ++m4trace:configure.ac:3: -1- AM_INIT_AUTOMAKE([LibVNCServer], [0.9.1]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) ++m4trace:configure.ac:3: -1- AM_SET_CURRENT_AUTOMAKE_VERSION ++m4trace:configure.ac:3: -1- AM_AUTOMAKE_VERSION([1.10]) ++m4trace:configure.ac:3: -1- _AM_AUTOCONF_VERSION([2.61]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_DATA$]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^am__isrc$]) ++m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([am__isrc]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^CYGPATH_W$]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^PACKAGE$]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^VERSION$]) ++m4trace:configure.ac:3: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) ++ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])]) ++m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([no-define]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^PACKAGE$]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^VERSION$]) ++m4trace:configure.ac:3: -1- AM_SANITY_CHECK ++m4trace:configure.ac:3: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) ++m4trace:configure.ac:3: -1- AM_MISSING_HAS_RUN ++m4trace:configure.ac:3: -1- AM_AUX_DIR_EXPAND ++m4trace:configure.ac:3: -1- m4_pattern_allow([^ACLOCAL$]) ++m4trace:configure.ac:3: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOCONF$]) ++m4trace:configure.ac:3: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOMAKE$]) ++m4trace:configure.ac:3: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOHEADER$]) ++m4trace:configure.ac:3: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^MAKEINFO$]) ++m4trace:configure.ac:3: -1- AM_PROG_INSTALL_SH ++m4trace:configure.ac:3: -1- m4_pattern_allow([^install_sh$]) ++m4trace:configure.ac:3: -1- AM_PROG_INSTALL_STRIP ++m4trace:configure.ac:3: -1- m4_pattern_allow([^STRIP$]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) ++m4trace:configure.ac:3: -1- AM_PROG_MKDIR_P ++m4trace:configure.ac:3: -1- m4_pattern_allow([^mkdir_p$]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^AWK$]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^SET_MAKE$]) ++m4trace:configure.ac:3: -1- AM_SET_LEADING_DOT ++m4trace:configure.ac:3: -1- m4_pattern_allow([^am__leading_dot$]) ++m4trace:configure.ac:3: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], ++ [_AM_PROG_TAR([v7])])]) ++m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([tar-ustar]) ++m4trace:configure.ac:3: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])]) ++m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([tar-pax]) ++m4trace:configure.ac:3: -1- _AM_PROG_TAR([v7]) ++m4trace:configure.ac:3: -1- AM_MISSING_PROG([AMTAR], [tar]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^AMTAR$]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^am__tar$]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^am__untar$]) ++m4trace:configure.ac:3: -1- _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 ++AC_PROVIDE_IFELSE([AC_PROG_CXX], ++ [_AM_DEPENDENCIES(CXX)], ++ [define([AC_PROG_CXX], ++ 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 ++]) ++m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([no-dependencies]) ++m4trace:configure.ac:4: -1- AM_CONFIG_HEADER([rfbconfig.h]) ++m4trace:configure.ac:4: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. ++You should run autoupdate.], [/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal-1.10/header.m4:12: AM_CONFIG_HEADER is expanded from... ++configure.ac:4: the top level]) ++m4trace:configure.ac:5: -1- AX_PREFIX_CONFIG_H([rfb/rfbconfig.h]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CFLAGS$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^LDFLAGS$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^LIBS$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CPPFLAGS$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^ac_ct_CC$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^EXEEXT$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^OBJEXT$]) ++m4trace:configure.ac:8: -1- _AM_DEPENDENCIES([CC]) ++m4trace:configure.ac:8: -1- AM_SET_DEPDIR ++m4trace:configure.ac:8: -1- m4_pattern_allow([^DEPDIR$]) ++m4trace:configure.ac:8: -1- AM_OUTPUT_DEPENDENCY_COMMANDS ++m4trace:configure.ac:8: -1- AM_MAKE_INCLUDE ++m4trace:configure.ac:8: -1- m4_pattern_allow([^am__include$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^am__quote$]) ++m4trace:configure.ac:8: -1- AM_DEP_TRACK ++m4trace:configure.ac:8: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^AMDEP_TRUE$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^AMDEP_FALSE$]) ++m4trace:configure.ac:8: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) ++m4trace:configure.ac:8: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) ++m4trace:configure.ac:8: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CCDEPMODE$]) ++m4trace:configure.ac:8: -1- AM_CONDITIONAL([am__fastdepCC], [ ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) ++m4trace:configure.ac:8: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) ++m4trace:configure.ac:8: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) ++m4trace:configure.ac:14: -1- m4_pattern_allow([^SET_MAKE$]) ++m4trace:configure.ac:15: -1- AC_PROG_LIBTOOL ++m4trace:configure.ac:15: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete. ++You should run autoupdate.], [/home/otavio/hacking/ossystems/oe/tmp/staging/x86_64-linux/usr/share/aclocal/libtool.m4:103: AC_PROG_LIBTOOL is expanded from... ++configure.ac:15: the top level]) ++m4trace:configure.ac:15: -1- LT_INIT ++m4trace:configure.ac:15: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$]) ++m4trace:configure.ac:15: -1- LTOPTIONS_VERSION ++m4trace:configure.ac:15: -1- LTSUGAR_VERSION ++m4trace:configure.ac:15: -1- LTVERSION_VERSION ++m4trace:configure.ac:15: -1- LTOBSOLETE_VERSION ++m4trace:configure.ac:15: -1- _LT_PROG_LTMAIN ++m4trace:configure.ac:15: -1- m4_pattern_allow([^LIBTOOL$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^build$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^build_cpu$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^build_vendor$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^build_os$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^host$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^host_cpu$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^host_vendor$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^host_os$]) ++m4trace:configure.ac:15: -1- LT_PATH_LD ++m4trace:configure.ac:15: -1- m4_pattern_allow([^SED$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^SED$]) ++m4trace:configure.ac:15: -1- AC_PROG_EGREP ++m4trace:configure.ac:15: -1- m4_pattern_allow([^GREP$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^GREP$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^EGREP$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^EGREP$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^FGREP$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^FGREP$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^GREP$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^LD$]) ++m4trace:configure.ac:15: -1- LT_PATH_NM ++m4trace:configure.ac:15: -1- m4_pattern_allow([^DUMPBIN$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^ac_ct_DUMPBIN$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^DUMPBIN$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^NM$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^LN_S$]) ++m4trace:configure.ac:15: -1- LT_CMD_MAX_LEN ++m4trace:configure.ac:15: -1- m4_pattern_allow([^AR$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^STRIP$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^RANLIB$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([LT_OBJDIR]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^LT_OBJDIR$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^lt_ECHO$]) ++m4trace:configure.ac:15: -1- _LT_CC_BASENAME([$compiler]) ++m4trace:configure.ac:15: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH]) ++m4trace:configure.ac:15: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH]) ++m4trace:configure.ac:15: -1- LT_SUPPORTED_TAG([CC]) ++m4trace:configure.ac:15: -1- _LT_COMPILER_BOILERPLATE ++m4trace:configure.ac:15: -1- _LT_LINKER_BOILERPLATE ++m4trace:configure.ac:15: -1- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"]) ++m4trace:configure.ac:15: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t@m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in ++ "" | " "*) ;; ++ *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;; ++ esac], [_LT_TAGVAR(lt_prog_compiler_pic, )= ++ _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no]) ++m4trace:configure.ac:15: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^DSYMUTIL$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^NMEDIT$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^LIPO$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^OTOOL$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^OTOOL64$]) ++m4trace:configure.ac:15: -1- LT_SYS_DLOPEN_SELF ++m4trace:configure.ac:15: -1- m4_pattern_allow([^CPP$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^CPPFLAGS$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^CPP$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^STDC_HEADERS$]) ++m4trace:configure.ac:16: -1- m4_pattern_allow([^AR$]) ++m4trace:configure.ac:31: -1- m4_pattern_allow([^ALLOW24BPP$]) ++m4trace:configure.ac:36: -1- m4_pattern_allow([^with_ffmpeg$]) ++m4trace:configure.ac:37: -1- AM_CONDITIONAL([WITH_FFMPEG], [test ! -z "$with_ffmpeg"]) ++m4trace:configure.ac:37: -1- m4_pattern_allow([^WITH_FFMPEG_TRUE$]) ++m4trace:configure.ac:37: -1- m4_pattern_allow([^WITH_FFMPEG_FALSE$]) ++m4trace:configure.ac:37: -1- _AM_SUBST_NOTMAKE([WITH_FFMPEG_TRUE]) ++m4trace:configure.ac:37: -1- _AM_SUBST_NOTMAKE([WITH_FFMPEG_FALSE]) ++m4trace:configure.ac:41: -1- AM_CONDITIONAL([HAVE_MP3LAME], [test "$HAVE_MP3LAME" = "true"]) ++m4trace:configure.ac:41: -1- m4_pattern_allow([^HAVE_MP3LAME_TRUE$]) ++m4trace:configure.ac:41: -1- m4_pattern_allow([^HAVE_MP3LAME_FALSE$]) ++m4trace:configure.ac:41: -1- _AM_SUBST_NOTMAKE([HAVE_MP3LAME_TRUE]) ++m4trace:configure.ac:41: -1- _AM_SUBST_NOTMAKE([HAVE_MP3LAME_FALSE]) ++m4trace:configure.ac:49: -1- m4_pattern_allow([^X_DISPLAY_MISSING$]) ++m4trace:configure.ac:49: -1- m4_pattern_allow([^X_CFLAGS$]) ++m4trace:configure.ac:49: -1- m4_pattern_allow([^X_PRE_LIBS$]) ++m4trace:configure.ac:49: -1- m4_pattern_allow([^X_LIBS$]) ++m4trace:configure.ac:49: -1- m4_pattern_allow([^X_EXTRA_LIBS$]) ++m4trace:configure.ac:125: -1- m4_pattern_allow([^HAVE_X11$]) ++m4trace:configure.ac:133: -1- m4_pattern_allow([^HAVE_XSHM$]) ++m4trace:configure.ac:137: -1- m4_pattern_allow([^HAVE_SOLARIS_XREADSCREEN$]) ++m4trace:configure.ac:141: -1- m4_pattern_allow([^HAVE_IRIX_XREADDISPLAY$]) ++m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_FBPM$]) ++m4trace:configure.ac:152: -1- m4_pattern_allow([^HAVE_DPMS$]) ++m4trace:configure.ac:157: -1- m4_pattern_allow([^HAVE_XTESTGRABCONTROL$]) ++m4trace:configure.ac:162: -1- m4_pattern_allow([^HAVE_XTEST$]) ++m4trace:configure.ac:168: -1- m4_pattern_allow([^HAVE_RECORD$]) ++m4trace:configure.ac:177: -1- m4_pattern_allow([^HAVE_LIBXTRAP$]) ++m4trace:configure.ac:182: -1- m4_pattern_allow([^HAVE_LIBXTRAP$]) ++m4trace:configure.ac:196: -1- m4_pattern_allow([^HAVE_XKEYBOARD$]) ++m4trace:configure.ac:203: -1- m4_pattern_allow([^HAVE_LIBXINERAMA$]) ++m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_LIBXRANDR$]) ++m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_LIBXFIXES$]) ++m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_LIBXDAMAGE$]) ++m4trace:configure.ac:242: -1- m4_pattern_allow([^X_LIBS$]) ++m4trace:configure.ac:243: -1- AM_CONDITIONAL([HAVE_X], [test $HAVE_X != "false"]) ++m4trace:configure.ac:243: -1- m4_pattern_allow([^HAVE_X_TRUE$]) ++m4trace:configure.ac:243: -1- m4_pattern_allow([^HAVE_X_FALSE$]) ++m4trace:configure.ac:243: -1- _AM_SUBST_NOTMAKE([HAVE_X_TRUE]) ++m4trace:configure.ac:243: -1- _AM_SUBST_NOTMAKE([HAVE_X_FALSE]) ++m4trace:configure.ac:286: -1- m4_pattern_allow([^HAVE_LIBCRYPT$]) ++m4trace:configure.ac:291: -1- m4_pattern_allow([^CRYPT_LIBS$]) ++m4trace:configure.ac:303: -1- m4_pattern_allow([^HAVE_LIBCRYPTO$]) ++m4trace:configure.ac:309: -1- m4_pattern_allow([^HAVE_LIBSSL$]) ++m4trace:configure.ac:314: -1- m4_pattern_allow([^HAVE_LIBSSL$]) ++m4trace:configure.ac:319: -1- m4_pattern_allow([^SSL_LIBS$]) ++m4trace:configure.ac:333: -1- m4_pattern_allow([^HAVE_LINUX_VIDEODEV_H$]) ++m4trace:configure.ac:337: -1- m4_pattern_allow([^HAVE_LINUX_FB_H$]) ++m4trace:configure.ac:341: -1- m4_pattern_allow([^HAVE_LINUX_INPUT_H$]) ++m4trace:configure.ac:344: -1- m4_pattern_allow([^HAVE_LINUX_UINPUT_H$]) ++m4trace:configure.ac:350: -1- m4_pattern_allow([^HAVE_MACOSX_NATIVE_DISPLAY$]) ++m4trace:configure.ac:375: -1- m4_pattern_allow([^HAVE_AVAHI$]) ++m4trace:configure.ac:376: -1- m4_pattern_allow([^AVAHI_CFLAGS$]) ++m4trace:configure.ac:377: -1- m4_pattern_allow([^AVAHI_LIBS$]) ++m4trace:configure.ac:431: -1- m4_pattern_allow([^HAVE_SYSTEM_LIBVNCSERVER$]) ++m4trace:configure.ac:432: -1- m4_pattern_allow([^SYSTEM_LIBVNCSERVER_CFLAGS$]) ++m4trace:configure.ac:433: -1- m4_pattern_allow([^SYSTEM_LIBVNCSERVER_LIBS$]) ++m4trace:configure.ac:435: -1- AM_CONDITIONAL([HAVE_SYSTEM_LIBVNCSERVER], [test "x$with_system_libvncserver" = "xyes"]) ++m4trace:configure.ac:435: -1- m4_pattern_allow([^HAVE_SYSTEM_LIBVNCSERVER_TRUE$]) ++m4trace:configure.ac:435: -1- m4_pattern_allow([^HAVE_SYSTEM_LIBVNCSERVER_FALSE$]) ++m4trace:configure.ac:435: -1- _AM_SUBST_NOTMAKE([HAVE_SYSTEM_LIBVNCSERVER_TRUE]) ++m4trace:configure.ac:435: -1- _AM_SUBST_NOTMAKE([HAVE_SYSTEM_LIBVNCSERVER_FALSE]) ++m4trace:configure.ac:466: -1- m4_pattern_allow([^HAVE_LIBJPEG$]) ++m4trace:configure.ac:512: -1- m4_pattern_allow([^HAVE_LIBZ$]) ++m4trace:configure.ac:541: -1- m4_pattern_allow([^HAVE_LIBPTHREAD$]) ++m4trace:configure.ac:545: -1- AM_CONDITIONAL([HAVE_LIBPTHREAD], [test ! -z "$HAVE_LIBPTHREAD"]) ++m4trace:configure.ac:545: -1- m4_pattern_allow([^HAVE_LIBPTHREAD_TRUE$]) ++m4trace:configure.ac:545: -1- m4_pattern_allow([^HAVE_LIBPTHREAD_FALSE$]) ++m4trace:configure.ac:545: -1- _AM_SUBST_NOTMAKE([HAVE_LIBPTHREAD_TRUE]) ++m4trace:configure.ac:545: -1- _AM_SUBST_NOTMAKE([HAVE_LIBPTHREAD_FALSE]) ++m4trace:configure.ac:552: -1- m4_pattern_allow([^WITH_TIGHTVNC_FILETRANSFER$]) ++m4trace:configure.ac:554: -1- AM_CONDITIONAL([WITH_TIGHTVNC_FILETRANSFER], [test "$with_tightvnc_filetransfer" = "yes"]) ++m4trace:configure.ac:554: -1- m4_pattern_allow([^WITH_TIGHTVNC_FILETRANSFER_TRUE$]) ++m4trace:configure.ac:554: -1- m4_pattern_allow([^WITH_TIGHTVNC_FILETRANSFER_FALSE$]) ++m4trace:configure.ac:554: -1- _AM_SUBST_NOTMAKE([WITH_TIGHTVNC_FILETRANSFER_TRUE]) ++m4trace:configure.ac:554: -1- _AM_SUBST_NOTMAKE([WITH_TIGHTVNC_FILETRANSFER_FALSE]) ++m4trace:configure.ac:556: -1- AM_CONDITIONAL([HAVE_LIBZ], [test ! -z "$HAVE_ZLIB_H"]) ++m4trace:configure.ac:556: -1- m4_pattern_allow([^HAVE_LIBZ_TRUE$]) ++m4trace:configure.ac:556: -1- m4_pattern_allow([^HAVE_LIBZ_FALSE$]) ++m4trace:configure.ac:556: -1- _AM_SUBST_NOTMAKE([HAVE_LIBZ_TRUE]) ++m4trace:configure.ac:556: -1- _AM_SUBST_NOTMAKE([HAVE_LIBZ_FALSE]) ++m4trace:configure.ac:557: -1- AM_CONDITIONAL([HAVE_LIBJPEG], [test ! -z "$HAVE_JPEGLIB_H"]) ++m4trace:configure.ac:557: -1- m4_pattern_allow([^HAVE_LIBJPEG_TRUE$]) ++m4trace:configure.ac:557: -1- m4_pattern_allow([^HAVE_LIBJPEG_FALSE$]) ++m4trace:configure.ac:557: -1- _AM_SUBST_NOTMAKE([HAVE_LIBJPEG_TRUE]) ++m4trace:configure.ac:557: -1- _AM_SUBST_NOTMAKE([HAVE_LIBJPEG_FALSE]) ++m4trace:configure.ac:568: -1- AM_CONDITIONAL([HAVE_LIBSDL], [test "x$with_sdl" = "xyes"]) ++m4trace:configure.ac:568: -1- m4_pattern_allow([^HAVE_LIBSDL_TRUE$]) ++m4trace:configure.ac:568: -1- m4_pattern_allow([^HAVE_LIBSDL_FALSE$]) ++m4trace:configure.ac:568: -1- _AM_SUBST_NOTMAKE([HAVE_LIBSDL_TRUE]) ++m4trace:configure.ac:568: -1- _AM_SUBST_NOTMAKE([HAVE_LIBSDL_FALSE]) ++m4trace:configure.ac:569: -1- m4_pattern_allow([^SDL_CFLAGS$]) ++m4trace:configure.ac:570: -1- m4_pattern_allow([^SDL_LIBS$]) ++m4trace:configure.ac:573: -1- AM_CONDITIONAL([MINGW], [test ! -z "$MINGW" ]) ++m4trace:configure.ac:573: -1- m4_pattern_allow([^MINGW_TRUE$]) ++m4trace:configure.ac:573: -1- m4_pattern_allow([^MINGW_FALSE$]) ++m4trace:configure.ac:573: -1- _AM_SUBST_NOTMAKE([MINGW_TRUE]) ++m4trace:configure.ac:573: -1- _AM_SUBST_NOTMAKE([MINGW_FALSE]) ++m4trace:configure.ac:577: -1- m4_pattern_allow([^WSOCKLIB$]) ++m4trace:configure.ac:580: -1- m4_pattern_allow([^STDC_HEADERS$]) ++m4trace:configure.ac:589: -1- m4_pattern_allow([^const$]) ++m4trace:configure.ac:591: -1- m4_pattern_allow([^WORDS_BIGENDIAN$]) ++m4trace:configure.ac:592: -1- m4_pattern_allow([^size_t$]) ++m4trace:configure.ac:593: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$]) ++m4trace:configure.ac:594: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$]) ++m4trace:configure.ac:595: -1- AC_TYPE_SOCKLEN_T ++m4trace:configure.ac:595: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++../../lib/autoconf/general.m4:1912: AC_CACHE_CHECK is expanded from... ++acinclude.m4:2: AC_TYPE_SOCKLEN_T is expanded from... ++configure.ac:595: the top level]) ++m4trace:configure.ac:595: -1- m4_pattern_allow([^socklen_t$]) ++m4trace:configure.ac:600: -1- AC_CREATE_STDINT_H([rfb/rfbint.h]) ++m4trace:configure.ac:600: -1- AC_COMPILE_CHECK_SIZEOF([char]) ++m4trace:configure.ac:600: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++acinclude.m4:20: AC_COMPILE_CHECK_SIZEOF is expanded from... ++acinclude.m4:49: AC_CREATE_STDINT_H is expanded from... ++configure.ac:600: the top level]) ++m4trace:configure.ac:600: -1- m4_pattern_allow([^SIZEOF_CHAR$]) ++m4trace:configure.ac:600: -1- AC_COMPILE_CHECK_SIZEOF([short]) ++m4trace:configure.ac:600: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++acinclude.m4:20: AC_COMPILE_CHECK_SIZEOF is expanded from... ++acinclude.m4:49: AC_CREATE_STDINT_H is expanded from... ++configure.ac:600: the top level]) ++m4trace:configure.ac:600: -1- m4_pattern_allow([^SIZEOF_SHORT$]) ++m4trace:configure.ac:600: -1- AC_COMPILE_CHECK_SIZEOF([int]) ++m4trace:configure.ac:600: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++acinclude.m4:20: AC_COMPILE_CHECK_SIZEOF is expanded from... ++acinclude.m4:49: AC_CREATE_STDINT_H is expanded from... ++configure.ac:600: the top level]) ++m4trace:configure.ac:600: -1- m4_pattern_allow([^SIZEOF_INT$]) ++m4trace:configure.ac:600: -1- AC_COMPILE_CHECK_SIZEOF([long]) ++m4trace:configure.ac:600: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++acinclude.m4:20: AC_COMPILE_CHECK_SIZEOF is expanded from... ++acinclude.m4:49: AC_CREATE_STDINT_H is expanded from... ++configure.ac:600: the top level]) ++m4trace:configure.ac:600: -1- m4_pattern_allow([^SIZEOF_LONG$]) ++m4trace:configure.ac:600: -1- AC_COMPILE_CHECK_SIZEOF([void*]) ++m4trace:configure.ac:600: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++acinclude.m4:20: AC_COMPILE_CHECK_SIZEOF is expanded from... ++acinclude.m4:49: AC_CREATE_STDINT_H is expanded from... ++configure.ac:600: the top level]) ++m4trace:configure.ac:600: -1- m4_pattern_allow([^SIZEOF_VOIDP$]) ++m4trace:configure.ac:601: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++../../lib/autoconf/general.m4:1912: AC_CACHE_CHECK is expanded from... ++configure.ac:601: the top level]) ++m4trace:configure.ac:611: -1- m4_pattern_allow([^NEED_INADDR_T$]) ++m4trace:configure.ac:615: -1- m4_pattern_allow([^LIB@&t@OBJS$]) ++m4trace:configure.ac:616: -1- m4_pattern_allow([^LSTAT_FOLLOWS_SLASHED_SYMLINK$]) ++m4trace:configure.ac:616: -1- m4_pattern_allow([^LIB@&t@OBJS$]) ++m4trace:configure.ac:616: -1- m4_pattern_allow([^LIB@&t@OBJS$]) ++m4trace:configure.ac:616: -1- m4_pattern_allow([^HAVE_STAT_EMPTY_STRING_BUG$]) ++m4trace:configure.ac:617: -1- m4_pattern_allow([^HAVE_STRFTIME$]) ++m4trace:configure.ac:618: -1- m4_pattern_allow([^HAVE_DOPRNT$]) ++m4trace:configure.ac:619: -1- m4_pattern_allow([^pid_t$]) ++m4trace:configure.ac:619: -1- m4_pattern_allow([^HAVE_WORKING_VFORK$]) ++m4trace:configure.ac:619: -1- m4_pattern_allow([^vfork$]) ++m4trace:configure.ac:619: -1- m4_pattern_allow([^HAVE_WORKING_FORK$]) ++m4trace:configure.ac:620: -1- m4_pattern_allow([^HAVE_LIBNSL$]) ++m4trace:configure.ac:621: -1- m4_pattern_allow([^HAVE_LIBSOCKET$]) ++m4trace:configure.ac:636: -1- m4_pattern_allow([^HAVE_LIBCYGIPC$]) ++m4trace:configure.ac:637: -1- AM_CONDITIONAL([CYGIPC], [test "$HAVE_CYGIPC" = "true"]) ++m4trace:configure.ac:637: -1- m4_pattern_allow([^CYGIPC_TRUE$]) ++m4trace:configure.ac:637: -1- m4_pattern_allow([^CYGIPC_FALSE$]) ++m4trace:configure.ac:637: -1- _AM_SUBST_NOTMAKE([CYGIPC_TRUE]) ++m4trace:configure.ac:637: -1- _AM_SUBST_NOTMAKE([CYGIPC_FALSE]) ++m4trace:configure.ac:640: -1- AM_CONDITIONAL([LINUX], [test -c /dev/vcsa1]) ++m4trace:configure.ac:640: -1- m4_pattern_allow([^LINUX_TRUE$]) ++m4trace:configure.ac:640: -1- m4_pattern_allow([^LINUX_FALSE$]) ++m4trace:configure.ac:640: -1- _AM_SUBST_NOTMAKE([LINUX_TRUE]) ++m4trace:configure.ac:640: -1- _AM_SUBST_NOTMAKE([LINUX_FALSE]) ++m4trace:configure.ac:644: -1- AM_CONDITIONAL([OSX], [test "$HAVE_OSX" = "true"]) ++m4trace:configure.ac:644: -1- m4_pattern_allow([^OSX_TRUE$]) ++m4trace:configure.ac:644: -1- m4_pattern_allow([^OSX_FALSE$]) ++m4trace:configure.ac:644: -1- _AM_SUBST_NOTMAKE([OSX_TRUE]) ++m4trace:configure.ac:644: -1- _AM_SUBST_NOTMAKE([OSX_FALSE]) ++m4trace:configure.ac:650: -1- m4_pattern_allow([^ENOENT_WORKAROUND$]) ++m4trace:configure.ac:663: -1- AM_CONDITIONAL([HAVE_RPM], [test "$RPMSOURCEDIR" != "NOT-FOUND"]) ++m4trace:configure.ac:663: -1- m4_pattern_allow([^HAVE_RPM_TRUE$]) ++m4trace:configure.ac:663: -1- m4_pattern_allow([^HAVE_RPM_FALSE$]) ++m4trace:configure.ac:663: -1- _AM_SUBST_NOTMAKE([HAVE_RPM_TRUE]) ++m4trace:configure.ac:663: -1- _AM_SUBST_NOTMAKE([HAVE_RPM_FALSE]) ++m4trace:configure.ac:664: -1- m4_pattern_allow([^RPMSOURCEDIR$]) ++m4trace:configure.ac:684: -1- m4_pattern_allow([^LIB@&t@OBJS$]) ++m4trace:configure.ac:684: -1- m4_pattern_allow([^LTLIBOBJS$]) ++m4trace:configure.ac:684: -1- _AC_AM_CONFIG_HEADER_HOOK([$ac_file]) ++m4trace:configure.ac:684: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS ++m4trace:configure.ac:684: -1- _LT_PROG_LTMAIN +diff -Nur LibVNCServer-0.9.1.orig/autom4te.cache/traces.1 LibVNCServer-0.9.1/autom4te.cache/traces.1 +--- LibVNCServer-0.9.1.orig/autom4te.cache/traces.1 1969-12-31 21:00:00.000000000 -0300 ++++ LibVNCServer-0.9.1/autom4te.cache/traces.1 2008-10-31 18:46:25.000000000 -0200 +@@ -0,0 +1,1064 @@ ++m4trace:aclocal.m4:8774: -1- m4_include([acinclude.m4]) ++m4trace:acinclude.m4:1: -1- AH_OUTPUT([socklen_t], [/* The type for socklen */ ++#undef socklen_t]) ++m4trace:configure.ac:2: -1- AC_INIT([LibVNCServer], [0.9.1], [http://sourceforge.net/projects/libvncserver]) ++m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_]) ++m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_]) ++m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^AS_FLAGS$]) ++m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?m4_]) ++m4trace:configure.ac:2: -1- m4_pattern_forbid([^dnl$]) ++m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?AS_]) ++m4trace:configure.ac:2: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([SHELL]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^SHELL$]) ++m4trace:configure.ac:2: -1- AC_SUBST([PATH_SEPARATOR]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PATH_SEPARATOR$]) ++m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_NAME]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) ++m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) ++m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) ++m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_STRING]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) ++m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) ++m4trace:configure.ac:2: -1- AC_SUBST([exec_prefix], [NONE]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([exec_prefix]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^exec_prefix$]) ++m4trace:configure.ac:2: -1- AC_SUBST([prefix], [NONE]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([prefix]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^prefix$]) ++m4trace:configure.ac:2: -1- AC_SUBST([program_transform_name], [s,x,x,]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([program_transform_name]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^program_transform_name$]) ++m4trace:configure.ac:2: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([bindir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^bindir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sbindir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^sbindir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libexecdir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^libexecdir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([datarootdir], ['${prefix}/share']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datarootdir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^datarootdir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([datadir], ['${datarootdir}']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datadir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^datadir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sysconfdir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^sysconfdir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sharedstatedir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^sharedstatedir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([localstatedir], ['${prefix}/var']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localstatedir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^localstatedir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([includedir], ['${prefix}/include']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([includedir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^includedir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([oldincludedir], ['/usr/include']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([oldincludedir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^oldincludedir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], ++ ['${datarootdir}/doc/${PACKAGE_TARNAME}'], ++ ['${datarootdir}/doc/${PACKAGE}'])]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([docdir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^docdir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([infodir], ['${datarootdir}/info']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([infodir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^infodir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([htmldir], ['${docdir}']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([htmldir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^htmldir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([dvidir], ['${docdir}']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([dvidir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^dvidir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([pdfdir], ['${docdir}']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([pdfdir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^pdfdir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([psdir], ['${docdir}']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([psdir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^psdir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libdir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^libdir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localedir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^localedir$]) ++m4trace:configure.ac:2: -1- AC_SUBST([mandir], ['${datarootdir}/man']) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([mandir]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^mandir$]) ++m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) ++m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ ++#undef PACKAGE_NAME]) ++m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) ++m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ ++#undef PACKAGE_TARNAME]) ++m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) ++m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ ++#undef PACKAGE_VERSION]) ++m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) ++m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ ++#undef PACKAGE_STRING]) ++m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) ++m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ ++#undef PACKAGE_BUGREPORT]) ++m4trace:configure.ac:2: -1- AC_SUBST([DEFS]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([DEFS]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^DEFS$]) ++m4trace:configure.ac:2: -1- AC_SUBST([ECHO_C]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_C]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_C$]) ++m4trace:configure.ac:2: -1- AC_SUBST([ECHO_N]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_N]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_N$]) ++m4trace:configure.ac:2: -1- AC_SUBST([ECHO_T]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_T]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_T$]) ++m4trace:configure.ac:2: -1- AC_SUBST([LIBS]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([LIBS]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^LIBS$]) ++m4trace:configure.ac:2: -1- AC_SUBST([build_alias]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([build_alias]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^build_alias$]) ++m4trace:configure.ac:2: -1- AC_SUBST([host_alias]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([host_alias]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^host_alias$]) ++m4trace:configure.ac:2: -1- AC_SUBST([target_alias]) ++m4trace:configure.ac:2: -1- AC_SUBST_TRACE([target_alias]) ++m4trace:configure.ac:2: -1- m4_pattern_allow([^target_alias$]) ++m4trace:configure.ac:3: -1- AM_INIT_AUTOMAKE([LibVNCServer], [0.9.1]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) ++m4trace:configure.ac:3: -1- AM_AUTOMAKE_VERSION([1.10]) ++m4trace:configure.ac:3: -1- AC_REQUIRE_AUX_FILE([install-sh]) ++m4trace:configure.ac:3: -1- AC_SUBST([INSTALL_PROGRAM]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) ++m4trace:configure.ac:3: -1- AC_SUBST([INSTALL_SCRIPT]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) ++m4trace:configure.ac:3: -1- AC_SUBST([INSTALL_DATA]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([INSTALL_DATA]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_DATA$]) ++m4trace:configure.ac:3: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([am__isrc]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^am__isrc$]) ++m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([am__isrc]) ++m4trace:configure.ac:3: -1- AC_SUBST([CYGPATH_W]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([CYGPATH_W]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^CYGPATH_W$]) ++m4trace:configure.ac:3: -1- AC_SUBST([PACKAGE], [LibVNCServer]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([PACKAGE]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^PACKAGE$]) ++m4trace:configure.ac:3: -1- AC_SUBST([VERSION], [0.9.1]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([VERSION]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^VERSION$]) ++m4trace:configure.ac:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^PACKAGE$]) ++m4trace:configure.ac:3: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ ++#undef PACKAGE]) ++m4trace:configure.ac:3: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^VERSION$]) ++m4trace:configure.ac:3: -1- AH_OUTPUT([VERSION], [/* Version number of package */ ++#undef VERSION]) ++m4trace:configure.ac:3: -1- AC_REQUIRE_AUX_FILE([missing]) ++m4trace:configure.ac:3: -1- AC_SUBST([ACLOCAL]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([ACLOCAL]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^ACLOCAL$]) ++m4trace:configure.ac:3: -1- AC_SUBST([AUTOCONF]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AUTOCONF]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOCONF$]) ++m4trace:configure.ac:3: -1- AC_SUBST([AUTOMAKE]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AUTOMAKE]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOMAKE$]) ++m4trace:configure.ac:3: -1- AC_SUBST([AUTOHEADER]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AUTOHEADER]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOHEADER$]) ++m4trace:configure.ac:3: -1- AC_SUBST([MAKEINFO]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([MAKEINFO]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^MAKEINFO$]) ++m4trace:configure.ac:3: -1- AC_SUBST([install_sh]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([install_sh]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^install_sh$]) ++m4trace:configure.ac:3: -1- AC_SUBST([STRIP]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([STRIP]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^STRIP$]) ++m4trace:configure.ac:3: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) ++m4trace:configure.ac:3: -1- AC_REQUIRE_AUX_FILE([install-sh]) ++m4trace:configure.ac:3: -1- AC_SUBST([mkdir_p], ["$MKDIR_P"]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([mkdir_p]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^mkdir_p$]) ++m4trace:configure.ac:3: -1- AC_SUBST([AWK]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AWK]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^AWK$]) ++m4trace:configure.ac:3: -1- AC_SUBST([SET_MAKE]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([SET_MAKE]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^SET_MAKE$]) ++m4trace:configure.ac:3: -1- AC_SUBST([am__leading_dot]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([am__leading_dot]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^am__leading_dot$]) ++m4trace:configure.ac:3: -1- AC_SUBST([AMTAR]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AMTAR]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^AMTAR$]) ++m4trace:configure.ac:3: -1- AC_SUBST([am__tar]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([am__tar]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^am__tar$]) ++m4trace:configure.ac:3: -1- AC_SUBST([am__untar]) ++m4trace:configure.ac:3: -1- AC_SUBST_TRACE([am__untar]) ++m4trace:configure.ac:3: -1- m4_pattern_allow([^am__untar$]) ++m4trace:configure.ac:4: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. ++You should run autoupdate.], [aclocal.m4:8277: AM_CONFIG_HEADER is expanded from... ++configure.ac:4: the top level]) ++m4trace:configure.ac:4: -1- AC_CONFIG_HEADERS([rfbconfig.h]) ++m4trace:configure.ac:5: -1- AC_CONFIG_HEADERS([]) ++m4trace:configure.ac:8: -1- AC_SUBST([CC]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CC]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$]) ++m4trace:configure.ac:8: -1- AC_SUBST([CFLAGS]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CFLAGS]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CFLAGS$]) ++m4trace:configure.ac:8: -1- AC_SUBST([LDFLAGS]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([LDFLAGS]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^LDFLAGS$]) ++m4trace:configure.ac:8: -1- AC_SUBST([LIBS]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([LIBS]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^LIBS$]) ++m4trace:configure.ac:8: -1- AC_SUBST([CPPFLAGS]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CPPFLAGS]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CPPFLAGS$]) ++m4trace:configure.ac:8: -1- AC_SUBST([CC]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CC]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$]) ++m4trace:configure.ac:8: -1- AC_SUBST([CC]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CC]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$]) ++m4trace:configure.ac:8: -1- AC_SUBST([CC]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CC]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$]) ++m4trace:configure.ac:8: -1- AC_SUBST([CC]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CC]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$]) ++m4trace:configure.ac:8: -1- AC_SUBST([ac_ct_CC]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([ac_ct_CC]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^ac_ct_CC$]) ++m4trace:configure.ac:8: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([EXEEXT]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^EXEEXT$]) ++m4trace:configure.ac:8: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([OBJEXT]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^OBJEXT$]) ++m4trace:configure.ac:8: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([DEPDIR]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^DEPDIR$]) ++m4trace:configure.ac:8: -1- AC_SUBST([am__include]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([am__include]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^am__include$]) ++m4trace:configure.ac:8: -1- AC_SUBST([am__quote]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([am__quote]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^am__quote$]) ++m4trace:configure.ac:8: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) ++m4trace:configure.ac:8: -1- AC_SUBST([AMDEP_TRUE]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([AMDEP_TRUE]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^AMDEP_TRUE$]) ++m4trace:configure.ac:8: -1- AC_SUBST([AMDEP_FALSE]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([AMDEP_FALSE]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^AMDEP_FALSE$]) ++m4trace:configure.ac:8: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) ++m4trace:configure.ac:8: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) ++m4trace:configure.ac:8: -1- AC_SUBST([AMDEPBACKSLASH]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) ++m4trace:configure.ac:8: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) ++m4trace:configure.ac:8: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CCDEPMODE]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^CCDEPMODE$]) ++m4trace:configure.ac:8: -1- AM_CONDITIONAL([am__fastdepCC], [ ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) ++m4trace:configure.ac:8: -1- AC_SUBST([am__fastdepCC_TRUE]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) ++m4trace:configure.ac:8: -1- AC_SUBST([am__fastdepCC_FALSE]) ++m4trace:configure.ac:8: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) ++m4trace:configure.ac:8: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) ++m4trace:configure.ac:8: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) ++m4trace:configure.ac:8: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) ++m4trace:configure.ac:14: -1- AC_SUBST([SET_MAKE]) ++m4trace:configure.ac:14: -1- AC_SUBST_TRACE([SET_MAKE]) ++m4trace:configure.ac:14: -1- m4_pattern_allow([^SET_MAKE$]) ++m4trace:configure.ac:15: -1- AC_PROG_LIBTOOL ++m4trace:configure.ac:15: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete. ++You should run autoupdate.], [aclocal.m4:121: AC_PROG_LIBTOOL is expanded from... ++configure.ac:15: the top level]) ++m4trace:configure.ac:15: -1- LT_INIT ++m4trace:configure.ac:15: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$]) ++m4trace:configure.ac:15: -1- AC_REQUIRE_AUX_FILE([ltmain.sh]) ++m4trace:configure.ac:15: -1- AC_SUBST([LIBTOOL]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([LIBTOOL]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^LIBTOOL$]) ++m4trace:configure.ac:15: -1- AC_CANONICAL_HOST ++m4trace:configure.ac:15: -1- AC_CANONICAL_BUILD ++m4trace:configure.ac:15: -1- AC_REQUIRE_AUX_FILE([config.sub]) ++m4trace:configure.ac:15: -1- AC_REQUIRE_AUX_FILE([config.guess]) ++m4trace:configure.ac:15: -1- AC_SUBST([build], [$ac_cv_build]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([build]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^build$]) ++m4trace:configure.ac:15: -1- AC_SUBST([build_cpu], [$[1]]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([build_cpu]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^build_cpu$]) ++m4trace:configure.ac:15: -1- AC_SUBST([build_vendor], [$[2]]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([build_vendor]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^build_vendor$]) ++m4trace:configure.ac:15: -1- AC_SUBST([build_os]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([build_os]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^build_os$]) ++m4trace:configure.ac:15: -1- AC_SUBST([host], [$ac_cv_host]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([host]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^host$]) ++m4trace:configure.ac:15: -1- AC_SUBST([host_cpu], [$[1]]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([host_cpu]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^host_cpu$]) ++m4trace:configure.ac:15: -1- AC_SUBST([host_vendor], [$[2]]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([host_vendor]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^host_vendor$]) ++m4trace:configure.ac:15: -1- AC_SUBST([host_os]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([host_os]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^host_os$]) ++m4trace:configure.ac:15: -1- AC_SUBST([SED]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([SED]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^SED$]) ++m4trace:configure.ac:15: -1- AC_SUBST([SED]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([SED]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^SED$]) ++m4trace:configure.ac:15: -1- AC_SUBST([GREP]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([GREP]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^GREP$]) ++m4trace:configure.ac:15: -1- AC_SUBST([GREP]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([GREP]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^GREP$]) ++m4trace:configure.ac:15: -1- AC_SUBST([EGREP]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([EGREP]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^EGREP$]) ++m4trace:configure.ac:15: -1- AC_SUBST([EGREP]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([EGREP]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^EGREP$]) ++m4trace:configure.ac:15: -1- AC_SUBST([FGREP]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([FGREP]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^FGREP$]) ++m4trace:configure.ac:15: -1- AC_SUBST([FGREP]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([FGREP]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^FGREP$]) ++m4trace:configure.ac:15: -1- AC_SUBST([GREP]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([GREP]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^GREP$]) ++m4trace:configure.ac:15: -1- AC_SUBST([LD]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([LD]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^LD$]) ++m4trace:configure.ac:15: -1- AC_SUBST([DUMPBIN]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([DUMPBIN]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^DUMPBIN$]) ++m4trace:configure.ac:15: -1- AC_SUBST([ac_ct_DUMPBIN]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^ac_ct_DUMPBIN$]) ++m4trace:configure.ac:15: -1- AC_SUBST([DUMPBIN]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([DUMPBIN]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^DUMPBIN$]) ++m4trace:configure.ac:15: -1- AC_SUBST([NM]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([NM]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^NM$]) ++m4trace:configure.ac:15: -1- AC_SUBST([LN_S], [$as_ln_s]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([LN_S]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^LN_S$]) ++m4trace:configure.ac:15: -1- AC_SUBST([AR]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([AR]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^AR$]) ++m4trace:configure.ac:15: -1- AC_SUBST([STRIP]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([STRIP]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^STRIP$]) ++m4trace:configure.ac:15: -1- AC_SUBST([RANLIB]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([RANLIB]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^RANLIB$]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([LT_OBJDIR]) ++m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^LT_OBJDIR$]) ++m4trace:configure.ac:15: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries. ++ */ ++#undef LT_OBJDIR]) ++m4trace:configure.ac:15: -1- AC_SUBST([lt_ECHO]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([lt_ECHO]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^lt_ECHO$]) ++m4trace:configure.ac:15: -1- LT_SUPPORTED_TAG([CC]) ++m4trace:configure.ac:15: -1- AC_SUBST([DSYMUTIL]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([DSYMUTIL]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^DSYMUTIL$]) ++m4trace:configure.ac:15: -1- AC_SUBST([NMEDIT]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([NMEDIT]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^NMEDIT$]) ++m4trace:configure.ac:15: -1- AC_SUBST([LIPO]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([LIPO]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^LIPO$]) ++m4trace:configure.ac:15: -1- AC_SUBST([OTOOL]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([OTOOL]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^OTOOL$]) ++m4trace:configure.ac:15: -1- AC_SUBST([OTOOL64]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([OTOOL64]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^OTOOL64$]) ++m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_DLFCN_H]) ++m4trace:configure.ac:15: -1- AC_SUBST([CPP]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([CPP]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^CPP$]) ++m4trace:configure.ac:15: -1- AC_SUBST([CPPFLAGS]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([CPPFLAGS]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^CPPFLAGS$]) ++m4trace:configure.ac:15: -1- AC_SUBST([CPP]) ++m4trace:configure.ac:15: -1- AC_SUBST_TRACE([CPP]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^CPP$]) ++m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) ++m4trace:configure.ac:15: -1- m4_pattern_allow([^STDC_HEADERS$]) ++m4trace:configure.ac:15: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ ++#undef STDC_HEADERS]) ++m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_TYPES_H]) ++m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_STAT_H]) ++m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_STDLIB_H]) ++m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_STRING_H]) ++m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_MEMORY_H]) ++m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_STRINGS_H]) ++m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_INTTYPES_H]) ++m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_STDINT_H]) ++m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_UNISTD_H]) ++m4trace:configure.ac:16: -1- AC_SUBST([AR]) ++m4trace:configure.ac:16: -1- AC_SUBST_TRACE([AR]) ++m4trace:configure.ac:16: -1- m4_pattern_allow([^AR$]) ++m4trace:configure.ac:20: -1- AH_OUTPUT([WITH_TIGHTVNC_FILETRANSFER], [/* Disable TightVNCFileTransfer protocol */ ++#undef WITH_TIGHTVNC_FILETRANSFER]) ++m4trace:configure.ac:26: -1- AH_OUTPUT([ALLOW24BPP], [/* Enable 24 bit per pixel in native framebuffer */ ++#undef ALLOW24BPP]) ++m4trace:configure.ac:31: -1- AC_DEFINE_TRACE_LITERAL([ALLOW24BPP]) ++m4trace:configure.ac:31: -1- m4_pattern_allow([^ALLOW24BPP$]) ++m4trace:configure.ac:33: -1- AH_OUTPUT([FFMPEG], [/* Use ffmpeg (for vnc2mpg) */ ++#undef FFMPEG]) ++m4trace:configure.ac:36: -1- AC_SUBST([with_ffmpeg]) ++m4trace:configure.ac:36: -1- AC_SUBST_TRACE([with_ffmpeg]) ++m4trace:configure.ac:36: -1- m4_pattern_allow([^with_ffmpeg$]) ++m4trace:configure.ac:37: -1- AM_CONDITIONAL([WITH_FFMPEG], [test ! -z "$with_ffmpeg"]) ++m4trace:configure.ac:37: -1- AC_SUBST([WITH_FFMPEG_TRUE]) ++m4trace:configure.ac:37: -1- AC_SUBST_TRACE([WITH_FFMPEG_TRUE]) ++m4trace:configure.ac:37: -1- m4_pattern_allow([^WITH_FFMPEG_TRUE$]) ++m4trace:configure.ac:37: -1- AC_SUBST([WITH_FFMPEG_FALSE]) ++m4trace:configure.ac:37: -1- AC_SUBST_TRACE([WITH_FFMPEG_FALSE]) ++m4trace:configure.ac:37: -1- m4_pattern_allow([^WITH_FFMPEG_FALSE$]) ++m4trace:configure.ac:37: -1- _AM_SUBST_NOTMAKE([WITH_FFMPEG_TRUE]) ++m4trace:configure.ac:37: -1- _AM_SUBST_NOTMAKE([WITH_FFMPEG_FALSE]) ++m4trace:configure.ac:41: -1- AM_CONDITIONAL([HAVE_MP3LAME], [test "$HAVE_MP3LAME" = "true"]) ++m4trace:configure.ac:41: -1- AC_SUBST([HAVE_MP3LAME_TRUE]) ++m4trace:configure.ac:41: -1- AC_SUBST_TRACE([HAVE_MP3LAME_TRUE]) ++m4trace:configure.ac:41: -1- m4_pattern_allow([^HAVE_MP3LAME_TRUE$]) ++m4trace:configure.ac:41: -1- AC_SUBST([HAVE_MP3LAME_FALSE]) ++m4trace:configure.ac:41: -1- AC_SUBST_TRACE([HAVE_MP3LAME_FALSE]) ++m4trace:configure.ac:41: -1- m4_pattern_allow([^HAVE_MP3LAME_FALSE$]) ++m4trace:configure.ac:41: -1- _AM_SUBST_NOTMAKE([HAVE_MP3LAME_TRUE]) ++m4trace:configure.ac:41: -1- _AM_SUBST_NOTMAKE([HAVE_MP3LAME_FALSE]) ++m4trace:configure.ac:49: -1- AC_DEFINE_TRACE_LITERAL([X_DISPLAY_MISSING]) ++m4trace:configure.ac:49: -1- m4_pattern_allow([^X_DISPLAY_MISSING$]) ++m4trace:configure.ac:49: -1- AH_OUTPUT([X_DISPLAY_MISSING], [/* Define to 1 if the X Window System is missing or not being used. */ ++#undef X_DISPLAY_MISSING]) ++m4trace:configure.ac:49: -1- AC_SUBST([X_CFLAGS]) ++m4trace:configure.ac:49: -1- AC_SUBST_TRACE([X_CFLAGS]) ++m4trace:configure.ac:49: -1- m4_pattern_allow([^X_CFLAGS$]) ++m4trace:configure.ac:49: -1- AC_SUBST([X_PRE_LIBS]) ++m4trace:configure.ac:49: -1- AC_SUBST_TRACE([X_PRE_LIBS]) ++m4trace:configure.ac:49: -1- m4_pattern_allow([^X_PRE_LIBS$]) ++m4trace:configure.ac:49: -1- AC_SUBST([X_LIBS]) ++m4trace:configure.ac:49: -1- AC_SUBST_TRACE([X_LIBS]) ++m4trace:configure.ac:49: -1- m4_pattern_allow([^X_LIBS$]) ++m4trace:configure.ac:49: -1- AC_SUBST([X_EXTRA_LIBS]) ++m4trace:configure.ac:49: -1- AC_SUBST_TRACE([X_EXTRA_LIBS]) ++m4trace:configure.ac:49: -1- m4_pattern_allow([^X_EXTRA_LIBS$]) ++m4trace:configure.ac:50: -1- AH_OUTPUT([HAVE_X11], [/* X11 build environment present */ ++#undef HAVE_X11]) ++m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_SYSTEM_LIBVNCSERVER], [/* Use the system libvncserver build environment for x11vnc. */ ++#undef HAVE_SYSTEM_LIBVNCSERVER]) ++m4trace:configure.ac:72: -1- AH_OUTPUT([HAVE_XSHM], [/* MIT-SHM extension build environment present */ ++#undef HAVE_XSHM]) ++m4trace:configure.ac:73: -1- AH_OUTPUT([HAVE_XTEST], [/* XTEST extension build environment present */ ++#undef HAVE_XTEST]) ++m4trace:configure.ac:74: -1- AH_OUTPUT([HAVE_XTESTGRABCONTROL], [/* XTEST extension has XTestGrabControl */ ++#undef HAVE_XTESTGRABCONTROL]) ++m4trace:configure.ac:75: -1- AH_OUTPUT([HAVE_XKEYBOARD], [/* XKEYBOARD extension build environment present */ ++#undef HAVE_XKEYBOARD]) ++m4trace:configure.ac:76: -1- AH_OUTPUT([HAVE_LIBXINERAMA], [/* XINERAMA extension build environment present */ ++#undef HAVE_LIBXINERAMA]) ++m4trace:configure.ac:77: -1- AH_OUTPUT([HAVE_LIBXRANDR], [/* XRANDR extension build environment present */ ++#undef HAVE_LIBXRANDR]) ++m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_LIBXFIXES], [/* XFIXES extension build environment present */ ++#undef HAVE_LIBXFIXES]) ++m4trace:configure.ac:79: -1- AH_OUTPUT([HAVE_LIBXDAMAGE], [/* XDAMAGE extension build environment present */ ++#undef HAVE_LIBXDAMAGE]) ++m4trace:configure.ac:80: -1- AH_OUTPUT([HAVE_LIBXTRAP], [/* DEC-XTRAP extension build environment present */ ++#undef HAVE_LIBXTRAP]) ++m4trace:configure.ac:81: -1- AH_OUTPUT([HAVE_RECORD], [/* RECORD extension build environment present */ ++#undef HAVE_RECORD]) ++m4trace:configure.ac:82: -1- AH_OUTPUT([HAVE_SOLARIS_XREADSCREEN], [/* Solaris XReadScreen available */ ++#undef HAVE_SOLARIS_XREADSCREEN]) ++m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_IRIX_XREADDISPLAY], [/* IRIX XReadDisplay available */ ++#undef HAVE_IRIX_XREADDISPLAY]) ++m4trace:configure.ac:84: -1- AH_OUTPUT([HAVE_FBPM], [/* FBPM extension build environment present */ ++#undef HAVE_FBPM]) ++m4trace:configure.ac:85: -1- AH_OUTPUT([HAVE_DPMS], [/* DPMS extension build environment present */ ++#undef HAVE_DPMS]) ++m4trace:configure.ac:86: -1- AH_OUTPUT([HAVE_LINUX_VIDEODEV_H], [/* video4linux build environment present */ ++#undef HAVE_LINUX_VIDEODEV_H]) ++m4trace:configure.ac:87: -1- AH_OUTPUT([HAVE_LINUX_FB_H], [/* linux fb device build environment present */ ++#undef HAVE_LINUX_FB_H]) ++m4trace:configure.ac:88: -1- AH_OUTPUT([HAVE_LINUX_INPUT_H], [/* linux/input.h present */ ++#undef HAVE_LINUX_INPUT_H]) ++m4trace:configure.ac:89: -1- AH_OUTPUT([HAVE_LINUX_UINPUT_H], [/* linux uinput device build environment present */ ++#undef HAVE_LINUX_UINPUT_H]) ++m4trace:configure.ac:90: -1- AH_OUTPUT([HAVE_MACOSX_NATIVE_DISPLAY], [/* build MacOS X native display support */ ++#undef HAVE_MACOSX_NATIVE_DISPLAY]) ++m4trace:configure.ac:125: -1- AC_DEFINE_TRACE_LITERAL([HAVE_X11]) ++m4trace:configure.ac:125: -1- m4_pattern_allow([^HAVE_X11$]) ++m4trace:configure.ac:133: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XSHM]) ++m4trace:configure.ac:133: -1- m4_pattern_allow([^HAVE_XSHM$]) ++m4trace:configure.ac:137: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOLARIS_XREADSCREEN]) ++m4trace:configure.ac:137: -1- m4_pattern_allow([^HAVE_SOLARIS_XREADSCREEN$]) ++m4trace:configure.ac:141: -1- AC_DEFINE_TRACE_LITERAL([HAVE_IRIX_XREADDISPLAY]) ++m4trace:configure.ac:141: -1- m4_pattern_allow([^HAVE_IRIX_XREADDISPLAY$]) ++m4trace:configure.ac:146: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FBPM]) ++m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_FBPM$]) ++m4trace:configure.ac:152: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DPMS]) ++m4trace:configure.ac:152: -1- m4_pattern_allow([^HAVE_DPMS$]) ++m4trace:configure.ac:157: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XTESTGRABCONTROL]) ++m4trace:configure.ac:157: -1- m4_pattern_allow([^HAVE_XTESTGRABCONTROL$]) ++m4trace:configure.ac:162: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XTEST]) ++m4trace:configure.ac:162: -1- m4_pattern_allow([^HAVE_XTEST$]) ++m4trace:configure.ac:168: -1- AC_DEFINE_TRACE_LITERAL([HAVE_RECORD]) ++m4trace:configure.ac:168: -1- m4_pattern_allow([^HAVE_RECORD$]) ++m4trace:configure.ac:177: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBXTRAP]) ++m4trace:configure.ac:177: -1- m4_pattern_allow([^HAVE_LIBXTRAP$]) ++m4trace:configure.ac:182: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBXTRAP]) ++m4trace:configure.ac:182: -1- m4_pattern_allow([^HAVE_LIBXTRAP$]) ++m4trace:configure.ac:196: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XKEYBOARD]) ++m4trace:configure.ac:196: -1- m4_pattern_allow([^HAVE_XKEYBOARD$]) ++m4trace:configure.ac:203: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBXINERAMA]) ++m4trace:configure.ac:203: -1- m4_pattern_allow([^HAVE_LIBXINERAMA$]) ++m4trace:configure.ac:210: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBXRANDR]) ++m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_LIBXRANDR$]) ++m4trace:configure.ac:217: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBXFIXES]) ++m4trace:configure.ac:217: -1- m4_pattern_allow([^HAVE_LIBXFIXES$]) ++m4trace:configure.ac:224: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBXDAMAGE]) ++m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_LIBXDAMAGE$]) ++m4trace:configure.ac:242: -1- AC_SUBST([X_LIBS]) ++m4trace:configure.ac:242: -1- AC_SUBST_TRACE([X_LIBS]) ++m4trace:configure.ac:242: -1- m4_pattern_allow([^X_LIBS$]) ++m4trace:configure.ac:243: -1- AM_CONDITIONAL([HAVE_X], [test $HAVE_X != "false"]) ++m4trace:configure.ac:243: -1- AC_SUBST([HAVE_X_TRUE]) ++m4trace:configure.ac:243: -1- AC_SUBST_TRACE([HAVE_X_TRUE]) ++m4trace:configure.ac:243: -1- m4_pattern_allow([^HAVE_X_TRUE$]) ++m4trace:configure.ac:243: -1- AC_SUBST([HAVE_X_FALSE]) ++m4trace:configure.ac:243: -1- AC_SUBST_TRACE([HAVE_X_FALSE]) ++m4trace:configure.ac:243: -1- m4_pattern_allow([^HAVE_X_FALSE$]) ++m4trace:configure.ac:243: -1- _AM_SUBST_NOTMAKE([HAVE_X_TRUE]) ++m4trace:configure.ac:243: -1- _AM_SUBST_NOTMAKE([HAVE_X_FALSE]) ++m4trace:configure.ac:280: -1- AH_OUTPUT([HAVE_LIBCRYPT], [/* libcrypt library present */ ++#undef HAVE_LIBCRYPT]) ++m4trace:configure.ac:284: -1- AH_OUTPUT([HAVE_CRYPT], [/* Define to 1 if you have the `crypt\' function. */ ++#undef HAVE_CRYPT]) ++m4trace:configure.ac:286: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBCRYPT]) ++m4trace:configure.ac:286: -1- m4_pattern_allow([^HAVE_LIBCRYPT$]) ++m4trace:configure.ac:291: -1- AC_SUBST([CRYPT_LIBS]) ++m4trace:configure.ac:291: -1- AC_SUBST_TRACE([CRYPT_LIBS]) ++m4trace:configure.ac:291: -1- m4_pattern_allow([^CRYPT_LIBS$]) ++m4trace:configure.ac:294: -1- AH_OUTPUT([HAVE_LIBCRYPTO], [/* openssl libcrypto library present */ ++#undef HAVE_LIBCRYPTO]) ++m4trace:configure.ac:298: -1- AH_OUTPUT([HAVE_LIBSSL], [/* openssl libssl library present */ ++#undef HAVE_LIBSSL]) ++m4trace:configure.ac:303: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBCRYPTO]) ++m4trace:configure.ac:303: -1- m4_pattern_allow([^HAVE_LIBCRYPTO$]) ++m4trace:configure.ac:309: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSSL]) ++m4trace:configure.ac:309: -1- m4_pattern_allow([^HAVE_LIBSSL$]) ++m4trace:configure.ac:314: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSSL]) ++m4trace:configure.ac:314: -1- m4_pattern_allow([^HAVE_LIBSSL$]) ++m4trace:configure.ac:319: -1- AC_SUBST([SSL_LIBS]) ++m4trace:configure.ac:319: -1- AC_SUBST_TRACE([SSL_LIBS]) ++m4trace:configure.ac:319: -1- m4_pattern_allow([^SSL_LIBS$]) ++m4trace:configure.ac:333: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_VIDEODEV_H]) ++m4trace:configure.ac:333: -1- m4_pattern_allow([^HAVE_LINUX_VIDEODEV_H$]) ++m4trace:configure.ac:337: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_FB_H]) ++m4trace:configure.ac:337: -1- m4_pattern_allow([^HAVE_LINUX_FB_H$]) ++m4trace:configure.ac:341: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_INPUT_H]) ++m4trace:configure.ac:341: -1- m4_pattern_allow([^HAVE_LINUX_INPUT_H$]) ++m4trace:configure.ac:344: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_UINPUT_H]) ++m4trace:configure.ac:344: -1- m4_pattern_allow([^HAVE_LINUX_UINPUT_H$]) ++m4trace:configure.ac:350: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MACOSX_NATIVE_DISPLAY]) ++m4trace:configure.ac:350: -1- m4_pattern_allow([^HAVE_MACOSX_NATIVE_DISPLAY$]) ++m4trace:configure.ac:353: -1- AH_OUTPUT([HAVE_AVAHI], [/* Avahi/mDNS client build environment present */ ++#undef HAVE_AVAHI]) ++m4trace:configure.ac:375: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AVAHI]) ++m4trace:configure.ac:375: -1- m4_pattern_allow([^HAVE_AVAHI$]) ++m4trace:configure.ac:376: -1- AC_SUBST([AVAHI_CFLAGS]) ++m4trace:configure.ac:376: -1- AC_SUBST_TRACE([AVAHI_CFLAGS]) ++m4trace:configure.ac:376: -1- m4_pattern_allow([^AVAHI_CFLAGS$]) ++m4trace:configure.ac:377: -1- AC_SUBST([AVAHI_LIBS]) ++m4trace:configure.ac:377: -1- AC_SUBST_TRACE([AVAHI_LIBS]) ++m4trace:configure.ac:377: -1- m4_pattern_allow([^AVAHI_LIBS$]) ++m4trace:configure.ac:431: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYSTEM_LIBVNCSERVER]) ++m4trace:configure.ac:431: -1- m4_pattern_allow([^HAVE_SYSTEM_LIBVNCSERVER$]) ++m4trace:configure.ac:432: -1- AC_SUBST([SYSTEM_LIBVNCSERVER_CFLAGS]) ++m4trace:configure.ac:432: -1- AC_SUBST_TRACE([SYSTEM_LIBVNCSERVER_CFLAGS]) ++m4trace:configure.ac:432: -1- m4_pattern_allow([^SYSTEM_LIBVNCSERVER_CFLAGS$]) ++m4trace:configure.ac:433: -1- AC_SUBST([SYSTEM_LIBVNCSERVER_LIBS]) ++m4trace:configure.ac:433: -1- AC_SUBST_TRACE([SYSTEM_LIBVNCSERVER_LIBS]) ++m4trace:configure.ac:433: -1- m4_pattern_allow([^SYSTEM_LIBVNCSERVER_LIBS$]) ++m4trace:configure.ac:435: -1- AM_CONDITIONAL([HAVE_SYSTEM_LIBVNCSERVER], [test "x$with_system_libvncserver" = "xyes"]) ++m4trace:configure.ac:435: -1- AC_SUBST([HAVE_SYSTEM_LIBVNCSERVER_TRUE]) ++m4trace:configure.ac:435: -1- AC_SUBST_TRACE([HAVE_SYSTEM_LIBVNCSERVER_TRUE]) ++m4trace:configure.ac:435: -1- m4_pattern_allow([^HAVE_SYSTEM_LIBVNCSERVER_TRUE$]) ++m4trace:configure.ac:435: -1- AC_SUBST([HAVE_SYSTEM_LIBVNCSERVER_FALSE]) ++m4trace:configure.ac:435: -1- AC_SUBST_TRACE([HAVE_SYSTEM_LIBVNCSERVER_FALSE]) ++m4trace:configure.ac:435: -1- m4_pattern_allow([^HAVE_SYSTEM_LIBVNCSERVER_FALSE$]) ++m4trace:configure.ac:435: -1- _AM_SUBST_NOTMAKE([HAVE_SYSTEM_LIBVNCSERVER_TRUE]) ++m4trace:configure.ac:435: -1- _AM_SUBST_NOTMAKE([HAVE_SYSTEM_LIBVNCSERVER_FALSE]) ++m4trace:configure.ac:466: -1- AH_OUTPUT([HAVE_LIBJPEG], [/* Define to 1 if you have the `jpeg\' library (-ljpeg). */ ++#undef HAVE_LIBJPEG]) ++m4trace:configure.ac:466: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBJPEG]) ++m4trace:configure.ac:466: -1- m4_pattern_allow([^HAVE_LIBJPEG$]) ++m4trace:configure.ac:512: -1- AH_OUTPUT([HAVE_LIBZ], [/* Define to 1 if you have the `z\' library (-lz). */ ++#undef HAVE_LIBZ]) ++m4trace:configure.ac:512: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBZ]) ++m4trace:configure.ac:512: -1- m4_pattern_allow([^HAVE_LIBZ$]) ++m4trace:configure.ac:541: -1- AH_OUTPUT([HAVE_LIBPTHREAD], [/* Define to 1 if you have the `pthread\' library (-lpthread). */ ++#undef HAVE_LIBPTHREAD]) ++m4trace:configure.ac:541: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPTHREAD]) ++m4trace:configure.ac:541: -1- m4_pattern_allow([^HAVE_LIBPTHREAD$]) ++m4trace:configure.ac:545: -1- AM_CONDITIONAL([HAVE_LIBPTHREAD], [test ! -z "$HAVE_LIBPTHREAD"]) ++m4trace:configure.ac:545: -1- AC_SUBST([HAVE_LIBPTHREAD_TRUE]) ++m4trace:configure.ac:545: -1- AC_SUBST_TRACE([HAVE_LIBPTHREAD_TRUE]) ++m4trace:configure.ac:545: -1- m4_pattern_allow([^HAVE_LIBPTHREAD_TRUE$]) ++m4trace:configure.ac:545: -1- AC_SUBST([HAVE_LIBPTHREAD_FALSE]) ++m4trace:configure.ac:545: -1- AC_SUBST_TRACE([HAVE_LIBPTHREAD_FALSE]) ++m4trace:configure.ac:545: -1- m4_pattern_allow([^HAVE_LIBPTHREAD_FALSE$]) ++m4trace:configure.ac:545: -1- _AM_SUBST_NOTMAKE([HAVE_LIBPTHREAD_TRUE]) ++m4trace:configure.ac:545: -1- _AM_SUBST_NOTMAKE([HAVE_LIBPTHREAD_FALSE]) ++m4trace:configure.ac:552: -1- AC_DEFINE_TRACE_LITERAL([WITH_TIGHTVNC_FILETRANSFER]) ++m4trace:configure.ac:552: -1- m4_pattern_allow([^WITH_TIGHTVNC_FILETRANSFER$]) ++m4trace:configure.ac:554: -1- AM_CONDITIONAL([WITH_TIGHTVNC_FILETRANSFER], [test "$with_tightvnc_filetransfer" = "yes"]) ++m4trace:configure.ac:554: -1- AC_SUBST([WITH_TIGHTVNC_FILETRANSFER_TRUE]) ++m4trace:configure.ac:554: -1- AC_SUBST_TRACE([WITH_TIGHTVNC_FILETRANSFER_TRUE]) ++m4trace:configure.ac:554: -1- m4_pattern_allow([^WITH_TIGHTVNC_FILETRANSFER_TRUE$]) ++m4trace:configure.ac:554: -1- AC_SUBST([WITH_TIGHTVNC_FILETRANSFER_FALSE]) ++m4trace:configure.ac:554: -1- AC_SUBST_TRACE([WITH_TIGHTVNC_FILETRANSFER_FALSE]) ++m4trace:configure.ac:554: -1- m4_pattern_allow([^WITH_TIGHTVNC_FILETRANSFER_FALSE$]) ++m4trace:configure.ac:554: -1- _AM_SUBST_NOTMAKE([WITH_TIGHTVNC_FILETRANSFER_TRUE]) ++m4trace:configure.ac:554: -1- _AM_SUBST_NOTMAKE([WITH_TIGHTVNC_FILETRANSFER_FALSE]) ++m4trace:configure.ac:556: -1- AM_CONDITIONAL([HAVE_LIBZ], [test ! -z "$HAVE_ZLIB_H"]) ++m4trace:configure.ac:556: -1- AC_SUBST([HAVE_LIBZ_TRUE]) ++m4trace:configure.ac:556: -1- AC_SUBST_TRACE([HAVE_LIBZ_TRUE]) ++m4trace:configure.ac:556: -1- m4_pattern_allow([^HAVE_LIBZ_TRUE$]) ++m4trace:configure.ac:556: -1- AC_SUBST([HAVE_LIBZ_FALSE]) ++m4trace:configure.ac:556: -1- AC_SUBST_TRACE([HAVE_LIBZ_FALSE]) ++m4trace:configure.ac:556: -1- m4_pattern_allow([^HAVE_LIBZ_FALSE$]) ++m4trace:configure.ac:556: -1- _AM_SUBST_NOTMAKE([HAVE_LIBZ_TRUE]) ++m4trace:configure.ac:556: -1- _AM_SUBST_NOTMAKE([HAVE_LIBZ_FALSE]) ++m4trace:configure.ac:557: -1- AM_CONDITIONAL([HAVE_LIBJPEG], [test ! -z "$HAVE_JPEGLIB_H"]) ++m4trace:configure.ac:557: -1- AC_SUBST([HAVE_LIBJPEG_TRUE]) ++m4trace:configure.ac:557: -1- AC_SUBST_TRACE([HAVE_LIBJPEG_TRUE]) ++m4trace:configure.ac:557: -1- m4_pattern_allow([^HAVE_LIBJPEG_TRUE$]) ++m4trace:configure.ac:557: -1- AC_SUBST([HAVE_LIBJPEG_FALSE]) ++m4trace:configure.ac:557: -1- AC_SUBST_TRACE([HAVE_LIBJPEG_FALSE]) ++m4trace:configure.ac:557: -1- m4_pattern_allow([^HAVE_LIBJPEG_FALSE$]) ++m4trace:configure.ac:557: -1- _AM_SUBST_NOTMAKE([HAVE_LIBJPEG_TRUE]) ++m4trace:configure.ac:557: -1- _AM_SUBST_NOTMAKE([HAVE_LIBJPEG_FALSE]) ++m4trace:configure.ac:568: -1- AM_CONDITIONAL([HAVE_LIBSDL], [test "x$with_sdl" = "xyes"]) ++m4trace:configure.ac:568: -1- AC_SUBST([HAVE_LIBSDL_TRUE]) ++m4trace:configure.ac:568: -1- AC_SUBST_TRACE([HAVE_LIBSDL_TRUE]) ++m4trace:configure.ac:568: -1- m4_pattern_allow([^HAVE_LIBSDL_TRUE$]) ++m4trace:configure.ac:568: -1- AC_SUBST([HAVE_LIBSDL_FALSE]) ++m4trace:configure.ac:568: -1- AC_SUBST_TRACE([HAVE_LIBSDL_FALSE]) ++m4trace:configure.ac:568: -1- m4_pattern_allow([^HAVE_LIBSDL_FALSE$]) ++m4trace:configure.ac:568: -1- _AM_SUBST_NOTMAKE([HAVE_LIBSDL_TRUE]) ++m4trace:configure.ac:568: -1- _AM_SUBST_NOTMAKE([HAVE_LIBSDL_FALSE]) ++m4trace:configure.ac:569: -1- AC_SUBST([SDL_CFLAGS]) ++m4trace:configure.ac:569: -1- AC_SUBST_TRACE([SDL_CFLAGS]) ++m4trace:configure.ac:569: -1- m4_pattern_allow([^SDL_CFLAGS$]) ++m4trace:configure.ac:570: -1- AC_SUBST([SDL_LIBS]) ++m4trace:configure.ac:570: -1- AC_SUBST_TRACE([SDL_LIBS]) ++m4trace:configure.ac:570: -1- m4_pattern_allow([^SDL_LIBS$]) ++m4trace:configure.ac:573: -1- AM_CONDITIONAL([MINGW], [test ! -z "$MINGW" ]) ++m4trace:configure.ac:573: -1- AC_SUBST([MINGW_TRUE]) ++m4trace:configure.ac:573: -1- AC_SUBST_TRACE([MINGW_TRUE]) ++m4trace:configure.ac:573: -1- m4_pattern_allow([^MINGW_TRUE$]) ++m4trace:configure.ac:573: -1- AC_SUBST([MINGW_FALSE]) ++m4trace:configure.ac:573: -1- AC_SUBST_TRACE([MINGW_FALSE]) ++m4trace:configure.ac:573: -1- m4_pattern_allow([^MINGW_FALSE$]) ++m4trace:configure.ac:573: -1- _AM_SUBST_NOTMAKE([MINGW_TRUE]) ++m4trace:configure.ac:573: -1- _AM_SUBST_NOTMAKE([MINGW_FALSE]) ++m4trace:configure.ac:577: -1- AC_SUBST([WSOCKLIB]) ++m4trace:configure.ac:577: -1- AC_SUBST_TRACE([WSOCKLIB]) ++m4trace:configure.ac:577: -1- m4_pattern_allow([^WSOCKLIB$]) ++m4trace:configure.ac:580: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) ++m4trace:configure.ac:580: -1- m4_pattern_allow([^STDC_HEADERS$]) ++m4trace:configure.ac:580: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ ++#undef STDC_HEADERS]) ++m4trace:configure.ac:581: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_ARPA_INET_H]) ++m4trace:configure.ac:581: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_FCNTL_H]) ++m4trace:configure.ac:581: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_NETDB_H]) ++m4trace:configure.ac:581: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_NETINET_IN_H]) ++m4trace:configure.ac:581: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_STDLIB_H]) ++m4trace:configure.ac:581: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_STRING_H]) ++m4trace:configure.ac:581: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_SOCKET_H]) ++m4trace:configure.ac:581: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_TIME_H]) ++m4trace:configure.ac:581: -1- AH_OUTPUT([HAVE_SYS_TIMEB_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_TIMEB_H]) ++m4trace:configure.ac:581: -1- AH_OUTPUT([HAVE_SYSLOG_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_SYSLOG_H]) ++m4trace:configure.ac:581: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_UNISTD_H]) ++m4trace:configure.ac:585: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_PWD_H]) ++m4trace:configure.ac:585: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_WAIT_H]) ++m4trace:configure.ac:585: -1- AH_OUTPUT([HAVE_UTMPX_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_UTMPX_H]) ++m4trace:configure.ac:585: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_TERMIOS_H]) ++m4trace:configure.ac:585: -1- AH_OUTPUT([HAVE_SYS_IOCTL_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_IOCTL_H]) ++m4trace:configure.ac:585: -1- AH_OUTPUT([HAVE_SYS_STROPTS_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_STROPTS_H]) ++m4trace:configure.ac:589: -1- AC_DEFINE_TRACE_LITERAL([const]) ++m4trace:configure.ac:589: -1- m4_pattern_allow([^const$]) ++m4trace:configure.ac:589: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ ++#undef const]) ++m4trace:configure.ac:590: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler ++ calls it, or to nothing if \'inline\' is not supported under any name. */ ++#ifndef __cplusplus ++#undef inline ++#endif]) ++m4trace:configure.ac:591: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) ++m4trace:configure.ac:591: -1- m4_pattern_allow([^WORDS_BIGENDIAN$]) ++m4trace:configure.ac:591: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte ++ first (like Motorola and SPARC, unlike Intel and VAX). */ ++#undef WORDS_BIGENDIAN]) ++m4trace:configure.ac:592: -1- AC_DEFINE_TRACE_LITERAL([size_t]) ++m4trace:configure.ac:592: -1- m4_pattern_allow([^size_t$]) ++m4trace:configure.ac:592: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if does not define. */ ++#undef size_t]) ++m4trace:configure.ac:593: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) ++m4trace:configure.ac:593: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$]) ++m4trace:configure.ac:593: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ ++#undef TIME_WITH_SYS_TIME]) ++m4trace:configure.ac:594: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H]) ++m4trace:configure.ac:594: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$]) ++m4trace:configure.ac:594: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have that is POSIX.1 compatible. */ ++#undef HAVE_SYS_WAIT_H]) ++m4trace:configure.ac:595: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++../../lib/autoconf/general.m4:1912: AC_CACHE_CHECK is expanded from... ++acinclude.m4:2: AC_TYPE_SOCKLEN_T is expanded from... ++configure.ac:595: the top level]) ++m4trace:configure.ac:595: -1- AC_DEFINE_TRACE_LITERAL([socklen_t]) ++m4trace:configure.ac:595: -1- m4_pattern_allow([^socklen_t$]) ++m4trace:configure.ac:600: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++acinclude.m4:20: AC_COMPILE_CHECK_SIZEOF is expanded from... ++acinclude.m4:49: AC_CREATE_STDINT_H is expanded from... ++configure.ac:600: the top level]) ++m4trace:configure.ac:600: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR]) ++m4trace:configure.ac:600: -1- m4_pattern_allow([^SIZEOF_CHAR$]) ++m4trace:configure.ac:600: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The number of bytes in type char */ ++#undef SIZEOF_CHAR]) ++m4trace:configure.ac:600: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++acinclude.m4:20: AC_COMPILE_CHECK_SIZEOF is expanded from... ++acinclude.m4:49: AC_CREATE_STDINT_H is expanded from... ++configure.ac:600: the top level]) ++m4trace:configure.ac:600: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT]) ++m4trace:configure.ac:600: -1- m4_pattern_allow([^SIZEOF_SHORT$]) ++m4trace:configure.ac:600: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The number of bytes in type short */ ++#undef SIZEOF_SHORT]) ++m4trace:configure.ac:600: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++acinclude.m4:20: AC_COMPILE_CHECK_SIZEOF is expanded from... ++acinclude.m4:49: AC_CREATE_STDINT_H is expanded from... ++configure.ac:600: the top level]) ++m4trace:configure.ac:600: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT]) ++m4trace:configure.ac:600: -1- m4_pattern_allow([^SIZEOF_INT$]) ++m4trace:configure.ac:600: -1- AH_OUTPUT([SIZEOF_INT], [/* The number of bytes in type int */ ++#undef SIZEOF_INT]) ++m4trace:configure.ac:600: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++acinclude.m4:20: AC_COMPILE_CHECK_SIZEOF is expanded from... ++acinclude.m4:49: AC_CREATE_STDINT_H is expanded from... ++configure.ac:600: the top level]) ++m4trace:configure.ac:600: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG]) ++m4trace:configure.ac:600: -1- m4_pattern_allow([^SIZEOF_LONG$]) ++m4trace:configure.ac:600: -1- AH_OUTPUT([SIZEOF_LONG], [/* The number of bytes in type long */ ++#undef SIZEOF_LONG]) ++m4trace:configure.ac:600: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++acinclude.m4:20: AC_COMPILE_CHECK_SIZEOF is expanded from... ++acinclude.m4:49: AC_CREATE_STDINT_H is expanded from... ++configure.ac:600: the top level]) ++m4trace:configure.ac:600: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_VOIDP]) ++m4trace:configure.ac:600: -1- m4_pattern_allow([^SIZEOF_VOIDP$]) ++m4trace:configure.ac:600: -1- AH_OUTPUT([SIZEOF_VOIDP], [/* The number of bytes in type void* */ ++#undef SIZEOF_VOIDP]) ++m4trace:configure.ac:601: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. ++You should run autoupdate.], [../../lib/autoconf/general.m4:2368: AC_TRY_COMPILE is expanded from... ++../../lib/m4sugar/m4sh.m4:516: AS_IF is expanded from... ++../../lib/autoconf/general.m4:1899: AC_CACHE_VAL is expanded from... ++../../lib/autoconf/general.m4:1912: AC_CACHE_CHECK is expanded from... ++configure.ac:601: the top level]) ++m4trace:configure.ac:609: -1- AH_OUTPUT([NEED_INADDR_T], [/* Need a typedef for in_addr_t */ ++#undef NEED_INADDR_T]) ++m4trace:configure.ac:611: -1- AC_DEFINE_TRACE_LITERAL([NEED_INADDR_T]) ++m4trace:configure.ac:611: -1- m4_pattern_allow([^NEED_INADDR_T$]) ++m4trace:configure.ac:615: -1- AC_LIBSOURCE([memcmp.c]) ++m4trace:configure.ac:615: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS memcmp.$ac_objext"]) ++m4trace:configure.ac:615: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) ++m4trace:configure.ac:615: -1- m4_pattern_allow([^LIB@&t@OBJS$]) ++m4trace:configure.ac:616: -1- AC_DEFINE_TRACE_LITERAL([LSTAT_FOLLOWS_SLASHED_SYMLINK]) ++m4trace:configure.ac:616: -1- m4_pattern_allow([^LSTAT_FOLLOWS_SLASHED_SYMLINK$]) ++m4trace:configure.ac:616: -1- AH_OUTPUT([LSTAT_FOLLOWS_SLASHED_SYMLINK], [/* Define to 1 if `lstat\' dereferences a symlink specified with a trailing ++ slash. */ ++#undef LSTAT_FOLLOWS_SLASHED_SYMLINK]) ++m4trace:configure.ac:616: -1- AC_LIBSOURCE([lstat.c]) ++m4trace:configure.ac:616: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS lstat.$ac_objext"]) ++m4trace:configure.ac:616: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) ++m4trace:configure.ac:616: -1- m4_pattern_allow([^LIB@&t@OBJS$]) ++m4trace:configure.ac:616: -1- AC_LIBSOURCE([stat.c]) ++m4trace:configure.ac:616: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS stat.$ac_objext"]) ++m4trace:configure.ac:616: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) ++m4trace:configure.ac:616: -1- m4_pattern_allow([^LIB@&t@OBJS$]) ++m4trace:configure.ac:616: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STAT_EMPTY_STRING_BUG]) ++m4trace:configure.ac:616: -1- m4_pattern_allow([^HAVE_STAT_EMPTY_STRING_BUG$]) ++m4trace:configure.ac:616: -1- AH_OUTPUT([HAVE_STAT_EMPTY_STRING_BUG], [/* Define to 1 if `stat\' has the bug that it succeeds when given the ++ zero-length file name argument. */ ++#undef HAVE_STAT_EMPTY_STRING_BUG]) ++m4trace:configure.ac:617: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */ ++#undef HAVE_STRFTIME]) ++m4trace:configure.ac:617: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME]) ++m4trace:configure.ac:617: -1- m4_pattern_allow([^HAVE_STRFTIME$]) ++m4trace:configure.ac:618: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */ ++#undef HAVE_VPRINTF]) ++m4trace:configure.ac:618: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT]) ++m4trace:configure.ac:618: -1- m4_pattern_allow([^HAVE_DOPRNT$]) ++m4trace:configure.ac:618: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */ ++#undef HAVE_DOPRNT]) ++m4trace:configure.ac:619: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) ++m4trace:configure.ac:619: -1- m4_pattern_allow([^pid_t$]) ++m4trace:configure.ac:619: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if does not define. */ ++#undef pid_t]) ++m4trace:configure.ac:619: -1- AH_OUTPUT([HAVE_VFORK_H], [/* Define to 1 if you have the header file. */ ++#undef HAVE_VFORK_H]) ++m4trace:configure.ac:619: -1- AH_OUTPUT([HAVE_FORK], [/* Define to 1 if you have the `fork\' function. */ ++#undef HAVE_FORK]) ++m4trace:configure.ac:619: -1- AH_OUTPUT([HAVE_VFORK], [/* Define to 1 if you have the `vfork\' function. */ ++#undef HAVE_VFORK]) ++m4trace:configure.ac:619: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_VFORK]) ++m4trace:configure.ac:619: -1- m4_pattern_allow([^HAVE_WORKING_VFORK$]) ++m4trace:configure.ac:619: -1- AH_OUTPUT([HAVE_WORKING_VFORK], [/* Define to 1 if `vfork\' works. */ ++#undef HAVE_WORKING_VFORK]) ++m4trace:configure.ac:619: -1- AC_DEFINE_TRACE_LITERAL([vfork]) ++m4trace:configure.ac:619: -1- m4_pattern_allow([^vfork$]) ++m4trace:configure.ac:619: -1- AH_OUTPUT([vfork], [/* Define as `fork\' if `vfork\' does not work. */ ++#undef vfork]) ++m4trace:configure.ac:619: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_FORK]) ++m4trace:configure.ac:619: -1- m4_pattern_allow([^HAVE_WORKING_FORK$]) ++m4trace:configure.ac:619: -1- AH_OUTPUT([HAVE_WORKING_FORK], [/* Define to 1 if `fork\' works. */ ++#undef HAVE_WORKING_FORK]) ++m4trace:configure.ac:620: -1- AH_OUTPUT([HAVE_LIBNSL], [/* Define to 1 if you have the `nsl\' library (-lnsl). */ ++#undef HAVE_LIBNSL]) ++m4trace:configure.ac:620: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBNSL]) ++m4trace:configure.ac:620: -1- m4_pattern_allow([^HAVE_LIBNSL$]) ++m4trace:configure.ac:621: -1- AH_OUTPUT([HAVE_LIBSOCKET], [/* Define to 1 if you have the `socket\' library (-lsocket). */ ++#undef HAVE_LIBSOCKET]) ++m4trace:configure.ac:621: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKET]) ++m4trace:configure.ac:621: -1- m4_pattern_allow([^HAVE_LIBSOCKET$]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_FTIME], [/* Define to 1 if you have the `ftime\' function. */ ++#undef HAVE_FTIME]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the `gethostbyname\' function. */ ++#undef HAVE_GETHOSTBYNAME]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the `gethostname\' function. */ ++#undef HAVE_GETHOSTNAME]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */ ++#undef HAVE_GETTIMEOFDAY]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_INET_NTOA], [/* Define to 1 if you have the `inet_ntoa\' function. */ ++#undef HAVE_INET_NTOA]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the `memmove\' function. */ ++#undef HAVE_MEMMOVE]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */ ++#undef HAVE_MEMSET]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have the `mmap\' function. */ ++#undef HAVE_MMAP]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_MKFIFO], [/* Define to 1 if you have the `mkfifo\' function. */ ++#undef HAVE_MKFIFO]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */ ++#undef HAVE_SELECT]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_SOCKET], [/* Define to 1 if you have the `socket\' function. */ ++#undef HAVE_SOCKET]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */ ++#undef HAVE_STRCHR]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the `strcspn\' function. */ ++#undef HAVE_STRCSPN]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */ ++#undef HAVE_STRDUP]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */ ++#undef HAVE_STRERROR]) ++m4trace:configure.ac:629: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */ ++#undef HAVE_STRSTR]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_SETSID], [/* Define to 1 if you have the `setsid\' function. */ ++#undef HAVE_SETSID]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_SETPGRP], [/* Define to 1 if you have the `setpgrp\' function. */ ++#undef HAVE_SETPGRP]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_GETPWUID], [/* Define to 1 if you have the `getpwuid\' function. */ ++#undef HAVE_GETPWUID]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_GETPWNAM], [/* Define to 1 if you have the `getpwnam\' function. */ ++#undef HAVE_GETPWNAM]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_GETSPNAM], [/* Define to 1 if you have the `getspnam\' function. */ ++#undef HAVE_GETSPNAM]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the `getuid\' function. */ ++#undef HAVE_GETUID]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the `geteuid\' function. */ ++#undef HAVE_GETEUID]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_SETUID], [/* Define to 1 if you have the `setuid\' function. */ ++#undef HAVE_SETUID]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_SETGID], [/* Define to 1 if you have the `setgid\' function. */ ++#undef HAVE_SETGID]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_SETEUID], [/* Define to 1 if you have the `seteuid\' function. */ ++#undef HAVE_SETEUID]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_SETEGID], [/* Define to 1 if you have the `setegid\' function. */ ++#undef HAVE_SETEGID]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_INITGROUPS], [/* Define to 1 if you have the `initgroups\' function. */ ++#undef HAVE_INITGROUPS]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the `waitpid\' function. */ ++#undef HAVE_WAITPID]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_SETUTXENT], [/* Define to 1 if you have the `setutxent\' function. */ ++#undef HAVE_SETUTXENT]) ++m4trace:configure.ac:632: -1- AH_OUTPUT([HAVE_GRANTPT], [/* Define to 1 if you have the `grantpt\' function. */ ++#undef HAVE_GRANTPT]) ++m4trace:configure.ac:636: -1- AH_OUTPUT([HAVE_LIBCYGIPC], [/* Define to 1 if you have the `cygipc\' library (-lcygipc). */ ++#undef HAVE_LIBCYGIPC]) ++m4trace:configure.ac:636: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBCYGIPC]) ++m4trace:configure.ac:636: -1- m4_pattern_allow([^HAVE_LIBCYGIPC$]) ++m4trace:configure.ac:637: -1- AM_CONDITIONAL([CYGIPC], [test "$HAVE_CYGIPC" = "true"]) ++m4trace:configure.ac:637: -1- AC_SUBST([CYGIPC_TRUE]) ++m4trace:configure.ac:637: -1- AC_SUBST_TRACE([CYGIPC_TRUE]) ++m4trace:configure.ac:637: -1- m4_pattern_allow([^CYGIPC_TRUE$]) ++m4trace:configure.ac:637: -1- AC_SUBST([CYGIPC_FALSE]) ++m4trace:configure.ac:637: -1- AC_SUBST_TRACE([CYGIPC_FALSE]) ++m4trace:configure.ac:637: -1- m4_pattern_allow([^CYGIPC_FALSE$]) ++m4trace:configure.ac:637: -1- _AM_SUBST_NOTMAKE([CYGIPC_TRUE]) ++m4trace:configure.ac:637: -1- _AM_SUBST_NOTMAKE([CYGIPC_FALSE]) ++m4trace:configure.ac:640: -1- AM_CONDITIONAL([LINUX], [test -c /dev/vcsa1]) ++m4trace:configure.ac:640: -1- AC_SUBST([LINUX_TRUE]) ++m4trace:configure.ac:640: -1- AC_SUBST_TRACE([LINUX_TRUE]) ++m4trace:configure.ac:640: -1- m4_pattern_allow([^LINUX_TRUE$]) ++m4trace:configure.ac:640: -1- AC_SUBST([LINUX_FALSE]) ++m4trace:configure.ac:640: -1- AC_SUBST_TRACE([LINUX_FALSE]) ++m4trace:configure.ac:640: -1- m4_pattern_allow([^LINUX_FALSE$]) ++m4trace:configure.ac:640: -1- _AM_SUBST_NOTMAKE([LINUX_TRUE]) ++m4trace:configure.ac:640: -1- _AM_SUBST_NOTMAKE([LINUX_FALSE]) ++m4trace:configure.ac:644: -1- AM_CONDITIONAL([OSX], [test "$HAVE_OSX" = "true"]) ++m4trace:configure.ac:644: -1- AC_SUBST([OSX_TRUE]) ++m4trace:configure.ac:644: -1- AC_SUBST_TRACE([OSX_TRUE]) ++m4trace:configure.ac:644: -1- m4_pattern_allow([^OSX_TRUE$]) ++m4trace:configure.ac:644: -1- AC_SUBST([OSX_FALSE]) ++m4trace:configure.ac:644: -1- AC_SUBST_TRACE([OSX_FALSE]) ++m4trace:configure.ac:644: -1- m4_pattern_allow([^OSX_FALSE$]) ++m4trace:configure.ac:644: -1- _AM_SUBST_NOTMAKE([OSX_TRUE]) ++m4trace:configure.ac:644: -1- _AM_SUBST_NOTMAKE([OSX_FALSE]) ++m4trace:configure.ac:647: -1- AH_OUTPUT([ENOENT_WORKAROUND], [/* work around when write() returns ENOENT but does not mean it */ ++#undef ENOENT_WORKAROUND]) ++m4trace:configure.ac:650: -1- AC_DEFINE_TRACE_LITERAL([ENOENT_WORKAROUND]) ++m4trace:configure.ac:650: -1- m4_pattern_allow([^ENOENT_WORKAROUND$]) ++m4trace:configure.ac:663: -1- AM_CONDITIONAL([HAVE_RPM], [test "$RPMSOURCEDIR" != "NOT-FOUND"]) ++m4trace:configure.ac:663: -1- AC_SUBST([HAVE_RPM_TRUE]) ++m4trace:configure.ac:663: -1- AC_SUBST_TRACE([HAVE_RPM_TRUE]) ++m4trace:configure.ac:663: -1- m4_pattern_allow([^HAVE_RPM_TRUE$]) ++m4trace:configure.ac:663: -1- AC_SUBST([HAVE_RPM_FALSE]) ++m4trace:configure.ac:663: -1- AC_SUBST_TRACE([HAVE_RPM_FALSE]) ++m4trace:configure.ac:663: -1- m4_pattern_allow([^HAVE_RPM_FALSE$]) ++m4trace:configure.ac:663: -1- _AM_SUBST_NOTMAKE([HAVE_RPM_TRUE]) ++m4trace:configure.ac:663: -1- _AM_SUBST_NOTMAKE([HAVE_RPM_FALSE]) ++m4trace:configure.ac:664: -1- AC_SUBST([RPMSOURCEDIR]) ++m4trace:configure.ac:664: -1- AC_SUBST_TRACE([RPMSOURCEDIR]) ++m4trace:configure.ac:664: -1- m4_pattern_allow([^RPMSOURCEDIR$]) ++m4trace:configure.ac:666: -1- AC_CONFIG_FILES([Makefile ++ libvncserver/Makefile ++ contrib/Makefile ++ examples/Makefile ++ vncterm/Makefile ++ classes/Makefile ++ classes/ssl/Makefile ++ libvncclient/Makefile ++ client_examples/Makefile ++ test/Makefile ++ libvncserver-config ++ LibVNCServer.spec]) ++m4trace:configure.ac:684: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) ++m4trace:configure.ac:684: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) ++m4trace:configure.ac:684: -1- m4_pattern_allow([^LIB@&t@OBJS$]) ++m4trace:configure.ac:684: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) ++m4trace:configure.ac:684: -1- AC_SUBST_TRACE([LTLIBOBJS]) ++m4trace:configure.ac:684: -1- m4_pattern_allow([^LTLIBOBJS$]) ++m4trace:configure.ac:684: -1- AC_SUBST_TRACE([top_builddir]) ++m4trace:configure.ac:684: -1- AC_SUBST_TRACE([srcdir]) ++m4trace:configure.ac:684: -1- AC_SUBST_TRACE([abs_srcdir]) ++m4trace:configure.ac:684: -1- AC_SUBST_TRACE([top_srcdir]) ++m4trace:configure.ac:684: -1- AC_SUBST_TRACE([abs_top_srcdir]) ++m4trace:configure.ac:684: -1- AC_SUBST_TRACE([builddir]) ++m4trace:configure.ac:684: -1- AC_SUBST_TRACE([abs_builddir]) ++m4trace:configure.ac:684: -1- AC_SUBST_TRACE([abs_top_builddir]) ++m4trace:configure.ac:684: -1- AC_SUBST_TRACE([INSTALL]) ++m4trace:configure.ac:684: -1- AC_SUBST_TRACE([MKDIR_P]) ++m4trace:configure.ac:684: -1- AC_REQUIRE_AUX_FILE([ltmain.sh]) +diff -Nur LibVNCServer-0.9.1.orig/classes/Makefile.in LibVNCServer-0.9.1/classes/Makefile.in +--- LibVNCServer-0.9.1.orig/classes/Makefile.in 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/classes/Makefile.in 2008-10-31 18:46:26.000000000 -0200 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.9.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004, 2005 Free Software Foundation, Inc. ++# 2003, 2004, 2005, 2006 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. +@@ -13,15 +13,11 @@ + # PARTICULAR PURPOSE. + + @SET_MAKE@ +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -49,16 +45,17 @@ + DIST_SOURCES = + RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ +- install-exec-recursive install-info-recursive \ +- install-recursive installcheck-recursive installdirs-recursive \ +- pdf-recursive ps-recursive uninstall-info-recursive \ +- uninstall-recursive ++ install-dvi-recursive install-exec-recursive \ ++ install-html-recursive install-info-recursive \ ++ install-pdf-recursive install-ps-recursive install-recursive \ ++ installcheck-recursive installdirs-recursive pdf-recursive \ ++ ps-recursive uninstall-recursive ++RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ ++ distclean-recursive maintainer-clean-recursive + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -73,57 +70,38 @@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CRYPT_LIBS = @CRYPT_LIBS@ +-CXX = @CXX@ +-CXXCPP = @CXXCPP@ +-CXXDEPMODE = @CXXDEPMODE@ +-CXXFLAGS = @CXXFLAGS@ +-CYGIPC_FALSE = @CYGIPC_FALSE@ +-CYGIPC_TRUE = @CYGIPC_TRUE@ + CYGPATH_W = @CYGPATH_W@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-ECHO = @ECHO@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ +-F77 = @F77@ +-FFLAGS = @FFLAGS@ +-HAVE_LIBJPEG_FALSE = @HAVE_LIBJPEG_FALSE@ +-HAVE_LIBJPEG_TRUE = @HAVE_LIBJPEG_TRUE@ +-HAVE_LIBPTHREAD_FALSE = @HAVE_LIBPTHREAD_FALSE@ +-HAVE_LIBPTHREAD_TRUE = @HAVE_LIBPTHREAD_TRUE@ +-HAVE_LIBSDL_FALSE = @HAVE_LIBSDL_FALSE@ +-HAVE_LIBSDL_TRUE = @HAVE_LIBSDL_TRUE@ +-HAVE_LIBZ_FALSE = @HAVE_LIBZ_FALSE@ +-HAVE_LIBZ_TRUE = @HAVE_LIBZ_TRUE@ +-HAVE_MP3LAME_FALSE = @HAVE_MP3LAME_FALSE@ +-HAVE_MP3LAME_TRUE = @HAVE_MP3LAME_TRUE@ +-HAVE_RPM_FALSE = @HAVE_RPM_FALSE@ +-HAVE_RPM_TRUE = @HAVE_RPM_TRUE@ +-HAVE_SYSTEM_LIBVNCSERVER_FALSE = @HAVE_SYSTEM_LIBVNCSERVER_FALSE@ +-HAVE_SYSTEM_LIBVNCSERVER_TRUE = @HAVE_SYSTEM_LIBVNCSERVER_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++FGREP = @FGREP@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ +-LINUX_FALSE = @LINUX_FALSE@ +-LINUX_TRUE = @LINUX_TRUE@ ++LIPO = @LIPO@ + LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MINGW_FALSE = @MINGW_FALSE@ +-MINGW_TRUE = @MINGW_TRUE@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ + OBJEXT = @OBJEXT@ +-OSX_FALSE = @OSX_FALSE@ +-OSX_TRUE = @OSX_TRUE@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ +@@ -135,6 +113,7 @@ + RPMSOURCEDIR = @RPMSOURCEDIR@ + SDL_CFLAGS = @SDL_CFLAGS@ + SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + SSL_LIBS = @SSL_LIBS@ +@@ -142,25 +121,17 @@ + SYSTEM_LIBVNCSERVER_CFLAGS = @SYSTEM_LIBVNCSERVER_CFLAGS@ + SYSTEM_LIBVNCSERVER_LIBS = @SYSTEM_LIBVNCSERVER_LIBS@ + VERSION = @VERSION@ +-WITH_FFMPEG_FALSE = @WITH_FFMPEG_FALSE@ +-WITH_FFMPEG_TRUE = @WITH_FFMPEG_TRUE@ +-WITH_TIGHTVNC_FILETRANSFER_FALSE = @WITH_TIGHTVNC_FILETRANSFER_FALSE@ +-WITH_TIGHTVNC_FILETRANSFER_TRUE = @WITH_TIGHTVNC_FILETRANSFER_TRUE@ + WSOCKLIB = @WSOCKLIB@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_F77 = @ac_ct_F77@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ +@@ -172,28 +143,40 @@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + with_ffmpeg = @with_ffmpeg@ + EXTRA_DIST = VncViewer.jar index.vnc javaviewer.pseudo_proxy.patch + SUBDIRS = ssl +@@ -210,9 +193,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu classes/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign classes/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu classes/Makefile ++ $(AUTOMAKE) --foreign classes/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -237,10 +220,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- + # This directory's subdirectories are mostly independent; you can cd + # into them and run `make' without going through this Makefile. + # To change the values of `make' variables: instead of editing Makefiles, +@@ -272,8 +251,7 @@ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +-mostlyclean-recursive clean-recursive distclean-recursive \ +-maintainer-clean-recursive: ++$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ +@@ -374,22 +352,21 @@ + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -403,7 +380,7 @@ + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ +- || $(mkdir_p) "$(distdir)/$$subdir" \ ++ || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ +@@ -411,6 +388,8 @@ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ ++ am__remove_distdir=: \ ++ am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ +@@ -450,8 +429,7 @@ + + distclean: distclean-recursive + -rm -f Makefile +-distclean-am: clean-am distclean-generic distclean-libtool \ +- distclean-tags ++distclean-am: clean-am distclean-generic distclean-tags + + dvi: dvi-recursive + +@@ -465,12 +443,20 @@ + + install-data-am: + ++install-dvi: install-dvi-recursive ++ + install-exec-am: + ++install-html: install-html-recursive ++ + install-info: install-info-recursive + + install-man: + ++install-pdf: install-pdf-recursive ++ ++install-ps: install-ps-recursive ++ + installcheck-am: + + maintainer-clean: maintainer-clean-recursive +@@ -489,22 +475,24 @@ + + ps-am: + +-uninstall-am: uninstall-info-am ++uninstall-am: + +-uninstall-info: uninstall-info-recursive ++.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ ++ install-strip + +-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ +- clean clean-generic clean-libtool clean-recursive ctags \ +- ctags-recursive distclean distclean-generic distclean-libtool \ +- distclean-recursive distclean-tags distdir dvi dvi-am html \ ++.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ ++ all all-am check check-am clean clean-generic clean-libtool \ ++ ctags ctags-recursive distclean distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ ++ install-data-am install-dvi install-dvi-am install-exec \ ++ install-exec-am install-html install-html-am install-info \ ++ install-info-am install-man install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ +- maintainer-clean-generic maintainer-clean-recursive \ +- mostlyclean mostlyclean-generic mostlyclean-libtool \ +- mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ +- uninstall uninstall-am uninstall-info-am ++ maintainer-clean-generic mostlyclean mostlyclean-generic \ ++ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ ++ uninstall uninstall-am + + # 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 -Nur LibVNCServer-0.9.1.orig/classes/ssl/Makefile.in LibVNCServer-0.9.1/classes/ssl/Makefile.in +--- LibVNCServer-0.9.1.orig/classes/ssl/Makefile.in 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/classes/ssl/Makefile.in 2008-10-31 18:46:26.000000000 -0200 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.9.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004, 2005 Free Software Foundation, Inc. ++# 2003, 2004, 2005, 2006 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. +@@ -13,15 +13,11 @@ + # PARTICULAR PURPOSE. + + @SET_MAKE@ +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../.. + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -49,8 +45,6 @@ + DIST_SOURCES = + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -65,57 +59,38 @@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CRYPT_LIBS = @CRYPT_LIBS@ +-CXX = @CXX@ +-CXXCPP = @CXXCPP@ +-CXXDEPMODE = @CXXDEPMODE@ +-CXXFLAGS = @CXXFLAGS@ +-CYGIPC_FALSE = @CYGIPC_FALSE@ +-CYGIPC_TRUE = @CYGIPC_TRUE@ + CYGPATH_W = @CYGPATH_W@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-ECHO = @ECHO@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ +-F77 = @F77@ +-FFLAGS = @FFLAGS@ +-HAVE_LIBJPEG_FALSE = @HAVE_LIBJPEG_FALSE@ +-HAVE_LIBJPEG_TRUE = @HAVE_LIBJPEG_TRUE@ +-HAVE_LIBPTHREAD_FALSE = @HAVE_LIBPTHREAD_FALSE@ +-HAVE_LIBPTHREAD_TRUE = @HAVE_LIBPTHREAD_TRUE@ +-HAVE_LIBSDL_FALSE = @HAVE_LIBSDL_FALSE@ +-HAVE_LIBSDL_TRUE = @HAVE_LIBSDL_TRUE@ +-HAVE_LIBZ_FALSE = @HAVE_LIBZ_FALSE@ +-HAVE_LIBZ_TRUE = @HAVE_LIBZ_TRUE@ +-HAVE_MP3LAME_FALSE = @HAVE_MP3LAME_FALSE@ +-HAVE_MP3LAME_TRUE = @HAVE_MP3LAME_TRUE@ +-HAVE_RPM_FALSE = @HAVE_RPM_FALSE@ +-HAVE_RPM_TRUE = @HAVE_RPM_TRUE@ +-HAVE_SYSTEM_LIBVNCSERVER_FALSE = @HAVE_SYSTEM_LIBVNCSERVER_FALSE@ +-HAVE_SYSTEM_LIBVNCSERVER_TRUE = @HAVE_SYSTEM_LIBVNCSERVER_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++FGREP = @FGREP@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ +-LINUX_FALSE = @LINUX_FALSE@ +-LINUX_TRUE = @LINUX_TRUE@ ++LIPO = @LIPO@ + LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MINGW_FALSE = @MINGW_FALSE@ +-MINGW_TRUE = @MINGW_TRUE@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ + OBJEXT = @OBJEXT@ +-OSX_FALSE = @OSX_FALSE@ +-OSX_TRUE = @OSX_TRUE@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ +@@ -127,6 +102,7 @@ + RPMSOURCEDIR = @RPMSOURCEDIR@ + SDL_CFLAGS = @SDL_CFLAGS@ + SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + SSL_LIBS = @SSL_LIBS@ +@@ -134,25 +110,17 @@ + SYSTEM_LIBVNCSERVER_CFLAGS = @SYSTEM_LIBVNCSERVER_CFLAGS@ + SYSTEM_LIBVNCSERVER_LIBS = @SYSTEM_LIBVNCSERVER_LIBS@ + VERSION = @VERSION@ +-WITH_FFMPEG_FALSE = @WITH_FFMPEG_FALSE@ +-WITH_FFMPEG_TRUE = @WITH_FFMPEG_TRUE@ +-WITH_TIGHTVNC_FILETRANSFER_FALSE = @WITH_TIGHTVNC_FILETRANSFER_FALSE@ +-WITH_TIGHTVNC_FILETRANSFER_TRUE = @WITH_TIGHTVNC_FILETRANSFER_TRUE@ + WSOCKLIB = @WSOCKLIB@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_F77 = @ac_ct_F77@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ +@@ -164,28 +132,40 @@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + with_ffmpeg = @with_ffmpeg@ + EXTRA_DIST = VncViewer.jar index.vnc SignedVncViewer.jar proxy.vnc README ss_vncviewer onetimekey UltraViewerSSL.jar SignedUltraViewerSSL.jar ultra.vnc ultrasigned.vnc + all: all-am +@@ -200,9 +180,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu classes/ssl/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign classes/ssl/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu classes/ssl/Makefile ++ $(AUTOMAKE) --foreign classes/ssl/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -226,10 +206,6 @@ + + clean-libtool: + -rm -rf .libs _libs +- +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: + tags: TAGS + TAGS: + +@@ -238,22 +214,21 @@ + + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -298,7 +273,7 @@ + + distclean: distclean-am + -rm -f Makefile +-distclean-am: clean-am distclean-generic distclean-libtool ++distclean-am: clean-am distclean-generic + + dvi: dvi-am + +@@ -312,12 +287,20 @@ + + install-data-am: + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -336,17 +319,20 @@ + + ps-am: + +-uninstall-am: uninstall-info-am ++uninstall-am: ++ ++.MAKE: install-am install-strip + + .PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ +- install-data install-data-am install-exec install-exec-am \ +- install-info install-info-am install-man install-strip \ ++ install-data install-data-am install-dvi install-dvi-am \ ++ install-exec install-exec-am install-html install-html-am \ ++ install-info install-info-am install-man install-pdf \ ++ install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ +- mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ +- uninstall-info-am ++ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + + # 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 -Nur LibVNCServer-0.9.1.orig/client_examples/Makefile.in LibVNCServer-0.9.1/client_examples/Makefile.in +--- LibVNCServer-0.9.1.orig/client_examples/Makefile.in 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/client_examples/Makefile.in 2008-10-31 18:46:26.000000000 -0200 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.9.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004, 2005 Free Software Foundation, Inc. ++# 2003, 2004, 2005, 2006 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. +@@ -14,17 +14,11 @@ + + @SET_MAKE@ + +-SOURCES = SDLvncviewer.c backchannel.c ppmtest.c vnc2mpg.c +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -59,6 +53,9 @@ + am__DEPENDENCIES_2 = + @HAVE_LIBSDL_TRUE@SDLvncviewer_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + @HAVE_LIBSDL_TRUE@ $(am__DEPENDENCIES_2) ++SDLvncviewer_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(SDLvncviewer_CFLAGS) \ ++ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ + backchannel_SOURCES = backchannel.c + backchannel_OBJECTS = backchannel.$(OBJEXT) + backchannel_LDADD = $(LDADD) +@@ -73,25 +70,27 @@ + @WITH_FFMPEG_TRUE@ $(FFMPEG_HOME)/libavformat/libavformat.a \ + @WITH_FFMPEG_TRUE@ $(FFMPEG_HOME)/libavcodec/libavcodec.a \ + @WITH_FFMPEG_TRUE@ $(am__DEPENDENCIES_2) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ++vnc2mpg_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(vnc2mpg_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ + depcomp = $(SHELL) $(top_srcdir)/depcomp + am__depfiles_maybe = depfiles + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ +- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +- $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + CCLD = $(CC) +-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ + SOURCES = SDLvncviewer.c backchannel.c ppmtest.c vnc2mpg.c + DIST_SOURCES = SDLvncviewer.c backchannel.c ppmtest.c vnc2mpg.c + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -106,57 +105,38 @@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CRYPT_LIBS = @CRYPT_LIBS@ +-CXX = @CXX@ +-CXXCPP = @CXXCPP@ +-CXXDEPMODE = @CXXDEPMODE@ +-CXXFLAGS = @CXXFLAGS@ +-CYGIPC_FALSE = @CYGIPC_FALSE@ +-CYGIPC_TRUE = @CYGIPC_TRUE@ + CYGPATH_W = @CYGPATH_W@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-ECHO = @ECHO@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ +-F77 = @F77@ +-FFLAGS = @FFLAGS@ +-HAVE_LIBJPEG_FALSE = @HAVE_LIBJPEG_FALSE@ +-HAVE_LIBJPEG_TRUE = @HAVE_LIBJPEG_TRUE@ +-HAVE_LIBPTHREAD_FALSE = @HAVE_LIBPTHREAD_FALSE@ +-HAVE_LIBPTHREAD_TRUE = @HAVE_LIBPTHREAD_TRUE@ +-HAVE_LIBSDL_FALSE = @HAVE_LIBSDL_FALSE@ +-HAVE_LIBSDL_TRUE = @HAVE_LIBSDL_TRUE@ +-HAVE_LIBZ_FALSE = @HAVE_LIBZ_FALSE@ +-HAVE_LIBZ_TRUE = @HAVE_LIBZ_TRUE@ +-HAVE_MP3LAME_FALSE = @HAVE_MP3LAME_FALSE@ +-HAVE_MP3LAME_TRUE = @HAVE_MP3LAME_TRUE@ +-HAVE_RPM_FALSE = @HAVE_RPM_FALSE@ +-HAVE_RPM_TRUE = @HAVE_RPM_TRUE@ +-HAVE_SYSTEM_LIBVNCSERVER_FALSE = @HAVE_SYSTEM_LIBVNCSERVER_FALSE@ +-HAVE_SYSTEM_LIBVNCSERVER_TRUE = @HAVE_SYSTEM_LIBVNCSERVER_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++FGREP = @FGREP@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ +-LINUX_FALSE = @LINUX_FALSE@ +-LINUX_TRUE = @LINUX_TRUE@ ++LIPO = @LIPO@ + LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MINGW_FALSE = @MINGW_FALSE@ +-MINGW_TRUE = @MINGW_TRUE@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ + OBJEXT = @OBJEXT@ +-OSX_FALSE = @OSX_FALSE@ +-OSX_TRUE = @OSX_TRUE@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ +@@ -168,6 +148,7 @@ + RPMSOURCEDIR = @RPMSOURCEDIR@ + SDL_CFLAGS = @SDL_CFLAGS@ + SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + SSL_LIBS = @SSL_LIBS@ +@@ -175,25 +156,17 @@ + SYSTEM_LIBVNCSERVER_CFLAGS = @SYSTEM_LIBVNCSERVER_CFLAGS@ + SYSTEM_LIBVNCSERVER_LIBS = @SYSTEM_LIBVNCSERVER_LIBS@ + VERSION = @VERSION@ +-WITH_FFMPEG_FALSE = @WITH_FFMPEG_FALSE@ +-WITH_FFMPEG_TRUE = @WITH_FFMPEG_TRUE@ +-WITH_TIGHTVNC_FILETRANSFER_FALSE = @WITH_TIGHTVNC_FILETRANSFER_FALSE@ +-WITH_TIGHTVNC_FILETRANSFER_TRUE = @WITH_TIGHTVNC_FILETRANSFER_TRUE@ + WSOCKLIB = @WSOCKLIB@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_F77 = @ac_ct_F77@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ +@@ -205,28 +178,40 @@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + with_ffmpeg = @with_ffmpeg@ + AM_CFLAGS = -I $(top_srcdir) -g -Wall + LDADD = ../libvncclient/libvncclient.la @WSOCKLIB@ +@@ -253,9 +238,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu client_examples/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign client_examples/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu client_examples/Makefile ++ $(AUTOMAKE) --foreign client_examples/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -282,16 +267,16 @@ + done + SDLvncviewer$(EXEEXT): $(SDLvncviewer_OBJECTS) $(SDLvncviewer_DEPENDENCIES) + @rm -f SDLvncviewer$(EXEEXT) +- $(LINK) $(SDLvncviewer_LDFLAGS) $(SDLvncviewer_OBJECTS) $(SDLvncviewer_LDADD) $(LIBS) ++ $(SDLvncviewer_LINK) $(SDLvncviewer_OBJECTS) $(SDLvncviewer_LDADD) $(LIBS) + backchannel$(EXEEXT): $(backchannel_OBJECTS) $(backchannel_DEPENDENCIES) + @rm -f backchannel$(EXEEXT) +- $(LINK) $(backchannel_LDFLAGS) $(backchannel_OBJECTS) $(backchannel_LDADD) $(LIBS) ++ $(LINK) $(backchannel_OBJECTS) $(backchannel_LDADD) $(LIBS) + ppmtest$(EXEEXT): $(ppmtest_OBJECTS) $(ppmtest_DEPENDENCIES) + @rm -f ppmtest$(EXEEXT) +- $(LINK) $(ppmtest_LDFLAGS) $(ppmtest_OBJECTS) $(ppmtest_LDADD) $(LIBS) ++ $(LINK) $(ppmtest_OBJECTS) $(ppmtest_LDADD) $(LIBS) + vnc2mpg$(EXEEXT): $(vnc2mpg_OBJECTS) $(vnc2mpg_DEPENDENCIES) + @rm -f vnc2mpg$(EXEEXT) +- $(LINK) $(vnc2mpg_LDFLAGS) $(vnc2mpg_OBJECTS) $(vnc2mpg_LDADD) $(LIBS) ++ $(vnc2mpg_LINK) $(vnc2mpg_OBJECTS) $(vnc2mpg_LDADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -305,50 +290,50 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vnc2mpg-vnc2mpg.Po@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + SDLvncviewer-SDLvncviewer.o: SDLvncviewer.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SDLvncviewer_CFLAGS) $(CFLAGS) -MT SDLvncviewer-SDLvncviewer.o -MD -MP -MF "$(DEPDIR)/SDLvncviewer-SDLvncviewer.Tpo" -c -o SDLvncviewer-SDLvncviewer.o `test -f 'SDLvncviewer.c' || echo '$(srcdir)/'`SDLvncviewer.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/SDLvncviewer-SDLvncviewer.Tpo" "$(DEPDIR)/SDLvncviewer-SDLvncviewer.Po"; else rm -f "$(DEPDIR)/SDLvncviewer-SDLvncviewer.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SDLvncviewer_CFLAGS) $(CFLAGS) -MT SDLvncviewer-SDLvncviewer.o -MD -MP -MF $(DEPDIR)/SDLvncviewer-SDLvncviewer.Tpo -c -o SDLvncviewer-SDLvncviewer.o `test -f 'SDLvncviewer.c' || echo '$(srcdir)/'`SDLvncviewer.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/SDLvncviewer-SDLvncviewer.Tpo $(DEPDIR)/SDLvncviewer-SDLvncviewer.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='SDLvncviewer.c' object='SDLvncviewer-SDLvncviewer.o' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SDLvncviewer_CFLAGS) $(CFLAGS) -c -o SDLvncviewer-SDLvncviewer.o `test -f 'SDLvncviewer.c' || echo '$(srcdir)/'`SDLvncviewer.c + + SDLvncviewer-SDLvncviewer.obj: SDLvncviewer.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SDLvncviewer_CFLAGS) $(CFLAGS) -MT SDLvncviewer-SDLvncviewer.obj -MD -MP -MF "$(DEPDIR)/SDLvncviewer-SDLvncviewer.Tpo" -c -o SDLvncviewer-SDLvncviewer.obj `if test -f 'SDLvncviewer.c'; then $(CYGPATH_W) 'SDLvncviewer.c'; else $(CYGPATH_W) '$(srcdir)/SDLvncviewer.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/SDLvncviewer-SDLvncviewer.Tpo" "$(DEPDIR)/SDLvncviewer-SDLvncviewer.Po"; else rm -f "$(DEPDIR)/SDLvncviewer-SDLvncviewer.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SDLvncviewer_CFLAGS) $(CFLAGS) -MT SDLvncviewer-SDLvncviewer.obj -MD -MP -MF $(DEPDIR)/SDLvncviewer-SDLvncviewer.Tpo -c -o SDLvncviewer-SDLvncviewer.obj `if test -f 'SDLvncviewer.c'; then $(CYGPATH_W) 'SDLvncviewer.c'; else $(CYGPATH_W) '$(srcdir)/SDLvncviewer.c'; fi` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/SDLvncviewer-SDLvncviewer.Tpo $(DEPDIR)/SDLvncviewer-SDLvncviewer.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='SDLvncviewer.c' object='SDLvncviewer-SDLvncviewer.obj' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SDLvncviewer_CFLAGS) $(CFLAGS) -c -o SDLvncviewer-SDLvncviewer.obj `if test -f 'SDLvncviewer.c'; then $(CYGPATH_W) 'SDLvncviewer.c'; else $(CYGPATH_W) '$(srcdir)/SDLvncviewer.c'; fi` + + vnc2mpg-vnc2mpg.o: vnc2mpg.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vnc2mpg_CFLAGS) $(CFLAGS) -MT vnc2mpg-vnc2mpg.o -MD -MP -MF "$(DEPDIR)/vnc2mpg-vnc2mpg.Tpo" -c -o vnc2mpg-vnc2mpg.o `test -f 'vnc2mpg.c' || echo '$(srcdir)/'`vnc2mpg.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vnc2mpg-vnc2mpg.Tpo" "$(DEPDIR)/vnc2mpg-vnc2mpg.Po"; else rm -f "$(DEPDIR)/vnc2mpg-vnc2mpg.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vnc2mpg_CFLAGS) $(CFLAGS) -MT vnc2mpg-vnc2mpg.o -MD -MP -MF $(DEPDIR)/vnc2mpg-vnc2mpg.Tpo -c -o vnc2mpg-vnc2mpg.o `test -f 'vnc2mpg.c' || echo '$(srcdir)/'`vnc2mpg.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/vnc2mpg-vnc2mpg.Tpo $(DEPDIR)/vnc2mpg-vnc2mpg.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='vnc2mpg.c' object='vnc2mpg-vnc2mpg.o' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vnc2mpg_CFLAGS) $(CFLAGS) -c -o vnc2mpg-vnc2mpg.o `test -f 'vnc2mpg.c' || echo '$(srcdir)/'`vnc2mpg.c + + vnc2mpg-vnc2mpg.obj: vnc2mpg.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vnc2mpg_CFLAGS) $(CFLAGS) -MT vnc2mpg-vnc2mpg.obj -MD -MP -MF "$(DEPDIR)/vnc2mpg-vnc2mpg.Tpo" -c -o vnc2mpg-vnc2mpg.obj `if test -f 'vnc2mpg.c'; then $(CYGPATH_W) 'vnc2mpg.c'; else $(CYGPATH_W) '$(srcdir)/vnc2mpg.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vnc2mpg-vnc2mpg.Tpo" "$(DEPDIR)/vnc2mpg-vnc2mpg.Po"; else rm -f "$(DEPDIR)/vnc2mpg-vnc2mpg.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vnc2mpg_CFLAGS) $(CFLAGS) -MT vnc2mpg-vnc2mpg.obj -MD -MP -MF $(DEPDIR)/vnc2mpg-vnc2mpg.Tpo -c -o vnc2mpg-vnc2mpg.obj `if test -f 'vnc2mpg.c'; then $(CYGPATH_W) 'vnc2mpg.c'; else $(CYGPATH_W) '$(srcdir)/vnc2mpg.c'; fi` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/vnc2mpg-vnc2mpg.Tpo $(DEPDIR)/vnc2mpg-vnc2mpg.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='vnc2mpg.c' object='vnc2mpg-vnc2mpg.obj' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vnc2mpg_CFLAGS) $(CFLAGS) -c -o vnc2mpg-vnc2mpg.obj `if test -f 'vnc2mpg.c'; then $(CYGPATH_W) 'vnc2mpg.c'; else $(CYGPATH_W) '$(srcdir)/vnc2mpg.c'; fi` +@@ -359,10 +344,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -412,22 +393,21 @@ + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -475,7 +455,7 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + +@@ -489,12 +469,20 @@ + + install-data-am: + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -515,19 +503,22 @@ + + ps-am: + +-uninstall-am: uninstall-info-am ++uninstall-am: ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ +- install install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am install-man \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ +- pdf pdf-am ps ps-am tags uninstall uninstall-am \ +- uninstall-info-am ++ pdf pdf-am ps ps-am tags uninstall uninstall-am + + # 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 -Nur LibVNCServer-0.9.1.orig/config.guess LibVNCServer-0.9.1/config.guess +--- LibVNCServer-0.9.1.orig/config.guess 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/config.guess 2008-10-31 18:46:27.000000000 -0200 +@@ -3,7 +3,7 @@ + # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + # 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +-timestamp='2005-02-10' ++timestamp='2005-06-30' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -17,13 +17,15 @@ + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA ++# 02110-1301, USA. + # + # 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. + ++ + # Originally written by Per Bothner . + # Please send patches to . Submit a context + # diff and a properly formatted ChangeLog entry. +@@ -66,11 +68,11 @@ + while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) +- echo "$timestamp" ; exit 0 ;; ++ echo "$timestamp" ; exit ;; + --version | -v ) +- echo "$version" ; exit 0 ;; ++ echo "$version" ; exit ;; + --help | --h* | -h ) +- echo "$usage"; exit 0 ;; ++ echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. +@@ -136,6 +138,19 @@ + UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown + UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + ++# Detect uclibc systems. ++ ++LIBC="gnu" ++if [ -f /usr/include/bits/uClibc_config.h ] ++then ++ LIBC=uclibc ++ if [ -n `grep "#define __UCLIBC_CONFIG_VERSION__" /usr/include/bits/uClibc_config.h` ] ++ then ++ UCLIBC_SUBVER=`sed -n "/#define __UCLIBC_CONFIG_VERSION__ /s///p" /usr/include/bits/uClibc_config.h` ++ LIBC=$LIBC$UCLIBC_SUBVER ++ fi ++fi ++ + # Note: order is significant - the case branches are not exclusive. + + case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +@@ -196,55 +211,20 @@ + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" +- exit 0 ;; +- amd64:OpenBSD:*:*) +- echo x86_64-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- amiga:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- cats:OpenBSD:*:*) +- echo arm-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- hp300:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- luna88k:OpenBSD:*:*) +- echo m88k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- mac68k:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- macppc:OpenBSD:*:*) +- echo powerpc-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- mvme68k:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- mvme88k:OpenBSD:*:*) +- echo m88k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- mvmeppc:OpenBSD:*:*) +- echo powerpc-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- sgi:OpenBSD:*:*) +- echo mips64-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- sun3:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:OpenBSD:*:*) +- echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` ++ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} ++ exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) +@@ -297,40 +277,43 @@ + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` +- exit 0 ;; ++ exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix +- exit 0 ;; ++ exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 +- exit 0 ;; ++ exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 +- exit 0;; ++ exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos +- exit 0 ;; ++ exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos +- exit 0 ;; ++ exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition +- exit 0 ;; ++ exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe +- exit 0 ;; ++ exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 +- exit 0 ;; ++ exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} +- exit 0;; ++ exit ;; ++ arm:riscos:*:*|arm:RISCOS:*:*) ++ echo arm-unknown-riscos ++ exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp +- exit 0;; ++ exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then +@@ -338,32 +321,32 @@ + else + echo pyramid-pyramid-bsd + fi +- exit 0 ;; ++ exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 +- exit 0 ;; ++ exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 +- exit 0 ;; ++ exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in +- sparc) echo sparc-icl-nx7 && exit 0 ;; ++ sparc) echo sparc-icl-nx7; exit ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) +@@ -372,10 +355,10 @@ + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` +- exit 0 ;; ++ exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 +@@ -387,10 +370,10 @@ + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac +- exit 0 ;; ++ exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor +@@ -401,40 +384,40 @@ + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 +- exit 0 ;; ++ exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +@@ -458,32 +441,33 @@ + exit (-1); + } + EOF +- $CC_FOR_BUILD -o $dummy $dummy.c \ +- && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ +- && exit 0 ++ $CC_FOR_BUILD -o $dummy $dummy.c && ++ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && ++ SYSTEM_NAME=`$dummy $dummyarg` && ++ { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax +- exit 0 ;; ++ exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax +- exit 0 ;; ++ exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax +- exit 0 ;; ++ exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix +- exit 0 ;; ++ exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 +- exit 0 ;; ++ exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 +- exit 0 ;; ++ exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 +- exit 0 ;; ++ exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` +@@ -499,29 +483,29 @@ + else + echo i586-dg-dgux${UNAME_RELEASE} + fi +- exit 0 ;; ++ exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 +- exit 0 ;; ++ exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 +- exit 0 ;; ++ exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 +- exit 0 ;; ++ exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd +- exit 0 ;; ++ exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` +- exit 0 ;; ++ exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. +- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id +- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' ++ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id ++ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix +- exit 0 ;; ++ exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` +@@ -529,7 +513,7 @@ + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} +- exit 0 ;; ++ exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build +@@ -544,14 +528,18 @@ + exit(0); + } + EOF +- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 +- echo rs6000-ibm-aix3.2.5 ++ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` ++ then ++ echo "$SYSTEM_NAME" ++ else ++ echo rs6000-ibm-aix3.2.5 ++ fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi +- exit 0 ;; ++ exit ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then +@@ -565,28 +553,28 @@ + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} +- exit 0 ;; ++ exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix +- exit 0 ;; ++ exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 +- exit 0 ;; ++ exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to +- exit 0 ;; # report: romp-ibm BSD 4.3 ++ exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx +- exit 0 ;; ++ exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 +- exit 0 ;; ++ exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd +- exit 0 ;; ++ exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 +- exit 0 ;; ++ exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in +@@ -650,7 +638,18 @@ + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build +- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null ++ ++ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating ++ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler ++ # generating 64-bit code. GNU and HP use different nomenclature: ++ # ++ # $ CC_FOR_BUILD=cc ./config.guess ++ # => hppa2.0w-hp-hpux11.23 ++ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess ++ # => hppa64-hp-hpux11.23 ++ ++ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | ++ grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else +@@ -658,11 +657,11 @@ + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} +- exit 0 ;; ++ exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} +- exit 0 ;; ++ exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +@@ -690,161 +689,166 @@ + exit (0); + } + EOF +- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 ++ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && ++ { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 +- exit 0 ;; ++ exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd +- exit 0 ;; ++ exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd +- exit 0 ;; ++ exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix +- exit 0 ;; ++ exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf +- exit 0 ;; ++ exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf +- exit 0 ;; ++ exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi +- exit 0 ;; ++ exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites +- exit 0 ;; ++ exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd +- exit 0 ;; ++ exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi +- exit 0 ;; ++ exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd +- exit 0 ;; ++ exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd +- exit 0 ;; ++ exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd +- exit 0 ;; ++ exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" +- exit 0 ;; ++ exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" +- exit 0 ;; ++ exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` +- exit 0 ;; ++ exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin +- exit 0 ;; ++ exit ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 +- exit 0 ;; ++ exit ;; ++ i*:windows32*:*) ++ # uname -m includes "-pc" on this system. ++ echo ${UNAME_MACHINE}-mingw32 ++ exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 +- exit 0 ;; ++ exit ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' +- exit 0 ;; ++ exit ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks +- exit 0 ;; ++ exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix +- exit 0 ;; ++ exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin +- exit 0 ;; ++ exit ;; + amd64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin +- exit 0 ;; ++ exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin +- exit 0 ;; ++ exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` +- exit 0 ;; ++ exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu +- exit 0 ;; ++ exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix +- exit 0 ;; ++ exit ;; + arm*:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} ++ exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu +- exit 0 ;; ++ exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu +- exit 0 ;; ++ exit ;; + frv:Linux:*:*) +- echo frv-unknown-linux-gnu +- exit 0 ;; ++ echo frv-unknown-linux-${LIBC} ++ exit ;; + ia64:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} ++ exit ;; + m32r*:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} ++ exit ;; + m68*:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} ++ exit ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +@@ -862,7 +866,7 @@ + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` +- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ++ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build +@@ -881,14 +885,14 @@ + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` +- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ++ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + ppc:Linux:*:*) +- echo powerpc-unknown-linux-gnu +- exit 0 ;; ++ echo powerpc-unknown-linux-${LIBC} ++ exit ;; + ppc64:Linux:*:*) +- echo powerpc64-unknown-linux-gnu +- exit 0 ;; ++ echo powerpc64-unknown-linux-${LIBC} ++ exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; +@@ -900,35 +904,35 @@ + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null +- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi +- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} +- exit 0 ;; ++ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} ++ exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in +- PA7*) echo hppa1.1-unknown-linux-gnu ;; +- PA8*) echo hppa2.0-unknown-linux-gnu ;; +- *) echo hppa-unknown-linux-gnu ;; ++ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; ++ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; ++ *) echo hppa-unknown-linux-${LIBC} ;; + esac +- exit 0 ;; ++ exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) +- echo hppa64-unknown-linux-gnu +- exit 0 ;; ++ echo hppa64-unknown-linux-${LIBC} ++ exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux +- exit 0 ;; ++ exit ;; + sh64*:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} ++ exit ;; + sh*:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} ++ exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} ++ exit ;; + x86_64:Linux:*:*) +- echo x86_64-unknown-linux-gnu +- exit 0 ;; ++ echo x86_64-unknown-linux-${LIBC} ++ exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent +@@ -942,20 +946,21 @@ + p'` + case "$ld_supported_targets" in + elf32-i386) +- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ++ TENTATIVE="${UNAME_MACHINE}-pc-linux-${LIBC}" + ;; + a.out-i386-linux) +- echo "${UNAME_MACHINE}-pc-linux-gnuaout" +- exit 0 ;; ++ echo "${UNAME_MACHINE}-pc-linux-${LIBC}aout" ++ exit ;; + coff-i386) +- echo "${UNAME_MACHINE}-pc-linux-gnucoff" +- exit 0 ;; ++ echo "${UNAME_MACHINE}-pc-linux-${LIBC}coff" ++ exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. +- echo "${UNAME_MACHINE}-pc-linux-gnuoldld" +- exit 0 ;; ++ echo "${UNAME_MACHINE}-pc-linux-${LIBC}oldld" ++ exit ;; + esac ++ if [ $LIBC != "gnu" -o $LIBC != "gnulibc1" ];then echo "$TENTATIVE" && exit; fi + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +@@ -982,15 +987,18 @@ + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` +- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 +- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ++ test x"${LIBC}" != x && { ++ echo "${UNAME_MACHINE}-pc-linux-${LIBC}" ++ exit ++ } ++ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 +- exit 0 ;; ++ exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... +@@ -998,27 +1006,27 @@ + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} +- exit 0 ;; ++ exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx +- exit 0 ;; ++ exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop +- exit 0 ;; ++ exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos +- exit 0 ;; +- i*86:syllable:*:*) ++ exit ;; ++ i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable +- exit 0 ;; ++ exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp +- exit 0 ;; ++ exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then +@@ -1026,15 +1034,16 @@ + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi +- exit 0 ;; +- i*86:*:5:[78]*) ++ exit ;; ++ i*86:*:5:[678]*) ++ # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} +- exit 0 ;; ++ exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi +- exit 0 ;; ++ exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv +- exit 0 ;; ++ exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv +- exit 0 ;; ++ exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix +- exit 0 ;; ++ exit ;; + M68*:*:R3V[5678]*:*) +- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; ++ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ +- && echo i486-ncr-sysv4.3${OS_REL} && exit 0 ++ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ +- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; ++ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ +- && echo i486-ncr-sysv4 && exit 0 ;; ++ && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 +- exit 0 ;; ++ exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 +- exit 0 ;; ++ exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 +- exit 0 ;; ++ exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` +@@ -1126,61 +1135,65 @@ + else + echo ns32k-sni-sysv + fi +- exit 0 ;; ++ exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 +- exit 0 ;; ++ exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 +- exit 0 ;; ++ exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 +- exit 0 ;; ++ exit ;; ++ i*86:VOS:*:*) ++ # From Paul.Green@stratus.com. ++ echo ${UNAME_MACHINE}-stratus-vos ++ exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos +- exit 0 ;; ++ exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 +- exit 0 ;; ++ exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi +- exit 0 ;; ++ exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos +- exit 0 ;; ++ exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos +- exit 0 ;; ++ exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos +- exit 0 ;; ++ exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in +@@ -1188,7 +1201,7 @@ + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then +@@ -1196,25 +1209,25 @@ + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:QNX:*:4*) + echo i386-pc-qnx +- exit 0 ;; ++ exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux +- exit 0 ;; ++ exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv +- exit 0 ;; ++ exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 +@@ -1225,41 +1238,44 @@ + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 +- exit 0 ;; ++ exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 +- exit 0 ;; ++ exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex +- exit 0 ;; ++ exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 +- exit 0 ;; ++ exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 +- exit 0 ;; ++ exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 +- exit 0 ;; ++ exit ;; + *:ITS:*:*) + echo pdp10-unknown-its +- exit 0 ;; ++ exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` +- exit 0 ;; ++ exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in +- A*) echo alpha-dec-vms && exit 0 ;; +- I*) echo ia64-dec-vms && exit 0 ;; +- V*) echo vax-dec-vms && exit 0 ;; ++ A*) echo alpha-dec-vms ; exit ;; ++ I*) echo ia64-dec-vms ; exit ;; ++ V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix +- exit 0 ;; ++ exit ;; ++ i*86:skyos:*:*) ++ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' ++ exit ;; + esac + + #echo '(No uname command or uname output not recognized.)' 1>&2 +@@ -1291,7 +1307,7 @@ + #endif + + #if defined (__arm) && defined (__acorn) && defined (__unix) +- printf ("arm-acorn-riscix"); exit (0); ++ printf ("arm-acorn-riscix\n"); exit (0); + #endif + + #if defined (hp300) && !defined (hpux) +@@ -1380,11 +1396,12 @@ + } + EOF + +-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 ++$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && ++ { echo "$SYSTEM_NAME"; exit; } + + # Apollos put the system type in the environment. + +-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } ++test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + + # Convex versions that predate uname can use getsysinfo(1) + +@@ -1393,22 +1410,22 @@ + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd +- exit 0 ;; ++ exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi +- exit 0 ;; ++ exit ;; + c34*) + echo c34-convex-bsd +- exit 0 ;; ++ exit ;; + c38*) + echo c38-convex-bsd +- exit 0 ;; ++ exit ;; + c4*) + echo c4-convex-bsd +- exit 0 ;; ++ exit ;; + esac + fi + +@@ -1419,7 +1436,9 @@ + the operating system you are using. It is advised that you + download the most up to date version of the config scripts from + +- ftp://ftp.gnu.org/pub/gnu/config/ ++ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess ++and ++ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub + + If the version you run ($0) is already up to date, please + send the following data and any information you think might be +diff -Nur LibVNCServer-0.9.1.orig/config.sub LibVNCServer-0.9.1/config.sub +--- LibVNCServer-0.9.1.orig/config.sub 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/config.sub 2008-10-31 18:46:27.000000000 -0200 +@@ -3,7 +3,7 @@ + # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + # 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +-timestamp='2005-02-10' ++timestamp='2005-06-30' + + # This file is (in principle) common to ALL GNU software. + # The presence of a machine in this file suggests that SOME GNU software +@@ -21,14 +21,15 @@ + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, +-# Boston, MA 02111-1307, USA. +- ++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA ++# 02110-1301, USA. ++# + # 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. + ++ + # Please send patches to . Submit a context + # diff and a properly formatted ChangeLog entry. + # +@@ -83,11 +84,11 @@ + while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) +- echo "$timestamp" ; exit 0 ;; ++ echo "$timestamp" ; exit ;; + --version | -v ) +- echo "$version" ; exit 0 ;; ++ echo "$version" ; exit ;; + --help | --h* | -h ) +- echo "$usage"; exit 0 ;; ++ echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. +@@ -99,7 +100,7 @@ + *local*) + # First pass through any local machine types. + echo $1 +- exit 0;; ++ exit ;; + + * ) + break ;; +@@ -230,7 +231,8 @@ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ +- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ ++ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ ++ | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ +@@ -246,6 +248,7 @@ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ ++ | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ +@@ -254,6 +257,7 @@ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ ++ | ms1 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ +@@ -262,7 +266,8 @@ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ +- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ ++ | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ ++ | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ +@@ -271,6 +276,9 @@ + | z8k) + basic_machine=$basic_machine-unknown + ;; ++ m32c) ++ basic_machine=$basic_machine-unknown ++ ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown +@@ -297,8 +305,8 @@ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ +- | avr-* \ +- | bs2000-* \ ++ | avr-* | avr32-* \ ++ | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ +@@ -319,6 +327,7 @@ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ ++ | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ +@@ -327,6 +336,7 @@ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ ++ | ms1-* \ + | msp430-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ +@@ -336,7 +346,8 @@ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ +- | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ ++ | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ ++ | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ +@@ -348,6 +359,8 @@ + | ymp-* \ + | z8k-*) + ;; ++ m32c-*) ++ ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) +@@ -1089,9 +1102,6 @@ + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; +- sh64) +- basic_machine=sh64-unknown +- ;; + sparc | sparcv8 | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; +@@ -1178,7 +1188,7 @@ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ +- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) ++ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* | -skyos*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +@@ -1556,7 +1566,7 @@ + esac + + echo $basic_machine$os +-exit 0 ++exit + + # Local variables: + # eval: (add-hook 'write-file-hooks 'time-stamp) +diff -Nur LibVNCServer-0.9.1.orig/configure LibVNCServer-0.9.1/configure +--- LibVNCServer-0.9.1.orig/configure 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/configure 2008-10-31 18:46:26.000000000 -0200 +@@ -1,27 +1,56 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.59 for LibVNCServer 0.9.1. ++# Generated by GNU Autoconf 2.61 for LibVNCServer 0.9.1. + # + # Report bugs to . + # +-# Copyright (C) 2003 Free Software Foundation, Inc. ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This configure script is free software; the Free Software Foundation + # gives unlimited permission to copy, distribute and modify it. + ## --------------------- ## + ## M4sh Initialization. ## + ## --------------------- ## + +-# Be Bourne compatible ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh + if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh + fi +-DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +@@ -31,8 +60,43 @@ + fi + + ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ + # Work around bugs in pre-3.0 UWIN ksh. +-$as_unset ENV MAIL MAILPATH ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done + PS1='$ ' + PS2='> ' + PS4='+ ' +@@ -46,18 +110,19 @@ + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else +- $as_unset $as_var ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi + done + + # Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr + else + as_expr=false + fi + +-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false +@@ -65,157 +130,388 @@ + + + # Name of the executable. +-as_me=`$as_basename "$0" || ++as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + ++# CDPATH. ++$as_unset CDPATH + +-# PATH needs CR, and LINENO needs CR and PATH. +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits + +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh ++if test "x$CONFIG_SHELL" = x; then ++ if (eval ":") 2>/dev/null; then ++ as_have_required=yes ++else ++ as_have_required=no + fi + ++ if test $as_have_required = yes && (eval ": ++(as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- case $0 in +- *[\\/]* ) as_myself=$0 ;; +- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi + +- ;; +- esac +- # We did not find ourselves, most probably we were run as `sh COMMAND' +- # in which case we are not to be found in the path. +- if test "x$as_myself" = x; then +- as_myself=$0 +- fi +- if test ! -f "$as_myself"; then +- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0) || { (exit 1); exit 1; } ++ ++( ++ as_lineno_1=\$LINENO ++ as_lineno_2=\$LINENO ++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && ++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ++") 2> /dev/null; then ++ : ++else ++ as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in ++ case $as_dir in + /*) +- if ("$as_dir/$as_base" -c ' ++ for as_base in sh bash ksh sh5; do ++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base" ++ done;; ++ esac ++done ++IFS=$as_save_IFS ++ ++ ++ for as_shell in $as_candidate_shells $SHELL; do ++ # Try only shells that exist, to save several forks. ++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && ++ { ("$as_shell") 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++_ASEOF ++}; then ++ CONFIG_SHELL=$as_shell ++ as_have_required=yes ++ if { "$as_shell" 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++(as_func_return () { ++ (exit $1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = "$1" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test $exitcode = 0) || { (exit 1); exit 1; } ++ ++( + as_lineno_1=$LINENO + as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } ++ ++_ASEOF ++}; then ++ break ++fi ++ ++fi ++ ++ done ++ ++ if test "x$CONFIG_SHELL" != x; then ++ for as_var in BASH_ENV ENV ++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ done ++ export CONFIG_SHELL ++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} ++fi ++ ++ ++ if test $as_have_required = no; then ++ echo This script requires a shell more modern than all the ++ echo shells that I found on your system. Please install a ++ echo modern shell, or manually run the script under such a ++ echo shell if you do have one. ++ { (exit 1); exit 1; } ++fi ++ ++ ++fi ++ ++fi ++ ++ ++ ++(eval "as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0") || { ++ echo No shell found that supports shell functions. ++ echo Please tell autoconf@gnu.org about your system, ++ echo including any error possibly output before this ++ echo message ++} ++ ++ ++ ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | + sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno + N +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, ++ s/-\n.*// + ' >$as_me.lineno && +- chmod +x $as_me.lineno || ++ chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensible to this). +- . ./$as_me.lineno ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" + # Exit status is that of the last command. + exit + } + + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; + esac + +-if expr a : '\(a\)' >/dev/null 2>&1; then ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr + else + as_expr=false + fi + + rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null + + if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +@@ -224,7 +520,28 @@ + as_mkdir_p=false + fi + +-as_executable_p="test -f" ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' ++fi ++as_executable_p=$as_test_x + + # Sed expression to map a string onto a valid CPP name. + as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +@@ -233,36 +550,27 @@ + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- + + + # Check that we are running under the correct shell. + SHELL=${CONFIG_SHELL-/bin/sh} + +-case X$ECHO in ++case X$lt_ECHO in + X*--fallback-echo) + # Remove one level of quotation (which was required for Make). +- ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ++ ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; + esac + +-echo=${ECHO-echo} ++ECHO=${lt_ECHO-echo} + if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then +- # Yippee, $echo works! ++elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then ++ # Yippee, $ECHO works! + : + else + # Restart under the correct shell. +@@ -272,9 +580,9 @@ + if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift +- cat </dev/null 2>&1 && unset CDPATH + +-if test -z "$ECHO"; then +-if test "X${echo_test_string+set}" != Xset; then +-# find a string as large as possible, as long as the shell can cope with it +- for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do +- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... +- if (echo_test_string=`eval $cmd`) 2>/dev/null && +- echo_test_string=`eval $cmd` && +- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null +- then +- break +- fi +- done +-fi ++if test -z "$lt_ECHO"; then ++ if test "X${echo_test_string+set}" != Xset; then ++ # find a string as large as possible, as long as the shell can cope with it ++ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do ++ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... ++ if { echo_test_string=`eval $cmd`; } 2>/dev/null && ++ { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null ++ then ++ break ++ fi ++ done ++ fi + +-if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- : +-else +- # The Solaris, AIX, and Digital Unix default echo programs unquote +- # backslashes. This makes it impossible to quote backslashes using +- # echo "$something" | sed 's/\\/\\\\/g' +- # +- # So, first we look for a working echo in the user's PATH. ++ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ : ++ else ++ # The Solaris, AIX, and Digital Unix default echo programs unquote ++ # backslashes. This makes it impossible to quote backslashes using ++ # echo "$something" | sed 's/\\/\\\\/g' ++ # ++ # So, first we look for a working echo in the user's PATH. + +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for dir in $PATH /usr/ucb; do ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for dir in $PATH /usr/ucb; do ++ IFS="$lt_save_ifs" ++ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && ++ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ ECHO="$dir/echo" ++ break ++ fi ++ done + IFS="$lt_save_ifs" +- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && +- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- echo="$dir/echo" +- break +- fi +- done +- IFS="$lt_save_ifs" + +- if test "X$echo" = Xecho; then +- # We didn't find a better echo, so look for alternatives. +- if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # This shell has a builtin print -r that does the trick. +- echo='print -r' +- elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && +- test "X$CONFIG_SHELL" != X/bin/ksh; then +- # If we have ksh, try running configure again with it. +- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +- export ORIGINAL_CONFIG_SHELL +- CONFIG_SHELL=/bin/ksh +- export CONFIG_SHELL +- exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} +- else +- # Try using printf. +- echo='printf %s\n' +- if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # Cool, printf works +- : +- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL +- export CONFIG_SHELL +- SHELL="$CONFIG_SHELL" +- export SHELL +- echo="$CONFIG_SHELL $0 --fallback-echo" +- elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ if test "X$ECHO" = Xecho; then ++ # We didn't find a better echo, so look for alternatives. ++ if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ # This shell has a builtin print -r that does the trick. ++ ECHO='print -r' ++ elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && ++ test "X$CONFIG_SHELL" != X/bin/ksh; then ++ # If we have ksh, try running configure again with it. ++ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} ++ export ORIGINAL_CONFIG_SHELL ++ CONFIG_SHELL=/bin/ksh ++ export CONFIG_SHELL ++ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} ++ else ++ # Try using printf. ++ ECHO='printf %s\n' ++ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then +- echo="$CONFIG_SHELL $0 --fallback-echo" +- else +- # maybe with a smaller string... +- prev=: ++ # Cool, printf works ++ : ++ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL ++ export CONFIG_SHELL ++ SHELL="$CONFIG_SHELL" ++ export SHELL ++ ECHO="$CONFIG_SHELL $0 --fallback-echo" ++ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ ECHO="$CONFIG_SHELL $0 --fallback-echo" ++ else ++ # maybe with a smaller string... ++ prev=: + +- for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do +- if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null +- then +- break +- fi +- prev="$cmd" +- done ++ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do ++ if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null ++ then ++ break ++ fi ++ prev="$cmd" ++ done + +- if test "$prev" != 'sed 50q "$0"'; then +- echo_test_string=`eval $prev` +- export echo_test_string +- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} +- else +- # Oops. We lost completely, so just stick with echo. +- echo=echo +- fi ++ if test "$prev" != 'sed 50q "$0"'; then ++ echo_test_string=`eval $prev` ++ export echo_test_string ++ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} ++ else ++ # Oops. We lost completely, so just stick with echo. ++ ECHO=echo ++ fi ++ fi + fi + fi + fi + fi +-fi + + # Copy echo and quote the copy suitably for passing to libtool from + # the Makefile, instead of quoting the original, which is used later. +-ECHO=$echo +-if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then +- ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" ++lt_ECHO=$ECHO ++if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ++ lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" + fi + + + + +-tagnames=${tagnames+${tagnames},}CXX +- +-tagnames=${tagnames+${tagnames},}F77 ++exec 7<&0 &1 + + # Name of the host. + # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, + # so uname gets run too. + ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +-exec 6>&1 +- + # + # Initializations. + # + ac_default_prefix=/usr/local ++ac_clean_files= + ac_config_libobj_dir=. ++LIBOBJS= + cross_compiling=no + subdirs= + MFLAGS= + MAKEFLAGS= + SHELL=${CONFIG_SHELL-/bin/sh} + +-# Maximum number of lines to put in a shell here document. +-# This variable seems obsolete. It should probably be removed, and +-# only ac_max_sed_lines should be used. +-: ${ac_max_here_lines=38} +- + # Identity of this package. + PACKAGE_NAME='LibVNCServer' + PACKAGE_TARNAME='libvncserver' +@@ -430,42 +730,197 @@ + # Factoring default headers for most tests. + ac_includes_default="\ + #include +-#if HAVE_SYS_TYPES_H ++#ifdef HAVE_SYS_TYPES_H + # include + #endif +-#if HAVE_SYS_STAT_H ++#ifdef HAVE_SYS_STAT_H + # include + #endif +-#if STDC_HEADERS ++#ifdef STDC_HEADERS + # include + # include + #else +-# if HAVE_STDLIB_H ++# ifdef HAVE_STDLIB_H + # include + # endif + #endif +-#if HAVE_STRING_H +-# if !STDC_HEADERS && HAVE_MEMORY_H ++#ifdef HAVE_STRING_H ++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H + # include + # endif + # include + #endif +-#if HAVE_STRINGS_H ++#ifdef HAVE_STRINGS_H + # include + #endif +-#if HAVE_INTTYPES_H ++#ifdef HAVE_INTTYPES_H + # include +-#else +-# if HAVE_STDINT_H +-# include +-# endif + #endif +-#if HAVE_UNISTD_H ++#ifdef HAVE_STDINT_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H + # include + #endif" + +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL with_ffmpeg WITH_FFMPEG_TRUE WITH_FFMPEG_FALSE HAVE_MP3LAME_TRUE HAVE_MP3LAME_FALSE X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS HAVE_X_TRUE HAVE_X_FALSE CRYPT_LIBS SSL_LIBS AVAHI_CFLAGS AVAHI_LIBS SYSTEM_LIBVNCSERVER_CFLAGS SYSTEM_LIBVNCSERVER_LIBS HAVE_SYSTEM_LIBVNCSERVER_TRUE HAVE_SYSTEM_LIBVNCSERVER_FALSE HAVE_LIBPTHREAD_TRUE HAVE_LIBPTHREAD_FALSE WITH_TIGHTVNC_FILETRANSFER_TRUE WITH_TIGHTVNC_FILETRANSFER_FALSE HAVE_LIBZ_TRUE HAVE_LIBZ_FALSE HAVE_LIBJPEG_TRUE HAVE_LIBJPEG_FALSE HAVE_LIBSDL_TRUE HAVE_LIBSDL_FALSE SDL_CFLAGS SDL_LIBS MINGW_TRUE MINGW_FALSE WSOCKLIB LIBOBJS CYGIPC_TRUE CYGIPC_FALSE LINUX_TRUE LINUX_FALSE OSX_TRUE OSX_FALSE HAVE_RPM_TRUE HAVE_RPM_FALSE RPMSOURCEDIR LTLIBOBJS' ++ac_subst_vars='SHELL ++PATH_SEPARATOR ++PACKAGE_NAME ++PACKAGE_TARNAME ++PACKAGE_VERSION ++PACKAGE_STRING ++PACKAGE_BUGREPORT ++exec_prefix ++prefix ++program_transform_name ++bindir ++sbindir ++libexecdir ++datarootdir ++datadir ++sysconfdir ++sharedstatedir ++localstatedir ++includedir ++oldincludedir ++docdir ++infodir ++htmldir ++dvidir ++pdfdir ++psdir ++libdir ++localedir ++mandir ++DEFS ++ECHO_C ++ECHO_N ++ECHO_T ++LIBS ++build_alias ++host_alias ++target_alias ++INSTALL_PROGRAM ++INSTALL_SCRIPT ++INSTALL_DATA ++am__isrc ++CYGPATH_W ++PACKAGE ++VERSION ++ACLOCAL ++AUTOCONF ++AUTOMAKE ++AUTOHEADER ++MAKEINFO ++install_sh ++STRIP ++INSTALL_STRIP_PROGRAM ++mkdir_p ++AWK ++SET_MAKE ++am__leading_dot ++AMTAR ++am__tar ++am__untar ++CC ++CFLAGS ++LDFLAGS ++CPPFLAGS ++ac_ct_CC ++EXEEXT ++OBJEXT ++DEPDIR ++am__include ++am__quote ++AMDEP_TRUE ++AMDEP_FALSE ++AMDEPBACKSLASH ++CCDEPMODE ++am__fastdepCC_TRUE ++am__fastdepCC_FALSE ++LIBTOOL ++build ++build_cpu ++build_vendor ++build_os ++host ++host_cpu ++host_vendor ++host_os ++SED ++GREP ++EGREP ++FGREP ++LD ++DUMPBIN ++ac_ct_DUMPBIN ++NM ++LN_S ++AR ++RANLIB ++lt_ECHO ++DSYMUTIL ++NMEDIT ++LIPO ++OTOOL ++OTOOL64 ++CPP ++with_ffmpeg ++WITH_FFMPEG_TRUE ++WITH_FFMPEG_FALSE ++HAVE_MP3LAME_TRUE ++HAVE_MP3LAME_FALSE ++X_CFLAGS ++X_PRE_LIBS ++X_LIBS ++X_EXTRA_LIBS ++HAVE_X_TRUE ++HAVE_X_FALSE ++CRYPT_LIBS ++SSL_LIBS ++AVAHI_CFLAGS ++AVAHI_LIBS ++SYSTEM_LIBVNCSERVER_CFLAGS ++SYSTEM_LIBVNCSERVER_LIBS ++HAVE_SYSTEM_LIBVNCSERVER_TRUE ++HAVE_SYSTEM_LIBVNCSERVER_FALSE ++HAVE_LIBPTHREAD_TRUE ++HAVE_LIBPTHREAD_FALSE ++WITH_TIGHTVNC_FILETRANSFER_TRUE ++WITH_TIGHTVNC_FILETRANSFER_FALSE ++HAVE_LIBZ_TRUE ++HAVE_LIBZ_FALSE ++HAVE_LIBJPEG_TRUE ++HAVE_LIBJPEG_FALSE ++HAVE_LIBSDL_TRUE ++HAVE_LIBSDL_FALSE ++SDL_CFLAGS ++SDL_LIBS ++MINGW_TRUE ++MINGW_FALSE ++WSOCKLIB ++LIBOBJS ++CYGIPC_TRUE ++CYGIPC_FALSE ++LINUX_TRUE ++LINUX_FALSE ++OSX_TRUE ++OSX_FALSE ++HAVE_RPM_TRUE ++HAVE_RPM_FALSE ++RPMSOURCEDIR ++LTLIBOBJS' + ac_subst_files='' ++ ac_precious_vars='build_alias ++host_alias ++target_alias ++CC ++CFLAGS ++LDFLAGS ++LIBS ++CPPFLAGS ++CPP' ++ + + # Initialize some variables set by options. + ac_init_help= +@@ -492,34 +947,48 @@ + # and all the variables that are supposed to be based on exec_prefix + # by default will actually change. + # Use braces instead of parens because sh, perl, etc. also accept them. ++# (The list follows the same order as the GNU Coding Standards.) + bindir='${exec_prefix}/bin' + sbindir='${exec_prefix}/sbin' + libexecdir='${exec_prefix}/libexec' +-datadir='${prefix}/share' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' + sysconfdir='${prefix}/etc' + sharedstatedir='${prefix}/com' + localstatedir='${prefix}/var' +-libdir='${exec_prefix}/lib' + includedir='${prefix}/include' + oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' ++docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' ++infodir='${datarootdir}/info' ++htmldir='${docdir}' ++dvidir='${docdir}' ++pdfdir='${docdir}' ++psdir='${docdir}' ++libdir='${exec_prefix}/lib' ++localedir='${datarootdir}/locale' ++mandir='${datarootdir}/man' + + ac_prev= ++ac_dashdash= + for ac_option + do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then +- eval "$ac_prev=\$ac_option" ++ eval $ac_prev=\$ac_option + ac_prev= + continue + fi + +- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` ++ case $ac_option in ++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; ++ *) ac_optarg=yes ;; ++ esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + +- case $ac_option in ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; +@@ -541,33 +1010,45 @@ + --config-cache | -C) + cache_file=config.cache ;; + +- -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ++ -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; +- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ +- | --da=*) ++ -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + ++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ ++ | --dataroo | --dataro | --datar) ++ ac_prev=datarootdir ;; ++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ ++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) ++ datarootdir=$ac_optarg ;; ++ + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- eval "enable_$ac_feature=no" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=no ;; ++ ++ -docdir | --docdir | --docdi | --doc | --do) ++ ac_prev=docdir ;; ++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) ++ docdir=$ac_optarg ;; ++ ++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ++ ac_prev=dvidir ;; ++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) ++ dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "enable_$ac_feature='$ac_optarg'" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ +@@ -594,6 +1075,12 @@ + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + ++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ++ ac_prev=htmldir ;; ++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ ++ | --ht=*) ++ htmldir=$ac_optarg ;; ++ + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; +@@ -618,13 +1105,16 @@ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + ++ -localedir | --localedir | --localedi | --localed | --locale) ++ ac_prev=localedir ;; ++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) ++ localedir=$ac_optarg ;; ++ + -localstatedir | --localstatedir | --localstatedi | --localstated \ +- | --localstate | --localstat | --localsta | --localst \ +- | --locals | --local | --loca | --loc | --lo) ++ | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ +- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ +- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) +@@ -689,6 +1179,16 @@ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + ++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ++ ac_prev=pdfdir ;; ++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) ++ pdfdir=$ac_optarg ;; ++ ++ -psdir | --psdir | --psdi | --psd | --ps) ++ ac_prev=psdir ;; ++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) ++ psdir=$ac_optarg ;; ++ + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; +@@ -741,24 +1241,20 @@ + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package| sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "with_$ac_package='$ac_optarg'" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package | sed 's/-/_/g'` +- eval "with_$ac_package=no" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. +@@ -789,8 +1285,7 @@ + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } +- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` +- eval "$ac_envvar='$ac_optarg'" ++ eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) +@@ -810,27 +1305,19 @@ + { (exit 1); exit 1; }; } + fi + +-# Be sure to have absolute paths. +-for ac_var in exec_prefix prefix +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\\/$]* | ?:[\\/]* | NONE | '' ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# Be sure to have absolute paths. +-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir ++# Be sure to have absolute directory names. ++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 + do +- eval ac_val=$`echo $ac_var` ++ eval ac_val=\$$ac_var + case $ac_val in +- [\\/$]* | ?:[\\/]* ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac ++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 ++ { (exit 1); exit 1; }; } + done + + # There might be people who depend on the old broken behavior: `$host' +@@ -857,94 +1344,76 @@ + test "$silent" = yes && exec 6>/dev/null + + ++ac_pwd=`pwd` && test -n "$ac_pwd" && ++ac_ls_di=`ls -di .` && ++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || ++ { echo "$as_me: error: Working directory cannot be determined" >&2 ++ { (exit 1); exit 1; }; } ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ { echo "$as_me: error: pwd does not report name of working directory" >&2 ++ { (exit 1); exit 1; }; } ++ ++ + # Find the source files, if location was not specified. + if test -z "$srcdir"; then + ac_srcdir_defaulted=yes +- # Try the directory containing this script, then its parent. +- ac_confdir=`(dirname "$0") 2>/dev/null || ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$0" || + $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X"$0" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + srcdir=$ac_confdir +- if test ! -r $srcdir/$ac_unique_file; then ++ if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi + else + ac_srcdir_defaulted=no + fi +-if test ! -r $srcdir/$ac_unique_file; then +- if test "$ac_srcdir_defaulted" = yes; then +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +- { (exit 1); exit 1; }; } +- else +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +- fi + fi +-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || +- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 ++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ++ac_abs_confdir=`( ++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } +-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +-ac_env_build_alias_set=${build_alias+set} +-ac_env_build_alias_value=$build_alias +-ac_cv_env_build_alias_set=${build_alias+set} +-ac_cv_env_build_alias_value=$build_alias +-ac_env_host_alias_set=${host_alias+set} +-ac_env_host_alias_value=$host_alias +-ac_cv_env_host_alias_set=${host_alias+set} +-ac_cv_env_host_alias_value=$host_alias +-ac_env_target_alias_set=${target_alias+set} +-ac_env_target_alias_value=$target_alias +-ac_cv_env_target_alias_set=${target_alias+set} +-ac_cv_env_target_alias_value=$target_alias +-ac_env_CC_set=${CC+set} +-ac_env_CC_value=$CC +-ac_cv_env_CC_set=${CC+set} +-ac_cv_env_CC_value=$CC +-ac_env_CFLAGS_set=${CFLAGS+set} +-ac_env_CFLAGS_value=$CFLAGS +-ac_cv_env_CFLAGS_set=${CFLAGS+set} +-ac_cv_env_CFLAGS_value=$CFLAGS +-ac_env_LDFLAGS_set=${LDFLAGS+set} +-ac_env_LDFLAGS_value=$LDFLAGS +-ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +-ac_cv_env_LDFLAGS_value=$LDFLAGS +-ac_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_env_CPPFLAGS_value=$CPPFLAGS +-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_cv_env_CPPFLAGS_value=$CPPFLAGS +-ac_env_CPP_set=${CPP+set} +-ac_env_CPP_value=$CPP +-ac_cv_env_CPP_set=${CPP+set} +-ac_cv_env_CPP_value=$CPP +-ac_env_CXX_set=${CXX+set} +-ac_env_CXX_value=$CXX +-ac_cv_env_CXX_set=${CXX+set} +-ac_cv_env_CXX_value=$CXX +-ac_env_CXXFLAGS_set=${CXXFLAGS+set} +-ac_env_CXXFLAGS_value=$CXXFLAGS +-ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +-ac_cv_env_CXXFLAGS_value=$CXXFLAGS +-ac_env_CXXCPP_set=${CXXCPP+set} +-ac_env_CXXCPP_value=$CXXCPP +-ac_cv_env_CXXCPP_set=${CXXCPP+set} +-ac_cv_env_CXXCPP_value=$CXXCPP +-ac_env_F77_set=${F77+set} +-ac_env_F77_value=$F77 +-ac_cv_env_F77_set=${F77+set} +-ac_cv_env_F77_value=$F77 +-ac_env_FFLAGS_set=${FFLAGS+set} +-ac_env_FFLAGS_value=$FFLAGS +-ac_cv_env_FFLAGS_set=${FFLAGS+set} +-ac_cv_env_FFLAGS_value=$FFLAGS ++ pwd)` ++# When building in place, set srcdir=. ++if test "$ac_abs_confdir" = "$ac_pwd"; then ++ srcdir=. ++fi ++# Remove unnecessary trailing slashes from srcdir. ++# Double slashes in file names in object file debugging info ++# mess up M-x gdb in Emacs. ++case $srcdir in ++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; ++esac ++for ac_var in $ac_precious_vars; do ++ eval ac_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_env_${ac_var}_value=\$${ac_var} ++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_cv_env_${ac_var}_value=\$${ac_var} ++done + + # + # Report the --help message. +@@ -973,9 +1442,6 @@ + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +-_ACEOF +- +- cat <<_ACEOF + Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] +@@ -993,15 +1459,22 @@ + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] +- --datadir=DIR read-only architecture-independent data [PREFIX/share] + --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] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] +- --infodir=DIR info documentation [PREFIX/info] +- --mandir=DIR man documentation [PREFIX/man] ++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] ++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR] ++ --infodir=DIR info documentation [DATAROOTDIR/info] ++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale] ++ --mandir=DIR man documentation [DATAROOTDIR/man] ++ --docdir=DIR documentation root [DATAROOTDIR/doc/libvncserver] ++ --htmldir=DIR html documentation [DOCDIR] ++ --dvidir=DIR dvi documentation [DOCDIR] ++ --pdfdir=DIR pdf documentation [DOCDIR] ++ --psdir=DIR ps documentation [DOCDIR] + _ACEOF + + cat <<\_ACEOF +@@ -1032,10 +1505,8 @@ + --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-shared[=PKGS] +- build shared libraries [default=yes] +- --enable-static[=PKGS] +- build static libraries [default=yes] ++ --enable-shared[=PKGS] build shared libraries [default=yes] ++ --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) +@@ -1043,11 +1514,9 @@ + Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) +- --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] +- --with-tags[=TAGS] +- include additional configurations [automatic] ++ --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --without-filetransfer disable TightVNC file transfer protocol + --without-24bpp disable 24 bpp framebuffers + --with-ffmpeg=dir set ffmpeg home directory +@@ -1086,134 +1555,96 @@ + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory +- CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have +- headers in a nonstandard directory ++ LIBS libraries to pass to the linker, e.g. -l ++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if ++ you have headers in a nonstandard directory + CPP C preprocessor +- CXX C++ compiler command +- CXXFLAGS C++ compiler flags +- CXXCPP C++ preprocessor +- F77 Fortran 77 compiler command +- FFLAGS Fortran 77 compiler flags + + Use these variables to override the choices made by `configure' or to help + it to find libraries and programs with nonstandard names/locations. + + Report bugs to . + _ACEOF ++ac_status=$? + fi + + if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. +- ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue +- test -d $ac_dir || continue ++ test -d "$ac_dir" || continue + ac_builddir=. + +-if test "$ac_dir" != .; then ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix + + case $srcdir in +- .) # No --srcdir option. We are building in place. ++ .) # We are building in place. + ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; + esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + +- cd $ac_dir +- # Check for guested configure; otherwise get Cygnus style configure. +- if test -f $ac_srcdir/configure.gnu; then +- echo +- $SHELL $ac_srcdir/configure.gnu --help=recursive +- elif test -f $ac_srcdir/configure; then +- echo +- $SHELL $ac_srcdir/configure --help=recursive +- elif test -f $ac_srcdir/configure.ac || +- test -f $ac_srcdir/configure.in; then +- echo +- $ac_configure --help ++ cd "$ac_dir" || { ac_status=$?; continue; } ++ # Check for guested configure. ++ if test -f "$ac_srcdir/configure.gnu"; then ++ echo && ++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive ++ elif test -f "$ac_srcdir/configure"; then ++ echo && ++ $SHELL "$ac_srcdir/configure" --help=recursive + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 +- fi +- cd $ac_popdir ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } + done + fi + +-test -n "$ac_init_help" && exit 0 ++test -n "$ac_init_help" && exit $ac_status + if $ac_init_version; then + cat <<\_ACEOF + LibVNCServer configure 0.9.1 +-generated by GNU Autoconf 2.59 ++generated by GNU Autoconf 2.61 + +-Copyright (C) 2003 Free Software Foundation, Inc. ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + This configure script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it. + _ACEOF +- exit 0 ++ exit + fi +-exec 5>config.log +-cat >&5 <<_ACEOF ++cat >config.log <<_ACEOF + This file contains any messages produced by compilers while + running configure, to aid debugging if configure makes a mistake. + + It was created by LibVNCServer $as_me 0.9.1, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + + _ACEOF ++exec 5>>config.log + { + cat <<_ASUNAME + ## --------- ## +@@ -1232,7 +1663,7 @@ + /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` + /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` + /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +-hostinfo = `(hostinfo) 2>/dev/null || echo unknown` ++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` + /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` + /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` + /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` +@@ -1246,6 +1677,7 @@ + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" + done ++IFS=$as_save_IFS + + } >&5 + +@@ -1267,7 +1699,6 @@ + ac_configure_args= + ac_configure_args0= + ac_configure_args1= +-ac_sep= + ac_must_keep_next=false + for ac_pass in 1 2 + do +@@ -1278,7 +1709,7 @@ + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ++ *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in +@@ -1300,9 +1731,7 @@ + -* ) ac_must_keep_next=true ;; + esac + fi +- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" +- # Get rid of the leading space. +- ac_sep=" " ++ ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +@@ -1313,8 +1742,8 @@ + # When interrupted or exit'd, cleanup temporary files, and complete + # config.log. We remove comments because anyway the quotes in there + # would cause problems or look ugly. +-# WARNING: Be sure not to use single quotes in there, as some shells, +-# such as our DU 5.0 friend, will then `close' the trap. ++# WARNING: Use '\'' to represent an apostrophe within the trap. ++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. + trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { +@@ -1327,20 +1756,34 @@ + _ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +-{ ++( ++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done + (set) 2>&1 | +- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) + sed -n \ +- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" +- ;; ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( + *) +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} ++ esac | ++ sort ++) + echo + + cat <<\_ASBOX +@@ -1351,22 +1794,28 @@ + echo + for ac_var in $ac_subst_vars + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +-## ------------- ## +-## Output files. ## +-## ------------- ## ++## ------------------- ## ++## File substitutions. ## ++## ------------------- ## + _ASBOX + echo + for ac_var in $ac_subst_files + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi +@@ -1378,26 +1827,24 @@ + ## ----------- ## + _ASBOX + echo +- sed "/^$/d" confdefs.h | sort ++ cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 +- rm -f core *.core && +- rm -rf conftest* confdefs* conf$$* $ac_clean_files && ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +- ' 0 ++' 0 + for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal + done + ac_signal=0 + + # confdefs.h avoids OS command line length limits that DEFS can exceed. +-rm -rf conftest* confdefs.h +-# AIX cpp loses on an empty file, so make sure it contains at least a newline. +-echo >confdefs.h ++rm -f -r conftest* confdefs.h + + # Predefined preprocessor variables. + +@@ -1428,14 +1875,17 @@ + + # Let the site file select an alternate cache file if it wants to. + # Prefer explicitly selected file to automatically selected ones. +-if test -z "$CONFIG_SITE"; then +- if test "x$prefix" != xNONE; then +- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" +- else +- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +- fi ++if test -n "$CONFIG_SITE"; then ++ set x $CONFIG_SITE ++elif test "x$prefix" != xNONE; then ++ set x "$prefix/share/config.site" "$prefix/etc/config.site" ++else ++ set x "$ac_default_prefix/share/config.site" \ ++ "$ac_default_prefix/etc/config.site" + fi +-for ac_site_file in $CONFIG_SITE; do ++shift ++for ac_site_file ++do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 + echo "$as_me: loading site script $ac_site_file" >&6;} +@@ -1451,8 +1901,8 @@ + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 + echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; + esac + fi + else +@@ -1464,12 +1914,11 @@ + # Check that the precious variables saved in the cache have kept the same + # value. + ac_cache_corrupted=false +-for ac_var in `(set) 2>&1 | +- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do ++for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set +- eval ac_old_val="\$ac_cv_env_${ac_var}_value" +- eval ac_new_val="\$ac_env_${ac_var}_value" ++ eval ac_old_val=\$ac_cv_env_${ac_var}_value ++ eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +@@ -1494,8 +1943,7 @@ + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in +@@ -1512,11 +1960,6 @@ + { (exit 1); exit 1; }; } + 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 + + + +@@ -1541,34 +1984,45 @@ + + + ++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 + + ++am__api_version='1.10' + +-am__api_version="1.9" + ac_aux_dir= +-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do +- if test -f $ac_dir/install-sh; then ++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do ++ if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break +- elif test -f $ac_dir/install.sh; then ++ elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break +- elif test -f $ac_dir/shtool; then ++ elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi + done + if test -z "$ac_aux_dir"; then +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} ++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 ++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } + fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ++ ++# These three variables are undocumented and unsupported, ++# and are intended to be withdrawn in a future Autoconf release. ++# They can cause serious problems if a builder's source tree is in a directory ++# whose full name contains unusual characters. ++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ++ + + # Find a good install program. We prefer a C program (faster), + # so one script is as good as another. But avoid the broken or +@@ -1583,8 +2037,8 @@ + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" + # OS/2's system install, which has a completely different semantic + # ./install, which can be erroneously created by make from ./install.sh. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -1606,7 +2060,7 @@ + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. +@@ -1625,21 +2079,22 @@ + ;; + esac + done ++IFS=$as_save_IFS + + + fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else +- # As a last resort, use the slow shell script. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is +- # removed, or if the path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -1649,8 +2104,8 @@ + + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +-echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 ++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } + # Just in case + sleep 1 + echo timestamp > conftest.file +@@ -1692,20 +2147,20 @@ + Check your system clock" >&2;} + { (exit 1); exit 1; }; } + fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + test "$program_prefix" != NONE && +- program_transform_name="s,^,$program_prefix,;$program_transform_name" ++ program_transform_name="s&^&$program_prefix&;$program_transform_name" + # Use a double $ so make ignores it. + test "$program_suffix" != NONE && +- program_transform_name="s,\$,$program_suffix,;$program_transform_name" ++ program_transform_name="s&\$&$program_suffix&;$program_transform_name" + # Double any \ or $. echo might interpret backslashes. + # By default was `s,x,x', remove it if useless. + cat <<\_ACEOF >conftest.sed + s/[\\$]/&&/g;s/;s,x,x,$// + _ACEOF + program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +-rm conftest.sed ++rm -f conftest.sed + + # expand $ac_aux_dir to an absolute path + am_aux_dir=`cd $ac_aux_dir && pwd` +@@ -1720,45 +2175,60 @@ + echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + fi + +-if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then +- # We used to keeping the `.' as first argument, in order to +- # allow $(mkdir_p) to be used without argument. As in +- # $(mkdir_p) $(somedir) +- # where $(somedir) is conditionally defined. However this is wrong +- # for two reasons: +- # 1. if the package is installed by a user who cannot write `.' +- # make install will fail, +- # 2. the above comment should most certainly read +- # $(mkdir_p) $(DESTDIR)$(somedir) +- # so it does not work when $(somedir) is undefined and +- # $(DESTDIR) is not. +- # To support the latter case, we have to write +- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), +- # so the `.' trick is pointless. +- mkdir_p='mkdir -p --' +-else +- # On NextStep and OpenStep, the `mkdir' command does not +- # recognize any option. It will interpret all options as +- # directories to create, and then abort because `.' already +- # exists. +- for d in ./-p ./--version; +- do +- test -d $d && rmdir $d +- done +- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. +- if test -f "$ac_aux_dir/mkinstalldirs"; then +- mkdir_p='$(mkinstalldirs)' ++{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 ++echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } ++if test -z "$MKDIR_P"; then ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in mkdir gmkdir; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue ++ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( ++ 'mkdir (GNU coreutils) '* | \ ++ 'mkdir (coreutils) '* | \ ++ 'mkdir (fileutils) '4.1*) ++ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext ++ break 3;; ++ esac ++ done ++ done ++done ++IFS=$as_save_IFS ++ ++fi ++ ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ MKDIR_P="$ac_cv_path_mkdir -p" + else +- mkdir_p='$(install_sh) -d' ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for MKDIR_P within a source directory, because that will ++ # break other packages using the cache if that directory is ++ # removed, or if the value is a relative name. ++ test -d ./--version && rmdir ./--version ++ MKDIR_P="$ac_install_sh -d" + fi + fi ++{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 ++echo "${ECHO_T}$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. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1771,54 +2241,57 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + AWK=$ac_cv_prog_AWK + if test -n "$AWK"; then +- echo "$as_me:$LINENO: result: $AWK" >&5 +-echo "${ECHO_T}$AWK" >&6 ++ { echo "$as_me:$LINENO: result: $AWK" >&5 ++echo "${ECHO_T}$AWK" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$AWK" && break + done + +-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } ++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh + all: +- @echo 'ac_maketemp="$(MAKE)"' ++ @echo '@@@%%%=$(MAKE)=@@@%%%' + _ACEOF + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. +-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +-if test -n "$ac_maketemp"; then +- eval ac_cv_prog_make_${ac_make}_set=yes +-else +- eval ac_cv_prog_make_${ac_make}_set=no +-fi ++case `${MAKE-make} -f conftest.make 2>/dev/null` in ++ *@@@%%%=?*=@@@%%%*) ++ eval ac_cv_prog_make_${ac_make}_set=yes;; ++ *) ++ eval ac_cv_prog_make_${ac_make}_set=no;; ++esac + rm -f conftest.make + fi +-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + SET_MAKE= + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" + fi + +@@ -1831,12 +2304,16 @@ + fi + rmdir .tst 2>/dev/null + +-# test to see if srcdir already configured +-if test "`cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ am__isrc=' -I$(srcdir)' ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 + echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } ++ fi + fi + + # test whether we have cygpath +@@ -1879,7 +2356,7 @@ + + MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +-install_sh=${install_sh-"$am_aux_dir/install-sh"} ++install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} + + # Installed binaries are usually stripped using `strip' when the user + # run `make install-strip'. However `strip' might not be the right +@@ -1889,8 +2366,8 @@ + 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. + set dummy ${ac_tool_prefix}strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1903,32 +2380,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + STRIP=$ac_cv_prog_STRIP + if test -n "$STRIP"; then +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. + set dummy strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1941,33 +2420,47 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" + fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- STRIP=$ac_ct_STRIP ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi + else + STRIP="$ac_cv_prog_STRIP" + fi + + fi +-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + # We need awk for the "check" target. The system "awk" is bad on + # some platforms. +@@ -1981,12 +2474,12 @@ + + + +- ac_config_headers="$ac_config_headers rfbconfig.h" ++ac_config_headers="$ac_config_headers rfbconfig.h" + + ac_config_headers="$ac_config_headers " + + +- ac_config_commands="$ac_config_commands rfb/rfbconfig.h" ++ac_config_commands="$ac_config_commands rfb/rfbconfig.h" + + + # Checks for programs. +@@ -1998,8 +2491,8 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2012,32 +2505,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2050,36 +2545,51 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + else + CC="$ac_cv_prog_CC" + fi + + if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2092,74 +2602,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +-else +-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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi + ++ fi + fi + if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2173,7 +2643,7 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue +@@ -2184,6 +2654,7 @@ + fi + done + done ++IFS=$as_save_IFS + + if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. +@@ -2201,22 +2672,23 @@ + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2229,36 +2701,38 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CC" && break + done + fi + if test -z "$CC"; then + ac_ct_CC=$CC +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2271,29 +2745,45 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CC" && break + done + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + fi + + fi +@@ -2306,21 +2796,35 @@ + { (exit 1); exit 1; }; } + + # Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C compiler version" >&5 ++echo "$as_me:$LINENO: checking for C compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +@@ -2345,47 +2849,77 @@ + # Try to create an executable without -o first, disregard a.out. + # It will help us diagnose broken compilers, and finding out an intuition + # of exeext. +-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } + ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 +- (eval $ac_link_default) 2>&5 ++# ++# List of possible output files, starting from the most likely. ++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) ++# only as a last resort. b.out is created by i960 compilers. ++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' ++# ++# The IRIX 6 linker writes into existing files which may not be ++# executable, retaining their permissions. Remove them first so a ++# subsequent execution test works. ++ac_rmfiles= ++for ac_file in $ac_files ++do ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; ++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; ++ esac ++done ++rm -f $ac_rmfiles ++ ++if { (ac_try="$ac_link_default" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- # Find the output, starting from the most likely. This scheme is +-# not robust to junk in `.', hence go to wildcards (a.*) only as a last +-# resort. +- +-# Be careful to initialize this variable, since it used to be cached. +-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +-ac_cv_exeext= +-# b.out is created by i960 compilers. +-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out ++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. ++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' ++# in a Makefile. We should not override ac_cv_exeext if it was cached, ++# so that the user can short-circuit this test for compilers unknown to ++# Autoconf. ++for ac_file in $ac_files '' + do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) +- ;; +- conftest.$ac_ext ) +- # This is the source file. ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) +- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- # FIXME: I believe we export ac_cv_exeext for Libtool, +- # but it would be cool to find out if it's true. Does anybody +- # maintain Libtool? --akim. +- export ac_cv_exeext ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ then :; else ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ fi ++ # We set ac_cv_exeext here because the later test for it is not ++ # safe: cross compilers may not add the suffix if given an `-o' ++ # argument, so we may need to know it at that point already. ++ # Even if this section looks crufty: it has the advantage of ++ # actually working. + break;; + * ) + break;; + esac + done ++test "$ac_cv_exeext" = no && ac_cv_exeext= ++ + else ++ ac_file='' ++fi ++ ++{ echo "$as_me:$LINENO: result: $ac_file" >&5 ++echo "${ECHO_T}$ac_file" >&6; } ++if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +@@ -2397,19 +2931,21 @@ + fi + + ac_exeext=$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_file" >&5 +-echo "${ECHO_T}$ac_file" >&6 + +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 ++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. + if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -2428,22 +2964,27 @@ + fi + fi + fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + + rm -f a.out a.exe conftest$ac_cv_exeext b.out + ac_clean_files=$ac_clean_files_save +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $cross_compiling" >&5 +-echo "${ECHO_T}$cross_compiling" >&6 +- +-echo "$as_me:$LINENO: checking for suffix of executables" >&5 +-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 ++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 ++echo "${ECHO_T}$cross_compiling" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 ++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +@@ -2454,9 +2995,8 @@ + for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- export ac_cv_exeext + break;; + * ) break;; + esac +@@ -2470,14 +3010,14 @@ + fi + + rm -f conftest$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +-echo "${ECHO_T}$ac_cv_exeext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ++echo "${ECHO_T}$ac_cv_exeext" >&6; } + + rm -f conftest.$ac_ext + EXEEXT=$ac_cv_exeext + ac_exeext=$EXEEXT +-echo "$as_me:$LINENO: checking for suffix of object files" >&5 +-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 ++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } + if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2497,14 +3037,20 @@ + } + _ACEOF + rm -f conftest.o conftest.obj +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do ++ for ac_file in conftest.o conftest.obj conftest.*; do ++ test -f "$ac_file" || continue; + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +@@ -2522,12 +3068,12 @@ + + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +-echo "${ECHO_T}$ac_cv_objext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ++echo "${ECHO_T}$ac_cv_objext" >&6; } + OBJEXT=$ac_cv_objext + ac_objext=$OBJEXT +-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } + if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2550,50 +3096,49 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } + GCC=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ ac_save_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ ac_cv_prog_cc_g=no ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -2609,311 +3154,248 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_prog_cc_g=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +-if test "$ac_test_CFLAGS" = set; then +- CFLAGS=$ac_save_CFLAGS +-elif test $ac_cv_prog_cc_g = yes; then +- if test "$GCC" = yes; then +- CFLAGS="-g -O2" +- else +- CFLAGS="-g" +- fi +-else +- if test "$GCC" = yes; then +- CFLAGS="-O2" +- else +- CFLAGS= +- fi +-fi +-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_prog_cc_stdc=no +-ac_save_CC=$CC +-cat >conftest.$ac_ext <<_ACEOF ++ CFLAGS="" ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include +-#include +-#include +-#include +-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +-struct buf { int x; }; +-FILE * (*rcsopen) (struct buf *, struct stat *, int); +-static char *e (p, i) +- char **p; +- int i; +-{ +- return p[i]; +-} +-static char *f (char * (*g) (char **, int), char **p, ...) ++ ++int ++main () + { +- char *s; +- va_list v; +- va_start (v,p); +- s = g (p, va_arg (v,int)); +- va_end (v); +- return s; +-} + +-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has +- function prototypes and stuff, but not '\xHH' hex character constants. +- These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std1 is added to get +- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an +- array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std1. */ +-int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +- +-int test (int i, double x); +-struct s1 {int (*f) (int a);}; +-struct s2 {int (*f) (double a);}; +-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +-int argc; +-char **argv; +-int +-main () +-{ +-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; + } + _ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +-do +- CC="$ac_save_CC $ac_arg" +- rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ : + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext +-done +-rm -f conftest.$ac_ext conftest.$ac_objext +-CC=$ac_save_CC +- +-fi +- +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:$LINENO: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; +- *) +- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; +-esac +- +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. +-cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF ++ ac_c_werror_flag=$ac_save_c_werror_flag ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_declaration +-#include ++ + int + main () + { +-exit (42); ++ + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_g=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-continue ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } ++if test "$ac_test_CFLAGS" = set; then ++ CFLAGS=$ac_save_CFLAGS ++elif test $ac_cv_prog_cc_g = yes; then ++ if test "$GCC" = yes; then ++ CFLAGS="-g -O2" ++ else ++ CFLAGS="-g" ++ fi ++else ++ if test "$GCC" = yes; then ++ CFLAGS="-O2" ++ else ++ CFLAGS= ++ fi ++fi ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_prog_cc_c89=no ++ac_save_CC=$CC ++cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_declaration ++#include ++#include ++#include ++#include ++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ ++struct buf { int x; }; ++FILE * (*rcsopen) (struct buf *, struct stat *, int); ++static char *e (p, i) ++ char **p; ++ int i; ++{ ++ return p[i]; ++} ++static char *f (char * (*g) (char **, int), char **p, ...) ++{ ++ char *s; ++ va_list v; ++ va_start (v,p); ++ s = g (p, va_arg (v,int)); ++ va_end (v); ++ return s; ++} ++ ++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has ++ function prototypes and stuff, but not '\xHH' hex character constants. ++ These don't provoke an error unfortunately, instead are silently treated ++ as 'x'. The following induces an error, until -std is added to get ++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an ++ array size at least. It's necessary to write '\x00'==0 to get something ++ that's true only with -std. */ ++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; ++ ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ ++int test (int i, double x); ++struct s1 {int (*f) (int a);}; ++struct s2 {int (*f) (double a);}; ++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); ++int argc; ++char **argv; + int + main () + { +-exit (42); ++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++do ++ CC="$ac_save_CC $ac_arg" ++ rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break + done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h ++rm -f conftest.$ac_ext ++CC=$ac_save_CC ++ + fi ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; ++ *) ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; ++esac + +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -2921,7 +3403,7 @@ + ac_compiler_gnu=$ac_cv_c_compiler_gnu + DEPDIR="${am__leading_dot}deps" + +- ac_config_commands="$ac_config_commands depfiles" ++ac_config_commands="$ac_config_commands depfiles" + + + am_make=${MAKE-make} +@@ -2931,8 +3413,8 @@ + .PHONY: am__doit + END + # If we don't find an include directive, just comment out the code. +-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 ++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } + am__include="#" + am__quote= + _am_result=none +@@ -2959,22 +3441,20 @@ + fi + + +-echo "$as_me:$LINENO: result: $_am_result" >&5 +-echo "${ECHO_T}$_am_result" >&6 ++{ echo "$as_me:$LINENO: result: $_am_result" >&5 ++echo "${ECHO_T}$_am_result" >&6; } + rm -f confinc confmf + +-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. ++# Check whether --enable-dependency-tracking was given. + if test "${enable_dependency_tracking+set}" = set; then +- enableval="$enable_dependency_tracking" ++ enableval=$enable_dependency_tracking; ++fi + +-fi; + if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + fi +- +- +-if test "x$enable_dependency_tracking" != xno; then ++ if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' + else +@@ -2984,11 +3464,10 @@ + + + +- + depcc="$CC" am_compiler_list= + +-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } + if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3052,6 +3531,7 @@ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +@@ -3077,13 +3557,11 @@ + fi + + fi +-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 ++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } + CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + +- +- +-if ++ if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= +@@ -3099,246 +3577,518 @@ + else + CCLD="$CC" + fi +-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } ++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh + all: +- @echo 'ac_maketemp="$(MAKE)"' ++ @echo '@@@%%%=$(MAKE)=@@@%%%' + _ACEOF + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. +-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +-if test -n "$ac_maketemp"; then +- eval ac_cv_prog_make_${ac_make}_set=yes +-else +- eval ac_cv_prog_make_${ac_make}_set=no +-fi ++case `${MAKE-make} -f conftest.make 2>/dev/null` in ++ *@@@%%%=?*=@@@%%%*) ++ eval ac_cv_prog_make_${ac_make}_set=yes;; ++ *) ++ eval ac_cv_prog_make_${ac_make}_set=no;; ++esac + rm -f conftest.make + fi +-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + SET_MAKE= + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" + fi + +-# Check whether --enable-shared or --disable-shared was given. +-if test "${enable_shared+set}" = set; then +- enableval="$enable_shared" +- p=${PACKAGE-default} +- case $enableval in +- yes) enable_shared=yes ;; +- no) enable_shared=no ;; +- *) +- enable_shared=no +- # Look at the argument we got. We use all the common list separators. +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for pkg in $enableval; do +- IFS="$lt_save_ifs" +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi +- done +- IFS="$lt_save_ifs" +- ;; +- esac +-else +- enable_shared=yes +-fi; ++case `pwd` in ++ *\ * | *\ *) ++ { echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 ++echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; ++esac ++ ++ ++ ++macro_version='2.2.4' ++macro_revision='1.2976' ++ ++ ++ ++ ++ ++ ++ ++ + +-# Check whether --enable-static or --disable-static was given. +-if test "${enable_static+set}" = set; then +- enableval="$enable_static" +- p=${PACKAGE-default} +- case $enableval in +- yes) enable_static=yes ;; +- no) enable_static=no ;; +- *) +- enable_static=no +- # Look at the argument we got. We use all the common list separators. +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for pkg in $enableval; do +- IFS="$lt_save_ifs" +- if test "X$pkg" = "X$p"; then +- enable_static=yes +- fi +- done +- IFS="$lt_save_ifs" +- ;; +- esac +-else +- enable_static=yes +-fi; + +-# Check whether --enable-fast-install or --disable-fast-install was given. +-if test "${enable_fast_install+set}" = set; then +- enableval="$enable_fast_install" +- p=${PACKAGE-default} +- case $enableval in +- yes) enable_fast_install=yes ;; +- no) enable_fast_install=no ;; +- *) +- enable_fast_install=no +- # Look at the argument we got. We use all the common list separators. +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for pkg in $enableval; do +- IFS="$lt_save_ifs" +- if test "X$pkg" = "X$p"; then +- enable_fast_install=yes +- fi +- done +- IFS="$lt_save_ifs" +- ;; +- esac +-else +- enable_fast_install=yes +-fi; ++ ++ ++ ++ltmain="$ac_aux_dir/ltmain.sh" + + # Make sure we can run config.sub. +-$ac_config_sub sun4 >/dev/null 2>&1 || +- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +-echo "$as_me: error: cannot run $ac_config_sub" >&2;} ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 ++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +-echo "$as_me:$LINENO: checking build system type" >&5 +-echo $ECHO_N "checking build system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking build system type" >&5 ++echo $ECHO_N "checking build system type... $ECHO_C" >&6; } + if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_build_alias=$build_alias +-test -z "$ac_cv_build_alias" && +- ac_cv_build_alias=`$ac_config_guess` +-test -z "$ac_cv_build_alias" && ++ ac_build_alias=$build_alias ++test "x$ac_build_alias" = x && ++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` ++test "x$ac_build_alias" = x && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 + echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + + fi +-echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +-echo "${ECHO_T}$ac_cv_build" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++echo "${ECHO_T}$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 ++echo "$as_me: error: invalid value of canonical build" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + build=$ac_cv_build +-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_build ++shift ++build_cpu=$1 ++build_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++build_os=$* ++IFS=$ac_save_IFS ++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +-echo "$as_me:$LINENO: checking host system type" >&5 +-echo $ECHO_N "checking host system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking host system type" >&5 ++echo $ECHO_N "checking host system type... $ECHO_C" >&6; } + if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_host_alias=$host_alias +-test -z "$ac_cv_host_alias" && +- ac_cv_host_alias=$ac_cv_build_alias +-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} ++ if test "x$host_alias" = x; then ++ ac_cv_host=$ac_cv_build ++else ++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } ++fi + + fi +-echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +-echo "${ECHO_T}$ac_cv_host" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++echo "${ECHO_T}$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 ++echo "$as_me: error: invalid value of canonical host" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + host=$ac_cv_host +-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +- +- +-echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +-echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +-if test "${lt_cv_path_SED+set}" = set; then ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_host ++shift ++host_cpu=$1 ++host_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++host_os=$* ++IFS=$ac_save_IFS ++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ++ ++ ++{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 ++echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } ++if test "${ac_cv_path_SED+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ ++ for ac_i in 1 2 3 4 5 6 7; do ++ ac_script="$ac_script$as_nl$ac_script" ++ done ++ echo "$ac_script" | sed 99q >conftest.sed ++ $as_unset ac_script || ac_script= ++ # Extract the first word of "sed gsed" to use in msg output ++if test -z "$SED"; then ++set dummy sed gsed; ac_prog_name=$2 ++if test "${ac_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- # Loop through the user's path and test for sed and gsed. +-# Then use that list of sed's as ones to test for truncation. ++ ac_path_SED_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for lt_ac_prog in sed gsed; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then +- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" +- fi +- done +- done +-done +-lt_ac_max=0 +-lt_ac_count=0 +-# Add /usr/xpg4/bin/sed as it is typically found on Solaris +-# along with /bin/sed that truncates output. +-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do +- test ! -f $lt_ac_sed && continue +- cat /dev/null > conftest.in +- lt_ac_count=0 +- echo $ECHO_N "0123456789$ECHO_C" >conftest.in +- # Check for GNU sed and select it if it is found. +- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then +- lt_cv_path_SED=$lt_ac_sed +- break +- fi +- while true; do +- cat conftest.in conftest.in >conftest.tmp +- mv conftest.tmp conftest.in +- cp conftest.in conftest.nl +- echo >>conftest.nl +- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break +- cmp -s conftest.out conftest.nl || break +- # 10000 chars as input seems more than enough +- test $lt_ac_count -gt 10 && break +- lt_ac_count=`expr $lt_ac_count + 1` +- if test $lt_ac_count -gt $lt_ac_max; then +- lt_ac_max=$lt_ac_count +- lt_cv_path_SED=$lt_ac_sed ++ for ac_prog in sed gsed; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue ++ # Check for GNU ac_path_SED and select it if it is found. ++ # Check for GNU $ac_path_SED ++case `"$ac_path_SED" --version 2>&1` in ++*GNU*) ++ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo '' >> "conftest.nl" ++ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_SED_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_SED="$ac_path_SED" ++ ac_path_SED_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_SED_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++SED="$ac_cv_path_SED" ++if test -z "$SED"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in \$PATH" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in \$PATH" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_SED=$SED ++fi ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5 ++echo "${ECHO_T}$ac_cv_path_SED" >&6; } ++ SED="$ac_cv_path_SED" ++ rm -f conftest.sed ++ ++test -z "$SED" && SED=sed ++Xsed="$SED -e 1s/^X//" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 ++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Extract the first word of "grep ggrep" to use in msg output ++if test -z "$GREP"; then ++set dummy grep ggrep; ac_prog_name=$2 ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_GREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in grep ggrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue ++ # Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_GREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++GREP="$ac_cv_path_GREP" ++if test -z "$GREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_GREP=$GREP ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 ++echo "${ECHO_T}$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for egrep" >&5 ++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ # Extract the first word of "egrep" to use in msg output ++if test -z "$EGREP"; then ++set dummy egrep; ac_prog_name=$2 ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_EGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in egrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue ++ # Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count + fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_EGREP_found && break 3 + done + done + ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++EGREP="$ac_cv_path_EGREP" ++if test -z "$EGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_EGREP=$EGREP ++fi ++ ++ ++ fi + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" + +-SED=$lt_cv_path_SED +-echo "$as_me:$LINENO: result: $SED" >&5 +-echo "${ECHO_T}$SED" >&6 +- +-echo "$as_me:$LINENO: checking for egrep" >&5 +-echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +-if test "${ac_cv_prog_egrep+set}" = set; then ++ ++{ echo "$as_me:$LINENO: checking for fgrep" >&5 ++echo $ECHO_N "checking for fgrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_FGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 ++ then ac_cv_path_FGREP="$GREP -F" ++ else ++ # Extract the first word of "fgrep" to use in msg output ++if test -z "$FGREP"; then ++set dummy fgrep; ac_prog_name=$2 ++if test "${ac_cv_path_FGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if echo a | (grep -E '(a|b)') >/dev/null 2>&1 +- then ac_cv_prog_egrep='grep -E' +- else ac_cv_prog_egrep='egrep' ++ ac_path_FGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in fgrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue ++ # Check for GNU ac_path_FGREP and select it if it is found. ++ # Check for GNU $ac_path_FGREP ++case `"$ac_path_FGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'FGREP' >> "conftest.nl" ++ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_FGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_FGREP="$ac_path_FGREP" ++ ac_path_FGREP_max=$ac_count + fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_FGREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++FGREP="$ac_cv_path_FGREP" ++if test -z "$FGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_FGREP=$FGREP ++fi ++ ++ ++ fi + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +-echo "${ECHO_T}$ac_cv_prog_egrep" >&6 +- EGREP=$ac_cv_prog_egrep ++{ echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_FGREP" >&6; } ++ FGREP="$ac_cv_path_FGREP" ++ ++ ++test -z "$GREP" && GREP=grep ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +-# Check whether --with-gnu-ld or --without-gnu-ld was given. ++ ++ ++ ++ ++ ++ ++ ++# Check whether --with-gnu-ld was given. + if test "${with_gnu_ld+set}" = set; then +- withval="$with_gnu_ld" +- test "$withval" = no || with_gnu_ld=yes ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + else + with_gnu_ld=no +-fi; ++fi ++ + ac_prog=ld + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. +- echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 ++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw +@@ -3351,9 +4101,9 @@ + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld +- ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` +- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` ++ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` ++ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; +@@ -3367,11 +4117,11 @@ + ;; + esac + elif test "$with_gnu_ld" = yes; then +- echo "$as_me:$LINENO: checking for GNU ld" >&5 +-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + else +- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + fi + if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -3404,17 +4154,17 @@ + + LD="$lt_cv_path_LD" + if test -n "$LD"; then +- echo "$as_me:$LINENO: result: $LD" >&5 +-echo "${ECHO_T}$LD" >&6 ++ { echo "$as_me:$LINENO: result: $LD" >&5 ++echo "${ECHO_T}$LD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 + echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } + if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3428,38 +4178,20 @@ + ;; + esac + fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 ++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } + with_gnu_ld=$lt_cv_prog_gnu_ld + + +-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +-if test "${lt_cv_ld_reload_flag+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_cv_ld_reload_flag='-r' +-fi +-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +-reload_flag=$lt_cv_ld_reload_flag +-case $reload_flag in +-"" | " "*) ;; +-*) reload_flag=" $reload_flag" ;; +-esac +-reload_cmds='$LD$reload_flag -o $output$reload_objs' +-case $host_os in +- darwin*) +- if test "$GCC" = yes; then +- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' +- else +- reload_cmds='$LD$reload_flag -o $output$reload_objs' +- fi +- ;; +-esac + +-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 ++echo $ECHO_N "checking for BSD- or MS-compatible name lister (nm)... $ECHO_C" >&6; } + if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3504,77 +4236,451 @@ + done + IFS="$lt_save_ifs" + done +- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm ++ : ${lt_cv_path_NM=no} + fi + fi +-echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +-echo "${ECHO_T}$lt_cv_path_NM" >&6 +-NM="$lt_cv_path_NM" ++{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 ++echo "${ECHO_T}$lt_cv_path_NM" >&6; } ++if test "$lt_cv_path_NM" != "no"; then ++ NM="$lt_cv_path_NM" ++else ++ # Didn't find any BSD compatible name lister, look for dumpbin. ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in "dumpbin -symbols" "link -dump -symbols" ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_DUMPBIN+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$DUMPBIN"; then ++ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS + +-echo "$as_me:$LINENO: checking whether ln -s works" >&5 +-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +-LN_S=$as_ln_s +-if test "$LN_S" = "ln -s"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++fi ++fi ++DUMPBIN=$ac_cv_prog_DUMPBIN ++if test -n "$DUMPBIN"; then ++ { echo "$as_me:$LINENO: result: $DUMPBIN" >&5 ++echo "${ECHO_T}$DUMPBIN" >&6; } + else +- echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +-echo "${ECHO_T}no, using $LN_S" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +-echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +-echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 +-if test "${lt_cv_deplibs_check_method+set}" = set; then ++ ++ test -n "$DUMPBIN" && break ++ done ++fi ++if test -z "$DUMPBIN"; then ++ ac_ct_DUMPBIN=$DUMPBIN ++ for ac_prog in "dumpbin -symbols" "link -dump -symbols" ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- lt_cv_file_magic_cmd='$MAGIC_CMD' +-lt_cv_file_magic_test_file= +-lt_cv_deplibs_check_method='unknown' +-# Need to set the preceding variable on all platforms that support +-# interlibrary dependencies. +-# 'none' -- dependencies not supported. +-# `unknown' -- same as none, but documents that we really don't know. +-# 'pass_all' -- all dependencies passed with no checks. +-# 'test_compile' -- check by making test program. +-# 'file_magic [[regex]]' -- check by looking for files in library path +-# which responds to the $file_magic_cmd with a given extended regex. +-# If you have `file' or equivalent on your system and you're not sure +-# whether `pass_all' will *always* work, you probably want this one. ++ if test -n "$ac_ct_DUMPBIN"; then ++ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS + +-case $host_os in +-aix4* | aix5*) +- lt_cv_deplibs_check_method=pass_all +- ;; ++fi ++fi ++ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN ++if test -n "$ac_ct_DUMPBIN"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5 ++echo "${ECHO_T}$ac_ct_DUMPBIN" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi + +-beos*) +- lt_cv_deplibs_check_method=pass_all +- ;; + +-bsdi[45]*) +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' +- lt_cv_file_magic_cmd='/usr/bin/file -L' +- lt_cv_file_magic_test_file=/shlib/libc.so +- ;; ++ test -n "$ac_ct_DUMPBIN" && break ++done ++ ++ if test "x$ac_ct_DUMPBIN" = x; then ++ DUMPBIN=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ DUMPBIN=$ac_ct_DUMPBIN ++ fi ++fi ++ ++ ++ if test "$DUMPBIN" != ":"; then ++ NM="$DUMPBIN" ++ fi ++fi ++test -z "$NM" && NM=nm ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 ++echo $ECHO_N "checking the name lister ($NM) interface... $ECHO_C" >&6; } ++if test "${lt_cv_nm_interface+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_nm_interface="BSD nm" ++ echo "int some_variable = 0;" > conftest.$ac_ext ++ (eval echo "\"\$as_me:4371: $ac_compile\"" >&5) ++ (eval "$ac_compile" 2>conftest.err) ++ cat conftest.err >&5 ++ (eval echo "\"\$as_me:4374: $NM \\\"conftest.$ac_objext\\\"\"" >&5) ++ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) ++ cat conftest.err >&5 ++ (eval echo "\"\$as_me:4377: output\"" >&5) ++ cat conftest.out >&5 ++ if $GREP 'External.*some_variable' conftest.out > /dev/null; then ++ lt_cv_nm_interface="MS dumpbin" ++ fi ++ rm -f conftest* ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5 ++echo "${ECHO_T}$lt_cv_nm_interface" >&6; } ++ ++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 ++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } ++LN_S=$as_ln_s ++if test "$LN_S" = "ln -s"; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 ++echo "${ECHO_T}no, using $LN_S" >&6; } ++fi ++ ++# find the maximum length of command line arguments ++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 ++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } ++if test "${lt_cv_sys_max_cmd_len+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ i=0 ++ teststring="ABCD" ++ ++ case $build_os in ++ msdosdjgpp*) ++ # On DJGPP, this test can blow up pretty badly due to problems in libc ++ # (any single argument exceeding 2000 bytes causes a buffer overrun ++ # during glob expansion). Even if it were fixed, the result of this ++ # check would be larger than it should be. ++ lt_cv_sys_max_cmd_len=12288; # 12K is about right ++ ;; ++ ++ gnu*) ++ # Under GNU Hurd, this test is not required because there is ++ # no limit to the length of command line arguments. ++ # Libtool will interpret -1 as no limit whatsoever ++ lt_cv_sys_max_cmd_len=-1; ++ ;; ++ ++ cygwin* | mingw*) ++ # On Win9x/ME, this test blows up -- it succeeds, but takes ++ # about 5 minutes as the teststring grows exponentially. ++ # Worse, since 9x/ME are not pre-emptively multitasking, ++ # you end up with a "frozen" computer, even though with patience ++ # the test eventually succeeds (with a max line length of 256k). ++ # Instead, let's just punt: use the minimum linelength reported by ++ # all of the supported platforms: 8192 (on NT/2K/XP). ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ amigaos*) ++ # On AmigaOS with pdksh, this test takes hours, literally. ++ # So we just punt and use a minimum line length of 8192. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) ++ # This has been around since 386BSD, at least. Likely further. ++ if test -x /sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` ++ elif test -x /usr/sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` ++ else ++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs ++ fi ++ # And add a safety zone ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ ;; ++ ++ interix*) ++ # We know the value 262144 and hardcode it with a safety zone (like BSD) ++ lt_cv_sys_max_cmd_len=196608 ++ ;; ++ ++ osf*) ++ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure ++ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not ++ # nice to cause kernel panics so lets avoid the loop below. ++ # First set a reasonable default. ++ lt_cv_sys_max_cmd_len=16384 ++ # ++ if test -x /sbin/sysconfig; then ++ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in ++ *1*) lt_cv_sys_max_cmd_len=-1 ;; ++ esac ++ fi ++ ;; ++ sco3.2v5*) ++ lt_cv_sys_max_cmd_len=102400 ++ ;; ++ sysv5* | sco5v6* | sysv4.2uw2*) ++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` ++ if test -n "$kargmax"; then ++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` ++ else ++ lt_cv_sys_max_cmd_len=32768 ++ fi ++ ;; ++ *) ++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` ++ if test -n "$lt_cv_sys_max_cmd_len"; then ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ else ++ # Make teststring a little bigger before we do anything with it. ++ # a 1K string should be a reasonable start. ++ for i in 1 2 3 4 5 6 7 8 ; do ++ teststring=$teststring$teststring ++ done ++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} ++ # If test is not a shell built-in, we'll probably end up computing a ++ # maximum length that is only half of the actual maximum length, but ++ # we can't tell. ++ while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ ++ = "XX$teststring$teststring"; } >/dev/null 2>&1 && ++ test $i != 17 # 1/2 MB should be enough ++ do ++ i=`expr $i + 1` ++ teststring=$teststring$teststring ++ done ++ # Only check the string length outside the loop. ++ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` ++ teststring= ++ # Add a significant safety factor because C++ compilers can tack on ++ # massive amounts of additional arguments before passing them to the ++ # linker. It appears as though 1/2 is a usable value. ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ++ fi ++ ;; ++ esac ++ ++fi ++ ++if test -n $lt_cv_sys_max_cmd_len ; then ++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 ++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } ++else ++ { echo "$as_me:$LINENO: result: none" >&5 ++echo "${ECHO_T}none" >&6; } ++fi ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++ ++ ++ ++ ++ ++: ${CP="cp -f"} ++: ${MV="mv -f"} ++: ${RM="rm -f"} ++ ++{ echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 ++echo $ECHO_N "checking whether the shell understands some XSI constructs... $ECHO_C" >&6; } ++# Try some XSI features ++xsi_shell=no ++( _lt_dummy="a/b/c" ++ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ ++ = c,a/b,, \ ++ && eval 'test $(( 1 + 1 )) -eq 2 \ ++ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ ++ && xsi_shell=yes ++{ echo "$as_me:$LINENO: result: $xsi_shell" >&5 ++echo "${ECHO_T}$xsi_shell" >&6; } ++ ++ ++{ echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 ++echo $ECHO_N "checking whether the shell understands \"+=\"... $ECHO_C" >&6; } ++lt_shell_append=no ++( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ ++ >/dev/null 2>&1 \ ++ && lt_shell_append=yes ++{ echo "$as_me:$LINENO: result: $lt_shell_append" >&5 ++echo "${ECHO_T}$lt_shell_append" >&6; } + +-cygwin*) +- # func_win32_libid is a shell function defined in ltmain.sh +- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' +- lt_cv_file_magic_cmd='func_win32_libid' +- ;; ++ ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ lt_unset=unset ++else ++ lt_unset=false ++fi ++ ++ ++ ++ ++ ++# test EBCDIC or ASCII ++case `echo X|tr X '\101'` in ++ A) # ASCII based system ++ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr ++ lt_SP2NL='tr \040 \012' ++ lt_NL2SP='tr \015\012 \040\040' ++ ;; ++ *) # EBCDIC based system ++ lt_SP2NL='tr \100 \n' ++ lt_NL2SP='tr \r\n \100\100' ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 ++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } ++if test "${lt_cv_ld_reload_flag+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_ld_reload_flag='-r' ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 ++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } ++reload_flag=$lt_cv_ld_reload_flag ++case $reload_flag in ++"" | " "*) ;; ++*) reload_flag=" $reload_flag" ;; ++esac ++reload_cmds='$LD$reload_flag -o $output$reload_objs' ++case $host_os in ++ darwin*) ++ if test "$GCC" = yes; then ++ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' ++ else ++ reload_cmds='$LD$reload_flag -o $output$reload_objs' ++ fi ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 ++echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } ++if test "${lt_cv_deplibs_check_method+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_file_magic_cmd='$MAGIC_CMD' ++lt_cv_file_magic_test_file= ++lt_cv_deplibs_check_method='unknown' ++# Need to set the preceding variable on all platforms that support ++# interlibrary dependencies. ++# 'none' -- dependencies not supported. ++# `unknown' -- same as none, but documents that we really don't know. ++# 'pass_all' -- all dependencies passed with no checks. ++# 'test_compile' -- check by making test program. ++# 'file_magic [[regex]]' -- check by looking for files in library path ++# which responds to the $file_magic_cmd with a given extended regex. ++# If you have `file' or equivalent on your system and you're not sure ++# whether `pass_all' will *always* work, you probably want this one. ++ ++case $host_os in ++aix[4-9]*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++beos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++bsdi[45]*) ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' ++ lt_cv_file_magic_cmd='/usr/bin/file -L' ++ lt_cv_file_magic_test_file=/shlib/libc.so ++ ;; ++ ++cygwin*) ++ # func_win32_libid is a shell function defined in ltmain.sh ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ ;; + + mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by +- # func_win32_libid shell function, so use a weaker test based on 'objdump'. +- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' +- lt_cv_file_magic_cmd='$OBJDUMP -f' ++ # func_win32_libid shell function, so use a weaker test based on 'objdump', ++ # unless we find 'file', for example because we are cross-compiling. ++ if ( file / ) >/dev/null 2>&1; then ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ else ++ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' ++ fi + ;; + + darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd* | kfreebsd*-gnu | dragonfly*) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then ++freebsd* | dragonfly*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. +@@ -3611,7 +4717,7 @@ + esac + ;; + +-interix3*) ++interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; +@@ -3627,12 +4733,12 @@ + ;; + + # This must be Linux ELF. +-linux*) ++linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + + netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' +@@ -3645,12 +4751,12 @@ + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +-nto-qnx*) +- lt_cv_deplibs_check_method=unknown ++*nto* | *qnx*) ++ lt_cv_deplibs_check_method=pass_all + ;; + + openbsd*) +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' +@@ -3661,10 +4767,18 @@ + lt_cv_deplibs_check_method=pass_all + ;; + ++rdos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ + solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ + sysv4 | sysv4.3*) + case $host_vendor in + motorola) +@@ -3692,14 +4806,14 @@ + esac + ;; + +-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++tpf*) + lt_cv_deplibs_check_method=pass_all + ;; + esac + + fi +-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 ++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } + file_magic_cmd=$lt_cv_file_magic_cmd + deplibs_check_method=$lt_cv_deplibs_check_method + test -z "$deplibs_check_method" && deplibs_check_method=unknown +@@ -3707,869 +4821,236 @@ + + + +-# If no C compiler was specified, use CC. +-LTCC=${LTCC-"$CC"} + +-# If no C compiler flags were specified, use CFLAGS. +-LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +-# Allow CC to be a program name with arguments. +-compiler=$CC + + +-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +-if test "${enable_libtool_lock+set}" = set; then +- enableval="$enable_libtool_lock" + +-fi; +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +-# Some flags need to be propagated to the compiler or linker for good +-# libtool support. +-case $host in +-ia64-*-hpux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- case `/usr/bin/file conftest.$ac_objext` in +- *ELF-32*) +- HPUX_IA64_MODE="32" +- ;; +- *ELF-64*) +- HPUX_IA64_MODE="64" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '#line 3751 "configure"' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- if test "$lt_cv_prog_gnu_ld" = yes; then +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -melf32bsmip" +- ;; +- *N32*) +- LD="${LD-ld} -melf32bmipn32" +- ;; +- *64-bit*) +- LD="${LD-ld} -melf64bmip" +- ;; +- esac +- else +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -32" +- ;; +- *N32*) +- LD="${LD-ld} -n32" +- ;; +- *64-bit*) +- LD="${LD-ld} -64" +- ;; +- esac +- fi +- fi +- rm -rf conftest* +- ;; + +-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- case `/usr/bin/file conftest.o` in +- *32-bit*) +- case $host in +- x86_64-*linux*) +- LD="${LD-ld} -m elf_i386" +- ;; +- ppc64-*linux*|powerpc64-*linux*) +- LD="${LD-ld} -m elf32ppclinux" +- ;; +- s390x-*linux*) +- LD="${LD-ld} -m elf_s390" +- ;; +- sparc64-*linux*) +- LD="${LD-ld} -m elf32_sparc" +- ;; +- esac +- ;; +- *64-bit*) +- case $host in +- x86_64-*linux*) +- LD="${LD-ld} -m elf_x86_64" +- ;; +- ppc*-*linux*|powerpc*-*linux*) +- LD="${LD-ld} -m elf64ppc" +- ;; +- s390*-*linux*) +- LD="${LD-ld} -m elf64_s390" +- ;; +- sparc*-*linux*) +- LD="${LD-ld} -m elf64_sparc" +- ;; +- esac +- ;; +- esac +- fi +- rm -rf conftest* +- ;; + +-*-*-sco3.2v5*) +- # On SCO OpenServer 5, we need -belf to get full-featured binaries. +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -belf" +- echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +-if test "${lt_cv_cc_needs_belf+set}" = set; then ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ar; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- 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 +- +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- lt_cv_cc_needs_belf=yes ++ if test -n "$AR"; then ++ ac_cv_prog_AR="$AR" # Let the user override the test. + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_AR="${ac_tool_prefix}ar" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS + +-lt_cv_cc_needs_belf=no + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- 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 +- + fi +-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 +- if test x"$lt_cv_cc_needs_belf" != x"yes"; then +- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +- CFLAGS="$SAVE_CFLAGS" +- fi +- ;; +-sparc*-*solaris*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- case `/usr/bin/file conftest.o` in +- *64-bit*) +- case $lt_cv_prog_gnu_ld in +- yes*) LD="${LD-ld} -m elf64_sparc" ;; +- *) LD="${LD-ld} -64" ;; +- esac +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- +- +-esac +- +-need_locks="$enable_libtool_lock" ++AR=$ac_cv_prog_AR ++if test -n "$AR"; then ++ { echo "$as_me:$LINENO: result: $AR" >&5 ++echo "${ECHO_T}$AR" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++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 +-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +-# On Suns, sometimes $CPP names a directory. +-if test -n "$CPP" && test -d "$CPP"; then +- CPP= + fi +-if test -z "$CPP"; then +- if test "${ac_cv_prog_CPP+set}" = set; then ++if test -z "$ac_cv_prog_AR"; then ++ ac_ct_AR=$AR ++ # Extract the first word of "ar", so it can be a program name with args. ++set dummy ar; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- # Double quotes because CPP needs to be expanded +- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" +- do +- ac_preproc_ok=false +-for ac_c_preproc_warn_flag in '' yes ++ if test -n "$ac_ct_AR"; then ++ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH + do +- # Use a header file that comes with gcc, so configuring glibc +- # with a fresh cross-compiler works. +- # Prefer to if __STDC__ is defined, since +- # exists even on freestanding compilers. +- # On the NeXT, cc -E runs the code through the compiler's parser, +- # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- Syntax error +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_AR="ar" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 + fi +-else +- ac_cpp_err=yes ++done ++done ++IFS=$as_save_IFS ++ + fi +-if test -z "$ac_cpp_err"; then +- : ++fi ++ac_ct_AR=$ac_cv_prog_ac_ct_AR ++if test -n "$ac_ct_AR"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 ++echo "${ECHO_T}$ac_ct_AR" >&6; } + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- # Broken: fails on valid input. +-continue ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi +-rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers +- # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= ++ if test "x$ac_ct_AR" = x; then ++ AR="false" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ AR=$ac_ct_AR + fi + else +- ac_cpp_err=yes ++ AR="$ac_cv_prog_AR" + fi +-if test -z "$ac_cpp_err"; then +- # Broken: success on invalid input. +-continue +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- # Passes both tests. +-ac_preproc_ok=: +-break +-fi +-rm -f conftest.err conftest.$ac_ext ++test -z "$AR" && AR=ar ++test -z "$AR_FLAGS" && AR_FLAGS=cru + +-done +-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then +- break +-fi + +- done +- ac_cv_prog_CPP=$CPP + +-fi +- CPP=$ac_cv_prog_CPP +-else +- ac_cv_prog_CPP=$CPP +-fi +-echo "$as_me:$LINENO: result: $CPP" >&5 +-echo "${ECHO_T}$CPP" >&6 +-ac_preproc_ok=false +-for ac_c_preproc_warn_flag in '' yes +-do +- # Use a header file that comes with gcc, so configuring glibc +- # with a fresh cross-compiler works. +- # Prefer to if __STDC__ is defined, since +- # exists even on freestanding compilers. +- # On the NeXT, cc -E runs the code through the compiler's parser, +- # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- Syntax error +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- # Broken: fails on valid input. +-continue +-fi +-rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers +- # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- # Broken: success on invalid input. +-continue +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- # Passes both tests. +-ac_preproc_ok=: +-break +-fi +-rm -f conftest.err conftest.$ac_ext + +-done +-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then +- : +-else +- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +-See \`config.log' for more details." >&5 +-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +-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 + + +-echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +-if test "${ac_cv_header_stdc+set}" = set; 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. ++set dummy ${ac_tool_prefix}strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-#include +-#include +-#include +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_header_stdc=yes ++ if test -n "$STRIP"; then ++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_header_stdc=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- +-if test $ac_cv_header_stdc = yes; then +- # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS + +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "memchr" >/dev/null 2>&1; then +- : +-else +- ac_cv_header_stdc=no + fi +-rm -f conftest* +- + fi +- +-if test $ac_cv_header_stdc = yes; then +- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "free" >/dev/null 2>&1; then +- : ++STRIP=$ac_cv_prog_STRIP ++if test -n "$STRIP"; then ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } + else +- ac_cv_header_stdc=no ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi +-rm -f conftest* + +-fi + +-if test $ac_cv_header_stdc = yes; then +- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +- if test "$cross_compiling" = yes; then +- : ++fi ++if test -z "$ac_cv_prog_STRIP"; then ++ ac_ct_STRIP=$STRIP ++ # Extract the first word of "strip", so it can be a program name with args. ++set dummy strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-#if ((' ' & 0x0FF) == 0x020) +-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +-#else +-# define ISLOWER(c) \ +- (('a' <= (c) && (c) <= 'i') \ +- || ('j' <= (c) && (c) <= 'r') \ +- || ('s' <= (c) && (c) <= 'z')) +-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +-#endif +- +-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +-int +-main () +-{ +- int i; +- for (i = 0; i < 256; i++) +- if (XOR (islower (i), ISLOWER (i)) +- || toupper (i) != TOUPPER (i)) +- exit(2); +- exit (0); +-} +-_ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : ++ if test -n "$ac_ct_STRIP"; then ++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. + else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_STRIP="strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS + +-( exit $ac_status ) +-ac_cv_header_stdc=no +-fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + fi ++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ++if test -n "$ac_ct_STRIP"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +-echo "${ECHO_T}$ac_cv_header_stdc" >&6 +-if test $ac_cv_header_stdc = yes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define STDC_HEADERS 1 +-_ACEOF + ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi ++else ++ STRIP="$ac_cv_prog_STRIP" + fi + +-# On IRIX 5.3, sys/types and inttypes.h are conflicting. +- +- ++test -z "$STRIP" && STRIP=: + + + + + + +- +-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ +- inttypes.h stdint.h unistd.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +- +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- eval "$as_ac_Header=yes" +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-eval "$as_ac_Header=no" +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF +- +-fi +- +-done +- +- +- +-for ac_header in dlfcn.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +-else +- # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_header_compiler=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_header_compiler=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 +- +-# Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ----------------------------------------------------------- ## +-## Report this to http://sourceforge.net/projects/libvncserver ## +-## ----------------------------------------------------------- ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +- +-fi +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF +- +-fi +- +-done +- +-ac_ext=cc +-ac_cpp='$CXXCPP $CPPFLAGS' +-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + if test -n "$ac_tool_prefix"; then +- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +- do +- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +-set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_CXX+set}" = set; then ++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$CXX"; then +- ac_cv_prog_CXX="$CXX" # Let the user override the test. ++ if test -n "$RANLIB"; then ++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. + else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH +@@ -4577,41 +5058,39 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi +-CXX=$ac_cv_prog_CXX +-if test -n "$CXX"; then +- echo "$as_me:$LINENO: result: $CXX" >&5 +-echo "${ECHO_T}$CXX" >&6 ++RANLIB=$ac_cv_prog_RANLIB ++if test -n "$RANLIB"; then ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- test -n "$CXX" && break +- done ++ + fi +-if test -z "$CXX"; then +- ac_ct_CXX=$CXX +- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +-do +- # Extract the first word of "$ac_prog", so it can be a program name with args. +-set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then ++if test -z "$ac_cv_prog_RANLIB"; then ++ ac_ct_RANLIB=$RANLIB ++ # Extract the first word of "ranlib", so it can be a program name with args. ++set dummy ranlib; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$ac_ct_CXX"; then +- ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. ++ if test -n "$ac_ct_RANLIB"; then ++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. + else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH +@@ -4619,1107 +5098,230 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CXX="$ac_prog" ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi +-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +-if test -n "$ac_ct_CXX"; then +- echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +-echo "${ECHO_T}$ac_ct_CXX" >&6 ++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB ++if test -n "$ac_ct_RANLIB"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- test -n "$ac_ct_CXX" && break +-done +-test -n "$ac_ct_CXX" || ac_ct_CXX="g++" +- +- CXX=$ac_ct_CXX ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi ++else ++ RANLIB="$ac_cv_prog_RANLIB" + fi + ++test -z "$RANLIB" && RANLIB=: + +-# Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C++ compiler version" >&5 +-ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } + +-echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-int +-main () +-{ +-#ifndef __GNUC__ +- choke me +-#endif + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_compiler_gnu=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_compiler_gnu=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + ++# Determine commands to create old-style static archives. ++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' ++old_postinstall_cmds='chmod 644 $oldlib' ++old_postuninstall_cmds= ++ ++if test -n "$RANLIB"; then ++ case $host_os in ++ openbsd*) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ++ ;; ++ *) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ++ ;; ++ esac ++ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + fi +-echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +-GXX=`test $ac_compiler_gnu = yes && echo yes` +-ac_test_CXXFLAGS=${CXXFLAGS+set} +-ac_save_CXXFLAGS=$CXXFLAGS +-CXXFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +-if test "${ac_cv_prog_cxx_g+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-int +-main () +-{ + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cxx_g=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_prog_cxx_g=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +-if test "$ac_test_CXXFLAGS" = set; then +- CXXFLAGS=$ac_save_CXXFLAGS +-elif test $ac_cv_prog_cxx_g = yes; then +- if test "$GXX" = yes; then +- CXXFLAGS="-g -O2" +- else +- CXXFLAGS="-g" +- fi +-else +- if test "$GXX" = yes; then +- CXXFLAGS="-O2" +- else +- CXXFLAGS= +- fi +-fi +-for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-#include +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-continue +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h +-fi +- +-ac_ext=cc +-ac_cpp='$CXXCPP $CPPFLAGS' +-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +- +-depcc="$CXX" am_compiler_list= +- +-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +-if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +- # 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'. +- mkdir conftest.dir +- # Copy depcomp to subdir because otherwise we won't find it if we're +- # using a relative directory. +- cp "$am_depcomp" conftest.dir +- cd conftest.dir +- # We will build objects and dependencies in a subdirectory because +- # it helps to detect inapplicable dependency modes. For instance +- # both Tru64's cc and ICC support -MD to output dependencies as a +- # side effect of compilation, but ICC will put the dependencies in +- # the current directory while Tru64 will put them in the object +- # directory. +- mkdir sub + +- am_cv_CXX_dependencies_compiler_type=none +- if test "$am_compiler_list" = ""; then +- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` +- fi +- for depmode in $am_compiler_list; do +- # Setup a source with many dependencies, because some compilers +- # like to wrap large dependency lists on column 80 (with \), and +- # we should not choose a depcomp mode which is confused by this. +- # +- # We need to recreate these files for each test, as the compiler may +- # overwrite some of them when testing with obscure command lines. +- # This happens at least with the AIX C compiler. +- : > 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 +- done +- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + +- case $depmode in +- nosideeffect) +- # 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 +- break +- fi +- ;; +- none) break ;; +- esac +- # 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. +- if depmode=$depmode \ +- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ +- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ +- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ +- >/dev/null 2>conftest.err && +- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && +- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && +- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- # icc doesn't choke on unknown options, it will just issue warnings +- # or remarks (even with -Werror). So we grep stderr for any message +- # that says an option was ignored or not supported. +- # When given -MP, icc 7.0 and 7.1 complain thusly: +- # icc: Command line warning: ignoring option '-M'; no argument required +- # The diagnosis changed in icc 8.0: +- # icc: Command line remark: option '-MP' not supported +- if (grep 'ignoring option' conftest.err || +- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else +- am_cv_CXX_dependencies_compiler_type=$depmode +- break +- fi +- fi +- done + +- cd .. +- rm -rf conftest.dir +-else +- am_cv_CXX_dependencies_compiler_type=none +-fi + +-fi +-echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +-if +- test "x$enable_dependency_tracking" != xno \ +- && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then +- am__fastdepCXX_TRUE= +- am__fastdepCXX_FALSE='#' +-else +- am__fastdepCXX_TRUE='#' +- am__fastdepCXX_FALSE= +-fi + + + + +-if test -n "$CXX" && ( test "X$CXX" != "Xno" && +- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || +- (test "X$CXX" != "Xg++"))) ; then +- ac_ext=cc +-ac_cpp='$CXXCPP $CPPFLAGS' +-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +-echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +-echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +-if test -z "$CXXCPP"; then +- if test "${ac_cv_prog_CXXCPP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- # Double quotes because CXXCPP needs to be expanded +- for CXXCPP in "$CXX -E" "/lib/cpp" +- do +- ac_preproc_ok=false +-for ac_cxx_preproc_warn_flag in '' yes +-do +- # Use a header file that comes with gcc, so configuring glibc +- # with a fresh cross-compiler works. +- # Prefer to if __STDC__ is defined, since +- # exists even on freestanding compilers. +- # On the NeXT, cc -E runs the code through the compiler's parser, +- # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- Syntax error +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_cxx_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- # Broken: fails on valid input. +-continue +-fi +-rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers +- # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_cxx_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- # Broken: success on invalid input. +-continue +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- # Passes both tests. +-ac_preproc_ok=: +-break +-fi +-rm -f conftest.err conftest.$ac_ext + +-done +-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then +- break +-fi + +- done +- ac_cv_prog_CXXCPP=$CXXCPP + +-fi +- CXXCPP=$ac_cv_prog_CXXCPP +-else +- ac_cv_prog_CXXCPP=$CXXCPP +-fi +-echo "$as_me:$LINENO: result: $CXXCPP" >&5 +-echo "${ECHO_T}$CXXCPP" >&6 +-ac_preproc_ok=false +-for ac_cxx_preproc_warn_flag in '' yes +-do +- # Use a header file that comes with gcc, so configuring glibc +- # with a fresh cross-compiler works. +- # Prefer to if __STDC__ is defined, since +- # exists even on freestanding compilers. +- # On the NeXT, cc -E runs the code through the compiler's parser, +- # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- Syntax error +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_cxx_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- # Broken: fails on valid input. +-continue +-fi +-rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers +- # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_cxx_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- # Broken: success on invalid input. +-continue +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- # Passes both tests. +-ac_preproc_ok=: +-break +-fi +-rm -f conftest.err conftest.$ac_ext + +-done +-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then +- : +-else +- { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +-See \`config.log' for more details." >&5 +-echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +-fi + +-ac_ext=cc +-ac_cpp='$CXXCPP $CPPFLAGS' +-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +-fi + + +-ac_ext=f +-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_f77_compiler_gnu +-if test -n "$ac_tool_prefix"; then +- for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran +- do +- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +-set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_F77+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$F77"; then +- ac_cv_prog_F77="$F77" # Let the user override the test. +-else +-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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_F77="$ac_tool_prefix$ac_prog" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done + +-fi +-fi +-F77=$ac_cv_prog_F77 +-if test -n "$F77"; then +- echo "$as_me:$LINENO: result: $F77" >&5 +-echo "${ECHO_T}$F77" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi + +- test -n "$F77" && break +- done +-fi +-if test -z "$F77"; then +- ac_ct_F77=$F77 +- for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran +-do +- # Extract the first word of "$ac_prog", so it can be a program name with args. +-set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_F77+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_F77"; then +- ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +-else +-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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_F77="$ac_prog" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done + +-fi +-fi +-ac_ct_F77=$ac_cv_prog_ac_ct_F77 +-if test -n "$ac_ct_F77"; then +- echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +-echo "${ECHO_T}$ac_ct_F77" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi + +- test -n "$ac_ct_F77" && break +-done ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} + +- F77=$ac_ct_F77 +-fi ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + ++# Allow CC to be a program name with arguments. ++compiler=$CC + +-# Provide some information about the compiler. +-echo "$as_me:5350:" \ +- "checking for Fortran 77 compiler version" >&5 +-ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-rm -f a.out + +-# If we don't use `.F' as extension, the preprocessor is not run on the +-# input file. (Note that this only needs to work for GNU compilers.) +-ac_save_ext=$ac_ext +-ac_ext=F +-echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 +-if test "${ac_cv_f77_compiler_gnu+set}" = set; then ++# Check for command to grab the raw symbol name followed by C symbol from nm. ++{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 ++echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } ++if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +- program main +-#ifndef __GNUC__ +- choke me +-#endif + +- end +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_f77_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_compiler_gnu=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# These are sane defaults that work on at least a few old systems. ++# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +-ac_compiler_gnu=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-ac_cv_f77_compiler_gnu=$ac_compiler_gnu ++# Character class describing NM global symbol codes. ++symcode='[BCDEGRST]' + +-fi +-echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 +-ac_ext=$ac_save_ext +-ac_test_FFLAGS=${FFLAGS+set} +-ac_save_FFLAGS=$FFLAGS +-FFLAGS= +-echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +-echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 +-if test "${ac_cv_prog_f77_g+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- FFLAGS=-g +-cat >conftest.$ac_ext <<_ACEOF +- program main ++# Regexp to match symbols that can be accessed directly from C. ++sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +- end +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_f77_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_f77_g=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# Define system-specific variables. ++case $host_os in ++aix*) ++ symcode='[BCDT]' ++ ;; ++cygwin* | mingw* | pw32*) ++ symcode='[ABCDGISTW]' ++ ;; ++hpux*) ++ if test "$host_cpu" = ia64; then ++ symcode='[ABCDEGRST]' ++ fi ++ ;; ++irix* | nonstopux*) ++ symcode='[BCDEGRST]' ++ ;; ++osf*) ++ symcode='[BCDEGQRST]' ++ ;; ++solaris*) ++ symcode='[BDRT]' ++ ;; ++sco3.2v5*) ++ symcode='[DT]' ++ ;; ++sysv4.2uw2*) ++ symcode='[DT]' ++ ;; ++sysv5* | sco5v6* | unixware* | OpenUNIX*) ++ symcode='[ABDT]' ++ ;; ++sysv4) ++ symcode='[DFNSTU]' ++ ;; ++esac + +-ac_cv_prog_f77_g=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++# If we're using GNU nm, then use its standard symbol codes. ++case `$NM -V 2>&1` in ++*GNU* | *'with BFD'*) ++ symcode='[ABCDGIRSTW]' ;; ++esac + +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 +-if test "$ac_test_FFLAGS" = set; then +- FFLAGS=$ac_save_FFLAGS +-elif test $ac_cv_prog_f77_g = yes; then +- if test "x$ac_cv_f77_compiler_gnu" = xyes; then +- FFLAGS="-g -O2" +- else +- FFLAGS="-g" +- fi +-else +- if test "x$ac_cv_f77_compiler_gnu" = xyes; then +- FFLAGS="-O2" +- else +- FFLAGS= +- fi +-fi ++# Transform an extracted symbol line into a proper C declaration. ++# Some systems (esp. on ia64) link data and code symbols differently, ++# so use this general approach. ++lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +-G77=`test $ac_compiler_gnu = yes && echo yes` +-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 ++# Transform an extracted symbol line into symbol name and symbol address ++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + ++# Handle CRLF in mingw tool chain ++opt_cr= ++case $build_os in ++mingw*) ++ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ++ ;; ++esac + ++# Try without a prefix underscore, then with it. ++for ac_symprfx in "" "_"; do + +-# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! ++ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. ++ symxfrm="\\1 $ac_symprfx\\2 \\2" + +-# find the maximum length of command line arguments +-echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 +-if test "${lt_cv_sys_max_cmd_len+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- i=0 +- teststring="ABCD" +- +- case $build_os in +- msdosdjgpp*) +- # On DJGPP, this test can blow up pretty badly due to problems in libc +- # (any single argument exceeding 2000 bytes causes a buffer overrun +- # during glob expansion). Even if it were fixed, the result of this +- # check would be larger than it should be. +- lt_cv_sys_max_cmd_len=12288; # 12K is about right +- ;; +- +- gnu*) +- # Under GNU Hurd, this test is not required because there is +- # no limit to the length of command line arguments. +- # Libtool will interpret -1 as no limit whatsoever +- lt_cv_sys_max_cmd_len=-1; +- ;; +- +- cygwin* | mingw*) +- # On Win9x/ME, this test blows up -- it succeeds, but takes +- # about 5 minutes as the teststring grows exponentially. +- # Worse, since 9x/ME are not pre-emptively multitasking, +- # you end up with a "frozen" computer, even though with patience +- # the test eventually succeeds (with a max line length of 256k). +- # Instead, let's just punt: use the minimum linelength reported by +- # all of the supported platforms: 8192 (on NT/2K/XP). +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- amigaos*) +- # On AmigaOS with pdksh, this test takes hours, literally. +- # So we just punt and use a minimum line length of 8192. +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) +- # This has been around since 386BSD, at least. Likely further. +- if test -x /sbin/sysctl; then +- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` +- elif test -x /usr/sbin/sysctl; then +- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` +- else +- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs +- fi +- # And add a safety zone +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` +- ;; +- +- interix*) +- # We know the value 262144 and hardcode it with a safety zone (like BSD) +- lt_cv_sys_max_cmd_len=196608 +- ;; +- +- osf*) +- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure +- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not +- # nice to cause kernel panics so lets avoid the loop below. +- # First set a reasonable default. +- lt_cv_sys_max_cmd_len=16384 +- # +- if test -x /sbin/sysconfig; then +- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in +- *1*) lt_cv_sys_max_cmd_len=-1 ;; +- esac +- fi +- ;; +- sco3.2v5*) +- lt_cv_sys_max_cmd_len=102400 +- ;; +- sysv5* | sco5v6* | sysv4.2uw2*) +- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` +- if test -n "$kargmax"; then +- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` +- else +- lt_cv_sys_max_cmd_len=32768 +- fi +- ;; +- *) +- # If test is not a shell built-in, we'll probably end up computing a +- # maximum length that is only half of the actual maximum length, but +- # we can't tell. +- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} +- while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ +- = "XX$teststring") >/dev/null 2>&1 && +- new_result=`expr "X$teststring" : ".*" 2>&1` && +- lt_cv_sys_max_cmd_len=$new_result && +- test $i != 17 # 1/2 MB should be enough +- do +- i=`expr $i + 1` +- teststring=$teststring$teststring +- done +- teststring= +- # Add a significant safety factor because C++ compilers can tack on massive +- # amounts of additional arguments before passing them to the linker. +- # It appears as though 1/2 is a usable value. +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` +- ;; +- esac +- +-fi +- +-if test -n $lt_cv_sys_max_cmd_len ; then +- echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 +-else +- echo "$as_me:$LINENO: result: none" >&5 +-echo "${ECHO_T}none" >&6 +-fi +- +- +- +- +-# Check for command to grab the raw symbol name followed by C symbol from nm. +-echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +-echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 +-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +-# These are sane defaults that work on at least a few old systems. +-# [They come from Ultrix. What could be older than Ultrix?!! ;)] +- +-# Character class describing NM global symbol codes. +-symcode='[BCDEGRST]' +- +-# Regexp to match symbols that can be accessed directly from C. +-sympat='\([_A-Za-z][_A-Za-z0-9]*\)' +- +-# Transform an extracted symbol line into a proper C declaration +-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" +- +-# Transform an extracted symbol line into symbol name and symbol address +-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- +-# Define system-specific variables. +-case $host_os in +-aix*) +- symcode='[BCDT]' +- ;; +-cygwin* | mingw* | pw32*) +- symcode='[ABCDGISTW]' +- ;; +-hpux*) # Its linker distinguishes data from code symbols +- if test "$host_cpu" = ia64; then +- symcode='[ABCDEGRST]' +- fi +- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- ;; +-linux*) +- if test "$host_cpu" = ia64; then +- symcode='[ABCDGIRSTW]' +- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- fi +- ;; +-irix* | nonstopux*) +- symcode='[BCDEGRST]' +- ;; +-osf*) +- symcode='[BCDEGQRST]' +- ;; +-solaris*) +- symcode='[BDRT]' +- ;; +-sco3.2v5*) +- symcode='[DT]' +- ;; +-sysv4.2uw2*) +- symcode='[DT]' +- ;; +-sysv5* | sco5v6* | unixware* | OpenUNIX*) +- symcode='[ABDT]' +- ;; +-sysv4) +- symcode='[DFNSTU]' +- ;; +-esac +- +-# Handle CRLF in mingw tool chain +-opt_cr= +-case $build_os in +-mingw*) +- opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp +- ;; +-esac +- +-# If we're using GNU nm, then use its standard symbol codes. +-case `$NM -V 2>&1` in +-*GNU* | *'with BFD'*) +- symcode='[ABCDGIRSTW]' ;; +-esac +- +-# Try without a prefix undercore, then with it. +-for ac_symprfx in "" "_"; do +- +- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. +- symxfrm="\\1 $ac_symprfx\\2 \\2" +- +- # Write the raw and C identifiers. +- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" ++ # Write the raw and C identifiers. ++ if test "$lt_cv_nm_interface" = "MS dumpbin"; then ++ # Fake it for dumpbin and say T for any non-static function ++ # and D for any global variable. ++ # Also find C++ and __fastcall symbols from MSVC++, ++ # which start with @ or ?. ++ lt_cv_sys_global_symbol_pipe="$AWK '"\ ++" {last_section=section; section=\$ 3};"\ ++" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ ++" \$ 0!~/External *\|/{next};"\ ++" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ ++" {if(hide[section]) next};"\ ++" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ ++" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ ++" s[1]~/^[@?]/{print s[1], s[1]; next};"\ ++" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ ++" ' prfx=^$ac_symprfx" ++ else ++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" ++ fi + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* +- cat > conftest.$ac_ext < conftest.$ac_ext <<_LT_EOF + #ifdef __cplusplus + extern "C" { + #endif + char nm_test_var; +-void nm_test_func(){} ++void nm_test_func(void); ++void nm_test_func(void){} + #ifdef __cplusplus + } + #endif + int main(){nm_test_var='a';nm_test_func();return(0);} +-EOF ++_LT_EOF + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 +@@ -5741,42 +5343,44 @@ + fi + + # Make sure that we snagged all the symbols we need. +- if grep ' nm_test_var$' "$nlist" >/dev/null; then +- if grep ' nm_test_func$' "$nlist" >/dev/null; then +- cat < conftest.$ac_ext ++ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then ++ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then ++ cat <<_LT_EOF > conftest.$ac_ext + #ifdef __cplusplus + extern "C" { + #endif + +-EOF ++_LT_EOF + # Now generate the symbol file. +- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' ++ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + +- cat <> conftest.$ac_ext +-#if defined (__STDC__) && __STDC__ +-# define lt_ptr_t void * +-#else +-# define lt_ptr_t char * +-# define const +-#endif ++ cat <<_LT_EOF >> conftest.$ac_ext + +-/* The mapping between symbol names and symbols. */ ++/* The mapping between symbol names and symbols. */ + const struct { + const char *name; +- lt_ptr_t address; ++ void *address; + } +-lt_preloaded_symbols[] = ++lt__PROGRAM__LTX_preloaded_symbols[] = + { +-EOF +- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext +- cat <<\EOF >> conftest.$ac_ext +- {0, (lt_ptr_t) 0} ++ { "@PROGRAM@", (void *) 0 }, ++_LT_EOF ++ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext ++ cat <<\_LT_EOF >> conftest.$ac_ext ++ {0, (void *) 0} + }; + ++/* This works around a problem in FreeBSD linker */ ++#ifdef FREEBSD_WORKAROUND ++static const void *lt_preloaded_setup() { ++ return lt__PROGRAM__LTX_preloaded_symbols; ++} ++#endif ++ + #ifdef __cplusplus + } + #endif +-EOF ++_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" +@@ -5805,7 +5409,7 @@ + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi +- rm -f conftest* conftst* ++ rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then +@@ -5821,125 +5425,266 @@ + lt_cv_sys_global_symbol_to_cdecl= + fi + if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then +- echo "$as_me:$LINENO: result: failed" >&5 +-echo "${ECHO_T}failed" >&6 ++ { echo "$as_me:$LINENO: result: failed" >&5 ++echo "${ECHO_T}failed" >&6; } + else +- echo "$as_me:$LINENO: result: ok" >&5 +-echo "${ECHO_T}ok" >&6 ++ { echo "$as_me:$LINENO: result: ok" >&5 ++echo "${ECHO_T}ok" >&6; } + fi + +-echo "$as_me:$LINENO: checking for objdir" >&5 +-echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +-if test "${lt_cv_objdir+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- rm -f .libs 2>/dev/null +-mkdir .libs 2>/dev/null +-if test -d .libs; then +- lt_cv_objdir=.libs +-else +- # MS-DOS does not allow filenames that begin with a dot. +- lt_cv_objdir=_libs +-fi +-rmdir .libs 2>/dev/null +-fi +-echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +-echo "${ECHO_T}$lt_cv_objdir" >&6 +-objdir=$lt_cv_objdir + + + + + +-case $host_os in +-aix3*) +- # AIX sometimes has problems with the GCC collect2 program. For some +- # reason, if we set the COLLECT_NAMES environment variable, the problems +- # vanish in a puff of smoke. +- if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +- fi +- ;; +-esac + +-# Sed substitution that helps us do robust quoting. It backslashifies +-# metacharacters that are still active within double-quoted strings. +-Xsed='sed -e 1s/^X//' +-sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +-# Same as above, but do not quote variable references. +-double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +-# Sed substitution to avoid accidental globbing in evaled expressions +-no_glob_subst='s/\*/\\\*/g' + +-# Constants: +-rm="rm -f" + +-# Global variables: +-default_ofile=libtool +-can_build_shared=yes + +-# All known linkers require a `.a' archive for static linking (except MSVC, +-# which needs '.lib'). +-libext=a +-ltmain="$ac_aux_dir/ltmain.sh" +-ofile="$default_ofile" +-with_gnu_ld="$lt_cv_prog_gnu_ld" + +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +-set dummy ${ac_tool_prefix}ar; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_AR+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$AR"; then +- ac_cv_prog_AR="$AR" # Let the user override the test. +-else +-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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_AR="${ac_tool_prefix}ar" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done + +-fi +-fi +-AR=$ac_cv_prog_AR +-if test -n "$AR"; then +- echo "$as_me:$LINENO: result: $AR" >&5 +-echo "${ECHO_T}$AR" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi + ++ ++ ++ ++ ++ ++ ++ ++# Check whether --enable-libtool-lock was given. ++if test "${enable_libtool_lock+set}" = set; then ++ enableval=$enable_libtool_lock; + fi +-if test -z "$ac_cv_prog_AR"; then +- ac_ct_AR=$AR +- # Extract the first word of "ar", so it can be a program name with args. +-set dummy ar; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++ ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++ ++# Some flags need to be propagated to the compiler or linker for good ++# libtool support. ++case $host in ++ia64-*-hpux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *ELF-32*) ++ HPUX_IA64_MODE="32" ++ ;; ++ *ELF-64*) ++ HPUX_IA64_MODE="64" ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++*-*-irix6*) ++ # Find out which ABI we are using. ++ echo '#line 5488 "configure"' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -melf32bsmip" ++ ;; ++ *N32*) ++ LD="${LD-ld} -melf32bmipn32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -melf64bmip" ++ ;; ++ esac ++ else ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -32" ++ ;; ++ *N32*) ++ LD="${LD-ld} -n32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -64" ++ ;; ++ esac ++ fi ++ fi ++ rm -rf conftest* ++ ;; ++ ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ ++s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.o` in ++ *32-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_i386_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_i386" ++ ;; ++ ppc64-*linux*|powerpc64-*linux*) ++ LD="${LD-ld} -m elf32ppclinux" ++ ;; ++ s390x-*linux*) ++ LD="${LD-ld} -m elf_s390" ++ ;; ++ sparc64-*linux*) ++ LD="${LD-ld} -m elf32_sparc" ++ ;; ++ esac ++ ;; ++ *64-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_x86_64_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_x86_64" ++ ;; ++ ppc*-*linux*|powerpc*-*linux*) ++ LD="${LD-ld} -m elf64ppc" ++ ;; ++ s390*-*linux*|s390*-*tpf*) ++ LD="${LD-ld} -m elf64_s390" ++ ;; ++ sparc*-*linux*) ++ LD="${LD-ld} -m elf64_sparc" ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++ ++*-*-sco3.2v5*) ++ # On SCO OpenServer 5, we need -belf to get full-featured binaries. ++ SAVE_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -belf" ++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 ++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } ++if test "${lt_cv_cc_needs_belf+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$ac_ct_AR"; then +- ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. ++ 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 ++ ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ lt_cv_cc_needs_belf=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ lt_cv_cc_needs_belf=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ 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 ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 ++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } ++ if test x"$lt_cv_cc_needs_belf" != x"yes"; then ++ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf ++ CFLAGS="$SAVE_CFLAGS" ++ fi ++ ;; ++sparc*-*solaris*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.o` in ++ *64-bit*) ++ case $lt_cv_prog_gnu_ld in ++ yes*) LD="${LD-ld} -m elf64_sparc" ;; ++ *) ++ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then ++ LD="${LD-ld} -64" ++ fi ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++esac ++ ++need_locks="$enable_libtool_lock" ++ ++ ++ case $host_os in ++ rhapsody* | darwin*) ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. ++set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_DSYMUTIL+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$DSYMUTIL"; then ++ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. + else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH +@@ -5947,41 +5692,95 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_AR="ar" ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" + fi + fi +-ac_ct_AR=$ac_cv_prog_ac_ct_AR +-if test -n "$ac_ct_AR"; then +- echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +-echo "${ECHO_T}$ac_ct_AR" >&6 ++DSYMUTIL=$ac_cv_prog_DSYMUTIL ++if test -n "$DSYMUTIL"; then ++ { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 ++echo "${ECHO_T}$DSYMUTIL" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_DSYMUTIL"; then ++ ac_ct_DSYMUTIL=$DSYMUTIL ++ # Extract the first word of "dsymutil", so it can be a program name with args. ++set dummy dsymutil; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_DSYMUTIL"; then ++ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL ++if test -n "$ac_ct_DSYMUTIL"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 ++echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- AR=$ac_ct_AR ++ if test "x$ac_ct_DSYMUTIL" = x; then ++ DSYMUTIL=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ DSYMUTIL=$ac_ct_DSYMUTIL ++ fi + else +- AR="$ac_cv_prog_AR" ++ DSYMUTIL="$ac_cv_prog_DSYMUTIL" + fi + +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +-set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_RANLIB+set}" = set; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. ++set dummy ${ac_tool_prefix}nmedit; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_NMEDIT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$RANLIB"; then +- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. ++ if test -n "$NMEDIT"; then ++ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. + else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH +@@ -5989,37 +5788,39 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi +-RANLIB=$ac_cv_prog_RANLIB +-if test -n "$RANLIB"; then +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++NMEDIT=$ac_cv_prog_NMEDIT ++if test -n "$NMEDIT"; then ++ { echo "$as_me:$LINENO: result: $NMEDIT" >&5 ++echo "${ECHO_T}$NMEDIT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi +-if test -z "$ac_cv_prog_RANLIB"; then +- ac_ct_RANLIB=$RANLIB +- # Extract the first word of "ranlib", so it can be a program name with args. +-set dummy ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then ++if test -z "$ac_cv_prog_NMEDIT"; then ++ ac_ct_NMEDIT=$NMEDIT ++ # Extract the first word of "nmedit", so it can be a program name with args. ++set dummy nmedit; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$ac_ct_RANLIB"; then +- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. ++ if test -n "$ac_ct_NMEDIT"; then ++ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. + else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH +@@ -6027,41 +5828,55 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_RANLIB="ranlib" ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_NMEDIT="nmedit" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi +-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +-if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT ++if test -n "$ac_ct_NMEDIT"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 ++echo "${ECHO_T}$ac_ct_NMEDIT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- RANLIB=$ac_ct_RANLIB ++ if test "x$ac_ct_NMEDIT" = x; then ++ NMEDIT=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ NMEDIT=$ac_ct_NMEDIT ++ fi + else +- RANLIB="$ac_cv_prog_RANLIB" ++ NMEDIT="$ac_cv_prog_NMEDIT" + fi + +-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. +-set dummy ${ac_tool_prefix}strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_STRIP+set}" = set; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. ++set dummy ${ac_tool_prefix}lipo; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_LIPO+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$STRIP"; then +- ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++ if test -n "$LIPO"; then ++ ac_cv_prog_LIPO="$LIPO" # Let the user override the test. + else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH +@@ -6069,37 +5884,39 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi +-STRIP=$ac_cv_prog_STRIP +-if test -n "$STRIP"; then +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++LIPO=$ac_cv_prog_LIPO ++if test -n "$LIPO"; then ++ { echo "$as_me:$LINENO: result: $LIPO" >&5 ++echo "${ECHO_T}$LIPO" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi +-if test -z "$ac_cv_prog_STRIP"; then +- ac_ct_STRIP=$STRIP +- # Extract the first word of "strip", so it can be a program name with args. +-set dummy strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++if test -z "$ac_cv_prog_LIPO"; then ++ ac_ct_LIPO=$LIPO ++ # Extract the first word of "lipo", so it can be a program name with args. ++set dummy lipo; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$ac_ct_STRIP"; then +- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++ if test -n "$ac_ct_LIPO"; then ++ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. + else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH +@@ -6107,4190 +5924,2397 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_STRIP="strip" ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_LIPO="lipo" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" + fi + fi +-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +-if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 ++ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO ++if test -n "$ac_ct_LIPO"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 ++echo "${ECHO_T}$ac_ct_LIPO" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- STRIP=$ac_ct_STRIP ++ if test "x$ac_ct_LIPO" = x; then ++ LIPO=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ LIPO=$ac_ct_LIPO ++ fi + else +- STRIP="$ac_cv_prog_STRIP" ++ LIPO="$ac_cv_prog_LIPO" + fi + ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. ++set dummy ${ac_tool_prefix}otool; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_OTOOL+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$OTOOL"; then ++ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_OTOOL="${ac_tool_prefix}otool" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS + +-old_CC="$CC" +-old_CFLAGS="$CFLAGS" ++fi ++fi ++OTOOL=$ac_cv_prog_OTOOL ++if test -n "$OTOOL"; then ++ { echo "$as_me:$LINENO: result: $OTOOL" >&5 ++echo "${ECHO_T}$OTOOL" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi + +-# Set sane defaults for various variables +-test -z "$AR" && AR=ar +-test -z "$AR_FLAGS" && AR_FLAGS=cru +-test -z "$AS" && AS=as +-test -z "$CC" && CC=cc +-test -z "$LTCC" && LTCC=$CC +-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +-test -z "$DLLTOOL" && DLLTOOL=dlltool +-test -z "$LD" && LD=ld +-test -z "$LN_S" && LN_S="ln -s" +-test -z "$MAGIC_CMD" && MAGIC_CMD=file +-test -z "$NM" && NM=nm +-test -z "$SED" && SED=sed +-test -z "$OBJDUMP" && OBJDUMP=objdump +-test -z "$RANLIB" && RANLIB=: +-test -z "$STRIP" && STRIP=: +-test -z "$ac_objext" && ac_objext=o +- +-# Determine commands to create old-style static archives. +-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +-old_postinstall_cmds='chmod 644 $oldlib' +-old_postuninstall_cmds= + +-if test -n "$RANLIB"; then +- case $host_os in +- openbsd*) +- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" +- ;; +- *) +- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" +- ;; +- esac +- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + fi +- +-for cc_temp in $compiler""; do +- case $cc_temp in +- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; +- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; +- \-*) ;; +- *) break;; +- esac +-done +-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +- +- +-# Only perform the check for file, if the check method requires it +-case $deplibs_check_method in +-file_magic*) +- if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ++if test -z "$ac_cv_prog_OTOOL"; then ++ ac_ct_OTOOL=$OTOOL ++ # Extract the first word of "otool", so it can be a program name with args. ++set dummy otool; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- case $MAGIC_CMD in +-[\\/*] | ?:[\\/]*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +-*) +- lt_save_MAGIC_CMD="$MAGIC_CMD" +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" +- for ac_dir in $ac_dummy; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/${ac_tool_prefix}file; then +- lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- $EGREP "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 +- +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org ++ if test -n "$ac_ct_OTOOL"; then ++ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_OTOOL="otool" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS + +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$lt_save_ifs" +- MAGIC_CMD="$lt_save_MAGIC_CMD" +- ;; +-esac ++fi ++fi ++ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL ++if test -n "$ac_ct_OTOOL"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 ++echo "${ECHO_T}$ac_ct_OTOOL" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++ if test "x$ac_ct_OTOOL" = x; then ++ OTOOL=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ OTOOL=$ac_ct_OTOOL ++ fi + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ OTOOL="$ac_cv_prog_OTOOL" + fi + +-if test -z "$lt_cv_path_MAGIC_CMD"; then +- if test -n "$ac_tool_prefix"; then +- echo "$as_me:$LINENO: checking for file" >&5 +-echo $ECHO_N "checking for file... $ECHO_C" >&6 +-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. ++set dummy ${ac_tool_prefix}otool64; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_OTOOL64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- case $MAGIC_CMD in +-[\\/*] | ?:[\\/]*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +-*) +- lt_save_MAGIC_CMD="$MAGIC_CMD" +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" +- for ac_dir in $ac_dummy; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/file; then +- lt_cv_path_MAGIC_CMD="$ac_dir/file" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- $EGREP "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 ++ if test -n "$OTOOL64"; then ++ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++OTOOL64=$ac_cv_prog_OTOOL64 ++if test -n "$OTOOL64"; then ++ { echo "$as_me:$LINENO: result: $OTOOL64" >&5 ++echo "${ECHO_T}$OTOOL64" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi + +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org + +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$lt_save_ifs" +- MAGIC_CMD="$lt_save_MAGIC_CMD" +- ;; +-esac + fi ++if test -z "$ac_cv_prog_OTOOL64"; then ++ ac_ct_OTOOL64=$OTOOL64 ++ # Extract the first word of "otool64", so it can be a program name with args. ++set dummy otool64; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_OTOOL64"; then ++ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. ++else ++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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_OTOOL64="otool64" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS + +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++fi ++fi ++ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 ++if test -n "$ac_ct_OTOOL64"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 ++echo "${ECHO_T}$ac_ct_OTOOL64" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ if test "x$ac_ct_OTOOL64" = x; then ++ OTOOL64=":" + else +- MAGIC_CMD=: ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ OTOOL64=$ac_ct_OTOOL64 + fi ++else ++ OTOOL64="$ac_cv_prog_OTOOL64" + fi + +- fi +- ;; +-esac + +-enable_dlopen=no +-enable_win32_dll=no + +-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +-if test "${enable_libtool_lock+set}" = set; then +- enableval="$enable_libtool_lock" + +-fi; +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +-# Check whether --with-pic or --without-pic was given. +-if test "${with_pic+set}" = set; then +- withval="$with_pic" +- pic_mode="$withval" +-else +- pic_mode=default +-fi; +-test -z "$pic_mode" && pic_mode=default + +-# Use C for the default configuration in the libtool script +-tagname= +-lt_save_CC="$CC" +-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 + + +-# Source file extension for C test sources. +-ac_ext=c + +-# Object file extension for compiled C test sources. +-objext=o +-objext=$objext + +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="int some_variable = 0;\n" + +-# Code to be used in simple link tests +-lt_simple_link_test_code='int main(){return(0);}\n' + + +-# If no C compiler was specified, use CC. +-LTCC=${LTCC-"$CC"} + +-# If no C compiler flags were specified, use CFLAGS. +-LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +-# Allow CC to be a program name with arguments. +-compiler=$CC + + +-# save warnings/boilerplate of simple test code +-ac_outfile=conftest.$ac_objext +-printf "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_compiler_boilerplate=`cat conftest.err` +-$rm conftest* + +-ac_outfile=conftest.$ac_objext +-printf "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_linker_boilerplate=`cat conftest.err` +-$rm conftest* + + +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... + +-lt_prog_compiler_no_builtin_flag= + +-if test "$GCC" = yes; then +- lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +-echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_cv_prog_compiler_rtti_exceptions=no +- ac_outfile=conftest.$ac_objext +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- lt_compiler_flag="-fno-rtti -fno-exceptions" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- # The option is referenced via a variable to avoid confusing sed. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:6417: $lt_compile\"" >&5) +- (eval "$lt_compile" 2>conftest.err) +- ac_status=$? +- cat conftest.err >&5 +- echo "$as_me:6421: \$? = $ac_status" >&5 +- if (exit $ac_status) && test -s "$ac_outfile"; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then +- lt_cv_prog_compiler_rtti_exceptions=yes +- fi +- fi +- $rm conftest* + +-fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then +- lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" ++ { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 ++echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; } ++if test "${lt_cv_apple_cc_single_mod+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- : +-fi +- ++ lt_cv_apple_cc_single_mod=no ++ if test -z "${LT_MULTI_MODULE}"; then ++ # By default we will add the -single_module flag. You can override ++ # by either setting the environment variable LT_MULTI_MODULE ++ # non-empty at configure time, or by adding -multi_module to the ++ # link flags. ++ rm -rf libconftest.dylib* ++ echo "int foo(void){return 1;}" > conftest.c ++ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ ++-dynamiclib -Wl,-single_module conftest.c" >&5 ++ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ ++ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err ++ _lt_result=$? ++ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then ++ lt_cv_apple_cc_single_mod=yes ++ else ++ cat conftest.err >&5 ++ fi ++ rm -rf libconftest.dylib* ++ rm -f conftest.* ++ fi + fi ++{ echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 ++echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; } ++ { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 ++echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; } ++if test "${lt_cv_ld_exported_symbols_list+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_ld_exported_symbols_list=no ++ save_LDFLAGS=$LDFLAGS ++ echo "_main" > conftest.sym ++ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-lt_prog_compiler_wl= +-lt_prog_compiler_pic= +-lt_prog_compiler_static= ++int ++main () ++{ + +-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ lt_cv_ld_exported_symbols_list=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- if test "$GCC" = yes; then +- lt_prog_compiler_wl='-Wl,' +- lt_prog_compiler_static='-static' ++ lt_cv_ld_exported_symbols_list=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS="$save_LDFLAGS" + ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 ++echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; } + case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_prog_compiler_static='-Bstatic' +- fi +- ;; ++ rhapsody* | darwin1.[012]) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; ++ darwin1.*) ++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; ++ darwin*) # darwin 5.x on ++ # if running on 10.5 or later, the deployment target defaults ++ # to the OS version, if on x86, and 10.4, the deployment ++ # target defaults to 10.4. Don't you love it? ++ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in ++ 10.0,*86*-darwin8*|10.0,*-darwin[91]*) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; ++ 10.[012]*) ++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; ++ 10.*) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; ++ esac ++ ;; ++ esac ++ if test "$lt_cv_apple_cc_single_mod" = "yes"; then ++ _lt_dar_single_mod='$single_module' ++ fi ++ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then ++ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' ++ else ++ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ fi ++ if test "$DSYMUTIL" != ":"; then ++ _lt_dsymutil='~$DSYMUTIL $lib || :' ++ else ++ _lt_dsymutil= ++ fi ++ ;; ++ esac + +- amigaos*) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' +- ;; ++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 ++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } ++# On Suns, sometimes $CPP names a directory. ++if test -n "$CPP" && test -d "$CPP"; then ++ CPP= ++fi ++if test -z "$CPP"; then ++ if test "${ac_cv_prog_CPP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Double quotes because CPP needs to be expanded ++ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" ++ do ++ ac_preproc_ok=false ++for ac_c_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; ++ # Broken: fails on valid input. ++continue ++fi + +- mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_prog_compiler_pic='-DDLL_EXPORT' +- ;; ++rm -f conftest.err conftest.$ac_ext + +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- lt_prog_compiler_pic='-fno-common' +- ;; ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ # Broken: success on invalid input. ++continue ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- interix3*) +- # Interix 3.x gcc -fpic/-fPIC options generate broken code. +- # Instead, we relocate shared libraries at runtime. +- ;; ++ # Passes both tests. ++ac_preproc_ok=: ++break ++fi + +- msdosdjgpp*) +- # Just because we use GCC doesn't mean we suddenly get shared libraries +- # on systems that don't support them. +- lt_prog_compiler_can_build_shared=no +- enable_shared=no +- ;; ++rm -f conftest.err conftest.$ac_ext + +- sysv4*MP*) +- if test -d /usr/nec; then +- lt_prog_compiler_pic=-Kconform_pic +- fi +- ;; ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then ++ break ++fi + +- hpux*) +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- lt_prog_compiler_pic='-fPIC' +- ;; +- esac +- ;; ++ done ++ ac_cv_prog_CPP=$CPP + +- *) +- lt_prog_compiler_pic='-fPIC' +- ;; +- esac +- else +- # PORTME Check for flag to pass linker flags through the system compiler. +- case $host_os in +- aix*) +- lt_prog_compiler_wl='-Wl,' +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_prog_compiler_static='-Bstatic' +- else +- lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- darwin*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- case $cc_basename in +- xlc*) +- lt_prog_compiler_pic='-qnocommon' +- lt_prog_compiler_wl='-Wl,' +- ;; +- esac +- ;; ++fi ++ CPP=$ac_cv_prog_CPP ++else ++ ac_cv_prog_CPP=$CPP ++fi ++{ echo "$as_me:$LINENO: result: $CPP" >&5 ++echo "${ECHO_T}$CPP" >&6; } ++ac_preproc_ok=false ++for ac_c_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_prog_compiler_pic='-DDLL_EXPORT' +- ;; ++ # Broken: fails on valid input. ++continue ++fi + +- hpux9* | hpux10* | hpux11*) +- lt_prog_compiler_wl='-Wl,' +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- lt_prog_compiler_pic='+Z' +- ;; +- esac +- # Is there a better lt_prog_compiler_static that works with the bundled CC? +- lt_prog_compiler_static='${wl}-a ${wl}archive' +- ;; ++rm -f conftest.err conftest.$ac_ext + +- irix5* | irix6* | nonstopux*) +- lt_prog_compiler_wl='-Wl,' +- # PIC (with -KPIC) is the default. +- lt_prog_compiler_static='-non_shared' +- ;; +- +- newsos6) +- lt_prog_compiler_pic='-KPIC' +- lt_prog_compiler_static='-Bstatic' +- ;; +- +- linux*) +- case $cc_basename in +- icc* | ecc*) +- lt_prog_compiler_wl='-Wl,' +- lt_prog_compiler_pic='-KPIC' +- lt_prog_compiler_static='-static' +- ;; +- pgcc* | pgf77* | pgf90* | pgf95*) +- # Portland Group compilers (*not* the Pentium gcc compiler, +- # which looks to be a dead project) +- lt_prog_compiler_wl='-Wl,' +- lt_prog_compiler_pic='-fpic' +- lt_prog_compiler_static='-Bstatic' +- ;; +- ccc*) +- lt_prog_compiler_wl='-Wl,' +- # All Alpha code is PIC. +- lt_prog_compiler_static='-non_shared' +- ;; +- esac +- ;; ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ # Broken: success on invalid input. ++continue ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- osf3* | osf4* | osf5*) +- lt_prog_compiler_wl='-Wl,' +- # All OSF/1 code is PIC. +- lt_prog_compiler_static='-non_shared' +- ;; ++ # Passes both tests. ++ac_preproc_ok=: ++break ++fi + +- solaris*) +- lt_prog_compiler_pic='-KPIC' +- lt_prog_compiler_static='-Bstatic' +- case $cc_basename in +- f77* | f90* | f95*) +- lt_prog_compiler_wl='-Qoption ld ';; +- *) +- lt_prog_compiler_wl='-Wl,';; +- esac +- ;; ++rm -f conftest.err conftest.$ac_ext + +- sunos4*) +- lt_prog_compiler_wl='-Qoption ld ' +- lt_prog_compiler_pic='-PIC' +- lt_prog_compiler_static='-Bstatic' +- ;; ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then ++ : ++else ++ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details." >&5 ++echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } ++fi + +- sysv4 | sysv4.2uw2* | sysv4.3*) +- lt_prog_compiler_wl='-Wl,' +- lt_prog_compiler_pic='-KPIC' +- lt_prog_compiler_static='-Bstatic' +- ;; ++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 + +- sysv4*MP*) +- if test -d /usr/nec ;then +- lt_prog_compiler_pic='-Kconform_pic' +- lt_prog_compiler_static='-Bstatic' +- fi +- ;; + +- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) +- lt_prog_compiler_wl='-Wl,' +- lt_prog_compiler_pic='-KPIC' +- lt_prog_compiler_static='-Bstatic' +- ;; ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } ++if test "${ac_cv_header_stdc+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include + +- unicos*) +- lt_prog_compiler_wl='-Wl,' +- lt_prog_compiler_can_build_shared=no +- ;; ++int ++main () ++{ + +- uts4*) +- lt_prog_compiler_pic='-pic' +- lt_prog_compiler_static='-Bstatic' +- ;; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_stdc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- *) +- lt_prog_compiler_can_build_shared=no +- ;; +- esac +- fi ++ ac_cv_header_stdc=no ++fi + +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic" >&6 ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +-# +-# Check to make sure the PIC flag actually works. +-# +-if test -n "$lt_prog_compiler_pic"; then ++if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + +-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 +-if test "${lt_prog_compiler_pic_works+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "memchr" >/dev/null 2>&1; then ++ : + else +- lt_prog_compiler_pic_works=no +- ac_outfile=conftest.$ac_objext +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- lt_compiler_flag="$lt_prog_compiler_pic -DPIC" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- # The option is referenced via a variable to avoid confusing sed. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:6685: $lt_compile\"" >&5) +- (eval "$lt_compile" 2>conftest.err) +- ac_status=$? +- cat conftest.err >&5 +- echo "$as_me:6689: \$? = $ac_status" >&5 +- if (exit $ac_status) && test -s "$ac_outfile"; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then +- lt_prog_compiler_pic_works=yes +- fi +- fi +- $rm conftest* +- ++ ac_cv_header_stdc=no + fi +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 ++rm -f conftest* + +-if test x"$lt_prog_compiler_pic_works" = xyes; then +- case $lt_prog_compiler_pic in +- "" | " "*) ;; +- *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; +- esac +-else +- lt_prog_compiler_pic= +- lt_prog_compiler_can_build_shared=no + fi + +-fi +-case $host_os in +- # For platforms which do not support PIC, -DPIC is meaningless: +- *djgpp*) +- lt_prog_compiler_pic= +- ;; +- *) +- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" +- ;; +-esac ++if test $ac_cv_header_stdc = yes; then ++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + +-# +-# Check to make sure the static flag actually works. +-# +-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +-echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +-if test "${lt_prog_compiler_static_works+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "free" >/dev/null 2>&1; then ++ : + else +- lt_prog_compiler_static_works=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $lt_tmp_static_flag" +- printf "$lt_simple_link_test_code" > conftest.$ac_ext +- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then +- # The linker can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- # Append any errors to the config.log. +- cat conftest.err 1>&5 +- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if diff conftest.exp conftest.er2 >/dev/null; then +- lt_prog_compiler_static_works=yes +- fi +- else +- lt_prog_compiler_static_works=yes +- fi +- fi +- $rm conftest* +- LDFLAGS="$save_LDFLAGS" +- ++ ac_cv_header_stdc=no + fi +-echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +-echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 ++rm -f conftest* + +-if test x"$lt_prog_compiler_static_works" = xyes; then +- : +-else +- lt_prog_compiler_static= + fi + +- +-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +-if test "${lt_cv_prog_compiler_c_o+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++if test $ac_cv_header_stdc = yes; then ++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. ++ if test "$cross_compiling" = yes; then ++ : + else +- lt_cv_prog_compiler_c_o=no +- $rm -r conftest 2>/dev/null +- mkdir conftest +- cd conftest +- mkdir out +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#if ((' ' & 0x0FF) == 0x020) ++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) ++#else ++# define ISLOWER(c) \ ++ (('a' <= (c) && (c) <= 'i') \ ++ || ('j' <= (c) && (c) <= 'r') \ ++ || ('s' <= (c) && (c) <= 'z')) ++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) ++#endif + +- lt_compiler_flag="-o out/conftest2.$ac_objext" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:6789: $lt_compile\"" >&5) +- (eval "$lt_compile" 2>out/conftest.err) +- ac_status=$? +- cat out/conftest.err >&5 +- echo "$as_me:6793: \$? = $ac_status" >&5 +- if (exit $ac_status) && test -s out/conftest2.$ac_objext +- then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp +- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 +- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then +- lt_cv_prog_compiler_c_o=yes +- fi +- fi +- chmod u+w . 2>&5 +- $rm conftest* +- # SGI C++ compiler will create directory out/ii_files/ for +- # template instantiation +- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files +- $rm out/* && rmdir out +- cd .. +- rmdir conftest +- $rm conftest* ++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) ++int ++main () ++{ ++ int i; ++ for (i = 0; i < 256; i++) ++ if (XOR (islower (i), ISLOWER (i)) ++ || toupper (i) != TOUPPER (i)) ++ return 2; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ : ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++( exit $ac_status ) ++ac_cv_header_stdc=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +-echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 + + +-hard_links="nottested" +-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 +- hard_links=yes +- $rm conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- echo "$as_me:$LINENO: result: $hard_links" >&5 +-echo "${ECHO_T}$hard_links" >&6 +- if test "$hard_links" = no; then +- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} +- need_locks=warn +- fi +-else +- need_locks=no + fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } ++if test $ac_cv_header_stdc = yes; then + +-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 ++cat >>confdefs.h <<\_ACEOF ++#define STDC_HEADERS 1 ++_ACEOF + +- runpath_var= +- allow_undefined_flag= +- enable_shared_with_static_runtimes=no +- archive_cmds= +- archive_expsym_cmds= +- old_archive_From_new_cmds= +- old_archive_from_expsyms_cmds= +- export_dynamic_flag_spec= +- whole_archive_flag_spec= +- thread_safe_flag_spec= +- hardcode_libdir_flag_spec= +- hardcode_libdir_flag_spec_ld= +- hardcode_libdir_separator= +- hardcode_direct=no +- hardcode_minus_L=no +- hardcode_shlibpath_var=unsupported +- link_all_deplibs=unknown +- hardcode_automatic=no +- module_cmds= +- module_expsym_cmds= +- always_export_symbols=no +- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- # include_expsyms should be a list of space-separated symbols to be *always* +- # included in the symbol list +- include_expsyms= +- # exclude_expsyms can be an extended regexp of symbols to exclude +- # it will be wrapped by ` (' and `)$', so one must not match beginning or +- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +- # as well as any symbol that contains `d'. +- exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +- # platforms (ab)use it in PIC code, but their linkers get confused if +- # the symbol is explicitly referenced. Since portable code cannot +- # rely on this symbol name, it's probably fine to never include it in +- # preloaded symbol tables. +- extract_expsyms_cmds= +- # Just being paranoid about ensuring that cc_basename is set. +- for cc_temp in $compiler""; do +- case $cc_temp in +- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; +- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; +- \-*) ;; +- *) break;; +- esac +-done +-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++fi + +- case $host_os in +- cygwin* | mingw* | pw32*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- if test "$GCC" != yes; then +- with_gnu_ld=no +- fi +- ;; +- interix*) +- # we just hope/assume this is gcc and not c89 (= MSVC++) +- with_gnu_ld=yes +- ;; +- openbsd*) +- with_gnu_ld=no +- ;; +- esac ++# On IRIX 5.3, sys/types and inttypes.h are conflicting. + +- ld_shlibs=yes +- if test "$with_gnu_ld" = yes; then +- # If archive_cmds runs LD, not CC, wlarc should be empty +- wlarc='${wl}' + +- # Set some defaults for GNU ld with shared library support. These +- # are reset later if shared libraries are not supported. Putting them +- # here allows them to be overridden if necessary. +- runpath_var=LD_RUN_PATH +- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' +- export_dynamic_flag_spec='${wl}--export-dynamic' +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then +- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- whole_archive_flag_spec= +- fi +- supports_anon_versioning=no +- case `$LD -v 2>/dev/null` in +- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 +- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... +- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... +- *\ 2.11.*) ;; # other 2.11 versions +- *) supports_anon_versioning=yes ;; +- esac + +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix3* | aix4* | aix5*) +- # On AIX/PPC, the GNU linker is very broken +- if test "$host_cpu" != ia64; then +- ld_shlibs=no +- cat <&2 + +-*** Warning: the GNU linker, at least up to release 2.9.1, is reported +-*** to be unable to reliably create shared libraries on AIX. +-*** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to modify your PATH +-*** so that a non-GNU linker is found, and then restart. + +-EOF +- fi +- ;; + +- amigaos*) +- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes + +- # Samuel A. Falvo II reports +- # that the semantics of dynamic libraries on AmigaOS, at least up +- # to version 4, is to share data among multiple programs linked +- # with the same dynamic library. Since this doesn't match the +- # behavior of shared libraries on other platforms, we can't use +- # them. +- ld_shlibs=no +- ;; + +- beos*) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- allow_undefined_flag=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- ld_shlibs=no +- fi +- ;; + +- cygwin* | mingw* | pw32*) +- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, +- # as there is no search path for DLLs. +- hardcode_libdir_flag_spec='-L$libdir' +- allow_undefined_flag=unsupported +- always_export_symbols=no +- enable_shared_with_static_runtimes=yes +- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ ++ inttypes.h stdint.h unistd.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default + +- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- else +- ld_shlibs=no +- fi +- ;; ++#include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ eval "$as_ac_Header=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- interix3*) +- hardcode_direct=no +- hardcode_shlibpath_var=no +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- export_dynamic_flag_spec='${wl}-E' +- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. +- # Instead, shared libraries are loaded at an image base (0x10000000 by +- # default) and relocated if they conflict, which is a slow very memory +- # consuming and fragmenting process. To avoid this, we pick a random, +- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link +- # time. Moving up from 0x10000000 also allows more sbrk(2) space. +- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- ;; +- +- linux*) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- tmp_addflag= +- case $cc_basename,$host_cpu in +- pgcc*) # Portland Group C compiler +- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag' +- ;; +- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers +- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag -Mnomain' ;; +- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 +- tmp_addflag=' -i_dynamic' ;; +- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 +- tmp_addflag=' -i_dynamic -nofor_main' ;; +- ifc* | ifort*) # Intel Fortran compiler +- tmp_addflag=' -nofor_main' ;; +- esac +- archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- +- if test $supports_anon_versioning = yes; then +- archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- $echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +- fi +- else +- ld_shlibs=no +- fi +- ;; +- +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= +- else +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- fi +- ;; +- +- solaris*) +- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then +- ld_shlibs=no +- cat <&2 +- +-*** Warning: The releases 2.8.* of the GNU linker cannot reliably +-*** create shared libraries on Solaris systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.9.1 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-EOF +- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- ld_shlibs=no +- fi +- ;; +- +- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) +- case `$LD -v 2>&1` in +- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) +- ld_shlibs=no +- cat <<_LT_EOF 1>&2 +- +-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +-*** reliably create shared libraries on SCO systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-_LT_EOF +- ;; +- *) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' +- else +- ld_shlibs=no +- fi +- ;; +- esac +- ;; +- +- sunos4*) +- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- wlarc= +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; +- +- *) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- ld_shlibs=no +- fi +- ;; +- esac +- +- if test "$ld_shlibs" = no; then +- runpath_var= +- hardcode_libdir_flag_spec= +- export_dynamic_flag_spec= +- whole_archive_flag_spec= +- fi +- else +- # PORTME fill in a description of your system's linker (not GNU ld) +- case $host_os in +- aix3*) +- allow_undefined_flag=unsupported +- always_export_symbols=yes +- archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' +- # Note: this linker hardcodes the directories in LIBPATH if there +- # are no directories specified by -L. +- hardcode_minus_L=yes +- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then +- # Neither direct hardcoding nor static linking is supported with a +- # broken collect2. +- hardcode_direct=unsupported +- fi +- ;; +- +- aix4* | aix5*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then +- export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' +- else +- export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' +- fi +- aix_use_runtimelinking=no ++ eval "$as_ac_Header=no" ++fi + +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[23]|aix4.[23].*|aix5*) +- for ld_flag in $LDFLAGS; do +- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +- aix_use_runtimelinking=yes +- break +- fi +- done +- ;; +- esac ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF + +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi ++fi + +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++done + +- archive_cmds='' +- hardcode_direct=yes +- hardcode_libdir_separator=':' +- link_all_deplibs=yes + +- if test "$GCC" = yes; then +- case $host_os in aix4.[012]|aix4.[012].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && \ +- strings "$collect2name" | grep resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- hardcode_direct=yes +- else +- # We have old collect2 +- hardcode_direct=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- hardcode_minus_L=yes +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_libdir_separator= +- fi +- ;; +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +- # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi + +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to export. +- always_export_symbols=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag='-berok' +- # Determine the default libpath from the value encoded in an empty executable. +- cat >conftest.$ac_ext <<_ACEOF ++for ac_header in dlfcn.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++$ac_includes_default + +-int +-main () +-{ +- +- ; +- return 0; +-} ++#include <$ac_header> + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` +-# Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ eval "$as_ac_Header=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ eval "$as_ac_Header=no" + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + +- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" +- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' +- allow_undefined_flag="-z nodefs" +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" +- else +- # Determine the default libpath from the value encoded in an empty executable. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-int +-main () +-{ ++fi + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++done + +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` +-# Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + +- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- no_undefined_flag=' ${wl}-bernotok' +- allow_undefined_flag=' ${wl}-berok' +- # Exported symbols can be pulled into shared objects from archives +- whole_archive_flag_spec='$convenience' +- archive_cmds_need_lc=yes +- # This is similar to how AIX traditionally builds its shared libraries. +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++# Set options ++ ++ ++ ++ enable_dlopen=no ++ ++ ++ enable_win32_dll=no ++ ++ ++ # Check whether --enable-shared was given. ++if test "${enable_shared+set}" = set; then ++ enableval=$enable_shared; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_shared=yes ;; ++ no) enable_shared=no ;; ++ *) ++ enable_shared=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_shared=yes + fi +- fi ++ done ++ IFS="$lt_save_ifs" + ;; ++ esac ++else ++ enable_shared=yes ++fi + +- amigaos*) +- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- # see comment about different semantics on the GNU ld section +- ld_shlibs=no +- ;; + +- bsdi[45]*) +- export_dynamic_flag_spec=-rdynamic +- ;; + +- cygwin* | mingw* | pw32*) +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec=' ' +- allow_undefined_flag=unsupported +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' +- # The linker will automatically build a .lib file if we build a DLL. +- old_archive_From_new_cmds='true' +- # FIXME: Should let the user specify the lib program. +- old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' +- fix_srcfile_path='`cygpath -w "$srcfile"`' +- enable_shared_with_static_runtimes=yes +- ;; + +- darwin* | rhapsody*) +- case $host_os in +- rhapsody* | darwin1.[012]) +- allow_undefined_flag='${wl}-undefined ${wl}suppress' +- ;; +- *) # Darwin 1.3 on +- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then +- allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- else +- case ${MACOSX_DEPLOYMENT_TARGET} in +- 10.[012]) +- allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- ;; +- 10.*) +- allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' +- ;; +- esac +- fi +- ;; +- esac +- archive_cmds_need_lc=no +- hardcode_direct=no +- hardcode_automatic=yes +- hardcode_shlibpath_var=unsupported +- whole_archive_flag_spec='' +- link_all_deplibs=yes +- if test "$GCC" = yes ; then +- output_verbose_link_cmd='echo' +- archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' +- module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds +- archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- else +- case $cc_basename in +- xlc*) +- output_verbose_link_cmd='echo' +- archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' +- module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds +- archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- ;; +- *) +- ld_shlibs=no +- ;; +- esac +- fi +- ;; + +- dgux*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; + +- freebsd1*) +- ld_shlibs=no +- ;; + +- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +- # support. Future versions do this automatically, but an explicit c++rt0.o +- # does not break anything, and helps significantly (at the cost of a little +- # extra space). +- freebsd2.2*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; + +- # Unfortunately, older versions of FreeBSD 2 do not have this feature. +- freebsd2*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=yes +- hardcode_shlibpath_var=no +- ;; + +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd* | kfreebsd*-gnu | dragonfly*) +- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no ++ # Check whether --enable-static was given. ++if test "${enable_static+set}" = set; then ++ enableval=$enable_static; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_static=yes ;; ++ no) enable_static=no ;; ++ *) ++ enable_static=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_static=yes ++ fi ++ done ++ IFS="$lt_save_ifs" + ;; ++ esac ++else ++ enable_static=yes ++fi + +- hpux9*) +- if test "$GCC" = yes; then +- archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- else +- archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- fi +- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_direct=yes + +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- hardcode_minus_L=yes +- export_dynamic_flag_spec='${wl}-E' +- ;; + +- hpux10*) +- if test "$GCC" = yes -a "$with_gnu_ld" = no; then +- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +- fi +- if test "$with_gnu_ld" = no; then +- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator=: + +- hardcode_direct=yes +- export_dynamic_flag_spec='${wl}-E' + +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- hardcode_minus_L=yes +- fi +- ;; + +- hpux11*) +- if test "$GCC" = yes -a "$with_gnu_ld" = no; then +- case $host_cpu in +- hppa*64*) +- archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- else +- case $host_cpu in +- hppa*64*) +- archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- fi +- if test "$with_gnu_ld" = no; then +- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator=: + +- case $host_cpu in +- hppa*64*|ia64*) +- hardcode_libdir_flag_spec_ld='+b $libdir' +- hardcode_direct=no +- hardcode_shlibpath_var=no +- ;; +- *) +- hardcode_direct=yes +- export_dynamic_flag_spec='${wl}-E' + +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- hardcode_minus_L=yes +- ;; +- esac +- fi +- ;; + +- irix5* | irix6* | nonstopux*) +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- hardcode_libdir_flag_spec_ld='-rpath $libdir' +- fi +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- link_all_deplibs=yes +- ;; + +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +- else +- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +- fi +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# Check whether --with-pic was given. ++if test "${with_pic+set}" = set; then ++ withval=$with_pic; pic_mode="$withval" ++else ++ pic_mode=default ++fi + +- newsos6) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_shlibpath_var=no +- ;; + +- openbsd*) +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- export_dynamic_flag_spec='${wl}-E' +- else +- case $host_os in +- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- ;; +- *) +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- ;; ++test -z "$pic_mode" && pic_mode=default + +- os2*) +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- allow_undefined_flag=unsupported +- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +- old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +- ;; + +- osf3*) +- if test "$GCC" = yes; then +- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- ;; + +- osf4* | osf5*) # as osf3* with the addition of -msym flag +- if test "$GCC" = yes; then +- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- else +- allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ +- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + +- # Both c and cxx compiler support -rpath directly +- hardcode_libdir_flag_spec='-rpath $libdir' +- fi +- hardcode_libdir_separator=: +- ;; + +- solaris*) +- no_undefined_flag=' -z text' +- if test "$GCC" = yes; then +- wlarc='${wl}' +- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' +- else +- wlarc='' +- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- fi +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_shlibpath_var=no +- case $host_os in +- solaris2.[0-5] | solaris2.[0-5].*) ;; +- *) +- # The compiler driver will combine linker options so we +- # cannot just pass the convience library names through +- # without $wl, iff we do not link with $LD. +- # Luckily, gcc supports the same syntax we need for Sun Studio. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- case $wlarc in +- '') +- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; +- *) +- whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; +- esac ;; +- esac +- link_all_deplibs=yes +- ;; + +- sunos4*) +- if test "x$host_vendor" = xsequent; then +- # Use $CC to link under sequent, because it throws in some extra .o +- # files that make .init and .fini sections work. +- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +- fi +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_direct=yes +- hardcode_minus_L=yes +- hardcode_shlibpath_var=no +- ;; + +- sysv4) +- case $host_vendor in +- sni) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes # is this really true??? +- ;; +- siemens) +- ## LD is ld it makes a PLAMLIB +- ## CC just makes a GrossModule. +- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- reload_cmds='$CC -r -o $output$reload_objs' +- hardcode_direct=no +- ;; +- motorola) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=no #Motorola manual says yes, but my tests say they lie +- ;; +- esac +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var=no ++ # Check whether --enable-fast-install was given. ++if test "${enable_fast_install+set}" = set; then ++ enableval=$enable_fast_install; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_fast_install=yes ;; ++ no) enable_fast_install=no ;; ++ *) ++ enable_fast_install=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_fast_install=yes ++ fi ++ done ++ IFS="$lt_save_ifs" + ;; ++ esac ++else ++ enable_fast_install=yes ++fi + +- sysv4.3*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- export_dynamic_flag_spec='-Bexport' +- ;; + +- sysv4*MP*) +- if test -d /usr/nec; then +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- ld_shlibs=yes +- fi +- ;; + +- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) +- no_undefined_flag='${wl}-z,text' +- archive_cmds_need_lc=no +- hardcode_shlibpath_var=no +- runpath_var='LD_RUN_PATH' + +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; + +- sysv5* | sco3.2v5* | sco5v6*) +- # Note: We can NOT use -z defs as we might desire, because we do not +- # link with -lc, and that would cause any symbols used from libc to +- # always be unresolved, which means just about no library would +- # ever link correctly. If we're not using GNU ld we use -z text +- # though, which does catch some bad symbols but isn't as heavy-handed +- # as -z defs. +- no_undefined_flag='${wl}-z,text' +- allow_undefined_flag='${wl}-z,nodefs' +- archive_cmds_need_lc=no +- hardcode_shlibpath_var=no +- hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' +- hardcode_libdir_separator=':' +- link_all_deplibs=yes +- export_dynamic_flag_spec='${wl}-Bexport' +- runpath_var='LD_RUN_PATH' + +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; + +- uts4*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; + +- *) +- ld_shlibs=no +- ;; +- esac +- fi + +-echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +-echo "${ECHO_T}$ld_shlibs" >&6 +-test "$ld_shlibs" = no && can_build_shared=no + +-# +-# Do we need to explicitly link libc? +-# +-case "x$archive_cmds_need_lc" in +-x|xyes) +- # Assume -lc should be added +- archive_cmds_need_lc=yes + +- if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $archive_cmds in +- *'~'*) +- # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 +- $rm conftest* +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++# This can be used to rebuild libtool when needed ++LIBTOOL_DEPS="$ltmain" + +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } 2>conftest.err; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$lt_prog_compiler_wl +- pic_flag=$lt_prog_compiler_pic +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- lt_save_allow_undefined_flag=$allow_undefined_flag +- allow_undefined_flag= +- if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 +- (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +- then +- archive_cmds_need_lc=no +- else +- archive_cmds_need_lc=yes +- fi +- allow_undefined_flag=$lt_save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +- $rm conftest* +- echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +-echo "${ECHO_T}$archive_cmds_need_lc" >&6 +- ;; +- esac +- fi +- ;; +-esac ++# Always use our own libtool. ++LIBTOOL='$(SHELL) $(top_builddir)' ++LIBTOOL="$LIBTOOL/$host_alias-libtool" + +-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-shrext_cmds=".so" +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then +- # if the path contains ";" then we assume it to be the separator +- # otherwise default to the standard path separator (i.e. ":") - it is +- # assumed that no part of a normal pathname contains ";" but that should +- # okay in the real world where ";" in dirpaths is itself problematic. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +-else +- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +-fi +-need_lib_prefix=unknown +-hardcode_into_libs=no + +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-need_version=unknown + +-case $host_os in +-aix3*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' +- shlibpath_var=LIBPATH + +- # AIX 3 has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; + +-aix4* | aix5*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- hardcode_into_libs=yes +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- else +- # With GCC up to 2.95.x, collect2 would create an import file +- # for dependence libraries. The import file would start with +- # the line `#! .'. This would cause the generated library to +- # depend on `.', always an invalid library. This was fixed in +- # development snapshots of GCC prior to 3.0. +- case $host_os in +- aix4 | aix4.[01] | aix4.[01].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then +- : +- else +- can_build_shared=no +- fi +- ;; +- esac +- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct +- # soname into executable. Probably we can add versioning support to +- # collect2, so additional links can be useful in future. +- if test "$aix_use_runtimelinking" = yes; then +- # If using run time linking (on AIX 4.2 or later) use lib.so +- # instead of lib.a to let people know that these are not +- # typical AIX shared libraries. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- else +- # We preserve .a as extension for shared libraries through AIX4.2 +- # and later when we are not doing run time linking. +- library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}${shared_ext}$major' +- fi +- shlibpath_var=LIBPATH +- fi +- ;; + +-amigaos*) +- library_names_spec='$libname.ixlibrary $libname.a' +- # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' +- ;; + +-beos*) +- library_names_spec='${libname}${shared_ext}' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; + +-bsdi[45]*) +- version_type=linux +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" +- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- # the default ld.so.conf also contains /usr/contrib/lib and +- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow +- # libtool to hard-code these into programs +- ;; + +-cygwin* | mingw* | pw32*) +- version_type=windows +- shrext_cmds=".dll" +- need_version=no +- need_lib_prefix=no + +- case $GCC,$host_os in +- yes,cygwin* | yes,mingw* | yes,pw32*) +- library_names_spec='$libname.dll.a' +- # DLL is installed to $(libdir)/../bin by postinstall_cmds +- postinstall_cmds='base_file=`basename \${file}`~ +- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname~ +- chmod a+x \$dldir/$dlname' +- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $rm \$dlpath' +- shlibpath_overrides_runpath=yes + +- case $host_os in +- cygwin*) +- # Cygwin DLLs use 'cyg' prefix rather than 'lib' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" +- ;; +- mingw*) +- # MinGW DLLs use traditional 'lib' prefix +- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then +- # It is most probably a Windows format PATH printed by +- # mingw gcc, but we are running on Cygwin. Gcc prints its search +- # path with ; separators, and with drive letters. We can handle the +- # drive letters (cygwin fileutils understands them), so leave them, +- # especially as we might pass files found there to a mingw objdump, +- # which wouldn't understand a cygwinified path. Ahh. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +- ;; +- pw32*) +- # pw32 DLLs use 'pw' prefix rather than 'lib' +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- ;; +- esac +- ;; + +- *) +- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' +- ;; +- esac +- dynamic_linker='Win32 ld.exe' +- # FIXME: first we should search . and the directory the executable is in +- shlibpath_var=PATH +- ;; + +-darwin* | rhapsody*) +- dynamic_linker="$host_os dyld" +- version_type=darwin +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' +- soname_spec='${libname}${release}${major}$shared_ext' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. +- if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` +- else +- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' +- fi +- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' +- ;; + +-dgux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; + +-freebsd1*) +- dynamic_linker=no +- ;; + +-kfreebsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; + +-freebsd* | dragonfly*) +- # DragonFly does not have aout. When/if they implement a new +- # versioning mechanism, adjust this. +- if test -x /usr/bin/objformat; then +- objformat=`/usr/bin/objformat` +- else +- case $host_os in +- freebsd[123]*) objformat=aout ;; +- *) objformat=elf ;; +- esac +- fi +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- need_version=no +- need_lib_prefix=no +- ;; +- freebsd-*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' +- need_version=yes +- ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2*) +- shlibpath_overrides_runpath=yes +- ;; +- freebsd3.[01]* | freebsdelf3.[01]*) +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ +- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- freebsd*) # from 4.6 on +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- esac +- ;; + +-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- ;; + +-hpux9* | hpux10* | hpux11*) +- # Give a soname corresponding to the major version so that dld.sl refuses to +- # link against other versions. +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- case $host_cpu in +- ia64*) +- shrext_cmds='.so' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.so" +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- if test "X$HPUX_IA64_MODE" = X32; then +- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" +- else +- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" +- fi +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- hppa*64*) +- shrext_cmds='.sl' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- *) +- shrext_cmds='.sl' +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- esac +- # HP-UX runs *really* slowly unless shared libraries are mode 555. +- postinstall_cmds='chmod 555 $lib' +- ;; + +-interix3*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; + +-irix5* | irix6* | nonstopux*) +- case $host_os in +- nonstopux*) version_type=nonstopux ;; +- *) +- if test "$lt_cv_prog_gnu_ld" = yes; then +- version_type=linux +- else +- version_type=irix +- fi ;; +- esac +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' +- case $host_os in +- irix5* | nonstopux*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") +- libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") +- libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") +- libsuff=64 shlibsuff=64 libmagic=64-bit;; +- *) libsuff= shlibsuff= libmagic=never-match;; +- esac +- ;; +- esac +- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" +- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" +- hardcode_into_libs=yes +- ;; + +-# No shared lib support for Linux oldld, aout, or coff. +-linux*oldld* | linux*aout* | linux*coff*) +- dynamic_linker=no +- ;; + +-# This must be Linux ELF. +-linux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- # This implies no fast_install, which is unacceptable. +- # Some rework will be needed to allow for fast_install +- # before this can be enabled. +- hardcode_into_libs=yes + +- # Append ld.so.conf contents to the search path +- if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" +- fi + +- # We used to test for /lib/ld.so.1 and disable shared libraries on +- # powerpc, because MkLinux only supported shared libraries with the +- # GNU dynamic linker. Since this was broken with cross compilers, +- # most powerpc-linux boxes support dynamic linking these days and +- # people can always --disable-shared, the test was removed, and we +- # assume the GNU/Linux dynamic linker is in use. +- dynamic_linker='GNU/Linux ld.so' +- ;; +- +-knetbsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; ++test -z "$LN_S" && LN_S="ln -s" + +-netbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='NetBSD ld.elf_so' +- fi +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; + +-newsos6) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; + +-nto-qnx*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; + +-openbsd*) +- version_type=sunos +- sys_lib_dlsearch_path_spec="/usr/lib" +- need_lib_prefix=no +- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. +- case $host_os in +- openbsd3.3 | openbsd3.3.*) need_version=yes ;; +- *) need_version=no ;; +- esac +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case $host_os in +- openbsd2.[89] | openbsd2.[89].*) +- shlibpath_overrides_runpath=no +- ;; +- *) +- shlibpath_overrides_runpath=yes +- ;; +- esac +- else +- shlibpath_overrides_runpath=yes +- fi +- ;; + +-os2*) +- libname_spec='$name' +- shrext_cmds=".dll" +- need_lib_prefix=no +- library_names_spec='$libname${shared_ext} $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; + +-osf3* | osf4* | osf5*) +- version_type=osf +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" +- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +- ;; + +-solaris*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; + +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; + +-sysv4 | sysv4.3*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no +- need_lib_prefix=no +- export_dynamic_flag_spec='${wl}-Blargedynsym' +- runpath_var=LD_RUN_PATH +- ;; +- siemens) +- need_lib_prefix=no +- ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' +- ;; +- esac +- ;; + +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux +- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' +- soname_spec='$libname${shared_ext}.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; + +-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) +- version_type=freebsd-elf +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- if test "$with_gnu_ld" = yes; then +- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' +- shlibpath_overrides_runpath=no +- else +- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' +- shlibpath_overrides_runpath=yes +- case $host_os in +- sco3.2v5*) +- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" +- ;; +- esac +- fi +- sys_lib_dlsearch_path_spec='/usr/lib' +- ;; + +-uts4*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; + +-*) +- dynamic_linker=no +- ;; +-esac +-echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +-echo "${ECHO_T}$dynamic_linker" >&6 +-test "$dynamic_linker" = no && can_build_shared=no + +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST + fi + +-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +-hardcode_action= +-if test -n "$hardcode_libdir_flag_spec" || \ +- test -n "$runpath_var" || \ +- test "X$hardcode_automatic" = "Xyes" ; then +- +- # We can hardcode non-existant directories. +- if test "$hardcode_direct" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && +- test "$hardcode_minus_L" != no; then +- # Linking always hardcodes the temporary library directory. +- hardcode_action=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- hardcode_action=immediate +- fi ++{ echo "$as_me:$LINENO: checking for objdir" >&5 ++echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } ++if test "${lt_cv_objdir+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- hardcode_action=unsupported +-fi +-echo "$as_me:$LINENO: result: $hardcode_action" >&5 +-echo "${ECHO_T}$hardcode_action" >&6 +- +-if test "$hardcode_action" = relink; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless +-fi +- +-striplib= +-old_striplib= +-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ rm -f .libs 2>/dev/null ++mkdir .libs 2>/dev/null ++if test -d .libs; then ++ lt_cv_objdir=.libs + else +-# FIXME - insert some real tests, host_os isn't really good enough +- case $host_os in +- darwin*) +- if test -n "$STRIP" ; then +- striplib="$STRIP -x" +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +- else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ # MS-DOS does not allow filenames that begin with a dot. ++ lt_cv_objdir=_libs + fi +- ;; +- *) +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +- ;; +- esac ++rmdir .libs 2>/dev/null + fi ++{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 ++echo "${ECHO_T}$lt_cv_objdir" >&6; } ++objdir=$lt_cv_objdir + +-if test "x$enable_dlopen" != xyes; then +- enable_dlopen=unknown +- enable_dlopen_self=unknown +- enable_dlopen_self_static=unknown +-else +- lt_cv_dlopen=no +- lt_cv_dlopen_libs= + +- case $host_os in +- beos*) +- lt_cv_dlopen="load_add_on" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ;; + +- mingw* | pw32*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; + +- cygwin*) +- lt_cv_dlopen="dlopen" +- lt_cv_dlopen_libs= +- ;; + +- darwin*) +- # if libdl is installed we need to link against it +- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +-if test "${ac_cv_lib_dl_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ ++cat >>confdefs.h <<_ACEOF ++#define LT_OBJDIR "$lt_cv_objdir/" + _ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dl_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_dl_dlopen=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +-if test $ac_cv_lib_dl_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +-else + +- lt_cv_dlopen="dyld" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes + +-fi + +- ;; + +- *) +- echo "$as_me:$LINENO: checking for shl_load" >&5 +-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +-if test "${ac_cv_func_shl_load+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define shl_load to an innocuous variant, in case declares shl_load. +- For example, HP-UX 11i declares gettimeofday. */ +-#define shl_load innocuous_shl_load + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char shl_load (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif + +-#undef shl_load + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shl_load (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_shl_load) || defined (__stub___shl_load) +-choke me +-#else +-char (*f) () = shl_load; +-#endif +-#ifdef __cplusplus +-} +-#endif + +-int +-main () +-{ +-return f != shl_load; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_shl_load=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_shl_load=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +-if test $ac_cv_func_shl_load = yes; then +- lt_cv_dlopen="shl_load" +-else +- echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +-if test "${ac_cv_lib_dld_shl_load+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shl_load (); +-int +-main () +-{ +-shl_load (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dld_shl_load=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_dld_shl_load=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +-if test $ac_cv_lib_dld_shl_load = yes; then +- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +-else +- echo "$as_me:$LINENO: checking for dlopen" >&5 +-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +-if test "${ac_cv_func_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define dlopen to an innocuous variant, in case declares dlopen. +- For example, HP-UX 11i declares gettimeofday. */ +-#define dlopen innocuous_dlopen + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char dlopen (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif + +-#undef dlopen ++case $host_os in ++aix3*) ++ # AIX sometimes has problems with the GCC collect2 program. For some ++ # reason, if we set the COLLECT_NAMES environment variable, the problems ++ # vanish in a puff of smoke. ++ if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++ fi ++ ;; ++esac + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_dlopen) || defined (__stub___dlopen) +-choke me +-#else +-char (*f) () = dlopen; +-#endif +-#ifdef __cplusplus +-} +-#endif ++# Sed substitution that helps us do robust quoting. It backslashifies ++# metacharacters that are still active within double-quoted strings. ++sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +-int +-main () +-{ +-return f != dlopen; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# Same as above, but do not quote variable references. ++double_quote_subst='s/\(["`\\]\)/\\\1/g' + +-ac_cv_func_dlopen=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +-if test $ac_cv_func_dlopen = yes; then +- lt_cv_dlopen="dlopen" +-else +- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +-if test "${ac_cv_lib_dl_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dl_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# Sed substitution to delay expansion of an escaped single quote. ++delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +-ac_cv_lib_dl_dlopen=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +-if test $ac_cv_lib_dl_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +-else +- echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +-if test "${ac_cv_lib_svld_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsvld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++# Sed substitution to avoid accidental globbing in evaled expressions ++no_glob_subst='s/\*/\\\*/g' + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_svld_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# Global variables: ++ofile=${host_alias}-libtool ++can_build_shared=yes + +-ac_cv_lib_svld_dlopen=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +-if test $ac_cv_lib_svld_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +-else +- echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +-if test "${ac_cv_lib_dld_dld_link+set}" = set; then ++# All known linkers require a `.a' archive for static linking (except MSVC, ++# which needs '.lib'). ++libext=a ++ ++with_gnu_ld="$lt_cv_prog_gnu_ld" ++ ++old_CC="$CC" ++old_CFLAGS="$CFLAGS" ++ ++# Set sane defaults for various variables ++test -z "$CC" && CC=cc ++test -z "$LTCC" && LTCC=$CC ++test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS ++test -z "$LD" && LD=ld ++test -z "$ac_objext" && ac_objext=o ++ ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ ++# Only perform the check for file, if the check method requires it ++test -z "$MAGIC_CMD" && MAGIC_CMD=file ++case $deplibs_check_method in ++file_magic*) ++ if test "$file_magic_cmd" = '$MAGIC_CMD'; then ++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 ++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } ++if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/${ac_tool_prefix}file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <<_LT_EOF 1>&2 + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dld_link (); +-int +-main () +-{ +-dld_link (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dld_dld_link=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org + +-ac_cv_lib_dld_dld_link=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +-if test $ac_cv_lib_dld_dld_link = yes; then +- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" ++_LT_EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac + fi + +- ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + +-fi + + +-fi + ++if test -z "$lt_cv_path_MAGIC_CMD"; then ++ if test -n "$ac_tool_prefix"; then ++ { echo "$as_me:$LINENO: checking for file" >&5 ++echo $ECHO_N "checking for file... $ECHO_C" >&6; } ++if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org + ++_LT_EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac + fi + +- ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- ;; +- esac + +- if test "x$lt_cv_dlopen" != xno; then +- enable_dlopen=yes + else +- enable_dlopen=no ++ MAGIC_CMD=: + fi ++fi + +- case $lt_cv_dlopen in +- dlopen) +- save_CPPFLAGS="$CPPFLAGS" +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" +- +- save_LDFLAGS="$LDFLAGS" +- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ fi ++ ;; ++esac + +- save_LIBS="$LIBS" +- LIBS="$lt_cv_dlopen_libs $LIBS" ++# Use C for the default configuration in the libtool script + +- echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +-if test "${lt_cv_dlopen_self+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then : +- lt_cv_dlopen_self=cross +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif + +-#include ++# Source file extension for C test sources. ++ac_ext=c + +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif ++# Object file extension for compiled C test sources. ++objext=o ++objext=$objext + +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" + +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(){return(0);}' + +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; + +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } +- else +- puts (dlerror ()); + +- exit (status); +-} +-EOF +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) >&5 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; +- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; +- x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; +- esac +- else : +- # compilation failed +- lt_cv_dlopen_self=no +- fi +-fi +-rm -fr conftest* + + +-fi +-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + +- if test "x$lt_cv_dlopen_self" = xyes; then +- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" +- echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +-if test "${lt_cv_dlopen_self_static+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then : +- lt_cv_dlopen_self_static=cross +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} + +-#include ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif ++# Allow CC to be a program name with arguments. ++compiler=$CC + +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif ++# Save the default compiler, since it gets overwritten when the other ++# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. ++compiler_DEFAULT=$CC + +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$RM conftest* + +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$RM -r conftest* + +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } +- else +- puts (dlerror ()); + +- exit (status); +-} +-EOF +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) >&5 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; +- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; +- x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; +- esac +- else : +- # compilation failed +- lt_cv_dlopen_self_static=no +- fi +-fi +-rm -fr conftest* ++if test -n "$compiler"; then + ++lt_prog_compiler_no_builtin_flag= + +-fi +-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 +- fi ++if test "$GCC" = yes; then ++ lt_prog_compiler_no_builtin_flag=' -fno-builtin' + +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac ++ { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_rtti_exceptions=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="-fno-rtti -fno-exceptions" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:7336: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:7340: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_rtti_exceptions=yes ++ fi ++ fi ++ $RM conftest* + +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; +- esac ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac ++if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then ++ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" ++else ++ : + fi + ++fi + +-# Report which library types will actually be built +-echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $can_build_shared" >&5 +-echo "${ECHO_T}$can_build_shared" >&6 +- +-echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +-test "$can_build_shared" = "no" && enable_shared=no + +-# On AIX, shared libraries and static libraries use the same namespace, and +-# are all built from PIC. +-case $host_os in +-aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; + +-aix4* | aix5*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +-esac +-echo "$as_me:$LINENO: result: $enable_shared" >&5 +-echo "${ECHO_T}$enable_shared" >&6 + +-echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +-# Make sure either enable_shared or enable_static is yes. +-test "$enable_shared" = yes || enable_static=yes +-echo "$as_me:$LINENO: result: $enable_static" >&5 +-echo "${ECHO_T}$enable_static" >&6 +- +-# The else clause should only fire when bootstrapping the +-# libtool distribution, otherwise you forgot to ship ltmain.sh +-# with your package, and you will get complaints that there are +-# no rules to generate ltmain.sh. +-if test -f "$ltmain"; then +- # See if we are running on zsh, and set the options which allow our commands through +- # without removal of \ escapes. +- if test -n "${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +- fi +- # Now quote all the things that may contain metacharacters while being +- # careful not to overquote the AC_SUBSTed values. We take copies of the +- # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ +- SED SHELL STRIP \ +- libname_spec library_names_spec soname_spec extract_expsyms_cmds \ +- old_striplib striplib file_magic_cmd finish_cmds finish_eval \ +- deplibs_check_method reload_flag reload_cmds need_locks \ +- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ +- lt_cv_sys_global_symbol_to_c_name_address \ +- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ +- old_postinstall_cmds old_postuninstall_cmds \ +- compiler \ +- CC \ +- LD \ +- lt_prog_compiler_wl \ +- lt_prog_compiler_pic \ +- lt_prog_compiler_static \ +- lt_prog_compiler_no_builtin_flag \ +- export_dynamic_flag_spec \ +- thread_safe_flag_spec \ +- whole_archive_flag_spec \ +- enable_shared_with_static_runtimes \ +- old_archive_cmds \ +- old_archive_from_new_cmds \ +- predep_objects \ +- postdep_objects \ +- predeps \ +- postdeps \ +- compiler_lib_search_path \ +- archive_cmds \ +- archive_expsym_cmds \ +- postinstall_cmds \ +- postuninstall_cmds \ +- old_archive_from_expsyms_cmds \ +- allow_undefined_flag \ +- no_undefined_flag \ +- export_symbols_cmds \ +- hardcode_libdir_flag_spec \ +- hardcode_libdir_flag_spec_ld \ +- hardcode_libdir_separator \ +- hardcode_automatic \ +- module_cmds \ +- module_expsym_cmds \ +- lt_cv_prog_compiler_c_o \ +- exclude_expsyms \ +- include_expsyms; do +- +- case $var in +- old_archive_cmds | \ +- old_archive_from_new_cmds | \ +- archive_cmds | \ +- archive_expsym_cmds | \ +- module_cmds | \ +- module_expsym_cmds | \ +- old_archive_from_expsyms_cmds | \ +- export_symbols_cmds | \ +- extract_expsyms_cmds | reload_cmds | finish_cmds | \ +- postinstall_cmds | postuninstall_cmds | \ +- old_postinstall_cmds | old_postuninstall_cmds | \ +- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) +- # Double-quote double-evaled strings. +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" +- ;; +- *) +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" +- ;; +- esac +- done + +- case $lt_echo in +- *'\$0 --fallback-echo"') +- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` +- ;; +- esac + +-cfgfile="${ofile}T" +- trap "$rm \"$cfgfile\"; exit 1" 1 2 15 +- $rm -f "$cfgfile" +- { echo "$as_me:$LINENO: creating $ofile" >&5 +-echo "$as_me: creating $ofile" >&6;} ++ lt_prog_compiler_wl= ++lt_prog_compiler_pic= ++lt_prog_compiler_static= + +- cat <<__EOF__ >> "$cfgfile" +-#! $SHELL ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + +-# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +-# NOTE: Changes made to this file will be lost: look at ltmain.sh. +-# +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. +-# +-# This file is part of GNU Libtool: +-# Originally by Gordon Matzigkeit , 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 +-# the Free Software Foundation; either version 2 of the License, or +-# (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, but +-# WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +-# General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-# +-# 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. +- +-# A sed program that does not truncate output. +-SED=$lt_SED +- +-# Sed that helps us avoid accidentally triggering echo(1) options like -n. +-Xsed="$SED -e 1s/^X//" +- +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +- +-# The names of the tagged configurations supported by this script. +-available_tags= ++ if test "$GCC" = yes; then ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_static='-static' + +-# ### BEGIN LIBTOOL CONFIG ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ ;; + +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ m68k) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ esac ++ ;; + +-# Shell to use when invoking shell scripts. +-SHELL=$lt_SHELL ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; + +-# Whether or not to build shared libraries. +-build_libtool_libs=$enable_shared ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; + +-# Whether or not to build static libraries. +-build_old_libs=$enable_static ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ lt_prog_compiler_pic='-fno-common' ++ ;; + +-# Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$archive_cmds_need_lc ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ ;; + +-# Whether or not to disallow shared libs when runtime libs are static +-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; + +-# Whether or not to optimize for fast installation. +-fast_install=$enable_fast_install ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ lt_prog_compiler_can_build_shared=no ++ enable_shared=no ++ ;; + +-# The host system. +-host_alias=$host_alias +-host=$host +-host_os=$host_os ++ *nto* | *qnx*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ lt_prog_compiler_pic='-fPIC -shared' ++ ;; + +-# The build system. +-build_alias=$build_alias +-build=$build +-build_os=$build_os ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ lt_prog_compiler_pic=-Kconform_pic ++ fi ++ ;; + +-# An echo program that does not interpret backslashes. +-echo=$lt_echo ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ else ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ lt_prog_compiler_wl='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ else ++ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; + +-# The archiver. +-AR=$lt_AR +-AR_FLAGS=$lt_AR_FLAGS ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; + +-# A C compiler. +-LTCC=$lt_LTCC ++ hpux9* | hpux10* | hpux11*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ lt_prog_compiler_static='${wl}-a ${wl}archive' ++ ;; + +-# LTCC compiler flags. +-LTCFLAGS=$lt_LTCFLAGS ++ irix5* | irix6* | nonstopux*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC (with -KPIC) is the default. ++ lt_prog_compiler_static='-non_shared' ++ ;; + +-# A language-specific compiler. +-CC=$lt_compiler ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ icc* | ecc* | ifort*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-fpic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ccc*) ++ lt_prog_compiler_wl='-Wl,' ++ # All Alpha code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ xl*) ++ # IBM XL C 8.0/Fortran 10.1 on PPC ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-qpic' ++ lt_prog_compiler_static='-qstaticlink' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='' ++ ;; ++ esac ++ ;; ++ esac ++ ;; + +-# Is the compiler the GNU C compiler? +-with_gcc=$GCC ++ newsos6) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; + +-# An ERE matcher. +-EGREP=$lt_EGREP ++ *nto* | *qnx*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ lt_prog_compiler_pic='-fPIC -shared' ++ ;; + +-# The linker used to build libraries. +-LD=$lt_LD ++ osf3* | osf4* | osf5*) ++ lt_prog_compiler_wl='-Wl,' ++ # All OSF/1 code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; + +-# Whether we need hard or soft links. +-LN_S=$lt_LN_S ++ rdos*) ++ lt_prog_compiler_static='-non_shared' ++ ;; + +-# A BSD-compatible nm program. +-NM=$lt_NM ++ solaris*) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ lt_prog_compiler_wl='-Qoption ld ';; ++ *) ++ lt_prog_compiler_wl='-Wl,';; ++ esac ++ ;; + +-# A symbol stripping program +-STRIP=$lt_STRIP ++ sunos4*) ++ lt_prog_compiler_wl='-Qoption ld ' ++ lt_prog_compiler_pic='-PIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; + +-# Used to examine libraries when file_magic_cmd begins "file" +-MAGIC_CMD=$MAGIC_CMD ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; + +-# Used on cygwin: DLL creation program. +-DLLTOOL="$DLLTOOL" ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ lt_prog_compiler_pic='-Kconform_pic' ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ ;; + +-# Used on cygwin: object dumper. +-OBJDUMP="$OBJDUMP" ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; + +-# Used on cygwin: assembler. +-AS="$AS" ++ unicos*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_can_build_shared=no ++ ;; + +-# The name of the directory that contains temporary libtool files. +-objdir=$objdir ++ uts4*) ++ lt_prog_compiler_pic='-pic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; + +-# How to create reloadable object files. +-reload_flag=$lt_reload_flag +-reload_cmds=$lt_reload_cmds ++ *) ++ lt_prog_compiler_can_build_shared=no ++ ;; ++ esac ++ fi + +-# How to pass a linker flag through the compiler. +-wl=$lt_lt_prog_compiler_wl ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ lt_prog_compiler_pic= ++ ;; ++ *) ++ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } + +-# Object file suffix (normally "o"). +-objext="$ac_objext" + +-# Old archive suffix (normally "a"). +-libext="$libext" + +-# Shared library suffix (normally ".so"). +-shrext_cmds='$shrext_cmds' + +-# Executable file suffix (normally ""). +-exeext="$exeext" + +-# Additional compiler flags for building library objects. +-pic_flag=$lt_lt_prog_compiler_pic +-pic_mode=$pic_mode + +-# What is the maximum length of a command? +-max_cmd_len=$lt_cv_sys_max_cmd_len +- +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_lt_cv_prog_compiler_c_o +- +-# Must we lock files when doing compilation? +-need_locks=$lt_need_locks +- +-# Do we need the lib prefix for modules? +-need_lib_prefix=$need_lib_prefix +- +-# Do we need a version for libraries? +-need_version=$need_version ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$lt_prog_compiler_pic"; then ++ { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_pic_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_pic_works=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:7660: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:7664: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_pic_works=yes ++ fi ++ fi ++ $RM conftest* + +-# Whether dlopen is supported. +-dlopen_support=$enable_dlopen ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; } + +-# Whether dlopen of programs is supported. +-dlopen_self=$enable_dlopen_self ++if test x"$lt_cv_prog_compiler_pic_works" = xyes; then ++ case $lt_prog_compiler_pic in ++ "" | " "*) ;; ++ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; ++ esac ++else ++ lt_prog_compiler_pic= ++ lt_prog_compiler_can_build_shared=no ++fi + +-# Whether dlopen of statically linked programs is supported. +-dlopen_self_static=$enable_dlopen_self_static ++fi + +-# Compiler flag to prevent dynamic linking. +-link_static_flag=$lt_lt_prog_compiler_static + +-# Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +-# Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +-# Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_whole_archive_flag_spec + +-# Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_thread_safe_flag_spec + +-# Library versioning type. +-version_type=$version_type ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_static_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_static_works=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_static_works=yes ++ fi ++ else ++ lt_cv_prog_compiler_static_works=yes ++ fi ++ fi ++ $RM -r conftest* ++ LDFLAGS="$save_LDFLAGS" + +-# Format of library name prefix. +-libname_spec=$lt_libname_spec ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; } + +-# List of archive names. First name is the real one, the rest are links. +-# The last name is the one that the linker finds with -lNAME. +-library_names_spec=$lt_library_names_spec ++if test x"$lt_cv_prog_compiler_static_works" = xyes; then ++ : ++else ++ lt_prog_compiler_static= ++fi + +-# The coded name of the library, if different from the real name. +-soname_spec=$lt_soname_spec + +-# Commands used to build and install an old-style archive. +-RANLIB=$lt_RANLIB +-old_archive_cmds=$lt_old_archive_cmds +-old_postinstall_cmds=$lt_old_postinstall_cmds +-old_postuninstall_cmds=$lt_old_postuninstall_cmds + +-# Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +-# Create a temporary old-style archive to link instead of a shared archive. +-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +-# Commands used to build and install a shared archive. +-archive_cmds=$lt_archive_cmds +-archive_expsym_cmds=$lt_archive_expsym_cmds +-postinstall_cmds=$lt_postinstall_cmds +-postuninstall_cmds=$lt_postuninstall_cmds + +-# Commands used to build a loadable module (assumed same as above if empty) +-module_cmds=$lt_module_cmds +-module_expsym_cmds=$lt_module_expsym_cmds + +-# Commands to strip libraries. +-old_striplib=$lt_old_striplib +-striplib=$lt_striplib ++ { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o=no ++ $RM -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predep_objects=$lt_predep_objects +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdep_objects=$lt_postdep_objects +- +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predeps=$lt_predeps +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdeps=$lt_postdeps +- +-# The library search path used internally by the compiler when linking +-# a shared library. +-compiler_lib_search_path=$lt_compiler_lib_search_path ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:7765: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:7769: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $RM conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files ++ $RM out/* && rmdir out ++ cd .. ++ $RM -r conftest ++ $RM conftest* + +-# Method to check whether dependent libraries are shared objects. +-deplibs_check_method=$lt_deplibs_check_method ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } + +-# Command to use when deplibs_check_method == file_magic. +-file_magic_cmd=$lt_file_magic_cmd + +-# Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_allow_undefined_flag + +-# Flag that forces no undefined symbols. +-no_undefined_flag=$lt_no_undefined_flag + +-# Commands used to finish a libtool library installation in a directory. +-finish_cmds=$lt_finish_cmds + +-# Same as above, but a single script fragment to be evaled but not shown. +-finish_eval=$lt_finish_eval + +-# Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o=no ++ $RM -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + +-# Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:7820: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:7824: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $RM conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files ++ $RM out/* && rmdir out ++ cd .. ++ $RM -r conftest ++ $RM conftest* + +-# Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } + +-# This is the shared library runtime path variable. +-runpath_var=$runpath_var + +-# This is the shared library path variable. +-shlibpath_var=$shlibpath_var + +-# Is shlibpath searched before the hard-coded library search path? +-shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +-# How to hardcode a shared library path into an executable. +-hardcode_action=$hardcode_action ++hard_links="nottested" ++if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } ++ hard_links=yes ++ $RM conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } ++ if test "$hard_links" = no; then ++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi + +-# Whether we should hardcode library paths into libraries. +-hardcode_into_libs=$hardcode_into_libs + +-# Flag to hardcode \$libdir into a binary during linking. +-# This must work even if \$libdir does not exist. +-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +-# If ld is used when linking, flag to hardcode \$libdir into +-# a binary during linking. This must work even if \$libdir does +-# not exist. +-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +-# Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_hardcode_libdir_separator + +-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +-# resulting binary. +-hardcode_direct=$hardcode_direct + +-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +-# resulting binary. +-hardcode_minus_L=$hardcode_minus_L +- +-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +-# the resulting binary. +-hardcode_shlibpath_var=$hardcode_shlibpath_var +- +-# Set to yes if building a shared library automatically hardcodes DIR into the library +-# and all subsequent libraries and executables linked against it. +-hardcode_automatic=$hardcode_automatic +- +-# Variables whose values should be saved in libtool wrapper scripts and +-# restored at relink time. +-variables_saved_for_relink="$variables_saved_for_relink" +- +-# Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$link_all_deplibs +- +-# Compile-time system search path for libraries +-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec +- +-# Run-time system search path for libraries +-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec +- +-# Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path" +- +-# Set to yes if exported symbols are required. +-always_export_symbols=$always_export_symbols +- +-# The commands to list exported symbols. +-export_symbols_cmds=$lt_export_symbols_cmds +- +-# The commands to extract the exported symbol list from a shared archive. +-extract_expsyms_cmds=$lt_extract_expsyms_cmds +- +-# Symbols that should not be listed in the preloaded symbols. +-exclude_expsyms=$lt_exclude_expsyms +- +-# Symbols that must always be exported. +-include_expsyms=$lt_include_expsyms +- +-# ### END LIBTOOL CONFIG +- +-__EOF__ ++ { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + ++ runpath_var= ++ allow_undefined_flag= ++ always_export_symbols=no ++ archive_cmds= ++ archive_expsym_cmds= ++ compiler_needs_object=no ++ enable_shared_with_static_runtimes=no ++ export_dynamic_flag_spec= ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ hardcode_automatic=no ++ hardcode_direct=no ++ hardcode_direct_absolute=no ++ hardcode_libdir_flag_spec= ++ hardcode_libdir_flag_spec_ld= ++ hardcode_libdir_separator= ++ hardcode_minus_L=no ++ hardcode_shlibpath_var=unsupported ++ inherit_rpath=no ++ link_all_deplibs=unknown ++ module_cmds= ++ module_expsym_cmds= ++ old_archive_from_new_cmds= ++ old_archive_from_expsyms_cmds= ++ thread_safe_flag_spec= ++ whole_archive_flag_spec= ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ include_expsyms= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ # Exclude shared library initialization/finalization symbols. ++ extract_expsyms_cmds= + + case $host_os in +- aix3*) +- cat <<\EOF >> "$cfgfile" +- +-# AIX sometimes has problems with the GCC collect2 program. For some +-# reason, if we set the COLLECT_NAMES environment variable, the problems +-# vanish in a puff of smoke. +-if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +-fi +-EOF ++ cygwin* | mingw* | pw32*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no + ;; + esac + +- # We use sed instead of cat because bash on DJGPP gets confused if +- # if finds mixed CR/LF and LF-only lines. Since sed operates in +- # text mode, it properly converts lines to CR/LF. This bash problem +- # is reportedly fixed, but why not run on old versions too? +- sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) +- +- mv -f "$cfgfile" "$ofile" || \ +- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") +- chmod +x "$ofile" +- +-else +- # If there is no Makefile yet, we rely on a make rule to execute +- # `config.status --recheck' to rerun these tests and create the +- # libtool script then. +- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` +- if test -f "$ltmain_in"; then +- test -f Makefile && make "$ltmain" +- fi +-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 +- +-CC="$lt_save_CC" +- +- +-# Check whether --with-tags or --without-tags was given. +-if test "${with_tags+set}" = set; then +- withval="$with_tags" +- tagnames="$withval" +-fi; +- +-if test -f "$ltmain" && test -n "$tagnames"; then +- if test ! -f "${ofile}"; then +- { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +-echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} +- fi ++ ld_shlibs=yes ++ if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' + +- if test -z "$LTCC"; then +- eval "`$SHELL ${ofile} --config | grep '^LTCC='`" +- if test -z "$LTCC"; then +- { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +-echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ export_dynamic_flag_spec='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else +- { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +-echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} ++ whole_archive_flag_spec= + fi +- fi +- if test -z "$LTCFLAGS"; then +- eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" +- fi +- +- # Extract list of available tagged configurations in $ofile. +- # Note that this assumes the entire list is on one line. +- available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` +- +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for tagname in $tagnames; do +- IFS="$lt_save_ifs" +- # Check whether tagname contains only valid characters +- case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in +- "") ;; +- *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +-echo "$as_me: error: invalid tag name: $tagname" >&2;} +- { (exit 1); exit 1; }; } +- ;; ++ supports_anon_versioning=no ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; + esac + +- if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null +- then +- { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +-echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} +- { (exit 1); exit 1; }; } +- fi ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix[3-9]*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 + +- # Update the list of available tags. +- if test -n "$tagname"; then +- echo appending configuration tag \"$tagname\" to $ofile +- +- case $tagname in +- CXX) +- if test -n "$CXX" && ( test "X$CXX" != "Xno" && +- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || +- (test "X$CXX" != "Xg++"))) ; then +- ac_ext=cc +-ac_cpp='$CXXCPP $CPPFLAGS' +-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. + ++_LT_EOF ++ fi ++ ;; + ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='' ++ ;; ++ m68k) ++ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ;; ++ esac ++ ;; + ++ beos*) ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; + +-archive_cmds_need_lc_CXX=no +-allow_undefined_flag_CXX= +-always_export_symbols_CXX=no +-archive_expsym_cmds_CXX= +-export_dynamic_flag_spec_CXX= +-hardcode_direct_CXX=no +-hardcode_libdir_flag_spec_CXX= +-hardcode_libdir_flag_spec_ld_CXX= +-hardcode_libdir_separator_CXX= +-hardcode_minus_L_CXX=no +-hardcode_shlibpath_var_CXX=unsupported +-hardcode_automatic_CXX=no +-module_cmds_CXX= +-module_expsym_cmds_CXX= +-link_all_deplibs_CXX=unknown +-old_archive_cmds_CXX=$old_archive_cmds +-no_undefined_flag_CXX= +-whole_archive_flag_spec_CXX= +-enable_shared_with_static_runtimes_CXX=no +- +-# Dependencies to place before and after the object being linked: +-predep_objects_CXX= +-postdep_objects_CXX= +-predeps_CXX= +-postdeps_CXX= +-compiler_lib_search_path_CXX= ++ cygwin* | mingw* | pw32*) ++ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, ++ # as there is no search path for DLLs. ++ hardcode_libdir_flag_spec='-L$libdir' ++ allow_undefined_flag=unsupported ++ always_export_symbols=no ++ enable_shared_with_static_runtimes=yes ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + +-# Source file extension for C++ test sources. +-ac_ext=cpp ++ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; + +-# Object file extension for compiled C++ test sources. +-objext=o +-objext_CXX=$objext ++ interix[3-9]*) ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; + +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="int some_variable = 0;\n" ++ gnu* | linux* | tpf* | k*bsd*-gnu) ++ tmp_diet=no ++ if test "$host_os" = linux-dietlibc; then ++ case $cc_basename in ++ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) ++ esac ++ fi ++ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ ++ && test "$tmp_diet" = no ++ then ++ tmp_addflag= ++ tmp_sharedflag='-shared' ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) ++ tmp_sharedflag='-qmkshrobj' ++ tmp_addflag= ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ++ compiler_needs_object=yes ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ esac ++ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + +-# Code to be used in simple link tests +-lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' ++ if test "x$supports_anon_versioning" = xyes; then ++ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi + +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++ case $cc_basename in ++ xlf*) ++ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself ++ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' ++ hardcode_libdir_flag_spec= ++ hardcode_libdir_flag_spec_ld='-rpath $libdir' ++ archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' ++ if test "x$supports_anon_versioning" = xyes; then ++ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' ++ fi ++ ;; ++ esac ++ else ++ ld_shlibs=no ++ fi ++ ;; + +-# If no C compiler was specified, use CC. +-LTCC=${LTCC-"$CC"} ++ netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; + +-# If no C compiler flags were specified, use CFLAGS. +-LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ solaris*) ++ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 + +-# Allow CC to be a program name with arguments. +-compiler=$CC ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. + ++_LT_EOF ++ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; + +-# save warnings/boilerplate of simple test code +-ac_outfile=conftest.$ac_objext +-printf "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_compiler_boilerplate=`cat conftest.err` +-$rm conftest* ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 + +-ac_outfile=conftest.$ac_objext +-printf "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_linker_boilerplate=`cat conftest.err` +-$rm conftest* ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. + ++_LT_EOF ++ ;; ++ *) ++ # For security reasons, it is highly recommended that you always ++ # use absolute paths for naming shared libraries, and exclude the ++ # DT_RUNPATH tag from executables and libraries. But doing so ++ # requires that you compile everything twice, which is a pain. ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ;; + +-# Allow CC to be a program name with arguments. +-lt_save_CC=$CC +-lt_save_LD=$LD +-lt_save_GCC=$GCC +-GCC=$GXX +-lt_save_with_gnu_ld=$with_gnu_ld +-lt_save_path_LD=$lt_cv_path_LD +-if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then +- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +-else +- $as_unset lt_cv_prog_gnu_ld +-fi +-if test -n "${lt_cv_path_LDCXX+set}"; then +- lt_cv_path_LD=$lt_cv_path_LDCXX +-else +- $as_unset lt_cv_path_LD +-fi +-test -z "${LDCXX+set}" || LD=$LDCXX +-CC=${CXX-"c++"} +-compiler=$CC +-compiler_CXX=$CC +-for cc_temp in $compiler""; do +- case $cc_temp in +- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; +- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; +- \-*) ;; +- *) break;; +- esac +-done +-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +- +- +-# We don't want -fno-exception wen compiling C++ code, so set the +-# no_builtin_flag separately +-if test "$GXX" = yes; then +- lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +-else +- lt_prog_compiler_no_builtin_flag_CXX= +-fi +- +-if test "$GXX" = yes; then +- # Set up default GNU C++ configuration +- +- +-# Check whether --with-gnu-ld or --without-gnu-ld was given. +-if test "${with_gnu_ld+set}" = set; then +- withval="$with_gnu_ld" +- test "$withval" = no || with_gnu_ld=yes +-else +- with_gnu_ld=no +-fi; +-ac_prog=ld +-if test "$GCC" = yes; then +- # Check if gcc -print-prog-name=ld gives a path. +- echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [\\/]* | ?:[\\/]*) +- re_direlt='/[^/][^/]*/\.\./' +- # Canonicalize the pathname of ld +- ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` +- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD="$ac_prog" ++ sunos4*) ++ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no + ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown +- ;; +- esac +-elif test "$with_gnu_ld" = yes; then +- echo "$as_me:$LINENO: checking for GNU ld" >&5 +-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +-else +- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +-fi +-if test "${lt_cv_path_LD+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -z "$LD"; then +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +- lt_cv_path_LD="$ac_dir/$ac_prog" +- # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some variants of GNU ld only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- case `"$lt_cv_path_LD" -v 2>&1 &5 +-echo "${ECHO_T}$LD" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} +- { (exit 1); exit 1; }; } +-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +-if test "${lt_cv_prog_gnu_ld+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- # I'd rather use --version here, but apparently some GNU lds only accept -v. +-case `$LD -v 2>&1 &5 +-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +-with_gnu_ld=$lt_cv_prog_gnu_ld + ++ *) ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac + +- +- # Check if GNU C++ uses GNU ld as the underlying linker, since the +- # archiving commands below assume that GNU ld is being used. +- if test "$with_gnu_ld" = yes; then +- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- +- hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' +- export_dynamic_flag_spec_CXX='${wl}--export-dynamic' +- +- # If archive_cmds runs LD, not CC, wlarc should be empty +- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to +- # investigate it a little bit more. (MM) +- wlarc='${wl}' +- +- # ancient GNU ld didn't support --whole-archive et. al. +- if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ +- grep 'no-whole-archive' > /dev/null; then +- whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- whole_archive_flag_spec_CXX= ++ if test "$ld_shlibs" = no; then ++ runpath_var= ++ hardcode_libdir_flag_spec= ++ export_dynamic_flag_spec= ++ whole_archive_flag_spec= + fi + else +- with_gnu_ld=no +- wlarc= +- +- # A generic and very simple default shared library creation +- # command for GNU C++ for the case where it uses the native +- # linker, instead of GNU ld. If possible, this setting should +- # overridden to take advantage of the native linker features on +- # the platform it is being used on. +- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' +- fi +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' +- +-else +- GXX=no +- with_gnu_ld=no +- wlarc= +-fi ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ allow_undefined_flag=unsupported ++ always_export_symbols=yes ++ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ hardcode_minus_L=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ hardcode_direct=unsupported ++ fi ++ ;; + +-# PORTME: fill in a description of your system's C++ link characteristics +-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +-ld_shlibs_CXX=yes +-case $host_os in +- aix3*) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- aix4* | aix5*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- aix_use_runtimelinking=no ++ aix[4-9]*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then ++ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ else ++ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no + +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[23]|aix4.[23].*|aix5*) +- for ld_flag in $LDFLAGS; do +- case $ld_flag in +- *-brtl*) ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break +- ;; +- esac +- done +- ;; +- esac ++ fi ++ done ++ ;; ++ esac + +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ archive_cmds='' ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ file_list_spec='${wl}-f,' + +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. +- +- archive_cmds_CXX='' +- hardcode_direct_CXX=yes +- hardcode_libdir_separator_CXX=':' +- link_all_deplibs_CXX=yes +- +- if test "$GXX" = yes; then +- case $host_os in aix4.[012]|aix4.[012].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && \ +- strings "$collect2name" | grep resolve_lib_name >/dev/null +- then ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && ++ strings "$collect2name" | $GREP resolve_lib_name >/dev/null ++ then + # We have reworked collect2 +- hardcode_direct_CXX=yes +- else ++ : ++ else + # We have old collect2 +- hardcode_direct_CXX=unsupported ++ hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking +- hardcode_minus_L_CXX=yes +- hardcode_libdir_flag_spec_CXX='-L$libdir' +- hardcode_libdir_separator_CXX= ++ hardcode_minus_L=yes ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_libdir_separator= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' + fi +- ;; +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi +- else +- # not using gcc +- if test "$host_cpu" = ia64; then ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' ++ shared_flag='-G' + else +- shared_flag='${wl}-bM:SRE' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi + fi + fi +- fi + +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to export. +- always_export_symbols_CXX=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag_CXX='-berok' +- # Determine the default libpath from the value encoded in an empty executable. +- cat >conftest.$ac_ext <<_ACEOF ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ always_export_symbols=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ allow_undefined_flag='-berok' ++ # Determine the default libpath from the value encoded in an ++ # empty executable. ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -10306,53 +8330,58 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + +- hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" +- +- archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' +- allow_undefined_flag_CXX="-z nodefs" +- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else +- # Determine the default libpath from the value encoded in an empty executable. +- cat >conftest.$ac_ext <<_ACEOF ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ++ allow_undefined_flag="-z nodefs" ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an ++ # empty executable. ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -10368,1408 +8397,569 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + +- hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- no_undefined_flag_CXX=' ${wl}-bernotok' +- allow_undefined_flag_CXX=' ${wl}-berok' +- # Exported symbols can be pulled into shared objects from archives +- whole_archive_flag_spec_CXX='$convenience' +- archive_cmds_need_lc_CXX=yes +- # This is similar to how AIX traditionally builds its shared libraries. +- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ no_undefined_flag=' ${wl}-bernotok' ++ allow_undefined_flag=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec='$convenience' ++ archive_cmds_need_lc=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi + fi +- fi +- ;; ++ ;; + +- beos*) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- allow_undefined_flag_CXX=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- ld_shlibs_CXX=no +- fi +- ;; ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='' ++ ;; ++ m68k) ++ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ;; ++ esac ++ ;; + +- chorus*) +- case $cc_basename in +- *) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- esac +- ;; ++ bsdi[45]*) ++ export_dynamic_flag_spec=-rdynamic ++ ;; + +- cygwin* | mingw* | pw32*) +- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, +- # as there is no search path for DLLs. +- hardcode_libdir_flag_spec_CXX='-L$libdir' +- allow_undefined_flag_CXX=unsupported +- always_export_symbols_CXX=no +- enable_shared_with_static_runtimes_CXX=yes +- +- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then +- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- else +- ld_shlibs_CXX=no +- fi +- ;; +- darwin* | rhapsody*) +- case $host_os in +- rhapsody* | darwin1.[012]) +- allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' +- ;; +- *) # Darwin 1.3 on +- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then +- allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- else +- case ${MACOSX_DEPLOYMENT_TARGET} in +- 10.[012]) +- allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- ;; +- 10.*) +- allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' +- ;; +- esac +- fi +- ;; +- esac +- archive_cmds_need_lc_CXX=no +- hardcode_direct_CXX=no +- hardcode_automatic_CXX=yes +- hardcode_shlibpath_var_CXX=unsupported +- whole_archive_flag_spec_CXX='' +- link_all_deplibs_CXX=yes +- +- if test "$GXX" = yes ; then +- lt_int_apple_cc_single_mod=no +- output_verbose_link_cmd='echo' +- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then +- lt_int_apple_cc_single_mod=yes +- fi +- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then +- archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' +- else +- archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' +- fi +- module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds +- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then +- archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- else +- archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- fi +- module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- else +- case $cc_basename in +- xlc*) +- output_verbose_link_cmd='echo' +- archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' +- module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds +- archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- ;; +- *) +- ld_shlibs_CXX=no +- ;; +- esac +- fi +- ;; ++ cygwin* | mingw* | pw32*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ hardcode_libdir_flag_spec=' ' ++ allow_undefined_flag=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ old_archive_from_new_cmds='true' ++ # FIXME: Should let the user specify the lib program. ++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ fix_srcfile_path='`cygpath -w "$srcfile"`' ++ enable_shared_with_static_runtimes=yes ++ ;; ++ ++ darwin* | rhapsody*) ++ ++ ++ archive_cmds_need_lc=no ++ hardcode_direct=no ++ hardcode_automatic=yes ++ hardcode_shlibpath_var=unsupported ++ whole_archive_flag_spec='' ++ link_all_deplibs=yes ++ allow_undefined_flag="$_lt_dar_allow_undefined" ++ if test "$GCC" = "yes"; then ++ output_verbose_link_cmd=echo ++ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" ++ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" ++ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" ++ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" ++ ++ else ++ ld_shlibs=no ++ fi + +- dgux*) +- case $cc_basename in +- ec++*) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- ghcx*) +- # Green Hills C++ Compiler +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- esac +- ;; +- freebsd[12]*) +- # C++ shared libraries reported to be fairly broken before switch to ELF +- ld_shlibs_CXX=no +- ;; +- freebsd-elf*) +- archive_cmds_need_lc_CXX=no +- ;; +- freebsd* | kfreebsd*-gnu | dragonfly*) +- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF +- # conventions +- ld_shlibs_CXX=yes +- ;; +- gnu*) +- ;; +- hpux9*) +- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator_CXX=: +- export_dynamic_flag_spec_CXX='${wl}-E' +- hardcode_direct_CXX=yes +- hardcode_minus_L_CXX=yes # Not in the search PATH, +- # but as the default +- # location of the library. +- +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- aCC*) +- archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; +- *) +- if test "$GXX" = yes; then +- archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ ++ dgux*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ freebsd1*) ++ ld_shlibs=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ hpux9*) ++ if test "$GCC" = yes; then ++ archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no ++ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi +- ;; +- esac +- ;; +- hpux10*|hpux11*) +- if test $with_gnu_ld = no; then +- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator_CXX=: ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes + +- case $host_cpu in +- hppa*64*|ia64*) +- hardcode_libdir_flag_spec_ld_CXX='+b $libdir' +- ;; +- *) +- export_dynamic_flag_spec_CXX='${wl}-E' +- ;; +- esac +- fi +- case $host_cpu in +- hppa*64*|ia64*) +- hardcode_direct_CXX=no +- hardcode_shlibpath_var_CXX=no ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ export_dynamic_flag_spec='${wl}-E' + ;; +- *) +- hardcode_direct_CXX=yes +- hardcode_minus_L_CXX=yes # Not in the search PATH, +- # but as the default +- # location of the library. ++ ++ hpux10*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_flag_spec_ld='+b $libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ export_dynamic_flag_spec='${wl}-E' ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ fi + ;; +- esac + +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- aCC*) ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) +- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) +- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) +- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- *) +- if test "$GXX" = yes; then +- if test $with_gnu_ld = no; then +- case $host_cpu in +- hppa*64*) +- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- ia64*) +- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- *) +- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- esac +- fi +- else +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- fi +- ;; +- esac +- ;; +- interix3*) +- hardcode_direct_CXX=no +- hardcode_shlibpath_var_CXX=no +- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' +- export_dynamic_flag_spec_CXX='${wl}-E' +- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. +- # Instead, shared libraries are loaded at an image base (0x10000000 by +- # default) and relocated if they conflict, which is a slow very memory +- # consuming and fragmenting process. To avoid this, we pick a random, +- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link +- # time. Moving up from 0x10000000 also allows more sbrk(2) space. +- archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- ;; +- irix5* | irix6*) +- case $cc_basename in +- CC*) +- # SGI C++ +- archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- +- # Archives containing C++ object files must be created using +- # "CC -ar", where "CC" is the IRIX C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' +- ;; +- *) +- if test "$GXX" = yes; then +- if test "$with_gnu_ld" = no; then +- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' +- fi +- fi +- link_all_deplibs_CXX=yes +- ;; +- esac +- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator_CXX=: +- ;; +- linux*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- +- hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' +- export_dynamic_flag_spec_CXX='${wl}--export-dynamic' +- +- # Archives containing C++ object files must be created using +- # "CC -Bstatic", where "CC" is the KAI C++ compiler. +- old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' +- ;; +- icpc*) +- # Intel C++ +- with_gnu_ld=yes +- # version 8.0 and above of icpc choke on multiply defined symbols +- # if we add $predep_objects and $postdep_objects, however 7.1 and +- # earlier do not add the objects themselves. +- case `$CC -V 2>&1` in +- *"Version 7."*) +- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; +- *) # Version 8.0 or newer +- tmp_idyn= +- case $host_cpu in +- ia64*) tmp_idyn=' -i_dynamic';; +- esac +- archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ia64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac +- archive_cmds_need_lc_CXX=no +- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' +- export_dynamic_flag_spec_CXX='${wl}--export-dynamic' +- whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +- ;; +- pgCC*) +- # Portland Group C++ compiler +- archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' +- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' +- +- hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' +- export_dynamic_flag_spec_CXX='${wl}--export-dynamic' +- whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' +- ;; +- cxx*) +- # Compaq C++ +- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: + +- runpath_var=LD_RUN_PATH +- hardcode_libdir_flag_spec_CXX='-rpath $libdir' +- hardcode_libdir_separator_CXX=: ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ ;; ++ *) ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ export_dynamic_flag_spec='${wl}-E' + +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- esac +- ;; +- lynxos*) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- m88k*) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- mvs*) +- case $cc_basename in +- cxx*) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- esac +- ;; +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' +- wlarc= +- hardcode_libdir_flag_spec_CXX='-R$libdir' +- hardcode_direct_CXX=yes +- hardcode_shlibpath_var_CXX=no +- fi +- # Workaround some broken pre-1.5 toolchains +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' +- ;; +- openbsd2*) +- # C++ shared libraries are fairly broken +- ld_shlibs_CXX=no +- ;; +- openbsd*) +- hardcode_direct_CXX=yes +- hardcode_shlibpath_var_CXX=no +- archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' +- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' +- export_dynamic_flag_spec_CXX='${wl}-E' +- whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- fi +- output_verbose_link_cmd='echo' +- ;; +- osf3*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- +- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' +- hardcode_libdir_separator_CXX=: +- +- # Archives containing C++ object files must be created using +- # "CC -Bstatic", where "CC" is the KAI C++ compiler. +- old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ ;; ++ esac ++ fi ++ ;; + +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- cxx*) +- allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- +- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator_CXX=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- *) +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- +- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator_CXX=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ # Try to use the -exported_symbol ld option, if it does not ++ # work, assume that -exports_file does not work either and ++ # implicitly export all symbols. ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" ++ cat >conftest.$ac_ext <<_ACEOF ++int foo(void) {} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + +- else +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- fi +- ;; +- esac +- ;; +- osf4* | osf5*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- +- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' +- hardcode_libdir_separator_CXX=: +- +- # Archives containing C++ object files must be created using +- # the KAI C++ compiler. +- old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- cxx*) +- allow_undefined_flag_CXX=' -expect_unresolved \*' +- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ +- echo "-hidden">> $lib.exp~ +- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ +- $rm $lib.exp' +- +- hardcode_libdir_flag_spec_CXX='-rpath $libdir' +- hardcode_libdir_separator_CXX=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- *) +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- +- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator_CXX=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS="$save_LDFLAGS" ++ else ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ inherit_rpath=yes ++ link_all_deplibs=yes ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ newsos6) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *nto* | *qnx*) ++ ;; + ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ hardcode_direct_absolute=yes ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' + else +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ ;; ++ *) ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ ;; ++ esac + fi +- ;; +- esac +- ;; +- psos*) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- sunos4*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.x +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- lcc*) +- # Lucid +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- esac +- ;; +- solaris*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.2, 5.x and Centerline C++ +- archive_cmds_need_lc_CXX=yes +- no_undefined_flag_CXX=' -zdefs' +- archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' +- +- hardcode_libdir_flag_spec_CXX='-R$libdir' +- hardcode_shlibpath_var_CXX=no +- case $host_os in +- solaris2.[0-5] | solaris2.[0-5].*) ;; +- *) +- # The C++ compiler is used as linker so we must use $wl +- # flag to pass the commands to the underlying system +- # linker. We must also pass each convience library through +- # to the system linker between allextract/defaultextract. +- # The C++ compiler will combine linker options so we +- # cannot just pass the convience library names through +- # without $wl. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' +- ;; +- esac +- link_all_deplibs_CXX=yes ++ else ++ ld_shlibs=no ++ fi ++ ;; + +- output_verbose_link_cmd='echo' ++ os2*) ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ allow_undefined_flag=unsupported ++ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; + +- # Archives containing C++ object files must be created using +- # "CC -xar", where "CC" is the Sun C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' +- ;; +- gcx*) +- # Green Hills C++ Compiler +- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ osf3*) ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ;; + +- # The C++ compiler must be used to create the archive. +- old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' +- ;; +- *) +- # GNU C++ compiler with Solaris linker +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- no_undefined_flag_CXX=' ${wl}-z ${wl}defs' +- if $CC --version | grep -v '^2\.7' > /dev/null; then +- archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" +- else +- # g++ 2.7 appears to require `-G' NOT `-shared' on this +- # platform. +- archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" +- fi ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ ++ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + +- hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' +- fi +- ;; +- esac +- ;; +- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) +- no_undefined_flag_CXX='${wl}-z,text' +- archive_cmds_need_lc_CXX=no +- hardcode_shlibpath_var_CXX=no +- runpath_var='LD_RUN_PATH' +- +- case $cc_basename in +- CC*) +- archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- ;; +- sysv5* | sco3.2v5* | sco5v6*) +- # Note: We can NOT use -z defs as we might desire, because we do not +- # link with -lc, and that would cause any symbols used from libc to +- # always be unresolved, which means just about no library would +- # ever link correctly. If we're not using GNU ld we use -z text +- # though, which does catch some bad symbols but isn't as heavy-handed +- # as -z defs. +- # For security reasons, it is highly recommended that you always +- # use absolute paths for naming shared libraries, and exclude the +- # DT_RUNPATH tag from executables and libraries. But doing so +- # requires that you compile everything twice, which is a pain. +- # So that behaviour is only enabled if SCOABSPATH is set to a +- # non-empty value in the environment. Most likely only useful for +- # creating official distributions of packages. +- # This is a hack until libtool officially supports absolute path +- # names for shared libraries. +- no_undefined_flag_CXX='${wl}-z,text' +- allow_undefined_flag_CXX='${wl}-z,nodefs' +- archive_cmds_need_lc_CXX=no +- hardcode_shlibpath_var_CXX=no +- hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' +- hardcode_libdir_separator_CXX=':' +- link_all_deplibs_CXX=yes +- export_dynamic_flag_spec_CXX='${wl}-Bexport' +- runpath_var='LD_RUN_PATH' +- +- case $cc_basename in +- CC*) +- archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; ++ # Both c and cxx compiler support -rpath directly ++ hardcode_libdir_flag_spec='-rpath $libdir' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_separator=: ++ ;; ++ ++ solaris*) ++ no_undefined_flag=' -z defs' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ++ else ++ case `$CC -V 2>&1` in ++ *"Compilers 5.0"*) ++ wlarc='' ++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ++ ;; ++ *) ++ wlarc='${wl}' ++ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ++ ;; ++ esac ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_shlibpath_var=no ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; + *) +- archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ++ fi + ;; +- esac +- ;; +- tandem*) +- case $cc_basename in +- NCC*) +- # NonStop-UX NCC 3.20 +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no ++ esac ++ link_all_deplibs=yes ++ ;; ++ ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4) ++ case $host_vendor in ++ sni) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes # is this really true??? + ;; +- *) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ reload_cmds='$CC -r -o $output$reload_objs' ++ hardcode_direct=no ++ ;; ++ motorola) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; +- esac +- ;; +- vxworks*) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +-esac +-echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +-echo "${ECHO_T}$ld_shlibs_CXX" >&6 +-test "$ld_shlibs_CXX" = no && can_build_shared=no ++ esac ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var=no ++ ;; + +-GCC_CXX="$GXX" +-LD_CXX="$LD" ++ sysv4.3*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ export_dynamic_flag_spec='-Bexport' ++ ;; + +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ld_shlibs=yes ++ fi ++ ;; + +-cat > conftest.$ac_ext <&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- # Parse the compiler output and extract the necessary +- # objects, libraries and library flags. ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; + +- # Sentinel used to keep track of whether or not we are before +- # the conftest object file. +- pre_test_object_deps_done=no +- +- # The `*' in the case matches for architectures that use `case' in +- # $output_verbose_cmd can trigger glob expansion during the loop +- # eval without this substitution. +- output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` +- +- for p in `eval $output_verbose_link_cmd`; do +- case $p in +- +- -L* | -R* | -l*) +- # Some compilers place space between "-{L,R}" and the path. +- # Remove the space. +- if test $p = "-L" \ +- || test $p = "-R"; then +- prev=$p +- continue +- else +- prev= +- fi ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag='${wl}-z,text' ++ allow_undefined_flag='${wl}-z,nodefs' ++ archive_cmds_need_lc=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='${wl}-R,$libdir' ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ export_dynamic_flag_spec='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' + +- if test "$pre_test_object_deps_done" = no; then +- case $p in +- -L* | -R*) +- # Internal compiler library paths should come after those +- # provided the user. The postdeps already come after the +- # user supplied libs so there is no need to process them. +- if test -z "$compiler_lib_search_path_CXX"; then +- compiler_lib_search_path_CXX="${prev}${p}" +- else +- compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" +- fi +- ;; +- # The "-l" case would never come before the object being +- # linked, so don't bother handling this case. +- esac +- else +- if test -z "$postdeps_CXX"; then +- postdeps_CXX="${prev}${p}" +- else +- postdeps_CXX="${postdeps_CXX} ${prev}${p}" +- fi +- fi +- ;; ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; + +- *.$objext) +- # This assumes that the test object file only shows up +- # once in the compiler output. +- if test "$p" = "conftest.$objext"; then +- pre_test_object_deps_done=yes +- continue +- fi ++ uts4*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; + +- if test "$pre_test_object_deps_done" = no; then +- if test -z "$predep_objects_CXX"; then +- predep_objects_CXX="$p" +- else +- predep_objects_CXX="$predep_objects_CXX $p" +- fi +- else +- if test -z "$postdep_objects_CXX"; then +- postdep_objects_CXX="$p" +- else +- postdep_objects_CXX="$postdep_objects_CXX $p" +- fi +- fi +- ;; ++ *) ++ ld_shlibs=no ++ ;; ++ esac + +- *) ;; # Ignore the rest. ++ if test x$host_vendor = xsni; then ++ case $host in ++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ ;; ++ esac ++ fi ++ fi + +- esac +- done ++{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 ++echo "${ECHO_T}$ld_shlibs" >&6; } ++test "$ld_shlibs" = no && can_build_shared=no + +- # Clean up. +- rm -f a.out a.exe +-else +- echo "libtool.m4: error: problem compiling CXX test program" +-fi ++with_gnu_ld=$with_gnu_ld + +-$rm -f confest.$objext + +-# PORTME: override above test on systems where it is broken +-case $host_os in +-interix3*) +- # Interix 3.5 installs completely hosed .la files for C++, so rather than +- # hack all around it, let's just trust "g++" to DTRT. +- predep_objects_CXX= +- postdep_objects_CXX= +- postdeps_CXX= +- ;; + +-solaris*) +- case $cc_basename in +- CC*) +- # Adding this requires a known-good setup of shared libraries for +- # Sun compiler versions before 5.6, else PIC objects from an old +- # archive will be linked into the output, leading to subtle bugs. +- postdeps_CXX='-lCstd -lCrun' +- ;; +- esac +- ;; +-esac + + +-case " $postdeps_CXX " in +-*" -lc "*) archive_cmds_need_lc_CXX=no ;; +-esac + +-lt_prog_compiler_wl_CXX= +-lt_prog_compiler_pic_CXX= +-lt_prog_compiler_static_CXX= + +-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + +- # C++ specific cases for pic, static, wl, etc. +- if test "$GXX" = yes; then +- lt_prog_compiler_wl_CXX='-Wl,' +- lt_prog_compiler_static_CXX='-static' + +- case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_prog_compiler_static_CXX='-Bstatic' +- fi +- ;; +- amigaos*) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' +- ;; +- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- mingw* | os2* | pw32*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_prog_compiler_pic_CXX='-DDLL_EXPORT' +- ;; +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- lt_prog_compiler_pic_CXX='-fno-common' +- ;; +- *djgpp*) +- # DJGPP does not support shared libraries at all +- lt_prog_compiler_pic_CXX= +- ;; +- interix3*) +- # Interix 3.x gcc -fpic/-fPIC options generate broken code. +- # Instead, we relocate shared libraries at runtime. +- ;; +- sysv4*MP*) +- if test -d /usr/nec; then +- lt_prog_compiler_pic_CXX=-Kconform_pic +- fi +- ;; +- hpux*) +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case $host_cpu in +- hppa*64*|ia64*) +- ;; +- *) +- lt_prog_compiler_pic_CXX='-fPIC' +- ;; +- esac +- ;; +- *) +- lt_prog_compiler_pic_CXX='-fPIC' +- ;; +- esac +- else +- case $host_os in +- aix4* | aix5*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_prog_compiler_static_CXX='-Bstatic' +- else +- lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- chorus*) +- case $cc_basename in +- cxch68*) +- # Green Hills C++ Compiler +- # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" +- ;; +- esac +- ;; +- darwin*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- case $cc_basename in +- xlc*) +- lt_prog_compiler_pic_CXX='-qnocommon' +- lt_prog_compiler_wl_CXX='-Wl,' +- ;; +- esac +- ;; +- dgux*) +- case $cc_basename in +- ec++*) +- lt_prog_compiler_pic_CXX='-KPIC' +- ;; +- ghcx*) +- # Green Hills C++ Compiler +- lt_prog_compiler_pic_CXX='-pic' +- ;; +- *) +- ;; +- esac +- ;; +- freebsd* | kfreebsd*-gnu | dragonfly*) +- # FreeBSD uses GNU C++ +- ;; +- hpux9* | hpux10* | hpux11*) +- case $cc_basename in +- CC*) +- lt_prog_compiler_wl_CXX='-Wl,' +- lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' +- if test "$host_cpu" != ia64; then +- lt_prog_compiler_pic_CXX='+Z' +- fi +- ;; +- aCC*) +- lt_prog_compiler_wl_CXX='-Wl,' +- lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- lt_prog_compiler_pic_CXX='+Z' +- ;; +- esac +- ;; +- *) +- ;; +- esac +- ;; +- interix*) +- # This is c89, which is MS Visual C++ (no shared libs) +- # Anyone wants to do a port? +- ;; +- irix5* | irix6* | nonstopux*) +- case $cc_basename in +- CC*) +- lt_prog_compiler_wl_CXX='-Wl,' +- lt_prog_compiler_static_CXX='-non_shared' +- # CC pic flag -KPIC is the default. +- ;; +- *) +- ;; +- esac +- ;; +- linux*) +- case $cc_basename in +- KCC*) +- # KAI C++ Compiler +- lt_prog_compiler_wl_CXX='--backend -Wl,' +- lt_prog_compiler_pic_CXX='-fPIC' +- ;; +- icpc* | ecpc*) +- # Intel C++ +- lt_prog_compiler_wl_CXX='-Wl,' +- lt_prog_compiler_pic_CXX='-KPIC' +- lt_prog_compiler_static_CXX='-static' +- ;; +- pgCC*) +- # Portland Group C++ compiler. +- lt_prog_compiler_wl_CXX='-Wl,' +- lt_prog_compiler_pic_CXX='-fpic' +- lt_prog_compiler_static_CXX='-Bstatic' +- ;; +- cxx*) +- # Compaq C++ +- # Make sure the PIC flag is empty. It appears that all Alpha +- # Linux and Compaq Tru64 Unix objects are PIC. +- lt_prog_compiler_pic_CXX= +- lt_prog_compiler_static_CXX='-non_shared' +- ;; +- *) +- ;; +- esac +- ;; +- lynxos*) +- ;; +- m88k*) +- ;; +- mvs*) +- case $cc_basename in +- cxx*) +- lt_prog_compiler_pic_CXX='-W c,exportall' +- ;; +- *) +- ;; +- esac +- ;; +- netbsd*) +- ;; +- osf3* | osf4* | osf5*) +- case $cc_basename in +- KCC*) +- lt_prog_compiler_wl_CXX='--backend -Wl,' +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- lt_prog_compiler_pic_CXX='-pic' +- ;; +- cxx*) +- # Digital/Compaq C++ +- lt_prog_compiler_wl_CXX='-Wl,' +- # Make sure the PIC flag is empty. It appears that all Alpha +- # Linux and Compaq Tru64 Unix objects are PIC. +- lt_prog_compiler_pic_CXX= +- lt_prog_compiler_static_CXX='-non_shared' +- ;; +- *) +- ;; +- esac +- ;; +- psos*) +- ;; +- solaris*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.2, 5.x and Centerline C++ +- lt_prog_compiler_pic_CXX='-KPIC' +- lt_prog_compiler_static_CXX='-Bstatic' +- lt_prog_compiler_wl_CXX='-Qoption ld ' +- ;; +- gcx*) +- # Green Hills C++ Compiler +- lt_prog_compiler_pic_CXX='-PIC' +- ;; +- *) +- ;; +- esac +- ;; +- sunos4*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.x +- lt_prog_compiler_pic_CXX='-pic' +- lt_prog_compiler_static_CXX='-Bstatic' +- ;; +- lcc*) +- # Lucid +- lt_prog_compiler_pic_CXX='-pic' +- ;; +- *) +- ;; +- esac +- ;; +- tandem*) +- case $cc_basename in +- NCC*) +- # NonStop-UX NCC 3.20 +- lt_prog_compiler_pic_CXX='-KPIC' +- ;; +- *) +- ;; +- esac +- ;; +- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) +- case $cc_basename in +- CC*) +- lt_prog_compiler_wl_CXX='-Wl,' +- lt_prog_compiler_pic_CXX='-KPIC' +- lt_prog_compiler_static_CXX='-Bstatic' +- ;; +- esac +- ;; +- vxworks*) +- ;; +- *) +- lt_prog_compiler_can_build_shared_CXX=no +- ;; +- esac +- fi +- +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 +- +-# +-# Check to make sure the PIC flag actually works. +-# +-if test -n "$lt_prog_compiler_pic_CXX"; then +- +-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 +-if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_prog_compiler_pic_works_CXX=no +- ac_outfile=conftest.$ac_objext +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- # The option is referenced via a variable to avoid confusing sed. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:11578: $lt_compile\"" >&5) +- (eval "$lt_compile" 2>conftest.err) +- ac_status=$? +- cat conftest.err >&5 +- echo "$as_me:11582: \$? = $ac_status" >&5 +- if (exit $ac_status) && test -s "$ac_outfile"; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then +- lt_prog_compiler_pic_works_CXX=yes +- fi +- fi +- $rm conftest* +- +-fi +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 +- +-if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then +- case $lt_prog_compiler_pic_CXX in +- "" | " "*) ;; +- *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; +- esac +-else +- lt_prog_compiler_pic_CXX= +- lt_prog_compiler_can_build_shared_CXX=no +-fi +- +-fi +-case $host_os in +- # For platforms which do not support PIC, -DPIC is meaningless: +- *djgpp*) +- lt_prog_compiler_pic_CXX= +- ;; +- *) +- lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" +- ;; +-esac +- +-# +-# Check to make sure the static flag actually works. +-# +-wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +-echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +-if test "${lt_prog_compiler_static_works_CXX+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_prog_compiler_static_works_CXX=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $lt_tmp_static_flag" +- printf "$lt_simple_link_test_code" > conftest.$ac_ext +- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then +- # The linker can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- # Append any errors to the config.log. +- cat conftest.err 1>&5 +- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if diff conftest.exp conftest.er2 >/dev/null; then +- lt_prog_compiler_static_works_CXX=yes +- fi +- else +- lt_prog_compiler_static_works_CXX=yes +- fi +- fi +- $rm conftest* +- LDFLAGS="$save_LDFLAGS" +- +-fi +-echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5 +-echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6 +- +-if test x"$lt_prog_compiler_static_works_CXX" = xyes; then +- : +-else +- lt_prog_compiler_static_CXX= +-fi +- +- +-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +-if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_cv_prog_compiler_c_o_CXX=no +- $rm -r conftest 2>/dev/null +- mkdir conftest +- cd conftest +- mkdir out +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- lt_compiler_flag="-o out/conftest2.$ac_objext" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:11682: $lt_compile\"" >&5) +- (eval "$lt_compile" 2>out/conftest.err) +- ac_status=$? +- cat out/conftest.err >&5 +- echo "$as_me:11686: \$? = $ac_status" >&5 +- if (exit $ac_status) && test -s out/conftest2.$ac_objext +- then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp +- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 +- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then +- lt_cv_prog_compiler_c_o_CXX=yes +- fi +- fi +- chmod u+w . 2>&5 +- $rm conftest* +- # SGI C++ compiler will create directory out/ii_files/ for +- # template instantiation +- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files +- $rm out/* && rmdir out +- cd .. +- rmdir conftest +- $rm conftest* +- +-fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 + + +-hard_links="nottested" +-if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 +- hard_links=yes +- $rm conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- echo "$as_me:$LINENO: result: $hard_links" >&5 +-echo "${ECHO_T}$hard_links" >&6 +- if test "$hard_links" = no; then +- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} +- need_locks=warn +- fi +-else +- need_locks=no +-fi + +-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + +- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- case $host_os in +- aix4* | aix5*) +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then +- export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' +- else +- export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' +- fi +- ;; +- pw32*) +- export_symbols_cmds_CXX="$ltdll_cmds" +- ;; +- cygwin* | mingw*) +- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' +- ;; +- *) +- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- ;; +- esac + +-echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +-echo "${ECHO_T}$ld_shlibs_CXX" >&6 +-test "$ld_shlibs_CXX" = no && can_build_shared=no + + # + # Do we need to explicitly link libc? + # +-case "x$archive_cmds_need_lc_CXX" in ++case "x$archive_cmds_need_lc" in + x|xyes) + # Assume -lc should be added +- archive_cmds_need_lc_CXX=yes ++ archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $archive_cmds_CXX in ++ case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; +@@ -11777,10 +8967,10 @@ + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. +- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 +- $rm conftest* +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } ++ $RM conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 +@@ -11791,40 +8981,248 @@ + lib=conftest + libobjs=conftest.$ac_objext + deplibs= +- wl=$lt_prog_compiler_wl_CXX +- pic_flag=$lt_prog_compiler_pic_CXX ++ wl=$lt_prog_compiler_wl ++ pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest +- lt_save_allow_undefined_flag=$allow_undefined_flag_CXX +- allow_undefined_flag_CXX= +- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 +- (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ++ lt_save_allow_undefined_flag=$allow_undefined_flag ++ allow_undefined_flag= ++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 ++ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then +- archive_cmds_need_lc_CXX=no ++ archive_cmds_need_lc=no + else +- archive_cmds_need_lc_CXX=yes ++ archive_cmds_need_lc=yes + fi +- allow_undefined_flag_CXX=$lt_save_allow_undefined_flag ++ allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi +- $rm conftest* +- echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +-echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 ++ $RM conftest* ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; + esac + +-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } ++ ++if test "$GCC" = yes; then ++ case $host_os in ++ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; ++ *) lt_awk_arg="/^libraries:/" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then ++ # if the path contains ";" then we assume it to be the separator ++ # otherwise default to the standard path separator (i.e. ":") - it is ++ # assumed that no part of a normal pathname contains ";" but that should ++ # okay in the real world where ";" in dirpaths is itself problematic. ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ # Ok, now we have the path, separated by spaces, we can step through it ++ # and add multilib dir if necessary. ++ lt_tmp_lt_search_path_spec= ++ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` ++ for lt_sys_path in $lt_search_path_spec; do ++ if test -d "$lt_sys_path/$lt_multi_os_dir"; then ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" ++ else ++ test -d "$lt_sys_path" && \ ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" ++ fi ++ done ++ lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' ++BEGIN {RS=" "; FS="/|\n";} { ++ lt_foo=""; ++ lt_count=0; ++ for (lt_i = NF; lt_i > 0; lt_i--) { ++ if ($lt_i != "" && $lt_i != ".") { ++ if ($lt_i == "..") { ++ lt_count++; ++ } else { ++ if (lt_count == 0) { ++ lt_foo="/" $lt_i lt_foo; ++ } else { ++ lt_count--; ++ } ++ } ++ } ++ } ++ if (lt_foo != "") { lt_freq[lt_foo]++; } ++ if (lt_freq[lt_foo] == 1) { print lt_foo; } ++}'` ++ sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` ++else ++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++fi + library_names_spec= + libname_spec='lib$name' + soname_spec= +@@ -11838,20 +9236,6 @@ + version_type=none + dynamic_linker="$host_os ld.so" + sys_lib_dlsearch_path_spec="/lib /usr/lib" +-if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then +- # if the path contains ";" then we assume it to be the separator +- # otherwise default to the standard path separator (i.e. ":") - it is +- # assumed that no part of a normal pathname contains ";" but that should +- # okay in the real world where ";" in dirpaths is itself problematic. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +-else +- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +-fi + need_lib_prefix=unknown + hardcode_into_libs=no + +@@ -11869,7 +9253,7 @@ + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +-aix4* | aix5*) ++aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no +@@ -11888,7 +9272,7 @@ + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' +- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then ++ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no +@@ -11914,9 +9298,18 @@ + ;; + + amigaos*) +- library_names_spec='$libname.ixlibrary $libname.a' +- # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ case $host_cpu in ++ powerpc) ++ # Since July 2007 AmigaOS4 officially supports .so libraries. ++ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ ;; ++ m68k) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ ;; ++ esac + ;; + + beos*) +@@ -11950,14 +9343,17 @@ + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ +- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ +- chmod a+x \$dldir/$dlname' ++ chmod a+x \$dldir/$dlname~ ++ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then ++ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; ++ fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ +- $rm \$dlpath' ++ $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in +@@ -11969,17 +9365,17 @@ + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then ++ sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) +@@ -12003,17 +9399,13 @@ + version_type=darwin + need_lib_prefix=no + need_version=no +- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. +- if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` +- else +- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' +- fi ++ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +@@ -12030,18 +9422,6 @@ + dynamic_linker=no + ;; + +-kfreebsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- + freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. +@@ -12079,7 +9459,7 @@ + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; +- freebsd*) # from 4.6 on ++ *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; +@@ -12118,18 +9498,18 @@ + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; +- hppa*64*) +- shrext_cmds='.sl' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- *) ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH +@@ -12142,7 +9522,7 @@ + postinstall_cmds='chmod 555 $lib' + ;; + +-interix3*) ++interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no +@@ -12197,7 +9577,7 @@ + ;; + + # This must be Linux ELF. +-linux*) ++linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no +@@ -12206,6 +9586,60 @@ + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no ++ # Some binutils ld are patched to set DT_RUNPATH ++ save_LDFLAGS=$LDFLAGS ++ save_libdir=$libdir ++ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ ++ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then ++ shlibpath_overrides_runpath=yes ++fi ++ ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS=$save_LDFLAGS ++ libdir=$save_libdir ++ + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. +@@ -12213,7 +9647,7 @@ + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + +@@ -12226,23 +9660,11 @@ + dynamic_linker='GNU/Linux ld.so' + ;; + +-knetbsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- + netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' +@@ -12263,14 +9685,16 @@ + shlibpath_overrides_runpath=yes + ;; + +-nto-qnx*) +- version_type=linux ++*nto* | *qnx*) ++ version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='ldqnx.so' + ;; + + openbsd*) +@@ -12279,13 +9703,13 @@ + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in +- openbsd3.3 | openbsd3.3.*) need_version=yes ;; +- *) need_version=no ;; ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no +@@ -12319,6 +9743,10 @@ + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + ++rdos*) ++ dynamic_linker=no ++ ;; ++ + solaris*) + version_type=linux + need_lib_prefix=no +@@ -12353,7 +9781,6 @@ + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no +- export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) +@@ -12384,13 +9811,12 @@ + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' +- shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' +- shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" +@@ -12400,6 +9826,17 @@ + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + ++tpf*) ++ # TPF is a cross-target only. Preferred cross-host = GNU/Linux. ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ + uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +@@ -12411,8 +9848,8 @@ + dynamic_linker=no + ;; + esac +-echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +-echo "${ECHO_T}$dynamic_linker" >&6 ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } + test "$dynamic_linker" = no && can_build_shared=no + + variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +@@ -12420,6940 +9857,2455 @@ + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + fi + +-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +-hardcode_action_CXX= +-if test -n "$hardcode_libdir_flag_spec_CXX" || \ +- test -n "$runpath_var_CXX" || \ +- test "X$hardcode_automatic_CXX" = "Xyes" ; then +- +- # We can hardcode non-existant directories. +- if test "$hardcode_direct_CXX" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && +- test "$hardcode_minus_L_CXX" != no; then +- # Linking always hardcodes the temporary library directory. +- hardcode_action_CXX=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- hardcode_action_CXX=immediate +- fi +-else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- hardcode_action_CXX=unsupported ++if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then ++ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" + fi +-echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +-echo "${ECHO_T}$hardcode_action_CXX" >&6 +- +-if test "$hardcode_action_CXX" = relink; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless ++if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then ++ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + fi + + +-# The else clause should only fire when bootstrapping the +-# libtool distribution, otherwise you forgot to ship ltmain.sh +-# with your package, and you will get complaints that there are +-# no rules to generate ltmain.sh. +-if test -f "$ltmain"; then +- # See if we are running on zsh, and set the options which allow our commands through +- # without removal of \ escapes. +- if test -n "${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +- fi +- # Now quote all the things that may contain metacharacters while being +- # careful not to overquote the AC_SUBSTed values. We take copies of the +- # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ +- SED SHELL STRIP \ +- libname_spec library_names_spec soname_spec extract_expsyms_cmds \ +- old_striplib striplib file_magic_cmd finish_cmds finish_eval \ +- deplibs_check_method reload_flag reload_cmds need_locks \ +- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ +- lt_cv_sys_global_symbol_to_c_name_address \ +- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ +- old_postinstall_cmds old_postuninstall_cmds \ +- compiler_CXX \ +- CC_CXX \ +- LD_CXX \ +- lt_prog_compiler_wl_CXX \ +- lt_prog_compiler_pic_CXX \ +- lt_prog_compiler_static_CXX \ +- lt_prog_compiler_no_builtin_flag_CXX \ +- export_dynamic_flag_spec_CXX \ +- thread_safe_flag_spec_CXX \ +- whole_archive_flag_spec_CXX \ +- enable_shared_with_static_runtimes_CXX \ +- old_archive_cmds_CXX \ +- old_archive_from_new_cmds_CXX \ +- predep_objects_CXX \ +- postdep_objects_CXX \ +- predeps_CXX \ +- postdeps_CXX \ +- compiler_lib_search_path_CXX \ +- archive_cmds_CXX \ +- archive_expsym_cmds_CXX \ +- postinstall_cmds_CXX \ +- postuninstall_cmds_CXX \ +- old_archive_from_expsyms_cmds_CXX \ +- allow_undefined_flag_CXX \ +- no_undefined_flag_CXX \ +- export_symbols_cmds_CXX \ +- hardcode_libdir_flag_spec_CXX \ +- hardcode_libdir_flag_spec_ld_CXX \ +- hardcode_libdir_separator_CXX \ +- hardcode_automatic_CXX \ +- module_cmds_CXX \ +- module_expsym_cmds_CXX \ +- lt_cv_prog_compiler_c_o_CXX \ +- exclude_expsyms_CXX \ +- include_expsyms_CXX; do +- +- case $var in +- old_archive_cmds_CXX | \ +- old_archive_from_new_cmds_CXX | \ +- archive_cmds_CXX | \ +- archive_expsym_cmds_CXX | \ +- module_cmds_CXX | \ +- module_expsym_cmds_CXX | \ +- old_archive_from_expsyms_cmds_CXX | \ +- export_symbols_cmds_CXX | \ +- extract_expsyms_cmds | reload_cmds | finish_cmds | \ +- postinstall_cmds | postuninstall_cmds | \ +- old_postinstall_cmds | old_postuninstall_cmds | \ +- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) +- # Double-quote double-evaled strings. +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" +- ;; +- *) +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" +- ;; +- esac +- done +- +- case $lt_echo in +- *'\$0 --fallback-echo"') +- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` +- ;; +- esac +- +-cfgfile="$ofile" +- +- cat <<__EOF__ >> "$cfgfile" +-# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +-# Shell to use when invoking shell scripts. +-SHELL=$lt_SHELL + +-# Whether or not to build shared libraries. +-build_libtool_libs=$enable_shared + +-# Whether or not to build static libraries. +-build_old_libs=$enable_static + +-# Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$archive_cmds_need_lc_CXX + +-# Whether or not to disallow shared libs when runtime libs are static +-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +-# Whether or not to optimize for fast installation. +-fast_install=$enable_fast_install + +-# The host system. +-host_alias=$host_alias +-host=$host +-host_os=$host_os + +-# The build system. +-build_alias=$build_alias +-build=$build +-build_os=$build_os + +-# An echo program that does not interpret backslashes. +-echo=$lt_echo + +-# The archiver. +-AR=$lt_AR +-AR_FLAGS=$lt_AR_FLAGS + +-# A C compiler. +-LTCC=$lt_LTCC + +-# LTCC compiler flags. +-LTCFLAGS=$lt_LTCFLAGS + +-# A language-specific compiler. +-CC=$lt_compiler_CXX + +-# Is the compiler the GNU C compiler? +-with_gcc=$GCC_CXX + +-# An ERE matcher. +-EGREP=$lt_EGREP + +-# The linker used to build libraries. +-LD=$lt_LD_CXX + +-# Whether we need hard or soft links. +-LN_S=$lt_LN_S + +-# A BSD-compatible nm program. +-NM=$lt_NM + +-# A symbol stripping program +-STRIP=$lt_STRIP + +-# Used to examine libraries when file_magic_cmd begins "file" +-MAGIC_CMD=$MAGIC_CMD + +-# Used on cygwin: DLL creation program. +-DLLTOOL="$DLLTOOL" + +-# Used on cygwin: object dumper. +-OBJDUMP="$OBJDUMP" + +-# Used on cygwin: assembler. +-AS="$AS" + +-# The name of the directory that contains temporary libtool files. +-objdir=$objdir + +-# How to create reloadable object files. +-reload_flag=$lt_reload_flag +-reload_cmds=$lt_reload_cmds + +-# How to pass a linker flag through the compiler. +-wl=$lt_lt_prog_compiler_wl_CXX + +-# Object file suffix (normally "o"). +-objext="$ac_objext" + +-# Old archive suffix (normally "a"). +-libext="$libext" + +-# Shared library suffix (normally ".so"). +-shrext_cmds='$shrext_cmds' + +-# Executable file suffix (normally ""). +-exeext="$exeext" + +-# Additional compiler flags for building library objects. +-pic_flag=$lt_lt_prog_compiler_pic_CXX +-pic_mode=$pic_mode + +-# What is the maximum length of a command? +-max_cmd_len=$lt_cv_sys_max_cmd_len + +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +-# Must we lock files when doing compilation? +-need_locks=$lt_need_locks + +-# Do we need the lib prefix for modules? +-need_lib_prefix=$need_lib_prefix + +-# Do we need a version for libraries? +-need_version=$need_version + +-# Whether dlopen is supported. +-dlopen_support=$enable_dlopen + +-# Whether dlopen of programs is supported. +-dlopen_self=$enable_dlopen_self + +-# Whether dlopen of statically linked programs is supported. +-dlopen_self_static=$enable_dlopen_self_static + +-# Compiler flag to prevent dynamic linking. +-link_static_flag=$lt_lt_prog_compiler_static_CXX + +-# Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +-# Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +-# Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +-# Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +-# Library versioning type. +-version_type=$version_type + +-# Format of library name prefix. +-libname_spec=$lt_libname_spec + +-# List of archive names. First name is the real one, the rest are links. +-# The last name is the one that the linker finds with -lNAME. +-library_names_spec=$lt_library_names_spec + +-# The coded name of the library, if different from the real name. +-soname_spec=$lt_soname_spec + +-# Commands used to build and install an old-style archive. +-RANLIB=$lt_RANLIB +-old_archive_cmds=$lt_old_archive_cmds_CXX +-old_postinstall_cmds=$lt_old_postinstall_cmds +-old_postuninstall_cmds=$lt_old_postuninstall_cmds + +-# Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +-# Create a temporary old-style archive to link instead of a shared archive. +-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +-# Commands used to build and install a shared archive. +-archive_cmds=$lt_archive_cmds_CXX +-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +-postinstall_cmds=$lt_postinstall_cmds +-postuninstall_cmds=$lt_postuninstall_cmds + +-# Commands used to build a loadable module (assumed same as above if empty) +-module_cmds=$lt_module_cmds_CXX +-module_expsym_cmds=$lt_module_expsym_cmds_CXX + +-# Commands to strip libraries. +-old_striplib=$lt_old_striplib +-striplib=$lt_striplib + +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predep_objects=$lt_predep_objects_CXX +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdep_objects=$lt_postdep_objects_CXX +- +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predeps=$lt_predeps_CXX +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdeps=$lt_postdeps_CXX +- +-# The library search path used internally by the compiler when linking +-# a shared library. +-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +-# Method to check whether dependent libraries are shared objects. +-deplibs_check_method=$lt_deplibs_check_method + +-# Command to use when deplibs_check_method == file_magic. +-file_magic_cmd=$lt_file_magic_cmd + +-# Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_allow_undefined_flag_CXX + +-# Flag that forces no undefined symbols. +-no_undefined_flag=$lt_no_undefined_flag_CXX + +-# Commands used to finish a libtool library installation in a directory. +-finish_cmds=$lt_finish_cmds + +-# Same as above, but a single script fragment to be evaled but not shown. +-finish_eval=$lt_finish_eval + +-# Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +-# Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +-# Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +-# This is the shared library runtime path variable. +-runpath_var=$runpath_var + +-# This is the shared library path variable. +-shlibpath_var=$shlibpath_var + +-# Is shlibpath searched before the hard-coded library search path? +-shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +-# How to hardcode a shared library path into an executable. +-hardcode_action=$hardcode_action_CXX + +-# Whether we should hardcode library paths into libraries. +-hardcode_into_libs=$hardcode_into_libs + +-# Flag to hardcode \$libdir into a binary during linking. +-# This must work even if \$libdir does not exist. +-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +-# If ld is used when linking, flag to hardcode \$libdir into +-# a binary during linking. This must work even if \$libdir does +-# not exist. +-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX +- +-# Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX +- +-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +-# resulting binary. +-hardcode_direct=$hardcode_direct_CXX +- +-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +-# resulting binary. +-hardcode_minus_L=$hardcode_minus_L_CXX +- +-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +-# the resulting binary. +-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX +- +-# Set to yes if building a shared library automatically hardcodes DIR into the library +-# and all subsequent libraries and executables linked against it. +-hardcode_automatic=$hardcode_automatic_CXX + +-# Variables whose values should be saved in libtool wrapper scripts and +-# restored at relink time. +-variables_saved_for_relink="$variables_saved_for_relink" + +-# Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$link_all_deplibs_CXX + +-# Compile-time system search path for libraries +-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +-# Run-time system search path for libraries +-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +-# Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path_CXX" + +-# Set to yes if exported symbols are required. +-always_export_symbols=$always_export_symbols_CXX + +-# The commands to list exported symbols. +-export_symbols_cmds=$lt_export_symbols_cmds_CXX + +-# The commands to extract the exported symbol list from a shared archive. +-extract_expsyms_cmds=$lt_extract_expsyms_cmds + +-# Symbols that should not be listed in the preloaded symbols. +-exclude_expsyms=$lt_exclude_expsyms_CXX + +-# Symbols that must always be exported. +-include_expsyms=$lt_include_expsyms_CXX + +-# ### END LIBTOOL TAG CONFIG: $tagname + +-__EOF__ + ++ { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } ++hardcode_action= ++if test -n "$hardcode_libdir_flag_spec" || ++ test -n "$runpath_var" || ++ test "X$hardcode_automatic" = "Xyes" ; then + +-else +- # If there is no Makefile yet, we rely on a make rule to execute +- # `config.status --recheck' to rerun these tests and create the +- # libtool script then. +- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` +- if test -f "$ltmain_in"; then +- test -f Makefile && make "$ltmain" ++ # We can hardcode non-existent directories. ++ if test "$hardcode_direct" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && ++ test "$hardcode_minus_L" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action=immediate + fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action=unsupported + fi ++{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 ++echo "${ECHO_T}$hardcode_action" >&6; } + ++if test "$hardcode_action" = relink || ++ test "$inherit_rpath" = yes; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++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 + +-CC=$lt_save_CC +-LDCXX=$LD +-LD=$lt_save_LD +-GCC=$lt_save_GCC +-with_gnu_ldcxx=$with_gnu_ld +-with_gnu_ld=$lt_save_with_gnu_ld +-lt_cv_path_LDCXX=$lt_cv_path_LD +-lt_cv_path_LD=$lt_save_path_LD +-lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +-lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + +- else +- tagname="" +- fi +- ;; + +- F77) +- if test -n "$F77" && test "X$F77" != "Xno"; then + +-ac_ext=f +-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_f77_compiler_gnu +- +- +-archive_cmds_need_lc_F77=no +-allow_undefined_flag_F77= +-always_export_symbols_F77=no +-archive_expsym_cmds_F77= +-export_dynamic_flag_spec_F77= +-hardcode_direct_F77=no +-hardcode_libdir_flag_spec_F77= +-hardcode_libdir_flag_spec_ld_F77= +-hardcode_libdir_separator_F77= +-hardcode_minus_L_F77=no +-hardcode_automatic_F77=no +-module_cmds_F77= +-module_expsym_cmds_F77= +-link_all_deplibs_F77=unknown +-old_archive_cmds_F77=$old_archive_cmds +-no_undefined_flag_F77= +-whole_archive_flag_spec_F77= +-enable_shared_with_static_runtimes_F77=no + +-# Source file extension for f77 test sources. +-ac_ext=f ++ if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++ lt_cv_dlopen=no ++ lt_cv_dlopen_libs= + +-# Object file extension for compiled f77 test sources. +-objext=o +-objext_F77=$objext ++ case $host_os in ++ beos*) ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; + +-# Code to be used in simple compile tests +-lt_simple_compile_test_code=" subroutine t\n return\n end\n" ++ mingw* | pw32*) ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= ++ ;; + +-# Code to be used in simple link tests +-lt_simple_link_test_code=" program t\n end\n" ++ cygwin*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; + +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++ darwin*) ++ # if libdl is installed we need to link against it ++ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dl_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-# If no C compiler was specified, use CC. +-LTCC=${LTCC-"$CC"} ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dl_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# If no C compiler flags were specified, use CFLAGS. +-LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ac_cv_lib_dl_dlopen=no ++fi + +-# Allow CC to be a program name with arguments. +-compiler=$CC ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } ++if test $ac_cv_lib_dl_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else + ++ lt_cv_dlopen="dyld" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes + +-# save warnings/boilerplate of simple test code +-ac_outfile=conftest.$ac_objext +-printf "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_compiler_boilerplate=`cat conftest.err` +-$rm conftest* ++fi + +-ac_outfile=conftest.$ac_objext +-printf "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_linker_boilerplate=`cat conftest.err` +-$rm conftest* ++ ;; + ++ *) ++ { echo "$as_me:$LINENO: checking for shl_load" >&5 ++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } ++if test "${ac_cv_func_shl_load+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define shl_load to an innocuous variant, in case declares shl_load. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define shl_load innocuous_shl_load + +-# Allow CC to be a program name with arguments. +-lt_save_CC="$CC" +-CC=${F77-"f77"} +-compiler=$CC +-compiler_F77=$CC +-for cc_temp in $compiler""; do +- case $cc_temp in +- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; +- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; +- \-*) ;; +- *) break;; +- esac +-done +-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char shl_load (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ + ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif + +-echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $can_build_shared" >&5 +-echo "${ECHO_T}$can_build_shared" >&6 ++#undef shl_load + +-echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +-test "$can_build_shared" = "no" && enable_shared=no ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shl_load (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_shl_load || defined __stub___shl_load ++choke me ++#endif + +-# On AIX, shared libraries and static libraries use the same namespace, and +-# are all built from PIC. +-case $host_os in +-aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; +-aix4* | aix5*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; ++int ++main () ++{ ++return shl_load (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; + esac +-echo "$as_me:$LINENO: result: $enable_shared" >&5 +-echo "${ECHO_T}$enable_shared" >&6 ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_shl_load=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +-# Make sure either enable_shared or enable_static is yes. +-test "$enable_shared" = yes || enable_static=yes +-echo "$as_me:$LINENO: result: $enable_static" >&5 +-echo "${ECHO_T}$enable_static" >&6 +- +-GCC_F77="$G77" +-LD_F77="$LD" +- +-lt_prog_compiler_wl_F77= +-lt_prog_compiler_pic_F77= +-lt_prog_compiler_static_F77= ++ ac_cv_func_shl_load=no ++fi + +-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 ++echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } ++if test $ac_cv_func_shl_load = yes; then ++ lt_cv_dlopen="shl_load" ++else ++ { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 ++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dld_shl_load+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +- if test "$GCC" = yes; then +- lt_prog_compiler_wl_F77='-Wl,' +- lt_prog_compiler_static_F77='-static' ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shl_load (); ++int ++main () ++{ ++return shl_load (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dld_shl_load=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_prog_compiler_static_F77='-Bstatic' +- fi +- ;; ++ ac_cv_lib_dld_shl_load=no ++fi + +- amigaos*) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' +- ;; ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 ++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } ++if test $ac_cv_lib_dld_shl_load = yes; then ++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" ++else ++ { echo "$as_me:$LINENO: checking for dlopen" >&5 ++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } ++if test "${ac_cv_func_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define dlopen to an innocuous variant, in case declares dlopen. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define dlopen innocuous_dlopen + +- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char dlopen (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ + +- mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_prog_compiler_pic_F77='-DDLL_EXPORT' +- ;; ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif + +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- lt_prog_compiler_pic_F77='-fno-common' +- ;; ++#undef dlopen + +- interix3*) +- # Interix 3.x gcc -fpic/-fPIC options generate broken code. +- # Instead, we relocate shared libraries at runtime. +- ;; ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_dlopen || defined __stub___dlopen ++choke me ++#endif + +- msdosdjgpp*) +- # Just because we use GCC doesn't mean we suddenly get shared libraries +- # on systems that don't support them. +- lt_prog_compiler_can_build_shared_F77=no +- enable_shared=no +- ;; ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- sysv4*MP*) +- if test -d /usr/nec; then +- lt_prog_compiler_pic_F77=-Kconform_pic +- fi +- ;; ++ ac_cv_func_dlopen=no ++fi + +- hpux*) +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- lt_prog_compiler_pic_F77='-fPIC' +- ;; +- esac +- ;; ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } ++if test $ac_cv_func_dlopen = yes; then ++ lt_cv_dlopen="dlopen" ++else ++ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dl_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +- *) +- lt_prog_compiler_pic_F77='-fPIC' +- ;; +- esac +- else +- # PORTME Check for flag to pass linker flags through the system compiler. +- case $host_os in +- aix*) +- lt_prog_compiler_wl_F77='-Wl,' +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_prog_compiler_static_F77='-Bstatic' +- else +- lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- darwin*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- case $cc_basename in +- xlc*) +- lt_prog_compiler_pic_F77='-qnocommon' +- lt_prog_compiler_wl_F77='-Wl,' +- ;; +- esac +- ;; +- +- mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_prog_compiler_pic_F77='-DDLL_EXPORT' +- ;; +- +- hpux9* | hpux10* | hpux11*) +- lt_prog_compiler_wl_F77='-Wl,' +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- lt_prog_compiler_pic_F77='+Z' +- ;; +- esac +- # Is there a better lt_prog_compiler_static that works with the bundled CC? +- lt_prog_compiler_static_F77='${wl}-a ${wl}archive' +- ;; ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dl_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- irix5* | irix6* | nonstopux*) +- lt_prog_compiler_wl_F77='-Wl,' +- # PIC (with -KPIC) is the default. +- lt_prog_compiler_static_F77='-non_shared' +- ;; ++ ac_cv_lib_dl_dlopen=no ++fi + +- newsos6) +- lt_prog_compiler_pic_F77='-KPIC' +- lt_prog_compiler_static_F77='-Bstatic' +- ;; ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } ++if test $ac_cv_lib_dl_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 ++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_svld_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsvld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +- linux*) +- case $cc_basename in +- icc* | ecc*) +- lt_prog_compiler_wl_F77='-Wl,' +- lt_prog_compiler_pic_F77='-KPIC' +- lt_prog_compiler_static_F77='-static' +- ;; +- pgcc* | pgf77* | pgf90* | pgf95*) +- # Portland Group compilers (*not* the Pentium gcc compiler, +- # which looks to be a dead project) +- lt_prog_compiler_wl_F77='-Wl,' +- lt_prog_compiler_pic_F77='-fpic' +- lt_prog_compiler_static_F77='-Bstatic' +- ;; +- ccc*) +- lt_prog_compiler_wl_F77='-Wl,' +- # All Alpha code is PIC. +- lt_prog_compiler_static_F77='-non_shared' +- ;; +- esac +- ;; ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_svld_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- osf3* | osf4* | osf5*) +- lt_prog_compiler_wl_F77='-Wl,' +- # All OSF/1 code is PIC. +- lt_prog_compiler_static_F77='-non_shared' +- ;; ++ ac_cv_lib_svld_dlopen=no ++fi + +- solaris*) +- lt_prog_compiler_pic_F77='-KPIC' +- lt_prog_compiler_static_F77='-Bstatic' +- case $cc_basename in +- f77* | f90* | f95*) +- lt_prog_compiler_wl_F77='-Qoption ld ';; +- *) +- lt_prog_compiler_wl_F77='-Wl,';; +- esac +- ;; ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } ++if test $ac_cv_lib_svld_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" ++else ++ { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 ++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dld_dld_link+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +- sunos4*) +- lt_prog_compiler_wl_F77='-Qoption ld ' +- lt_prog_compiler_pic_F77='-PIC' +- lt_prog_compiler_static_F77='-Bstatic' +- ;; ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dld_link (); ++int ++main () ++{ ++return dld_link (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dld_dld_link=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- sysv4 | sysv4.2uw2* | sysv4.3*) +- lt_prog_compiler_wl_F77='-Wl,' +- lt_prog_compiler_pic_F77='-KPIC' +- lt_prog_compiler_static_F77='-Bstatic' +- ;; ++ ac_cv_lib_dld_dld_link=no ++fi + +- sysv4*MP*) +- if test -d /usr/nec ;then +- lt_prog_compiler_pic_F77='-Kconform_pic' +- lt_prog_compiler_static_F77='-Bstatic' +- fi +- ;; ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 ++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } ++if test $ac_cv_lib_dld_dld_link = yes; then ++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" ++fi + +- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) +- lt_prog_compiler_wl_F77='-Wl,' +- lt_prog_compiler_pic_F77='-KPIC' +- lt_prog_compiler_static_F77='-Bstatic' +- ;; + +- unicos*) +- lt_prog_compiler_wl_F77='-Wl,' +- lt_prog_compiler_can_build_shared_F77=no +- ;; ++fi + +- uts4*) +- lt_prog_compiler_pic_F77='-pic' +- lt_prog_compiler_static_F77='-Bstatic' +- ;; + +- *) +- lt_prog_compiler_can_build_shared_F77=no +- ;; +- esac +- fi ++fi + +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 + +-# +-# Check to make sure the PIC flag actually works. +-# +-if test -n "$lt_prog_compiler_pic_F77"; then ++fi + +-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 +-if test "${lt_prog_compiler_pic_works_F77+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_prog_compiler_pic_works_F77=no +- ac_outfile=conftest.$ac_objext +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- lt_compiler_flag="$lt_prog_compiler_pic_F77" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- # The option is referenced via a variable to avoid confusing sed. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:13252: $lt_compile\"" >&5) +- (eval "$lt_compile" 2>conftest.err) +- ac_status=$? +- cat conftest.err >&5 +- echo "$as_me:13256: \$? = $ac_status" >&5 +- if (exit $ac_status) && test -s "$ac_outfile"; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then +- lt_prog_compiler_pic_works_F77=yes +- fi +- fi +- $rm conftest* + + fi +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 + +-if test x"$lt_prog_compiler_pic_works_F77" = xyes; then +- case $lt_prog_compiler_pic_F77 in +- "" | " "*) ;; +- *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; +- esac +-else +- lt_prog_compiler_pic_F77= +- lt_prog_compiler_can_build_shared_F77=no +-fi + + fi +-case $host_os in +- # For platforms which do not support PIC, -DPIC is meaningless: +- *djgpp*) +- lt_prog_compiler_pic_F77= +- ;; +- *) +- lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ++ + ;; +-esac ++ esac + +-# +-# Check to make sure the static flag actually works. +-# +-wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" +-echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +-if test "${lt_prog_compiler_static_works_F77+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_prog_compiler_static_works_F77=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $lt_tmp_static_flag" +- printf "$lt_simple_link_test_code" > conftest.$ac_ext +- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then +- # The linker can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- # Append any errors to the config.log. +- cat conftest.err 1>&5 +- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if diff conftest.exp conftest.er2 >/dev/null; then +- lt_prog_compiler_static_works_F77=yes +- fi +- else +- lt_prog_compiler_static_works_F77=yes +- fi +- fi +- $rm conftest* +- LDFLAGS="$save_LDFLAGS" ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ else ++ enable_dlopen=no ++ fi + +-fi +-echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5 +-echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6 ++ case $lt_cv_dlopen in ++ dlopen) ++ save_CPPFLAGS="$CPPFLAGS" ++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + +-if test x"$lt_prog_compiler_static_works_F77" = xyes; then +- : +-else +- lt_prog_compiler_static_F77= +-fi ++ save_LDFLAGS="$LDFLAGS" ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + ++ save_LIBS="$LIBS" ++ LIBS="$lt_cv_dlopen_libs $LIBS" + +-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +-if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then ++ { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 ++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } ++if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- lt_cv_prog_compiler_c_o_F77=no +- $rm -r conftest 2>/dev/null +- mkdir conftest +- cd conftest +- mkdir out +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- lt_compiler_flag="-o out/conftest2.$ac_objext" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:13356: $lt_compile\"" >&5) +- (eval "$lt_compile" 2>out/conftest.err) +- ac_status=$? +- cat out/conftest.err >&5 +- echo "$as_me:13360: \$? = $ac_status" >&5 +- if (exit $ac_status) && test -s out/conftest2.$ac_objext +- then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp +- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 +- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then +- lt_cv_prog_compiler_c_o_F77=yes +- fi +- fi +- chmod u+w . 2>&5 +- $rm conftest* +- # SGI C++ compiler will create directory out/ii_files/ for +- # template instantiation +- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files +- $rm out/* && rmdir out +- cd .. +- rmdir conftest +- $rm conftest* ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext <<_LT_EOF ++#line 10568 "configure" ++#include "confdefs.h" + +-fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 ++#if HAVE_DLFCN_H ++#include ++#endif + ++#include + +-hard_links="nottested" +-if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 +- hard_links=yes +- $rm conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- echo "$as_me:$LINENO: result: $hard_links" >&5 +-echo "${ECHO_T}$hard_links" >&6 +- if test "$hard_links" = no; then +- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} +- need_locks=warn +- fi +-else +- need_locks=no +-fi ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif + +-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif + +- runpath_var= +- allow_undefined_flag_F77= +- enable_shared_with_static_runtimes_F77=no +- archive_cmds_F77= +- archive_expsym_cmds_F77= +- old_archive_From_new_cmds_F77= +- old_archive_from_expsyms_cmds_F77= +- export_dynamic_flag_spec_F77= +- whole_archive_flag_spec_F77= +- thread_safe_flag_spec_F77= +- hardcode_libdir_flag_spec_F77= +- hardcode_libdir_flag_spec_ld_F77= +- hardcode_libdir_separator_F77= +- hardcode_direct_F77=no +- hardcode_minus_L_F77=no +- hardcode_shlibpath_var_F77=unsupported +- link_all_deplibs_F77=unknown +- hardcode_automatic_F77=no +- module_cmds_F77= +- module_expsym_cmds_F77= +- always_export_symbols_F77=no +- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- # include_expsyms should be a list of space-separated symbols to be *always* +- # included in the symbol list +- include_expsyms_F77= +- # exclude_expsyms can be an extended regexp of symbols to exclude +- # it will be wrapped by ` (' and `)$', so one must not match beginning or +- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +- # as well as any symbol that contains `d'. +- exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" +- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +- # platforms (ab)use it in PIC code, but their linkers get confused if +- # the symbol is explicitly referenced. Since portable code cannot +- # rely on this symbol name, it's probably fine to never include it in +- # preloaded symbol tables. +- extract_expsyms_cmds= +- # Just being paranoid about ensuring that cc_basename is set. +- for cc_temp in $compiler""; do +- case $cc_temp in +- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; +- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; +- \-*) ;; +- *) break;; +- esac +-done +-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif + +- case $host_os in +- cygwin* | mingw* | pw32*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- if test "$GCC" != yes; then +- with_gnu_ld=no +- fi +- ;; +- interix*) +- # we just hope/assume this is gcc and not c89 (= MSVC++) +- with_gnu_ld=yes +- ;; +- openbsd*) +- with_gnu_ld=no +- ;; +- esac ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; + +- ld_shlibs_F77=yes +- if test "$with_gnu_ld" = yes; then +- # If archive_cmds runs LD, not CC, wlarc should be empty +- wlarc='${wl}' ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); + +- # Set some defaults for GNU ld with shared library support. These +- # are reset later if shared libraries are not supported. Putting them +- # here allows them to be overridden if necessary. +- runpath_var=LD_RUN_PATH +- hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' +- export_dynamic_flag_spec_F77='${wl}--export-dynamic' +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then +- whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- whole_archive_flag_spec_F77= +- fi +- supports_anon_versioning=no +- case `$LD -v 2>/dev/null` in +- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 +- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... +- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... +- *\ 2.11.*) ;; # other 2.11 versions +- *) supports_anon_versioning=yes ;; ++ exit (status); ++} ++_LT_EOF ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self=no ++ fi ++fi ++rm -fr conftest* + +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix3* | aix4* | aix5*) +- # On AIX/PPC, the GNU linker is very broken +- if test "$host_cpu" != ia64; then +- ld_shlibs_F77=no +- cat <&2 +- +-*** Warning: the GNU linker, at least up to release 2.9.1, is reported +-*** to be unable to reliably create shared libraries on AIX. +-*** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to modify your PATH +-*** so that a non-GNU linker is found, and then restart. + +-EOF +- fi +- ;; ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 ++echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } + +- amigaos*) +- archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- hardcode_libdir_flag_spec_F77='-L$libdir' +- hardcode_minus_L_F77=yes +- +- # Samuel A. Falvo II reports +- # that the semantics of dynamic libraries on AmigaOS, at least up +- # to version 4, is to share data among multiple programs linked +- # with the same dynamic library. Since this doesn't match the +- # behavior of shared libraries on other platforms, we can't use +- # them. +- ld_shlibs_F77=no +- ;; ++ if test "x$lt_cv_dlopen_self" = xyes; then ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" ++ { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 ++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } ++if test "${lt_cv_dlopen_self_static+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self_static=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext <<_LT_EOF ++#line 10668 "configure" ++#include "confdefs.h" + +- beos*) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- allow_undefined_flag_F77=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- ld_shlibs_F77=no +- fi +- ;; ++#if HAVE_DLFCN_H ++#include ++#endif + +- cygwin* | mingw* | pw32*) +- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, +- # as there is no search path for DLLs. +- hardcode_libdir_flag_spec_F77='-L$libdir' +- allow_undefined_flag_F77=unsupported +- always_export_symbols_F77=no +- enable_shared_with_static_runtimes_F77=yes +- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ++#include + +- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then +- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- else +- ld_shlibs_F77=no +- fi +- ;; ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif + +- interix3*) +- hardcode_direct_F77=no +- hardcode_shlibpath_var_F77=no +- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' +- export_dynamic_flag_spec_F77='${wl}-E' +- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. +- # Instead, shared libraries are loaded at an image base (0x10000000 by +- # default) and relocated if they conflict, which is a slow very memory +- # consuming and fragmenting process. To avoid this, we pick a random, +- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link +- # time. Moving up from 0x10000000 also allows more sbrk(2) space. +- archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- ;; ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif + +- linux*) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- tmp_addflag= +- case $cc_basename,$host_cpu in +- pgcc*) # Portland Group C compiler +- whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag' +- ;; +- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers +- whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag -Mnomain' ;; +- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 +- tmp_addflag=' -i_dynamic' ;; +- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 +- tmp_addflag=' -i_dynamic -nofor_main' ;; +- ifc* | ifort*) # Intel Fortran compiler +- tmp_addflag=' -nofor_main' ;; +- esac +- archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif + +- if test $supports_anon_versioning = yes; then +- archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- $echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +- fi +- else +- ld_shlibs_F77=no +- fi +- ;; ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; + +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= +- else +- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- fi +- ;; ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); + +- solaris*) +- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then +- ld_shlibs_F77=no +- cat <&2 ++ exit (status); ++} ++_LT_EOF ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; ++ esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self_static=no ++ fi ++fi ++rm -fr conftest* + +-*** Warning: The releases 2.8.* of the GNU linker cannot reliably +-*** create shared libraries on Solaris systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.9.1 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. + +-EOF +- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- ld_shlibs_F77=no +- fi +- ;; ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 ++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } ++ fi + +- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) +- case `$LD -v 2>&1` in +- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) +- ld_shlibs_F77=no +- cat <<_LT_EOF 1>&2 ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ ;; ++ esac + +-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +-*** reliably create shared libraries on SCO systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. ++ case $lt_cv_dlopen_self in ++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; ++ *) enable_dlopen_self=unknown ;; ++ esac + +-_LT_EOF +- ;; +- *) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' +- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' +- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' +- else +- ld_shlibs_F77=no +- fi +- ;; +- esac +- ;; ++ case $lt_cv_dlopen_self_static in ++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; ++ *) enable_dlopen_self_static=unknown ;; ++ esac ++fi + +- sunos4*) +- archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- wlarc= +- hardcode_direct_F77=yes +- hardcode_shlibpath_var_F77=no +- ;; + +- *) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- ld_shlibs_F77=no +- fi +- ;; +- esac + +- if test "$ld_shlibs_F77" = no; then +- runpath_var= +- hardcode_libdir_flag_spec_F77= +- export_dynamic_flag_spec_F77= +- whole_archive_flag_spec_F77= +- fi +- else +- # PORTME fill in a description of your system's linker (not GNU ld) +- case $host_os in +- aix3*) +- allow_undefined_flag_F77=unsupported +- always_export_symbols_F77=yes +- archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' +- # Note: this linker hardcodes the directories in LIBPATH if there +- # are no directories specified by -L. +- hardcode_minus_L_F77=yes +- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then +- # Neither direct hardcoding nor static linking is supported with a +- # broken collect2. +- hardcode_direct_F77=unsupported +- fi +- ;; + +- aix4* | aix5*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then +- export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' +- else +- export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' +- fi +- aix_use_runtimelinking=no + +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[23]|aix4.[23].*|aix5*) +- for ld_flag in $LDFLAGS; do +- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +- aix_use_runtimelinking=yes +- break +- fi +- done +- ;; +- esac + +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi + +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + +- archive_cmds_F77='' +- hardcode_direct_F77=yes +- hardcode_libdir_separator_F77=':' +- link_all_deplibs_F77=yes + +- if test "$GCC" = yes; then +- case $host_os in aix4.[012]|aix4.[012].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && \ +- strings "$collect2name" | grep resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- hardcode_direct_F77=yes +- else +- # We have old collect2 +- hardcode_direct_F77=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- hardcode_minus_L_F77=yes +- hardcode_libdir_flag_spec_F77='-L$libdir' +- hardcode_libdir_separator_F77= +- fi +- ;; +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +- # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi + +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to export. +- always_export_symbols_F77=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag_F77='-berok' +- # Determine the default libpath from the value encoded in an empty executable. +- cat >conftest.$ac_ext <<_ACEOF +- program main + +- end +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_f77_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then + +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` +-# Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + +- hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" +- archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' +- allow_undefined_flag_F77="-z nodefs" +- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" +- else +- # Determine the default libpath from the value encoded in an empty executable. +- cat >conftest.$ac_ext <<_ACEOF +- program main + +- end +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_f77_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then + +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` +-# Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + ++striplib= ++old_striplib= ++{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 ++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } ++if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then ++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" ++ test -z "$striplib" && striplib="$STRIP --strip-unneeded" ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++else ++# FIXME - insert some real tests, host_os isn't really good enough ++ case $host_os in ++ darwin*) ++ if test -n "$STRIP" ; then ++ striplib="$STRIP -x" ++ old_striplib="$STRIP -S" ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ fi ++ ;; ++ *) ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ ;; ++ esac + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + +- hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- no_undefined_flag_F77=' ${wl}-bernotok' +- allow_undefined_flag_F77=' ${wl}-berok' +- # Exported symbols can be pulled into shared objects from archives +- whole_archive_flag_spec_F77='$convenience' +- archive_cmds_need_lc_F77=yes +- # This is similar to how AIX traditionally builds its shared libraries. +- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +- fi +- fi +- ;; + +- amigaos*) +- archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- hardcode_libdir_flag_spec_F77='-L$libdir' +- hardcode_minus_L_F77=yes +- # see comment about different semantics on the GNU ld section +- ld_shlibs_F77=no +- ;; + +- bsdi[45]*) +- export_dynamic_flag_spec_F77=-rdynamic +- ;; + +- cygwin* | mingw* | pw32*) +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec_F77=' ' +- allow_undefined_flag_F77=unsupported +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' +- # The linker will automatically build a .lib file if we build a DLL. +- old_archive_From_new_cmds_F77='true' +- # FIXME: Should let the user specify the lib program. +- old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' +- fix_srcfile_path_F77='`cygpath -w "$srcfile"`' +- enable_shared_with_static_runtimes_F77=yes +- ;; +- +- darwin* | rhapsody*) +- case $host_os in +- rhapsody* | darwin1.[012]) +- allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' +- ;; +- *) # Darwin 1.3 on +- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then +- allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- else +- case ${MACOSX_DEPLOYMENT_TARGET} in +- 10.[012]) +- allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- ;; +- 10.*) +- allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' +- ;; +- esac +- fi +- ;; +- esac +- archive_cmds_need_lc_F77=no +- hardcode_direct_F77=no +- hardcode_automatic_F77=yes +- hardcode_shlibpath_var_F77=unsupported +- whole_archive_flag_spec_F77='' +- link_all_deplibs_F77=yes +- if test "$GCC" = yes ; then +- output_verbose_link_cmd='echo' +- archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' +- module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds +- archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- else +- case $cc_basename in +- xlc*) +- output_verbose_link_cmd='echo' +- archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' +- module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds +- archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- ;; +- *) +- ld_shlibs_F77=no +- ;; +- esac +- fi +- ;; + +- dgux*) +- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec_F77='-L$libdir' +- hardcode_shlibpath_var_F77=no +- ;; + +- freebsd1*) +- ld_shlibs_F77=no +- ;; + +- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +- # support. Future versions do this automatically, but an explicit c++rt0.o +- # does not break anything, and helps significantly (at the cost of a little +- # extra space). +- freebsd2.2*) +- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +- hardcode_libdir_flag_spec_F77='-R$libdir' +- hardcode_direct_F77=yes +- hardcode_shlibpath_var_F77=no +- ;; + +- # Unfortunately, older versions of FreeBSD 2 do not have this feature. +- freebsd2*) +- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct_F77=yes +- hardcode_minus_L_F77=yes +- hardcode_shlibpath_var_F77=no +- ;; + +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd* | kfreebsd*-gnu | dragonfly*) +- archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec_F77='-R$libdir' +- hardcode_direct_F77=yes +- hardcode_shlibpath_var_F77=no +- ;; + +- hpux9*) +- if test "$GCC" = yes; then +- archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- else +- archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- fi +- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator_F77=: +- hardcode_direct_F77=yes + +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- hardcode_minus_L_F77=yes +- export_dynamic_flag_spec_F77='${wl}-E' +- ;; + +- hpux10*) +- if test "$GCC" = yes -a "$with_gnu_ld" = no; then +- archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +- fi +- if test "$with_gnu_ld" = no; then +- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator_F77=: ++ # Report which library types will actually be built ++ { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 ++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } ++ { echo "$as_me:$LINENO: result: $can_build_shared" >&5 ++echo "${ECHO_T}$can_build_shared" >&6; } + +- hardcode_direct_F77=yes +- export_dynamic_flag_spec_F77='${wl}-E' ++ { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 ++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } ++ test "$can_build_shared" = "no" && enable_shared=no + +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- hardcode_minus_L_F77=yes +- fi +- ;; ++ # On AIX, shared libraries and static libraries use the same namespace, and ++ # are all built from PIC. ++ case $host_os in ++ aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' ++ fi ++ ;; + +- hpux11*) +- if test "$GCC" = yes -a "$with_gnu_ld" = no; then +- case $host_cpu in +- hppa*64*) +- archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- else +- case $host_cpu in +- hppa*64*) +- archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- fi +- if test "$with_gnu_ld" = no; then +- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator_F77=: ++ aix[4-9]*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++ esac ++ { echo "$as_me:$LINENO: result: $enable_shared" >&5 ++echo "${ECHO_T}$enable_shared" >&6; } + +- case $host_cpu in +- hppa*64*|ia64*) +- hardcode_libdir_flag_spec_ld_F77='+b $libdir' +- hardcode_direct_F77=no +- hardcode_shlibpath_var_F77=no +- ;; +- *) +- hardcode_direct_F77=yes +- export_dynamic_flag_spec_F77='${wl}-E' ++ { echo "$as_me:$LINENO: checking whether to build static libraries" >&5 ++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } ++ # Make sure either enable_shared or enable_static is yes. ++ test "$enable_shared" = yes || enable_static=yes ++ { echo "$as_me:$LINENO: result: $enable_static" >&5 ++echo "${ECHO_T}$enable_static" >&6; } + +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- hardcode_minus_L_F77=yes +- ;; +- esac +- fi +- ;; + +- irix5* | irix6* | nonstopux*) +- if test "$GCC" = yes; then +- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' +- fi +- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator_F77=: +- link_all_deplibs_F77=yes +- ;; + +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +- else +- archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +- fi +- hardcode_libdir_flag_spec_F77='-R$libdir' +- hardcode_direct_F77=yes +- hardcode_shlibpath_var_F77=no +- ;; + +- newsos6) +- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct_F77=yes +- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator_F77=: +- hardcode_shlibpath_var_F77=no +- ;; ++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 + +- openbsd*) +- hardcode_direct_F77=yes +- hardcode_shlibpath_var_F77=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' +- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' +- export_dynamic_flag_spec_F77='${wl}-E' +- else +- case $host_os in +- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) +- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec_F77='-R$libdir' +- ;; +- *) +- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- ;; ++CC="$lt_save_CC" + +- os2*) +- hardcode_libdir_flag_spec_F77='-L$libdir' +- hardcode_minus_L_F77=yes +- allow_undefined_flag_F77=unsupported +- archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +- old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +- ;; + +- osf3*) +- if test "$GCC" = yes; then +- allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- allow_undefined_flag_F77=' -expect_unresolved \*' +- archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator_F77=: +- ;; + +- osf4* | osf5*) # as osf3* with the addition of -msym flag +- if test "$GCC" = yes; then +- allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' +- else +- allow_undefined_flag_F77=' -expect_unresolved \*' +- archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ +- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + +- # Both c and cxx compiler support -rpath directly +- hardcode_libdir_flag_spec_F77='-rpath $libdir' +- fi +- hardcode_libdir_separator_F77=: +- ;; + +- solaris*) +- no_undefined_flag_F77=' -z text' +- if test "$GCC" = yes; then +- wlarc='${wl}' +- archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' +- else +- wlarc='' +- archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- fi +- hardcode_libdir_flag_spec_F77='-R$libdir' +- hardcode_shlibpath_var_F77=no +- case $host_os in +- solaris2.[0-5] | solaris2.[0-5].*) ;; +- *) +- # The compiler driver will combine linker options so we +- # cannot just pass the convience library names through +- # without $wl, iff we do not link with $LD. +- # Luckily, gcc supports the same syntax we need for Sun Studio. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- case $wlarc in +- '') +- whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; +- *) +- whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; +- esac ;; +- esac +- link_all_deplibs_F77=yes +- ;; + +- sunos4*) +- if test "x$host_vendor" = xsequent; then +- # Use $CC to link under sequent, because it throws in some extra .o +- # files that make .init and .fini sections work. +- archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +- fi +- hardcode_libdir_flag_spec_F77='-L$libdir' +- hardcode_direct_F77=yes +- hardcode_minus_L_F77=yes +- hardcode_shlibpath_var_F77=no +- ;; + +- sysv4) +- case $host_vendor in +- sni) +- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct_F77=yes # is this really true??? +- ;; +- siemens) +- ## LD is ld it makes a PLAMLIB +- ## CC just makes a GrossModule. +- archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- reload_cmds_F77='$CC -r -o $output$reload_objs' +- hardcode_direct_F77=no +- ;; +- motorola) +- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie +- ;; +- esac +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var_F77=no +- ;; + +- sysv4.3*) +- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var_F77=no +- export_dynamic_flag_spec_F77='-Bexport' +- ;; + +- sysv4*MP*) +- if test -d /usr/nec; then +- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var_F77=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- ld_shlibs_F77=yes +- fi +- ;; + +- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) +- no_undefined_flag_F77='${wl}-z,text' +- archive_cmds_need_lc_F77=no +- hardcode_shlibpath_var_F77=no +- runpath_var='LD_RUN_PATH' + +- if test "$GCC" = yes; then +- archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; + +- sysv5* | sco3.2v5* | sco5v6*) +- # Note: We can NOT use -z defs as we might desire, because we do not +- # link with -lc, and that would cause any symbols used from libc to +- # always be unresolved, which means just about no library would +- # ever link correctly. If we're not using GNU ld we use -z text +- # though, which does catch some bad symbols but isn't as heavy-handed +- # as -z defs. +- no_undefined_flag_F77='${wl}-z,text' +- allow_undefined_flag_F77='${wl}-z,nodefs' +- archive_cmds_need_lc_F77=no +- hardcode_shlibpath_var_F77=no +- hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' +- hardcode_libdir_separator_F77=':' +- link_all_deplibs_F77=yes +- export_dynamic_flag_spec_F77='${wl}-Bexport' +- runpath_var='LD_RUN_PATH' + +- if test "$GCC" = yes; then +- archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; ++ ac_config_commands="$ac_config_commands libtool" + +- uts4*) +- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec_F77='-L$libdir' +- hardcode_shlibpath_var_F77=no +- ;; + +- *) +- ld_shlibs_F77=no +- ;; +- esac +- fi + +-echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +-echo "${ECHO_T}$ld_shlibs_F77" >&6 +-test "$ld_shlibs_F77" = no && can_build_shared=no + +-# +-# Do we need to explicitly link libc? +-# +-case "x$archive_cmds_need_lc_F77" in +-x|xyes) +- # Assume -lc should be added +- archive_cmds_need_lc_F77=yes ++# Only expand once: + +- if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $archive_cmds_F77 in +- *'~'*) +- # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 +- $rm conftest* +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext + +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } 2>conftest.err; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$lt_prog_compiler_wl_F77 +- pic_flag=$lt_prog_compiler_pic_F77 +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- lt_save_allow_undefined_flag=$allow_undefined_flag_F77 +- allow_undefined_flag_F77= +- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 +- (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +- then +- archive_cmds_need_lc_F77=no +- else +- archive_cmds_need_lc_F77=yes +- fi +- allow_undefined_flag_F77=$lt_save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +- $rm conftest* +- echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +-echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 +- ;; +- esac ++# Extract the first word of "ar", so it can be a program name with args. ++set dummy ar; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_path_AR+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $AR in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_AR="$AR" # Let the user override the test with a path. ++ ;; ++ *) ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++as_dummy="$PATH:/usr/ccs/bin" ++for as_dir in $as_dummy ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 + fi ++done ++done ++IFS=$as_save_IFS ++ ++ test -z "$ac_cv_path_AR" && ac_cv_path_AR="/usr/bin/ar" + ;; + esac ++fi ++AR=$ac_cv_path_AR ++if test -n "$AR"; then ++ { echo "$as_me:$LINENO: result: $AR" >&5 ++echo "${ECHO_T}$AR" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi + +-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-shrext_cmds=".so" +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then +- # if the path contains ";" then we assume it to be the separator +- # otherwise default to the standard path separator (i.e. ":") - it is +- # assumed that no part of a normal pathname contains ";" but that should +- # okay in the real world where ";" in dirpaths is itself problematic. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +-else +- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +-fi +-need_lib_prefix=unknown +-hardcode_into_libs=no + +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-need_version=unknown + +-case $host_os in +-aix3*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' +- shlibpath_var=LIBPATH ++# Options + +- # AIX 3 has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; + +-aix4* | aix5*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- hardcode_into_libs=yes +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- else +- # With GCC up to 2.95.x, collect2 would create an import file +- # for dependence libraries. The import file would start with +- # the line `#! .'. This would cause the generated library to +- # depend on `.', always an invalid library. This was fixed in +- # development snapshots of GCC prior to 3.0. +- case $host_os in +- aix4 | aix4.[01] | aix4.[01].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then +- : +- else +- can_build_shared=no +- fi +- ;; +- esac +- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct +- # soname into executable. Probably we can add versioning support to +- # collect2, so additional links can be useful in future. +- if test "$aix_use_runtimelinking" = yes; then +- # If using run time linking (on AIX 4.2 or later) use lib.so +- # instead of lib.a to let people know that these are not +- # typical AIX shared libraries. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- else +- # We preserve .a as extension for shared libraries through AIX4.2 +- # and later when we are not doing run time linking. +- library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}${shared_ext}$major' +- fi +- shlibpath_var=LIBPATH +- fi +- ;; + +-amigaos*) +- library_names_spec='$libname.ixlibrary $libname.a' +- # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' +- ;; ++# Check whether --with-tightvnc-filetransfer was given. ++if test "${with_tightvnc_filetransfer+set}" = set; then ++ withval=$with_tightvnc_filetransfer; ++else ++ with_tightvnc_filetransfer=yes ++fi + +-beos*) +- library_names_spec='${libname}${shared_ext}' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; ++# AC_DEFINE moved to after libpthread check. + +-bsdi[45]*) +- version_type=linux +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" +- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- # the default ld.so.conf also contains /usr/contrib/lib and +- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow +- # libtool to hard-code these into programs +- ;; + +-cygwin* | mingw* | pw32*) +- version_type=windows +- shrext_cmds=".dll" +- need_version=no +- need_lib_prefix=no + +- case $GCC,$host_os in +- yes,cygwin* | yes,mingw* | yes,pw32*) +- library_names_spec='$libname.dll.a' +- # DLL is installed to $(libdir)/../bin by postinstall_cmds +- postinstall_cmds='base_file=`basename \${file}`~ +- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname~ +- chmod a+x \$dldir/$dlname' +- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $rm \$dlpath' +- shlibpath_overrides_runpath=yes + +- case $host_os in +- cygwin*) +- # Cygwin DLLs use 'cyg' prefix rather than 'lib' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" +- ;; +- mingw*) +- # MinGW DLLs use traditional 'lib' prefix +- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then +- # It is most probably a Windows format PATH printed by +- # mingw gcc, but we are running on Cygwin. Gcc prints its search +- # path with ; separators, and with drive letters. We can handle the +- # drive letters (cygwin fileutils understands them), so leave them, +- # especially as we might pass files found there to a mingw objdump, +- # which wouldn't understand a cygwinified path. Ahh. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +- ;; +- pw32*) +- # pw32 DLLs use 'pw' prefix rather than 'lib' +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- ;; +- esac +- ;; ++# Check whether --with-24bpp was given. ++if test "${with_24bpp+set}" = set; then ++ withval=$with_24bpp; ++else ++ with_24bpp=yes ++fi + +- *) +- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' +- ;; +- esac +- dynamic_linker='Win32 ld.exe' +- # FIXME: first we should search . and the directory the executable is in +- shlibpath_var=PATH +- ;; ++if test "x$with_24bpp" = "xyes"; then ++ cat >>confdefs.h <<\_ACEOF ++#define ALLOW24BPP 1 ++_ACEOF + +-darwin* | rhapsody*) +- dynamic_linker="$host_os dyld" +- version_type=darwin +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' +- soname_spec='${libname}${release}${major}$shared_ext' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. +- if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` +- else +- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' +- fi +- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' +- ;; ++fi + +-dgux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; + +-freebsd1*) +- dynamic_linker=no +- ;; + +-kfreebsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; ++# Check whether --with-ffmpeg was given. ++if test "${with_ffmpeg+set}" = set; then ++ withval=$with_ffmpeg; ++fi + +-freebsd* | dragonfly*) +- # DragonFly does not have aout. When/if they implement a new +- # versioning mechanism, adjust this. +- if test -x /usr/bin/objformat; then +- objformat=`/usr/bin/objformat` +- else +- case $host_os in +- freebsd[123]*) objformat=aout ;; +- *) objformat=elf ;; +- esac +- fi +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- need_version=no +- need_lib_prefix=no +- ;; +- freebsd-*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' +- need_version=yes +- ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2*) +- shlibpath_overrides_runpath=yes +- ;; +- freebsd3.[01]* | freebsdelf3.[01]*) +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ +- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- freebsd*) # from 4.6 on +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- esac +- ;; +- +-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- ;; +- +-hpux9* | hpux10* | hpux11*) +- # Give a soname corresponding to the major version so that dld.sl refuses to +- # link against other versions. +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- case $host_cpu in +- ia64*) +- shrext_cmds='.so' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.so" +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- if test "X$HPUX_IA64_MODE" = X32; then +- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" +- else +- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" +- fi +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- hppa*64*) +- shrext_cmds='.sl' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- *) +- shrext_cmds='.sl' +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- esac +- # HP-UX runs *really* slowly unless shared libraries are mode 555. +- postinstall_cmds='chmod 555 $lib' +- ;; +- +-interix3*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- +-irix5* | irix6* | nonstopux*) +- case $host_os in +- nonstopux*) version_type=nonstopux ;; +- *) +- if test "$lt_cv_prog_gnu_ld" = yes; then +- version_type=linux +- else +- version_type=irix +- fi ;; +- esac +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' +- case $host_os in +- irix5* | nonstopux*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") +- libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") +- libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") +- libsuff=64 shlibsuff=64 libmagic=64-bit;; +- *) libsuff= shlibsuff= libmagic=never-match;; +- esac +- ;; +- esac +- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" +- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" +- hardcode_into_libs=yes +- ;; +- +-# No shared lib support for Linux oldld, aout, or coff. +-linux*oldld* | linux*aout* | linux*coff*) +- dynamic_linker=no +- ;; +- +-# This must be Linux ELF. +-linux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- # This implies no fast_install, which is unacceptable. +- # Some rework will be needed to allow for fast_install +- # before this can be enabled. +- hardcode_into_libs=yes +- +- # Append ld.so.conf contents to the search path +- if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" +- fi +- +- # We used to test for /lib/ld.so.1 and disable shared libraries on +- # powerpc, because MkLinux only supported shared libraries with the +- # GNU dynamic linker. Since this was broken with cross compilers, +- # most powerpc-linux boxes support dynamic linking these days and +- # people can always --disable-shared, the test was removed, and we +- # assume the GNU/Linux dynamic linker is in use. +- dynamic_linker='GNU/Linux ld.so' +- ;; +- +-knetbsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- +-netbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='NetBSD ld.elf_so' +- fi +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- +-newsos6) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-nto-qnx*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-openbsd*) +- version_type=sunos +- sys_lib_dlsearch_path_spec="/usr/lib" +- need_lib_prefix=no +- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. +- case $host_os in +- openbsd3.3 | openbsd3.3.*) need_version=yes ;; +- *) need_version=no ;; +- esac +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case $host_os in +- openbsd2.[89] | openbsd2.[89].*) +- shlibpath_overrides_runpath=no +- ;; +- *) +- shlibpath_overrides_runpath=yes +- ;; +- esac +- else +- shlibpath_overrides_runpath=yes +- fi +- ;; +- +-os2*) +- libname_spec='$name' +- shrext_cmds=".dll" +- need_lib_prefix=no +- library_names_spec='$libname${shared_ext} $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; +- +-osf3* | osf4* | osf5*) +- version_type=osf +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" +- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +- ;; +- +-solaris*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; +- +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; +- +-sysv4 | sysv4.3*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no +- need_lib_prefix=no +- export_dynamic_flag_spec='${wl}-Blargedynsym' +- runpath_var=LD_RUN_PATH +- ;; +- siemens) +- need_lib_prefix=no +- ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' +- ;; +- esac +- ;; +- +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux +- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' +- soname_spec='$libname${shared_ext}.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; +- +-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) +- version_type=freebsd-elf +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- if test "$with_gnu_ld" = yes; then +- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' +- shlibpath_overrides_runpath=no +- else +- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' +- shlibpath_overrides_runpath=yes +- case $host_os in +- sco3.2v5*) +- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" +- ;; +- esac +- fi +- sys_lib_dlsearch_path_spec='/usr/lib' +- ;; +- +-uts4*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-*) +- dynamic_linker=no +- ;; +-esac +-echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +-echo "${ECHO_T}$dynamic_linker" >&6 +-test "$dynamic_linker" = no && can_build_shared=no +- +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi +- +-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +-hardcode_action_F77= +-if test -n "$hardcode_libdir_flag_spec_F77" || \ +- test -n "$runpath_var_F77" || \ +- test "X$hardcode_automatic_F77" = "Xyes" ; then +- +- # We can hardcode non-existant directories. +- if test "$hardcode_direct_F77" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && +- test "$hardcode_minus_L_F77" != no; then +- # Linking always hardcodes the temporary library directory. +- hardcode_action_F77=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- hardcode_action_F77=immediate +- fi +-else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- hardcode_action_F77=unsupported +-fi +-echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +-echo "${ECHO_T}$hardcode_action_F77" >&6 +- +-if test "$hardcode_action_F77" = relink; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless +-fi +- +- +-# The else clause should only fire when bootstrapping the +-# libtool distribution, otherwise you forgot to ship ltmain.sh +-# with your package, and you will get complaints that there are +-# no rules to generate ltmain.sh. +-if test -f "$ltmain"; then +- # See if we are running on zsh, and set the options which allow our commands through +- # without removal of \ escapes. +- if test -n "${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +- fi +- # Now quote all the things that may contain metacharacters while being +- # careful not to overquote the AC_SUBSTed values. We take copies of the +- # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ +- SED SHELL STRIP \ +- libname_spec library_names_spec soname_spec extract_expsyms_cmds \ +- old_striplib striplib file_magic_cmd finish_cmds finish_eval \ +- deplibs_check_method reload_flag reload_cmds need_locks \ +- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ +- lt_cv_sys_global_symbol_to_c_name_address \ +- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ +- old_postinstall_cmds old_postuninstall_cmds \ +- compiler_F77 \ +- CC_F77 \ +- LD_F77 \ +- lt_prog_compiler_wl_F77 \ +- lt_prog_compiler_pic_F77 \ +- lt_prog_compiler_static_F77 \ +- lt_prog_compiler_no_builtin_flag_F77 \ +- export_dynamic_flag_spec_F77 \ +- thread_safe_flag_spec_F77 \ +- whole_archive_flag_spec_F77 \ +- enable_shared_with_static_runtimes_F77 \ +- old_archive_cmds_F77 \ +- old_archive_from_new_cmds_F77 \ +- predep_objects_F77 \ +- postdep_objects_F77 \ +- predeps_F77 \ +- postdeps_F77 \ +- compiler_lib_search_path_F77 \ +- archive_cmds_F77 \ +- archive_expsym_cmds_F77 \ +- postinstall_cmds_F77 \ +- postuninstall_cmds_F77 \ +- old_archive_from_expsyms_cmds_F77 \ +- allow_undefined_flag_F77 \ +- no_undefined_flag_F77 \ +- export_symbols_cmds_F77 \ +- hardcode_libdir_flag_spec_F77 \ +- hardcode_libdir_flag_spec_ld_F77 \ +- hardcode_libdir_separator_F77 \ +- hardcode_automatic_F77 \ +- module_cmds_F77 \ +- module_expsym_cmds_F77 \ +- lt_cv_prog_compiler_c_o_F77 \ +- exclude_expsyms_F77 \ +- include_expsyms_F77; do +- +- case $var in +- old_archive_cmds_F77 | \ +- old_archive_from_new_cmds_F77 | \ +- archive_cmds_F77 | \ +- archive_expsym_cmds_F77 | \ +- module_cmds_F77 | \ +- module_expsym_cmds_F77 | \ +- old_archive_from_expsyms_cmds_F77 | \ +- export_symbols_cmds_F77 | \ +- extract_expsyms_cmds | reload_cmds | finish_cmds | \ +- postinstall_cmds | postuninstall_cmds | \ +- old_postinstall_cmds | old_postuninstall_cmds | \ +- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) +- # Double-quote double-evaled strings. +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" +- ;; +- *) +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" +- ;; +- esac +- done +- +- case $lt_echo in +- *'\$0 --fallback-echo"') +- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` +- ;; +- esac +- +-cfgfile="$ofile" +- +- cat <<__EOF__ >> "$cfgfile" +-# ### BEGIN LIBTOOL TAG CONFIG: $tagname +- +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +- +-# Shell to use when invoking shell scripts. +-SHELL=$lt_SHELL +- +-# Whether or not to build shared libraries. +-build_libtool_libs=$enable_shared +- +-# Whether or not to build static libraries. +-build_old_libs=$enable_static +- +-# Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$archive_cmds_need_lc_F77 +- +-# Whether or not to disallow shared libs when runtime libs are static +-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 +- +-# Whether or not to optimize for fast installation. +-fast_install=$enable_fast_install +- +-# The host system. +-host_alias=$host_alias +-host=$host +-host_os=$host_os +- +-# The build system. +-build_alias=$build_alias +-build=$build +-build_os=$build_os +- +-# An echo program that does not interpret backslashes. +-echo=$lt_echo +- +-# The archiver. +-AR=$lt_AR +-AR_FLAGS=$lt_AR_FLAGS +- +-# A C compiler. +-LTCC=$lt_LTCC +- +-# LTCC compiler flags. +-LTCFLAGS=$lt_LTCFLAGS +- +-# A language-specific compiler. +-CC=$lt_compiler_F77 +- +-# Is the compiler the GNU C compiler? +-with_gcc=$GCC_F77 +- +-# An ERE matcher. +-EGREP=$lt_EGREP +- +-# The linker used to build libraries. +-LD=$lt_LD_F77 +- +-# Whether we need hard or soft links. +-LN_S=$lt_LN_S +- +-# A BSD-compatible nm program. +-NM=$lt_NM +- +-# A symbol stripping program +-STRIP=$lt_STRIP +- +-# Used to examine libraries when file_magic_cmd begins "file" +-MAGIC_CMD=$MAGIC_CMD +- +-# Used on cygwin: DLL creation program. +-DLLTOOL="$DLLTOOL" +- +-# Used on cygwin: object dumper. +-OBJDUMP="$OBJDUMP" +- +-# Used on cygwin: assembler. +-AS="$AS" +- +-# The name of the directory that contains temporary libtool files. +-objdir=$objdir +- +-# How to create reloadable object files. +-reload_flag=$lt_reload_flag +-reload_cmds=$lt_reload_cmds +- +-# How to pass a linker flag through the compiler. +-wl=$lt_lt_prog_compiler_wl_F77 +- +-# Object file suffix (normally "o"). +-objext="$ac_objext" +- +-# Old archive suffix (normally "a"). +-libext="$libext" +- +-# Shared library suffix (normally ".so"). +-shrext_cmds='$shrext_cmds' +- +-# Executable file suffix (normally ""). +-exeext="$exeext" +- +-# Additional compiler flags for building library objects. +-pic_flag=$lt_lt_prog_compiler_pic_F77 +-pic_mode=$pic_mode +- +-# What is the maximum length of a command? +-max_cmd_len=$lt_cv_sys_max_cmd_len +- +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 +- +-# Must we lock files when doing compilation? +-need_locks=$lt_need_locks +- +-# Do we need the lib prefix for modules? +-need_lib_prefix=$need_lib_prefix +- +-# Do we need a version for libraries? +-need_version=$need_version +- +-# Whether dlopen is supported. +-dlopen_support=$enable_dlopen +- +-# Whether dlopen of programs is supported. +-dlopen_self=$enable_dlopen_self +- +-# Whether dlopen of statically linked programs is supported. +-dlopen_self_static=$enable_dlopen_self_static +- +-# Compiler flag to prevent dynamic linking. +-link_static_flag=$lt_lt_prog_compiler_static_F77 +- +-# Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 +- +-# Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 +- +-# Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 +- +-# Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 +- +-# Library versioning type. +-version_type=$version_type +- +-# Format of library name prefix. +-libname_spec=$lt_libname_spec +- +-# List of archive names. First name is the real one, the rest are links. +-# The last name is the one that the linker finds with -lNAME. +-library_names_spec=$lt_library_names_spec +- +-# The coded name of the library, if different from the real name. +-soname_spec=$lt_soname_spec +- +-# Commands used to build and install an old-style archive. +-RANLIB=$lt_RANLIB +-old_archive_cmds=$lt_old_archive_cmds_F77 +-old_postinstall_cmds=$lt_old_postinstall_cmds +-old_postuninstall_cmds=$lt_old_postuninstall_cmds +- +-# Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 +- +-# Create a temporary old-style archive to link instead of a shared archive. +-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 +- +-# Commands used to build and install a shared archive. +-archive_cmds=$lt_archive_cmds_F77 +-archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +-postinstall_cmds=$lt_postinstall_cmds +-postuninstall_cmds=$lt_postuninstall_cmds +- +-# Commands used to build a loadable module (assumed same as above if empty) +-module_cmds=$lt_module_cmds_F77 +-module_expsym_cmds=$lt_module_expsym_cmds_F77 +- +-# Commands to strip libraries. +-old_striplib=$lt_old_striplib +-striplib=$lt_striplib +- +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predep_objects=$lt_predep_objects_F77 +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdep_objects=$lt_postdep_objects_F77 +- +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predeps=$lt_predeps_F77 +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdeps=$lt_postdeps_F77 +- +-# The library search path used internally by the compiler when linking +-# a shared library. +-compiler_lib_search_path=$lt_compiler_lib_search_path_F77 +- +-# Method to check whether dependent libraries are shared objects. +-deplibs_check_method=$lt_deplibs_check_method +- +-# Command to use when deplibs_check_method == file_magic. +-file_magic_cmd=$lt_file_magic_cmd +- +-# Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_allow_undefined_flag_F77 +- +-# Flag that forces no undefined symbols. +-no_undefined_flag=$lt_no_undefined_flag_F77 +- +-# Commands used to finish a libtool library installation in a directory. +-finish_cmds=$lt_finish_cmds +- +-# Same as above, but a single script fragment to be evaled but not shown. +-finish_eval=$lt_finish_eval +- +-# Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe +- +-# Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl +- +-# Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address +- +-# This is the shared library runtime path variable. +-runpath_var=$runpath_var +- +-# This is the shared library path variable. +-shlibpath_var=$shlibpath_var +- +-# Is shlibpath searched before the hard-coded library search path? +-shlibpath_overrides_runpath=$shlibpath_overrides_runpath +- +-# How to hardcode a shared library path into an executable. +-hardcode_action=$hardcode_action_F77 +- +-# Whether we should hardcode library paths into libraries. +-hardcode_into_libs=$hardcode_into_libs +- +-# Flag to hardcode \$libdir into a binary during linking. +-# This must work even if \$libdir does not exist. +-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 +- +-# If ld is used when linking, flag to hardcode \$libdir into +-# a binary during linking. This must work even if \$libdir does +-# not exist. +-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 +- +-# Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 +- +-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +-# resulting binary. +-hardcode_direct=$hardcode_direct_F77 +- +-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +-# resulting binary. +-hardcode_minus_L=$hardcode_minus_L_F77 +- +-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +-# the resulting binary. +-hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 +- +-# Set to yes if building a shared library automatically hardcodes DIR into the library +-# and all subsequent libraries and executables linked against it. +-hardcode_automatic=$hardcode_automatic_F77 +- +-# Variables whose values should be saved in libtool wrapper scripts and +-# restored at relink time. +-variables_saved_for_relink="$variables_saved_for_relink" +- +-# Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$link_all_deplibs_F77 +- +-# Compile-time system search path for libraries +-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec +- +-# Run-time system search path for libraries +-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec +- +-# Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path_F77" +- +-# Set to yes if exported symbols are required. +-always_export_symbols=$always_export_symbols_F77 +- +-# The commands to list exported symbols. +-export_symbols_cmds=$lt_export_symbols_cmds_F77 +- +-# The commands to extract the exported symbol list from a shared archive. +-extract_expsyms_cmds=$lt_extract_expsyms_cmds +- +-# Symbols that should not be listed in the preloaded symbols. +-exclude_expsyms=$lt_exclude_expsyms_F77 +- +-# Symbols that must always be exported. +-include_expsyms=$lt_include_expsyms_F77 +- +-# ### END LIBTOOL TAG CONFIG: $tagname +- +-__EOF__ +- +- +-else +- # If there is no Makefile yet, we rely on a make rule to execute +- # `config.status --recheck' to rerun these tests and create the +- # libtool script then. +- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` +- if test -f "$ltmain_in"; then +- test -f Makefile && make "$ltmain" +- fi +-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 +- +-CC="$lt_save_CC" +- +- else +- tagname="" +- fi +- ;; +- +- GCJ) +- if test -n "$GCJ" && test "X$GCJ" != "Xno"; then +- +- +- +-# Source file extension for Java test sources. +-ac_ext=java +- +-# Object file extension for compiled Java test sources. +-objext=o +-objext_GCJ=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="class foo {}\n" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' +- +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. +- +-# If no C compiler was specified, use CC. +-LTCC=${LTCC-"$CC"} +- +-# If no C compiler flags were specified, use CFLAGS. +-LTCFLAGS=${LTCFLAGS-"$CFLAGS"} +- +-# Allow CC to be a program name with arguments. +-compiler=$CC +- +- +-# save warnings/boilerplate of simple test code +-ac_outfile=conftest.$ac_objext +-printf "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_compiler_boilerplate=`cat conftest.err` +-$rm conftest* +- +-ac_outfile=conftest.$ac_objext +-printf "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_linker_boilerplate=`cat conftest.err` +-$rm conftest* +- +- +-# Allow CC to be a program name with arguments. +-lt_save_CC="$CC" +-CC=${GCJ-"gcj"} +-compiler=$CC +-compiler_GCJ=$CC +-for cc_temp in $compiler""; do +- case $cc_temp in +- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; +- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; +- \-*) ;; +- *) break;; +- esac +-done +-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +- +- +-# GCJ did not exist at the time GCC didn't implicitly link libc in. +-archive_cmds_need_lc_GCJ=no +- +-old_archive_cmds_GCJ=$old_archive_cmds +- +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... +- +-lt_prog_compiler_no_builtin_flag_GCJ= +- +-if test "$GCC" = yes; then +- lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' +- +- +-echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_cv_prog_compiler_rtti_exceptions=no +- ac_outfile=conftest.$ac_objext +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- lt_compiler_flag="-fno-rtti -fno-exceptions" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- # The option is referenced via a variable to avoid confusing sed. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:15563: $lt_compile\"" >&5) +- (eval "$lt_compile" 2>conftest.err) +- ac_status=$? +- cat conftest.err >&5 +- echo "$as_me:15567: \$? = $ac_status" >&5 +- if (exit $ac_status) && test -s "$ac_outfile"; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then +- lt_cv_prog_compiler_rtti_exceptions=yes +- fi +- fi +- $rm conftest* +- +-fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 +- +-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then +- lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +-else +- : +-fi +- +-fi +- +-lt_prog_compiler_wl_GCJ= +-lt_prog_compiler_pic_GCJ= +-lt_prog_compiler_static_GCJ= +- +-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +- +- if test "$GCC" = yes; then +- lt_prog_compiler_wl_GCJ='-Wl,' +- lt_prog_compiler_static_GCJ='-static' +- +- case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_prog_compiler_static_GCJ='-Bstatic' +- fi +- ;; +- +- amigaos*) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' +- ;; +- +- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- +- mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' +- ;; +- +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- lt_prog_compiler_pic_GCJ='-fno-common' +- ;; +- +- interix3*) +- # Interix 3.x gcc -fpic/-fPIC options generate broken code. +- # Instead, we relocate shared libraries at runtime. +- ;; +- +- msdosdjgpp*) +- # Just because we use GCC doesn't mean we suddenly get shared libraries +- # on systems that don't support them. +- lt_prog_compiler_can_build_shared_GCJ=no +- enable_shared=no +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec; then +- lt_prog_compiler_pic_GCJ=-Kconform_pic +- fi +- ;; +- +- hpux*) +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- lt_prog_compiler_pic_GCJ='-fPIC' +- ;; +- esac +- ;; +- +- *) +- lt_prog_compiler_pic_GCJ='-fPIC' +- ;; +- esac +- else +- # PORTME Check for flag to pass linker flags through the system compiler. +- case $host_os in +- aix*) +- lt_prog_compiler_wl_GCJ='-Wl,' +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_prog_compiler_static_GCJ='-Bstatic' +- else +- lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- darwin*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- case $cc_basename in +- xlc*) +- lt_prog_compiler_pic_GCJ='-qnocommon' +- lt_prog_compiler_wl_GCJ='-Wl,' +- ;; +- esac +- ;; +- +- mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' +- ;; +- +- hpux9* | hpux10* | hpux11*) +- lt_prog_compiler_wl_GCJ='-Wl,' +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- lt_prog_compiler_pic_GCJ='+Z' +- ;; +- esac +- # Is there a better lt_prog_compiler_static that works with the bundled CC? +- lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' +- ;; +- +- irix5* | irix6* | nonstopux*) +- lt_prog_compiler_wl_GCJ='-Wl,' +- # PIC (with -KPIC) is the default. +- lt_prog_compiler_static_GCJ='-non_shared' +- ;; +- +- newsos6) +- lt_prog_compiler_pic_GCJ='-KPIC' +- lt_prog_compiler_static_GCJ='-Bstatic' +- ;; +- +- linux*) +- case $cc_basename in +- icc* | ecc*) +- lt_prog_compiler_wl_GCJ='-Wl,' +- lt_prog_compiler_pic_GCJ='-KPIC' +- lt_prog_compiler_static_GCJ='-static' +- ;; +- pgcc* | pgf77* | pgf90* | pgf95*) +- # Portland Group compilers (*not* the Pentium gcc compiler, +- # which looks to be a dead project) +- lt_prog_compiler_wl_GCJ='-Wl,' +- lt_prog_compiler_pic_GCJ='-fpic' +- lt_prog_compiler_static_GCJ='-Bstatic' +- ;; +- ccc*) +- lt_prog_compiler_wl_GCJ='-Wl,' +- # All Alpha code is PIC. +- lt_prog_compiler_static_GCJ='-non_shared' +- ;; +- esac +- ;; +- +- osf3* | osf4* | osf5*) +- lt_prog_compiler_wl_GCJ='-Wl,' +- # All OSF/1 code is PIC. +- lt_prog_compiler_static_GCJ='-non_shared' +- ;; +- +- solaris*) +- lt_prog_compiler_pic_GCJ='-KPIC' +- lt_prog_compiler_static_GCJ='-Bstatic' +- case $cc_basename in +- f77* | f90* | f95*) +- lt_prog_compiler_wl_GCJ='-Qoption ld ';; +- *) +- lt_prog_compiler_wl_GCJ='-Wl,';; +- esac +- ;; +- +- sunos4*) +- lt_prog_compiler_wl_GCJ='-Qoption ld ' +- lt_prog_compiler_pic_GCJ='-PIC' +- lt_prog_compiler_static_GCJ='-Bstatic' +- ;; +- +- sysv4 | sysv4.2uw2* | sysv4.3*) +- lt_prog_compiler_wl_GCJ='-Wl,' +- lt_prog_compiler_pic_GCJ='-KPIC' +- lt_prog_compiler_static_GCJ='-Bstatic' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec ;then +- lt_prog_compiler_pic_GCJ='-Kconform_pic' +- lt_prog_compiler_static_GCJ='-Bstatic' +- fi +- ;; +- +- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) +- lt_prog_compiler_wl_GCJ='-Wl,' +- lt_prog_compiler_pic_GCJ='-KPIC' +- lt_prog_compiler_static_GCJ='-Bstatic' +- ;; +- +- unicos*) +- lt_prog_compiler_wl_GCJ='-Wl,' +- lt_prog_compiler_can_build_shared_GCJ=no +- ;; +- +- uts4*) +- lt_prog_compiler_pic_GCJ='-pic' +- lt_prog_compiler_static_GCJ='-Bstatic' +- ;; +- +- *) +- lt_prog_compiler_can_build_shared_GCJ=no +- ;; +- esac +- fi +- +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 +- +-# +-# Check to make sure the PIC flag actually works. +-# +-if test -n "$lt_prog_compiler_pic_GCJ"; then +- +-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 +-if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_prog_compiler_pic_works_GCJ=no +- ac_outfile=conftest.$ac_objext +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- lt_compiler_flag="$lt_prog_compiler_pic_GCJ" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- # The option is referenced via a variable to avoid confusing sed. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:15831: $lt_compile\"" >&5) +- (eval "$lt_compile" 2>conftest.err) +- ac_status=$? +- cat conftest.err >&5 +- echo "$as_me:15835: \$? = $ac_status" >&5 +- if (exit $ac_status) && test -s "$ac_outfile"; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then +- lt_prog_compiler_pic_works_GCJ=yes +- fi +- fi +- $rm conftest* +- +-fi +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 +- +-if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then +- case $lt_prog_compiler_pic_GCJ in +- "" | " "*) ;; +- *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; +- esac +-else +- lt_prog_compiler_pic_GCJ= +- lt_prog_compiler_can_build_shared_GCJ=no +-fi +- +-fi +-case $host_os in +- # For platforms which do not support PIC, -DPIC is meaningless: +- *djgpp*) +- lt_prog_compiler_pic_GCJ= +- ;; +- *) +- lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" +- ;; +-esac +- +-# +-# Check to make sure the static flag actually works. +-# +-wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" +-echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +-if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_prog_compiler_static_works_GCJ=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $lt_tmp_static_flag" +- printf "$lt_simple_link_test_code" > conftest.$ac_ext +- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then +- # The linker can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- # Append any errors to the config.log. +- cat conftest.err 1>&5 +- $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if diff conftest.exp conftest.er2 >/dev/null; then +- lt_prog_compiler_static_works_GCJ=yes +- fi +- else +- lt_prog_compiler_static_works_GCJ=yes +- fi +- fi +- $rm conftest* +- LDFLAGS="$save_LDFLAGS" +- +-fi +-echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5 +-echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6 +- +-if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then +- : +-else +- lt_prog_compiler_static_GCJ= +-fi +- +- +-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +-if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_cv_prog_compiler_c_o_GCJ=no +- $rm -r conftest 2>/dev/null +- mkdir conftest +- cd conftest +- mkdir out +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- lt_compiler_flag="-o out/conftest2.$ac_objext" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:15935: $lt_compile\"" >&5) +- (eval "$lt_compile" 2>out/conftest.err) +- ac_status=$? +- cat out/conftest.err >&5 +- echo "$as_me:15939: \$? = $ac_status" >&5 +- if (exit $ac_status) && test -s out/conftest2.$ac_objext +- then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp +- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 +- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then +- lt_cv_prog_compiler_c_o_GCJ=yes +- fi +- fi +- chmod u+w . 2>&5 +- $rm conftest* +- # SGI C++ compiler will create directory out/ii_files/ for +- # template instantiation +- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files +- $rm out/* && rmdir out +- cd .. +- rmdir conftest +- $rm conftest* +- +-fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 +- +- +-hard_links="nottested" +-if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 +- hard_links=yes +- $rm conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- echo "$as_me:$LINENO: result: $hard_links" >&5 +-echo "${ECHO_T}$hard_links" >&6 +- if test "$hard_links" = no; then +- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} +- need_locks=warn +- fi +-else +- need_locks=no +-fi +- +-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +- +- runpath_var= +- allow_undefined_flag_GCJ= +- enable_shared_with_static_runtimes_GCJ=no +- archive_cmds_GCJ= +- archive_expsym_cmds_GCJ= +- old_archive_From_new_cmds_GCJ= +- old_archive_from_expsyms_cmds_GCJ= +- export_dynamic_flag_spec_GCJ= +- whole_archive_flag_spec_GCJ= +- thread_safe_flag_spec_GCJ= +- hardcode_libdir_flag_spec_GCJ= +- hardcode_libdir_flag_spec_ld_GCJ= +- hardcode_libdir_separator_GCJ= +- hardcode_direct_GCJ=no +- hardcode_minus_L_GCJ=no +- hardcode_shlibpath_var_GCJ=unsupported +- link_all_deplibs_GCJ=unknown +- hardcode_automatic_GCJ=no +- module_cmds_GCJ= +- module_expsym_cmds_GCJ= +- always_export_symbols_GCJ=no +- export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- # include_expsyms should be a list of space-separated symbols to be *always* +- # included in the symbol list +- include_expsyms_GCJ= +- # exclude_expsyms can be an extended regexp of symbols to exclude +- # it will be wrapped by ` (' and `)$', so one must not match beginning or +- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +- # as well as any symbol that contains `d'. +- exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" +- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +- # platforms (ab)use it in PIC code, but their linkers get confused if +- # the symbol is explicitly referenced. Since portable code cannot +- # rely on this symbol name, it's probably fine to never include it in +- # preloaded symbol tables. +- extract_expsyms_cmds= +- # Just being paranoid about ensuring that cc_basename is set. +- for cc_temp in $compiler""; do +- case $cc_temp in +- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; +- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; +- \-*) ;; +- *) break;; +- esac +-done +-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +- +- case $host_os in +- cygwin* | mingw* | pw32*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- if test "$GCC" != yes; then +- with_gnu_ld=no +- fi +- ;; +- interix*) +- # we just hope/assume this is gcc and not c89 (= MSVC++) +- with_gnu_ld=yes +- ;; +- openbsd*) +- with_gnu_ld=no +- ;; +- esac +- +- ld_shlibs_GCJ=yes +- if test "$with_gnu_ld" = yes; then +- # If archive_cmds runs LD, not CC, wlarc should be empty +- wlarc='${wl}' +- +- # Set some defaults for GNU ld with shared library support. These +- # are reset later if shared libraries are not supported. Putting them +- # here allows them to be overridden if necessary. +- runpath_var=LD_RUN_PATH +- hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' +- export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then +- whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- whole_archive_flag_spec_GCJ= +- fi +- supports_anon_versioning=no +- case `$LD -v 2>/dev/null` in +- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 +- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... +- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... +- *\ 2.11.*) ;; # other 2.11 versions +- *) supports_anon_versioning=yes ;; +- esac +- +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix3* | aix4* | aix5*) +- # On AIX/PPC, the GNU linker is very broken +- if test "$host_cpu" != ia64; then +- ld_shlibs_GCJ=no +- cat <&2 +- +-*** Warning: the GNU linker, at least up to release 2.9.1, is reported +-*** to be unable to reliably create shared libraries on AIX. +-*** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to modify your PATH +-*** so that a non-GNU linker is found, and then restart. +- +-EOF +- fi +- ;; +- +- amigaos*) +- archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- hardcode_libdir_flag_spec_GCJ='-L$libdir' +- hardcode_minus_L_GCJ=yes +- +- # Samuel A. Falvo II reports +- # that the semantics of dynamic libraries on AmigaOS, at least up +- # to version 4, is to share data among multiple programs linked +- # with the same dynamic library. Since this doesn't match the +- # behavior of shared libraries on other platforms, we can't use +- # them. +- ld_shlibs_GCJ=no +- ;; +- +- beos*) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- allow_undefined_flag_GCJ=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- ld_shlibs_GCJ=no +- fi +- ;; +- +- cygwin* | mingw* | pw32*) +- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, +- # as there is no search path for DLLs. +- hardcode_libdir_flag_spec_GCJ='-L$libdir' +- allow_undefined_flag_GCJ=unsupported +- always_export_symbols_GCJ=no +- enable_shared_with_static_runtimes_GCJ=yes +- export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' +- +- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then +- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- else +- ld_shlibs_GCJ=no +- fi +- ;; +- +- interix3*) +- hardcode_direct_GCJ=no +- hardcode_shlibpath_var_GCJ=no +- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' +- export_dynamic_flag_spec_GCJ='${wl}-E' +- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. +- # Instead, shared libraries are loaded at an image base (0x10000000 by +- # default) and relocated if they conflict, which is a slow very memory +- # consuming and fragmenting process. To avoid this, we pick a random, +- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link +- # time. Moving up from 0x10000000 also allows more sbrk(2) space. +- archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- ;; +- +- linux*) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- tmp_addflag= +- case $cc_basename,$host_cpu in +- pgcc*) # Portland Group C compiler +- whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag' +- ;; +- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers +- whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag -Mnomain' ;; +- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 +- tmp_addflag=' -i_dynamic' ;; +- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 +- tmp_addflag=' -i_dynamic -nofor_main' ;; +- ifc* | ifort*) # Intel Fortran compiler +- tmp_addflag=' -nofor_main' ;; +- esac +- archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- +- if test $supports_anon_versioning = yes; then +- archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- $echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +- fi +- else +- ld_shlibs_GCJ=no +- fi +- ;; +- +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= +- else +- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- fi +- ;; +- +- solaris*) +- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then +- ld_shlibs_GCJ=no +- cat <&2 +- +-*** Warning: The releases 2.8.* of the GNU linker cannot reliably +-*** create shared libraries on Solaris systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.9.1 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-EOF +- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- ld_shlibs_GCJ=no +- fi +- ;; +- +- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) +- case `$LD -v 2>&1` in +- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) +- ld_shlibs_GCJ=no +- cat <<_LT_EOF 1>&2 +- +-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +-*** reliably create shared libraries on SCO systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-_LT_EOF +- ;; +- *) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' +- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' +- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' +- else +- ld_shlibs_GCJ=no +- fi +- ;; +- esac +- ;; +- +- sunos4*) +- archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- wlarc= +- hardcode_direct_GCJ=yes +- hardcode_shlibpath_var_GCJ=no +- ;; +- +- *) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- ld_shlibs_GCJ=no +- fi +- ;; +- esac +- +- if test "$ld_shlibs_GCJ" = no; then +- runpath_var= +- hardcode_libdir_flag_spec_GCJ= +- export_dynamic_flag_spec_GCJ= +- whole_archive_flag_spec_GCJ= +- fi +- else +- # PORTME fill in a description of your system's linker (not GNU ld) +- case $host_os in +- aix3*) +- allow_undefined_flag_GCJ=unsupported +- always_export_symbols_GCJ=yes +- archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' +- # Note: this linker hardcodes the directories in LIBPATH if there +- # are no directories specified by -L. +- hardcode_minus_L_GCJ=yes +- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then +- # Neither direct hardcoding nor static linking is supported with a +- # broken collect2. +- hardcode_direct_GCJ=unsupported +- fi +- ;; +- +- aix4* | aix5*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then +- export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' +- else +- export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' +- fi +- aix_use_runtimelinking=no +- +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[23]|aix4.[23].*|aix5*) +- for ld_flag in $LDFLAGS; do +- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +- aix_use_runtimelinking=yes +- break +- fi +- done +- ;; +- esac +- +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi +- +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. +- +- archive_cmds_GCJ='' +- hardcode_direct_GCJ=yes +- hardcode_libdir_separator_GCJ=':' +- link_all_deplibs_GCJ=yes +- +- if test "$GCC" = yes; then +- case $host_os in aix4.[012]|aix4.[012].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && \ +- strings "$collect2name" | grep resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- hardcode_direct_GCJ=yes +- else +- # We have old collect2 +- hardcode_direct_GCJ=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- hardcode_minus_L_GCJ=yes +- hardcode_libdir_flag_spec_GCJ='-L$libdir' +- hardcode_libdir_separator_GCJ= +- fi +- ;; +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +- # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi +- +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to export. +- always_export_symbols_GCJ=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag_GCJ='-berok' +- # Determine the default libpath from the value encoded in an empty executable. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` +-# Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +- +- hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" +- archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' +- allow_undefined_flag_GCJ="-z nodefs" +- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" +- else +- # Determine the default libpath from the value encoded in an empty executable. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` +-# Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +- +- hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- no_undefined_flag_GCJ=' ${wl}-bernotok' +- allow_undefined_flag_GCJ=' ${wl}-berok' +- # Exported symbols can be pulled into shared objects from archives +- whole_archive_flag_spec_GCJ='$convenience' +- archive_cmds_need_lc_GCJ=yes +- # This is similar to how AIX traditionally builds its shared libraries. +- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +- fi +- fi +- ;; +- +- amigaos*) +- archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- hardcode_libdir_flag_spec_GCJ='-L$libdir' +- hardcode_minus_L_GCJ=yes +- # see comment about different semantics on the GNU ld section +- ld_shlibs_GCJ=no +- ;; +- +- bsdi[45]*) +- export_dynamic_flag_spec_GCJ=-rdynamic +- ;; +- +- cygwin* | mingw* | pw32*) +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec_GCJ=' ' +- allow_undefined_flag_GCJ=unsupported +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' +- # The linker will automatically build a .lib file if we build a DLL. +- old_archive_From_new_cmds_GCJ='true' +- # FIXME: Should let the user specify the lib program. +- old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' +- fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' +- enable_shared_with_static_runtimes_GCJ=yes +- ;; +- +- darwin* | rhapsody*) +- case $host_os in +- rhapsody* | darwin1.[012]) +- allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' +- ;; +- *) # Darwin 1.3 on +- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then +- allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- else +- case ${MACOSX_DEPLOYMENT_TARGET} in +- 10.[012]) +- allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- ;; +- 10.*) +- allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' +- ;; +- esac +- fi +- ;; +- esac +- archive_cmds_need_lc_GCJ=no +- hardcode_direct_GCJ=no +- hardcode_automatic_GCJ=yes +- hardcode_shlibpath_var_GCJ=unsupported +- whole_archive_flag_spec_GCJ='' +- link_all_deplibs_GCJ=yes +- if test "$GCC" = yes ; then +- output_verbose_link_cmd='echo' +- archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' +- module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds +- archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- else +- case $cc_basename in +- xlc*) +- output_verbose_link_cmd='echo' +- archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' +- module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds +- archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- ;; +- *) +- ld_shlibs_GCJ=no +- ;; +- esac +- fi +- ;; +- +- dgux*) +- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec_GCJ='-L$libdir' +- hardcode_shlibpath_var_GCJ=no +- ;; +- +- freebsd1*) +- ld_shlibs_GCJ=no +- ;; +- +- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +- # support. Future versions do this automatically, but an explicit c++rt0.o +- # does not break anything, and helps significantly (at the cost of a little +- # extra space). +- freebsd2.2*) +- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +- hardcode_libdir_flag_spec_GCJ='-R$libdir' +- hardcode_direct_GCJ=yes +- hardcode_shlibpath_var_GCJ=no +- ;; +- +- # Unfortunately, older versions of FreeBSD 2 do not have this feature. +- freebsd2*) +- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct_GCJ=yes +- hardcode_minus_L_GCJ=yes +- hardcode_shlibpath_var_GCJ=no +- ;; +- +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd* | kfreebsd*-gnu | dragonfly*) +- archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec_GCJ='-R$libdir' +- hardcode_direct_GCJ=yes +- hardcode_shlibpath_var_GCJ=no +- ;; +- +- hpux9*) +- if test "$GCC" = yes; then +- archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- else +- archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- fi +- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator_GCJ=: +- hardcode_direct_GCJ=yes +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- hardcode_minus_L_GCJ=yes +- export_dynamic_flag_spec_GCJ='${wl}-E' +- ;; +- +- hpux10*) +- if test "$GCC" = yes -a "$with_gnu_ld" = no; then +- archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +- fi +- if test "$with_gnu_ld" = no; then +- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator_GCJ=: +- +- hardcode_direct_GCJ=yes +- export_dynamic_flag_spec_GCJ='${wl}-E' +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- hardcode_minus_L_GCJ=yes +- fi +- ;; +- +- hpux11*) +- if test "$GCC" = yes -a "$with_gnu_ld" = no; then +- case $host_cpu in +- hppa*64*) +- archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- else +- case $host_cpu in +- hppa*64*) +- archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- fi +- if test "$with_gnu_ld" = no; then +- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator_GCJ=: +- +- case $host_cpu in +- hppa*64*|ia64*) +- hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' +- hardcode_direct_GCJ=no +- hardcode_shlibpath_var_GCJ=no +- ;; +- *) +- hardcode_direct_GCJ=yes +- export_dynamic_flag_spec_GCJ='${wl}-E' +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- hardcode_minus_L_GCJ=yes +- ;; +- esac +- fi +- ;; +- +- irix5* | irix6* | nonstopux*) +- if test "$GCC" = yes; then +- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' +- fi +- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator_GCJ=: +- link_all_deplibs_GCJ=yes +- ;; +- +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +- else +- archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +- fi +- hardcode_libdir_flag_spec_GCJ='-R$libdir' +- hardcode_direct_GCJ=yes +- hardcode_shlibpath_var_GCJ=no +- ;; +- +- newsos6) +- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct_GCJ=yes +- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator_GCJ=: +- hardcode_shlibpath_var_GCJ=no +- ;; +- +- openbsd*) +- hardcode_direct_GCJ=yes +- hardcode_shlibpath_var_GCJ=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' +- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' +- export_dynamic_flag_spec_GCJ='${wl}-E' +- else +- case $host_os in +- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) +- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec_GCJ='-R$libdir' +- ;; +- *) +- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- ;; +- +- os2*) +- hardcode_libdir_flag_spec_GCJ='-L$libdir' +- hardcode_minus_L_GCJ=yes +- allow_undefined_flag_GCJ=unsupported +- archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +- old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +- ;; +- +- osf3*) +- if test "$GCC" = yes; then +- allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- allow_undefined_flag_GCJ=' -expect_unresolved \*' +- archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator_GCJ=: +- ;; +- +- osf4* | osf5*) # as osf3* with the addition of -msym flag +- if test "$GCC" = yes; then +- allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' +- else +- allow_undefined_flag_GCJ=' -expect_unresolved \*' +- archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ +- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' +- +- # Both c and cxx compiler support -rpath directly +- hardcode_libdir_flag_spec_GCJ='-rpath $libdir' +- fi +- hardcode_libdir_separator_GCJ=: +- ;; +- +- solaris*) +- no_undefined_flag_GCJ=' -z text' +- if test "$GCC" = yes; then +- wlarc='${wl}' +- archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' +- else +- wlarc='' +- archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- fi +- hardcode_libdir_flag_spec_GCJ='-R$libdir' +- hardcode_shlibpath_var_GCJ=no +- case $host_os in +- solaris2.[0-5] | solaris2.[0-5].*) ;; +- *) +- # The compiler driver will combine linker options so we +- # cannot just pass the convience library names through +- # without $wl, iff we do not link with $LD. +- # Luckily, gcc supports the same syntax we need for Sun Studio. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- case $wlarc in +- '') +- whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; +- *) +- whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; +- esac ;; +- esac +- link_all_deplibs_GCJ=yes +- ;; +- +- sunos4*) +- if test "x$host_vendor" = xsequent; then +- # Use $CC to link under sequent, because it throws in some extra .o +- # files that make .init and .fini sections work. +- archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +- fi +- hardcode_libdir_flag_spec_GCJ='-L$libdir' +- hardcode_direct_GCJ=yes +- hardcode_minus_L_GCJ=yes +- hardcode_shlibpath_var_GCJ=no +- ;; +- +- sysv4) +- case $host_vendor in +- sni) +- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct_GCJ=yes # is this really true??? +- ;; +- siemens) +- ## LD is ld it makes a PLAMLIB +- ## CC just makes a GrossModule. +- archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- reload_cmds_GCJ='$CC -r -o $output$reload_objs' +- hardcode_direct_GCJ=no +- ;; +- motorola) +- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie +- ;; +- esac +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var_GCJ=no +- ;; +- +- sysv4.3*) +- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var_GCJ=no +- export_dynamic_flag_spec_GCJ='-Bexport' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec; then +- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var_GCJ=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- ld_shlibs_GCJ=yes +- fi +- ;; +- +- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) +- no_undefined_flag_GCJ='${wl}-z,text' +- archive_cmds_need_lc_GCJ=no +- hardcode_shlibpath_var_GCJ=no +- runpath_var='LD_RUN_PATH' +- +- if test "$GCC" = yes; then +- archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; +- +- sysv5* | sco3.2v5* | sco5v6*) +- # Note: We can NOT use -z defs as we might desire, because we do not +- # link with -lc, and that would cause any symbols used from libc to +- # always be unresolved, which means just about no library would +- # ever link correctly. If we're not using GNU ld we use -z text +- # though, which does catch some bad symbols but isn't as heavy-handed +- # as -z defs. +- no_undefined_flag_GCJ='${wl}-z,text' +- allow_undefined_flag_GCJ='${wl}-z,nodefs' +- archive_cmds_need_lc_GCJ=no +- hardcode_shlibpath_var_GCJ=no +- hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' +- hardcode_libdir_separator_GCJ=':' +- link_all_deplibs_GCJ=yes +- export_dynamic_flag_spec_GCJ='${wl}-Bexport' +- runpath_var='LD_RUN_PATH' +- +- if test "$GCC" = yes; then +- archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; +- +- uts4*) +- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec_GCJ='-L$libdir' +- hardcode_shlibpath_var_GCJ=no +- ;; +- +- *) +- ld_shlibs_GCJ=no +- ;; +- esac +- fi +- +-echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +-echo "${ECHO_T}$ld_shlibs_GCJ" >&6 +-test "$ld_shlibs_GCJ" = no && can_build_shared=no +- +-# +-# Do we need to explicitly link libc? +-# +-case "x$archive_cmds_need_lc_GCJ" in +-x|xyes) +- # Assume -lc should be added +- archive_cmds_need_lc_GCJ=yes +- +- if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $archive_cmds_GCJ in +- *'~'*) +- # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 +- $rm conftest* +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } 2>conftest.err; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$lt_prog_compiler_wl_GCJ +- pic_flag=$lt_prog_compiler_pic_GCJ +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ +- allow_undefined_flag_GCJ= +- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 +- (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +- then +- archive_cmds_need_lc_GCJ=no +- else +- archive_cmds_need_lc_GCJ=yes +- fi +- allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +- $rm conftest* +- echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +-echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 +- ;; +- esac +- fi +- ;; +-esac +- +-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-shrext_cmds=".so" +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then +- # if the path contains ";" then we assume it to be the separator +- # otherwise default to the standard path separator (i.e. ":") - it is +- # assumed that no part of a normal pathname contains ";" but that should +- # okay in the real world where ";" in dirpaths is itself problematic. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +-else +- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +-fi +-need_lib_prefix=unknown +-hardcode_into_libs=no +- +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-need_version=unknown +- +-case $host_os in +-aix3*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' +- shlibpath_var=LIBPATH +- +- # AIX 3 has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- +-aix4* | aix5*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- hardcode_into_libs=yes +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- else +- # With GCC up to 2.95.x, collect2 would create an import file +- # for dependence libraries. The import file would start with +- # the line `#! .'. This would cause the generated library to +- # depend on `.', always an invalid library. This was fixed in +- # development snapshots of GCC prior to 3.0. +- case $host_os in +- aix4 | aix4.[01] | aix4.[01].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then +- : +- else +- can_build_shared=no +- fi +- ;; +- esac +- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct +- # soname into executable. Probably we can add versioning support to +- # collect2, so additional links can be useful in future. +- if test "$aix_use_runtimelinking" = yes; then +- # If using run time linking (on AIX 4.2 or later) use lib.so +- # instead of lib.a to let people know that these are not +- # typical AIX shared libraries. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- else +- # We preserve .a as extension for shared libraries through AIX4.2 +- # and later when we are not doing run time linking. +- library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}${shared_ext}$major' +- fi +- shlibpath_var=LIBPATH +- fi +- ;; +- +-amigaos*) +- library_names_spec='$libname.ixlibrary $libname.a' +- # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' +- ;; +- +-beos*) +- library_names_spec='${libname}${shared_ext}' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; +- +-bsdi[45]*) +- version_type=linux +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" +- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- # the default ld.so.conf also contains /usr/contrib/lib and +- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow +- # libtool to hard-code these into programs +- ;; +- +-cygwin* | mingw* | pw32*) +- version_type=windows +- shrext_cmds=".dll" +- need_version=no +- need_lib_prefix=no +- +- case $GCC,$host_os in +- yes,cygwin* | yes,mingw* | yes,pw32*) +- library_names_spec='$libname.dll.a' +- # DLL is installed to $(libdir)/../bin by postinstall_cmds +- postinstall_cmds='base_file=`basename \${file}`~ +- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname~ +- chmod a+x \$dldir/$dlname' +- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $rm \$dlpath' +- shlibpath_overrides_runpath=yes +- +- case $host_os in +- cygwin*) +- # Cygwin DLLs use 'cyg' prefix rather than 'lib' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" +- ;; +- mingw*) +- # MinGW DLLs use traditional 'lib' prefix +- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then +- # It is most probably a Windows format PATH printed by +- # mingw gcc, but we are running on Cygwin. Gcc prints its search +- # path with ; separators, and with drive letters. We can handle the +- # drive letters (cygwin fileutils understands them), so leave them, +- # especially as we might pass files found there to a mingw objdump, +- # which wouldn't understand a cygwinified path. Ahh. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +- ;; +- pw32*) +- # pw32 DLLs use 'pw' prefix rather than 'lib' +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- ;; +- esac +- ;; +- +- *) +- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' +- ;; +- esac +- dynamic_linker='Win32 ld.exe' +- # FIXME: first we should search . and the directory the executable is in +- shlibpath_var=PATH +- ;; +- +-darwin* | rhapsody*) +- dynamic_linker="$host_os dyld" +- version_type=darwin +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' +- soname_spec='${libname}${release}${major}$shared_ext' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. +- if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` +- else +- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' +- fi +- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' +- ;; +- +-dgux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-freebsd1*) +- dynamic_linker=no +- ;; +- +-kfreebsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- +-freebsd* | dragonfly*) +- # DragonFly does not have aout. When/if they implement a new +- # versioning mechanism, adjust this. +- if test -x /usr/bin/objformat; then +- objformat=`/usr/bin/objformat` +- else +- case $host_os in +- freebsd[123]*) objformat=aout ;; +- *) objformat=elf ;; +- esac +- fi +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- need_version=no +- need_lib_prefix=no +- ;; +- freebsd-*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' +- need_version=yes +- ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2*) +- shlibpath_overrides_runpath=yes +- ;; +- freebsd3.[01]* | freebsdelf3.[01]*) +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ +- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- freebsd*) # from 4.6 on +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- esac +- ;; +- +-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- ;; +- +-hpux9* | hpux10* | hpux11*) +- # Give a soname corresponding to the major version so that dld.sl refuses to +- # link against other versions. +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- case $host_cpu in +- ia64*) +- shrext_cmds='.so' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.so" +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- if test "X$HPUX_IA64_MODE" = X32; then +- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" +- else +- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" +- fi +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- hppa*64*) +- shrext_cmds='.sl' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- *) +- shrext_cmds='.sl' +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- esac +- # HP-UX runs *really* slowly unless shared libraries are mode 555. +- postinstall_cmds='chmod 555 $lib' +- ;; +- +-interix3*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- +-irix5* | irix6* | nonstopux*) +- case $host_os in +- nonstopux*) version_type=nonstopux ;; +- *) +- if test "$lt_cv_prog_gnu_ld" = yes; then +- version_type=linux +- else +- version_type=irix +- fi ;; +- esac +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' +- case $host_os in +- irix5* | nonstopux*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") +- libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") +- libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") +- libsuff=64 shlibsuff=64 libmagic=64-bit;; +- *) libsuff= shlibsuff= libmagic=never-match;; +- esac +- ;; +- esac +- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" +- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" +- hardcode_into_libs=yes +- ;; +- +-# No shared lib support for Linux oldld, aout, or coff. +-linux*oldld* | linux*aout* | linux*coff*) +- dynamic_linker=no +- ;; +- +-# This must be Linux ELF. +-linux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- # This implies no fast_install, which is unacceptable. +- # Some rework will be needed to allow for fast_install +- # before this can be enabled. +- hardcode_into_libs=yes +- +- # Append ld.so.conf contents to the search path +- if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" +- fi +- +- # We used to test for /lib/ld.so.1 and disable shared libraries on +- # powerpc, because MkLinux only supported shared libraries with the +- # GNU dynamic linker. Since this was broken with cross compilers, +- # most powerpc-linux boxes support dynamic linking these days and +- # people can always --disable-shared, the test was removed, and we +- # assume the GNU/Linux dynamic linker is in use. +- dynamic_linker='GNU/Linux ld.so' +- ;; +- +-knetbsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- +-netbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='NetBSD ld.elf_so' +- fi +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- +-newsos6) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-nto-qnx*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-openbsd*) +- version_type=sunos +- sys_lib_dlsearch_path_spec="/usr/lib" +- need_lib_prefix=no +- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. +- case $host_os in +- openbsd3.3 | openbsd3.3.*) need_version=yes ;; +- *) need_version=no ;; +- esac +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case $host_os in +- openbsd2.[89] | openbsd2.[89].*) +- shlibpath_overrides_runpath=no +- ;; +- *) +- shlibpath_overrides_runpath=yes +- ;; +- esac +- else +- shlibpath_overrides_runpath=yes +- fi +- ;; +- +-os2*) +- libname_spec='$name' +- shrext_cmds=".dll" +- need_lib_prefix=no +- library_names_spec='$libname${shared_ext} $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; +- +-osf3* | osf4* | osf5*) +- version_type=osf +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" +- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +- ;; +- +-solaris*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; +- +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; +- +-sysv4 | sysv4.3*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no +- need_lib_prefix=no +- export_dynamic_flag_spec='${wl}-Blargedynsym' +- runpath_var=LD_RUN_PATH +- ;; +- siemens) +- need_lib_prefix=no +- ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' +- ;; +- esac +- ;; +- +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux +- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' +- soname_spec='$libname${shared_ext}.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; +- +-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) +- version_type=freebsd-elf +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- if test "$with_gnu_ld" = yes; then +- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' +- shlibpath_overrides_runpath=no +- else +- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' +- shlibpath_overrides_runpath=yes +- case $host_os in +- sco3.2v5*) +- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" +- ;; +- esac +- fi +- sys_lib_dlsearch_path_spec='/usr/lib' +- ;; +- +-uts4*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-*) +- dynamic_linker=no +- ;; +-esac +-echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +-echo "${ECHO_T}$dynamic_linker" >&6 +-test "$dynamic_linker" = no && can_build_shared=no +- +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi +- +-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +-hardcode_action_GCJ= +-if test -n "$hardcode_libdir_flag_spec_GCJ" || \ +- test -n "$runpath_var_GCJ" || \ +- test "X$hardcode_automatic_GCJ" = "Xyes" ; then +- +- # We can hardcode non-existant directories. +- if test "$hardcode_direct_GCJ" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && +- test "$hardcode_minus_L_GCJ" != no; then +- # Linking always hardcodes the temporary library directory. +- hardcode_action_GCJ=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- hardcode_action_GCJ=immediate +- fi +-else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- hardcode_action_GCJ=unsupported +-fi +-echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +-echo "${ECHO_T}$hardcode_action_GCJ" >&6 +- +-if test "$hardcode_action_GCJ" = relink; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless +-fi +- +- +-# The else clause should only fire when bootstrapping the +-# libtool distribution, otherwise you forgot to ship ltmain.sh +-# with your package, and you will get complaints that there are +-# no rules to generate ltmain.sh. +-if test -f "$ltmain"; then +- # See if we are running on zsh, and set the options which allow our commands through +- # without removal of \ escapes. +- if test -n "${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +- fi +- # Now quote all the things that may contain metacharacters while being +- # careful not to overquote the AC_SUBSTed values. We take copies of the +- # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ +- SED SHELL STRIP \ +- libname_spec library_names_spec soname_spec extract_expsyms_cmds \ +- old_striplib striplib file_magic_cmd finish_cmds finish_eval \ +- deplibs_check_method reload_flag reload_cmds need_locks \ +- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ +- lt_cv_sys_global_symbol_to_c_name_address \ +- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ +- old_postinstall_cmds old_postuninstall_cmds \ +- compiler_GCJ \ +- CC_GCJ \ +- LD_GCJ \ +- lt_prog_compiler_wl_GCJ \ +- lt_prog_compiler_pic_GCJ \ +- lt_prog_compiler_static_GCJ \ +- lt_prog_compiler_no_builtin_flag_GCJ \ +- export_dynamic_flag_spec_GCJ \ +- thread_safe_flag_spec_GCJ \ +- whole_archive_flag_spec_GCJ \ +- enable_shared_with_static_runtimes_GCJ \ +- old_archive_cmds_GCJ \ +- old_archive_from_new_cmds_GCJ \ +- predep_objects_GCJ \ +- postdep_objects_GCJ \ +- predeps_GCJ \ +- postdeps_GCJ \ +- compiler_lib_search_path_GCJ \ +- archive_cmds_GCJ \ +- archive_expsym_cmds_GCJ \ +- postinstall_cmds_GCJ \ +- postuninstall_cmds_GCJ \ +- old_archive_from_expsyms_cmds_GCJ \ +- allow_undefined_flag_GCJ \ +- no_undefined_flag_GCJ \ +- export_symbols_cmds_GCJ \ +- hardcode_libdir_flag_spec_GCJ \ +- hardcode_libdir_flag_spec_ld_GCJ \ +- hardcode_libdir_separator_GCJ \ +- hardcode_automatic_GCJ \ +- module_cmds_GCJ \ +- module_expsym_cmds_GCJ \ +- lt_cv_prog_compiler_c_o_GCJ \ +- exclude_expsyms_GCJ \ +- include_expsyms_GCJ; do +- +- case $var in +- old_archive_cmds_GCJ | \ +- old_archive_from_new_cmds_GCJ | \ +- archive_cmds_GCJ | \ +- archive_expsym_cmds_GCJ | \ +- module_cmds_GCJ | \ +- module_expsym_cmds_GCJ | \ +- old_archive_from_expsyms_cmds_GCJ | \ +- export_symbols_cmds_GCJ | \ +- extract_expsyms_cmds | reload_cmds | finish_cmds | \ +- postinstall_cmds | postuninstall_cmds | \ +- old_postinstall_cmds | old_postuninstall_cmds | \ +- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) +- # Double-quote double-evaled strings. +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" +- ;; +- *) +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" +- ;; +- esac +- done +- +- case $lt_echo in +- *'\$0 --fallback-echo"') +- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` +- ;; +- esac +- +-cfgfile="$ofile" +- +- cat <<__EOF__ >> "$cfgfile" +-# ### BEGIN LIBTOOL TAG CONFIG: $tagname +- +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +- +-# Shell to use when invoking shell scripts. +-SHELL=$lt_SHELL +- +-# Whether or not to build shared libraries. +-build_libtool_libs=$enable_shared +- +-# Whether or not to build static libraries. +-build_old_libs=$enable_static +- +-# Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$archive_cmds_need_lc_GCJ +- +-# Whether or not to disallow shared libs when runtime libs are static +-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ +- +-# Whether or not to optimize for fast installation. +-fast_install=$enable_fast_install +- +-# The host system. +-host_alias=$host_alias +-host=$host +-host_os=$host_os +- +-# The build system. +-build_alias=$build_alias +-build=$build +-build_os=$build_os +- +-# An echo program that does not interpret backslashes. +-echo=$lt_echo +- +-# The archiver. +-AR=$lt_AR +-AR_FLAGS=$lt_AR_FLAGS +- +-# A C compiler. +-LTCC=$lt_LTCC +- +-# LTCC compiler flags. +-LTCFLAGS=$lt_LTCFLAGS +- +-# A language-specific compiler. +-CC=$lt_compiler_GCJ +- +-# Is the compiler the GNU C compiler? +-with_gcc=$GCC_GCJ +- +-# An ERE matcher. +-EGREP=$lt_EGREP +- +-# The linker used to build libraries. +-LD=$lt_LD_GCJ +- +-# Whether we need hard or soft links. +-LN_S=$lt_LN_S +- +-# A BSD-compatible nm program. +-NM=$lt_NM +- +-# A symbol stripping program +-STRIP=$lt_STRIP +- +-# Used to examine libraries when file_magic_cmd begins "file" +-MAGIC_CMD=$MAGIC_CMD +- +-# Used on cygwin: DLL creation program. +-DLLTOOL="$DLLTOOL" +- +-# Used on cygwin: object dumper. +-OBJDUMP="$OBJDUMP" +- +-# Used on cygwin: assembler. +-AS="$AS" +- +-# The name of the directory that contains temporary libtool files. +-objdir=$objdir +- +-# How to create reloadable object files. +-reload_flag=$lt_reload_flag +-reload_cmds=$lt_reload_cmds +- +-# How to pass a linker flag through the compiler. +-wl=$lt_lt_prog_compiler_wl_GCJ +- +-# Object file suffix (normally "o"). +-objext="$ac_objext" +- +-# Old archive suffix (normally "a"). +-libext="$libext" +- +-# Shared library suffix (normally ".so"). +-shrext_cmds='$shrext_cmds' +- +-# Executable file suffix (normally ""). +-exeext="$exeext" +- +-# Additional compiler flags for building library objects. +-pic_flag=$lt_lt_prog_compiler_pic_GCJ +-pic_mode=$pic_mode +- +-# What is the maximum length of a command? +-max_cmd_len=$lt_cv_sys_max_cmd_len +- +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ +- +-# Must we lock files when doing compilation? +-need_locks=$lt_need_locks +- +-# Do we need the lib prefix for modules? +-need_lib_prefix=$need_lib_prefix +- +-# Do we need a version for libraries? +-need_version=$need_version +- +-# Whether dlopen is supported. +-dlopen_support=$enable_dlopen +- +-# Whether dlopen of programs is supported. +-dlopen_self=$enable_dlopen_self +- +-# Whether dlopen of statically linked programs is supported. +-dlopen_self_static=$enable_dlopen_self_static +- +-# Compiler flag to prevent dynamic linking. +-link_static_flag=$lt_lt_prog_compiler_static_GCJ +- +-# Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ +- +-# Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ +- +-# Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ +- +-# Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ +- +-# Library versioning type. +-version_type=$version_type +- +-# Format of library name prefix. +-libname_spec=$lt_libname_spec +- +-# List of archive names. First name is the real one, the rest are links. +-# The last name is the one that the linker finds with -lNAME. +-library_names_spec=$lt_library_names_spec +- +-# The coded name of the library, if different from the real name. +-soname_spec=$lt_soname_spec +- +-# Commands used to build and install an old-style archive. +-RANLIB=$lt_RANLIB +-old_archive_cmds=$lt_old_archive_cmds_GCJ +-old_postinstall_cmds=$lt_old_postinstall_cmds +-old_postuninstall_cmds=$lt_old_postuninstall_cmds +- +-# Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ +- +-# Create a temporary old-style archive to link instead of a shared archive. +-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ +- +-# Commands used to build and install a shared archive. +-archive_cmds=$lt_archive_cmds_GCJ +-archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +-postinstall_cmds=$lt_postinstall_cmds +-postuninstall_cmds=$lt_postuninstall_cmds +- +-# Commands used to build a loadable module (assumed same as above if empty) +-module_cmds=$lt_module_cmds_GCJ +-module_expsym_cmds=$lt_module_expsym_cmds_GCJ +- +-# Commands to strip libraries. +-old_striplib=$lt_old_striplib +-striplib=$lt_striplib +- +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predep_objects=$lt_predep_objects_GCJ +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdep_objects=$lt_postdep_objects_GCJ +- +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predeps=$lt_predeps_GCJ +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdeps=$lt_postdeps_GCJ +- +-# The library search path used internally by the compiler when linking +-# a shared library. +-compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ +- +-# Method to check whether dependent libraries are shared objects. +-deplibs_check_method=$lt_deplibs_check_method +- +-# Command to use when deplibs_check_method == file_magic. +-file_magic_cmd=$lt_file_magic_cmd +- +-# Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_allow_undefined_flag_GCJ +- +-# Flag that forces no undefined symbols. +-no_undefined_flag=$lt_no_undefined_flag_GCJ +- +-# Commands used to finish a libtool library installation in a directory. +-finish_cmds=$lt_finish_cmds +- +-# Same as above, but a single script fragment to be evaled but not shown. +-finish_eval=$lt_finish_eval +- +-# Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe +- +-# Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl +- +-# Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address +- +-# This is the shared library runtime path variable. +-runpath_var=$runpath_var +- +-# This is the shared library path variable. +-shlibpath_var=$shlibpath_var +- +-# Is shlibpath searched before the hard-coded library search path? +-shlibpath_overrides_runpath=$shlibpath_overrides_runpath +- +-# How to hardcode a shared library path into an executable. +-hardcode_action=$hardcode_action_GCJ +- +-# Whether we should hardcode library paths into libraries. +-hardcode_into_libs=$hardcode_into_libs +- +-# Flag to hardcode \$libdir into a binary during linking. +-# This must work even if \$libdir does not exist. +-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ +- +-# If ld is used when linking, flag to hardcode \$libdir into +-# a binary during linking. This must work even if \$libdir does +-# not exist. +-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ +- +-# Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ +- +-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +-# resulting binary. +-hardcode_direct=$hardcode_direct_GCJ +- +-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +-# resulting binary. +-hardcode_minus_L=$hardcode_minus_L_GCJ +- +-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +-# the resulting binary. +-hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ +- +-# Set to yes if building a shared library automatically hardcodes DIR into the library +-# and all subsequent libraries and executables linked against it. +-hardcode_automatic=$hardcode_automatic_GCJ +- +-# Variables whose values should be saved in libtool wrapper scripts and +-# restored at relink time. +-variables_saved_for_relink="$variables_saved_for_relink" +- +-# Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$link_all_deplibs_GCJ +- +-# Compile-time system search path for libraries +-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec +- +-# Run-time system search path for libraries +-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec +- +-# Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path_GCJ" +- +-# Set to yes if exported symbols are required. +-always_export_symbols=$always_export_symbols_GCJ +- +-# The commands to list exported symbols. +-export_symbols_cmds=$lt_export_symbols_cmds_GCJ +- +-# The commands to extract the exported symbol list from a shared archive. +-extract_expsyms_cmds=$lt_extract_expsyms_cmds +- +-# Symbols that should not be listed in the preloaded symbols. +-exclude_expsyms=$lt_exclude_expsyms_GCJ +- +-# Symbols that must always be exported. +-include_expsyms=$lt_include_expsyms_GCJ +- +-# ### END LIBTOOL TAG CONFIG: $tagname +- +-__EOF__ + ++ if test ! -z "$with_ffmpeg"; then ++ WITH_FFMPEG_TRUE= ++ WITH_FFMPEG_FALSE='#' ++else ++ WITH_FFMPEG_TRUE='#' ++ WITH_FFMPEG_FALSE= ++fi + ++if test ! -z "$with_ffmpeg"; then ++ { echo "$as_me:$LINENO: checking for lame_init in -lmp3lame" >&5 ++echo $ECHO_N "checking for lame_init in -lmp3lame... $ECHO_C" >&6; } ++if test "${ac_cv_lib_mp3lame_lame_init+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- # If there is no Makefile yet, we rely on a make rule to execute +- # `config.status --recheck' to rerun these tests and create the +- # libtool script then. +- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` +- if test -f "$ltmain_in"; then +- test -f Makefile && make "$ltmain" +- fi +-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 +- +-CC="$lt_save_CC" +- +- else +- tagname="" +- fi +- ;; +- +- RC) +- +- +- +-# Source file extension for RC test sources. +-ac_ext=rc +- +-# Object file extension for compiled RC test sources. +-objext=o +-objext_RC=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' +- +-# Code to be used in simple link tests +-lt_simple_link_test_code="$lt_simple_compile_test_code" +- +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. +- +-# If no C compiler was specified, use CC. +-LTCC=${LTCC-"$CC"} +- +-# If no C compiler flags were specified, use CFLAGS. +-LTCFLAGS=${LTCFLAGS-"$CFLAGS"} +- +-# Allow CC to be a program name with arguments. +-compiler=$CC +- +- +-# save warnings/boilerplate of simple test code +-ac_outfile=conftest.$ac_objext +-printf "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_compiler_boilerplate=`cat conftest.err` +-$rm conftest* +- +-ac_outfile=conftest.$ac_objext +-printf "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_linker_boilerplate=`cat conftest.err` +-$rm conftest* +- +- +-# Allow CC to be a program name with arguments. +-lt_save_CC="$CC" +-CC=${RC-"windres"} +-compiler=$CC +-compiler_RC=$CC +-for cc_temp in $compiler""; do +- case $cc_temp in +- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; +- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; +- \-*) ;; +- *) break;; +- esac +-done +-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +- +-lt_cv_prog_compiler_c_o_RC=yes +- +-# The else clause should only fire when bootstrapping the +-# libtool distribution, otherwise you forgot to ship ltmain.sh +-# with your package, and you will get complaints that there are +-# no rules to generate ltmain.sh. +-if test -f "$ltmain"; then +- # See if we are running on zsh, and set the options which allow our commands through +- # without removal of \ escapes. +- if test -n "${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +- fi +- # Now quote all the things that may contain metacharacters while being +- # careful not to overquote the AC_SUBSTed values. We take copies of the +- # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ +- SED SHELL STRIP \ +- libname_spec library_names_spec soname_spec extract_expsyms_cmds \ +- old_striplib striplib file_magic_cmd finish_cmds finish_eval \ +- deplibs_check_method reload_flag reload_cmds need_locks \ +- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ +- lt_cv_sys_global_symbol_to_c_name_address \ +- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ +- old_postinstall_cmds old_postuninstall_cmds \ +- compiler_RC \ +- CC_RC \ +- LD_RC \ +- lt_prog_compiler_wl_RC \ +- lt_prog_compiler_pic_RC \ +- lt_prog_compiler_static_RC \ +- lt_prog_compiler_no_builtin_flag_RC \ +- export_dynamic_flag_spec_RC \ +- thread_safe_flag_spec_RC \ +- whole_archive_flag_spec_RC \ +- enable_shared_with_static_runtimes_RC \ +- old_archive_cmds_RC \ +- old_archive_from_new_cmds_RC \ +- predep_objects_RC \ +- postdep_objects_RC \ +- predeps_RC \ +- postdeps_RC \ +- compiler_lib_search_path_RC \ +- archive_cmds_RC \ +- archive_expsym_cmds_RC \ +- postinstall_cmds_RC \ +- postuninstall_cmds_RC \ +- old_archive_from_expsyms_cmds_RC \ +- allow_undefined_flag_RC \ +- no_undefined_flag_RC \ +- export_symbols_cmds_RC \ +- hardcode_libdir_flag_spec_RC \ +- hardcode_libdir_flag_spec_ld_RC \ +- hardcode_libdir_separator_RC \ +- hardcode_automatic_RC \ +- module_cmds_RC \ +- module_expsym_cmds_RC \ +- lt_cv_prog_compiler_c_o_RC \ +- exclude_expsyms_RC \ +- include_expsyms_RC; do +- +- case $var in +- old_archive_cmds_RC | \ +- old_archive_from_new_cmds_RC | \ +- archive_cmds_RC | \ +- archive_expsym_cmds_RC | \ +- module_cmds_RC | \ +- module_expsym_cmds_RC | \ +- old_archive_from_expsyms_cmds_RC | \ +- export_symbols_cmds_RC | \ +- extract_expsyms_cmds | reload_cmds | finish_cmds | \ +- postinstall_cmds | postuninstall_cmds | \ +- old_postinstall_cmds | old_postuninstall_cmds | \ +- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) +- # Double-quote double-evaled strings. +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" +- ;; +- *) +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" +- ;; +- esac +- done +- +- case $lt_echo in +- *'\$0 --fallback-echo"') +- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` +- ;; +- esac +- +-cfgfile="$ofile" +- +- cat <<__EOF__ >> "$cfgfile" +-# ### BEGIN LIBTOOL TAG CONFIG: $tagname +- +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +- +-# Shell to use when invoking shell scripts. +-SHELL=$lt_SHELL +- +-# Whether or not to build shared libraries. +-build_libtool_libs=$enable_shared +- +-# Whether or not to build static libraries. +-build_old_libs=$enable_static +- +-# Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$archive_cmds_need_lc_RC +- +-# Whether or not to disallow shared libs when runtime libs are static +-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC +- +-# Whether or not to optimize for fast installation. +-fast_install=$enable_fast_install +- +-# The host system. +-host_alias=$host_alias +-host=$host +-host_os=$host_os +- +-# The build system. +-build_alias=$build_alias +-build=$build +-build_os=$build_os +- +-# An echo program that does not interpret backslashes. +-echo=$lt_echo +- +-# The archiver. +-AR=$lt_AR +-AR_FLAGS=$lt_AR_FLAGS +- +-# A C compiler. +-LTCC=$lt_LTCC +- +-# LTCC compiler flags. +-LTCFLAGS=$lt_LTCFLAGS +- +-# A language-specific compiler. +-CC=$lt_compiler_RC +- +-# Is the compiler the GNU C compiler? +-with_gcc=$GCC_RC +- +-# An ERE matcher. +-EGREP=$lt_EGREP +- +-# The linker used to build libraries. +-LD=$lt_LD_RC +- +-# Whether we need hard or soft links. +-LN_S=$lt_LN_S +- +-# A BSD-compatible nm program. +-NM=$lt_NM +- +-# A symbol stripping program +-STRIP=$lt_STRIP +- +-# Used to examine libraries when file_magic_cmd begins "file" +-MAGIC_CMD=$MAGIC_CMD +- +-# Used on cygwin: DLL creation program. +-DLLTOOL="$DLLTOOL" +- +-# Used on cygwin: object dumper. +-OBJDUMP="$OBJDUMP" +- +-# Used on cygwin: assembler. +-AS="$AS" +- +-# The name of the directory that contains temporary libtool files. +-objdir=$objdir +- +-# How to create reloadable object files. +-reload_flag=$lt_reload_flag +-reload_cmds=$lt_reload_cmds +- +-# How to pass a linker flag through the compiler. +-wl=$lt_lt_prog_compiler_wl_RC +- +-# Object file suffix (normally "o"). +-objext="$ac_objext" +- +-# Old archive suffix (normally "a"). +-libext="$libext" +- +-# Shared library suffix (normally ".so"). +-shrext_cmds='$shrext_cmds' +- +-# Executable file suffix (normally ""). +-exeext="$exeext" +- +-# Additional compiler flags for building library objects. +-pic_flag=$lt_lt_prog_compiler_pic_RC +-pic_mode=$pic_mode +- +-# What is the maximum length of a command? +-max_cmd_len=$lt_cv_sys_max_cmd_len +- +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC +- +-# Must we lock files when doing compilation? +-need_locks=$lt_need_locks +- +-# Do we need the lib prefix for modules? +-need_lib_prefix=$need_lib_prefix +- +-# Do we need a version for libraries? +-need_version=$need_version +- +-# Whether dlopen is supported. +-dlopen_support=$enable_dlopen +- +-# Whether dlopen of programs is supported. +-dlopen_self=$enable_dlopen_self +- +-# Whether dlopen of statically linked programs is supported. +-dlopen_self_static=$enable_dlopen_self_static +- +-# Compiler flag to prevent dynamic linking. +-link_static_flag=$lt_lt_prog_compiler_static_RC +- +-# Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC +- +-# Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC +- +-# Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC +- +-# Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC +- +-# Library versioning type. +-version_type=$version_type +- +-# Format of library name prefix. +-libname_spec=$lt_libname_spec +- +-# List of archive names. First name is the real one, the rest are links. +-# The last name is the one that the linker finds with -lNAME. +-library_names_spec=$lt_library_names_spec +- +-# The coded name of the library, if different from the real name. +-soname_spec=$lt_soname_spec +- +-# Commands used to build and install an old-style archive. +-RANLIB=$lt_RANLIB +-old_archive_cmds=$lt_old_archive_cmds_RC +-old_postinstall_cmds=$lt_old_postinstall_cmds +-old_postuninstall_cmds=$lt_old_postuninstall_cmds +- +-# Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC +- +-# Create a temporary old-style archive to link instead of a shared archive. +-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC +- +-# Commands used to build and install a shared archive. +-archive_cmds=$lt_archive_cmds_RC +-archive_expsym_cmds=$lt_archive_expsym_cmds_RC +-postinstall_cmds=$lt_postinstall_cmds +-postuninstall_cmds=$lt_postuninstall_cmds +- +-# Commands used to build a loadable module (assumed same as above if empty) +-module_cmds=$lt_module_cmds_RC +-module_expsym_cmds=$lt_module_expsym_cmds_RC +- +-# Commands to strip libraries. +-old_striplib=$lt_old_striplib +-striplib=$lt_striplib +- +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predep_objects=$lt_predep_objects_RC +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdep_objects=$lt_postdep_objects_RC +- +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predeps=$lt_predeps_RC +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdeps=$lt_postdeps_RC +- +-# The library search path used internally by the compiler when linking +-# a shared library. +-compiler_lib_search_path=$lt_compiler_lib_search_path_RC +- +-# Method to check whether dependent libraries are shared objects. +-deplibs_check_method=$lt_deplibs_check_method +- +-# Command to use when deplibs_check_method == file_magic. +-file_magic_cmd=$lt_file_magic_cmd +- +-# Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_allow_undefined_flag_RC +- +-# Flag that forces no undefined symbols. +-no_undefined_flag=$lt_no_undefined_flag_RC +- +-# Commands used to finish a libtool library installation in a directory. +-finish_cmds=$lt_finish_cmds +- +-# Same as above, but a single script fragment to be evaled but not shown. +-finish_eval=$lt_finish_eval +- +-# Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe +- +-# Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl +- +-# Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address +- +-# This is the shared library runtime path variable. +-runpath_var=$runpath_var ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lmp3lame $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-# This is the shared library path variable. +-shlibpath_var=$shlibpath_var ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char lame_init (); ++int ++main () ++{ ++return lame_init (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_mp3lame_lame_init=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# Is shlibpath searched before the hard-coded library search path? +-shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ac_cv_lib_mp3lame_lame_init=no ++fi + +-# How to hardcode a shared library path into an executable. +-hardcode_action=$hardcode_action_RC ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_mp3lame_lame_init" >&5 ++echo "${ECHO_T}$ac_cv_lib_mp3lame_lame_init" >&6; } ++if test $ac_cv_lib_mp3lame_lame_init = yes; then ++ HAVE_MP3LAME="true" ++else ++ HAVE_MP3LAME="false" ++fi + +-# Whether we should hardcode library paths into libraries. +-hardcode_into_libs=$hardcode_into_libs ++fi ++ if test "$HAVE_MP3LAME" = "true"; then ++ HAVE_MP3LAME_TRUE= ++ HAVE_MP3LAME_FALSE='#' ++else ++ HAVE_MP3LAME_TRUE='#' ++ HAVE_MP3LAME_FALSE= ++fi + +-# Flag to hardcode \$libdir into a binary during linking. +-# This must work even if \$libdir does not exist. +-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +-# If ld is used when linking, flag to hardcode \$libdir into +-# a binary during linking. This must work even if \$libdir does +-# not exist. +-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC +- +-# Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC +- +-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +-# resulting binary. +-hardcode_direct=$hardcode_direct_RC +- +-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +-# resulting binary. +-hardcode_minus_L=$hardcode_minus_L_RC +- +-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +-# the resulting binary. +-hardcode_shlibpath_var=$hardcode_shlibpath_var_RC +- +-# Set to yes if building a shared library automatically hardcodes DIR into the library +-# and all subsequent libraries and executables linked against it. +-hardcode_automatic=$hardcode_automatic_RC ++# Seem to need this dummy here to induce the 'checking for egrep... grep -E', etc. ++# before it seemed to be inside the with_jpeg conditional. ++if test "${ac_cv_header_thenonexistentheader_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for thenonexistentheader.h" >&5 ++echo $ECHO_N "checking for thenonexistentheader.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_thenonexistentheader_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_thenonexistentheader_h" >&5 ++echo "${ECHO_T}$ac_cv_header_thenonexistentheader_h" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking thenonexistentheader.h usability" >&5 ++echo $ECHO_N "checking thenonexistentheader.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++#include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# Variables whose values should be saved in libtool wrapper scripts and +-# restored at relink time. +-variables_saved_for_relink="$variables_saved_for_relink" ++ ac_header_compiler=no ++fi + +-# Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$link_all_deplibs_RC ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + +-# Compile-time system search path for libraries +-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++# Is the header present? ++{ echo "$as_me:$LINENO: checking thenonexistentheader.h presence" >&5 ++echo $ECHO_N "checking thenonexistentheader.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# Run-time system search path for libraries +-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ ac_header_preproc=no ++fi + +-# Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path_RC" ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + +-# Set to yes if exported symbols are required. +-always_export_symbols=$always_export_symbols_RC ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: thenonexistentheader.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++## ----------------------------------------------------------- ## ++## Report this to http://sourceforge.net/projects/libvncserver ## ++## ----------------------------------------------------------- ## ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for thenonexistentheader.h" >&5 ++echo $ECHO_N "checking for thenonexistentheader.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_thenonexistentheader_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_thenonexistentheader_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_thenonexistentheader_h" >&5 ++echo "${ECHO_T}$ac_cv_header_thenonexistentheader_h" >&6; } + +-# The commands to list exported symbols. +-export_symbols_cmds=$lt_export_symbols_cmds_RC ++fi ++if test $ac_cv_header_thenonexistentheader_h = yes; then ++ HAVE_THENONEXISTENTHEADER_H="true" ++fi + +-# The commands to extract the exported symbol list from a shared archive. +-extract_expsyms_cmds=$lt_extract_expsyms_cmds + +-# Symbols that should not be listed in the preloaded symbols. +-exclude_expsyms=$lt_exclude_expsyms_RC + +-# Symbols that must always be exported. +-include_expsyms=$lt_include_expsyms_RC ++# Checks for X libraries ++HAVE_X="false" ++{ echo "$as_me:$LINENO: checking for X" >&5 ++echo $ECHO_N "checking for X... $ECHO_C" >&6; } + +-# ### END LIBTOOL TAG CONFIG: $tagname + +-__EOF__ ++# Check whether --with-x was given. ++if test "${with_x+set}" = set; then ++ withval=$with_x; ++fi + ++# $have_x is `yes', `no', `disabled', or empty when we do not yet know. ++if test "x$with_x" = xno; then ++ # The user explicitly disabled X. ++ have_x=disabled ++else ++ case $x_includes,$x_libraries in #( ++ *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5 ++echo "$as_me: error: Cannot use X directory names containing '" >&2;} ++ { (exit 1); exit 1; }; };; #( ++ *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # One or both of the vars are not set, and there is no cached value. ++ac_x_includes=no ac_x_libraries=no ++# Standard set of common directories for X headers. ++# Check X11 before X11Rn because it is often a symlink to the current release. ++ac_x_header_dirs='' + ++if test "$ac_x_includes" = no; then ++ # Guess where to find include files, by looking for Xlib.h. ++ # First, try using that file with no special directory specified. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ # We can compile using X headers with no special include directory. ++ac_x_includes= + else +- # If there is no Makefile yet, we rely on a make rule to execute +- # `config.status --recheck' to rerun these tests and create the +- # libtool script then. +- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` +- if test -f "$ltmain_in"; then +- test -f Makefile && make "$ltmain" ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ for ac_dir in $ac_x_header_dirs; do ++ if test -r "$ac_dir/X11/Xlib.h"; then ++ ac_x_includes=$ac_dir ++ break + fi ++done + fi + ++rm -f conftest.err conftest.$ac_ext ++fi # $ac_x_includes = no + +-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 +- +-CC="$lt_save_CC" +- +- ;; +- +- *) +- { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +-echo "$as_me: error: Unsupported tag name: $tagname" >&2;} +- { (exit 1); exit 1; }; } +- ;; +- esac ++if test "$ac_x_libraries" = no; then ++ # Check for the libraries. ++ # See if we find them without any special options. ++ # Don't add to $LIBS permanently. ++ ac_save_LIBS=$LIBS ++ LIBS="-lX11 $LIBS" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++int ++main () ++{ ++XrmInitialize () ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ LIBS=$ac_save_LIBS ++# We can link X programs with no special library path. ++ac_x_libraries= ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- # Append the new tag name to the list of available tags. +- if test -n "$tagname" ; then +- available_tags="$available_tags $tagname" +- fi ++ LIBS=$ac_save_LIBS ++for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` ++do ++ # Don't even attempt the hair of trying to link an X program! ++ for ac_extension in a so sl; do ++ if test -r "$ac_dir/libX11.$ac_extension"; then ++ ac_x_libraries=$ac_dir ++ break 2 + fi + done +- IFS="$lt_save_ifs" +- +- # Now substitute the updated list of available tags. +- if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then +- mv "${ofile}T" "$ofile" +- chmod +x "$ofile" +- else +- rm -f "${ofile}T" +- { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +-echo "$as_me: error: unable to update list of available tagged configurations." >&2;} +- { (exit 1); exit 1; }; } +- fi ++done + fi + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi # $ac_x_libraries = no + ++case $ac_x_includes,$ac_x_libraries in #( ++ no,* | *,no | *\'*) ++ # Didn't find X, or a directory has "'" in its name. ++ ac_cv_have_x="have_x=no";; #( ++ *) ++ # Record where we found X for the cache. ++ ac_cv_have_x="have_x=yes\ ++ ac_x_includes='$ac_x_includes'\ ++ ac_x_libraries='$ac_x_libraries'" ++esac ++fi ++;; #( ++ *) have_x=yes;; ++ esac ++ eval "$ac_cv_have_x" ++fi # $with_x != no + +-# This can be used to rebuild libtool when needed +-LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" +- +-# Always use our own libtool. +-LIBTOOL='$(SHELL) $(top_builddir)/libtool' +- +-# Prevent multiple expansion +- +- +- +- ++if test "$have_x" != yes; then ++ { echo "$as_me:$LINENO: result: $have_x" >&5 ++echo "${ECHO_T}$have_x" >&6; } ++ no_x=yes ++else ++ # If each of the values was on the command line, it overrides each guess. ++ test "x$x_includes" = xNONE && x_includes=$ac_x_includes ++ test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries ++ # Update the cache value to reflect the command line values. ++ ac_cv_have_x="have_x=yes\ ++ ac_x_includes='$x_includes'\ ++ ac_x_libraries='$x_libraries'" ++ { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 ++echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; } ++fi + ++if test "$no_x" = yes; then ++ # Not all programs may use this symbol, but it does not hurt to define it. + ++cat >>confdefs.h <<\_ACEOF ++#define X_DISPLAY_MISSING 1 ++_ACEOF + ++ X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= ++else ++ if test -n "$x_includes"; then ++ X_CFLAGS="$X_CFLAGS -I$x_includes" ++ fi + ++ # It would also be nice to do this for all -L options, not just this one. ++ if test -n "$x_libraries"; then ++ X_LIBS="$X_LIBS -L$x_libraries" ++ # For Solaris; some versions of Sun CC require a space after -R and ++ # others require no space. Words are not sufficient . . . . ++ { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 ++echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; } ++ ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" ++ ac_xsave_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + ++int ++main () ++{ + ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ X_LIBS="$X_LIBS -R$x_libraries" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ LIBS="$ac_xsave_LIBS -R $x_libraries" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + ++int ++main () ++{ + ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ X_LIBS="$X_LIBS -R $x_libraries" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ { echo "$as_me:$LINENO: result: neither works" >&5 ++echo "${ECHO_T}neither works" >&6; } ++fi + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ ac_c_werror_flag=$ac_xsave_c_werror_flag ++ LIBS=$ac_xsave_LIBS ++ fi + ++ # Check for system-dependent libraries X programs must link with. ++ # Do this before checking for the system-independent R6 libraries ++ # (-lICE), since we may need -lsocket or whatever for X linking. + ++ if test "$ISC" = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" ++ else ++ # Martyn Johnson says this is needed for Ultrix, if the X ++ # libraries were built with DECnet support. And Karl Berry says ++ # the Alpha needs dnet_stub (dnet does not exist). ++ ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XOpenDisplay (); ++int ++main () ++{ ++return XOpenDisplay (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# Extract the first word of "ar", so it can be a program name with args. +-set dummy ar; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_path_AR+set}" = set; then ++ { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 ++echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- case $AR in +- [\\/]* | ?:[\\/]*) +- ac_cv_path_AR="$AR" # Let the user override the test with a path. +- ;; +- *) +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-as_dummy="$PATH:/usr/ccs/bin" +-for as_dir in $as_dummy +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldnet $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +- test -z "$ac_cv_path_AR" && ac_cv_path_AR="/usr/bin/ar" +- ;; ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dnet_ntoa (); ++int ++main () ++{ ++return dnet_ntoa (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; + esac +-fi +-AR=$ac_cv_path_AR +- +-if test -n "$AR"; then +- echo "$as_me:$LINENO: result: $AR" >&5 +-echo "${ECHO_T}$AR" >&6 ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dnet_dnet_ntoa=yes + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- +-# Options +- ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ ac_cv_lib_dnet_dnet_ntoa=no ++fi + +-# Check whether --with-tightvnc-filetransfer or --without-tightvnc-filetransfer was given. +-if test "${with_tightvnc_filetransfer+set}" = set; then +- withval="$with_tightvnc_filetransfer" ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 ++echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; } ++if test $ac_cv_lib_dnet_dnet_ntoa = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" ++fi + ++ if test $ac_cv_lib_dnet_dnet_ntoa = no; then ++ { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 ++echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- with_tightvnc_filetransfer=yes +-fi; +-# AC_DEFINE moved to after libpthread check. +- +- +- +- +-# Check whether --with-24bpp or --without-24bpp was given. +-if test "${with_24bpp+set}" = set; then +- withval="$with_24bpp" ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldnet_stub $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-else +- with_24bpp=yes +-fi; +-if test "x$with_24bpp" = "xyes"; then +- cat >>confdefs.h <<\_ACEOF +-#define ALLOW24BPP 1 ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dnet_ntoa (); ++int ++main () ++{ ++return dnet_ntoa (); ++ ; ++ return 0; ++} + _ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dnet_stub_dnet_ntoa=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ ac_cv_lib_dnet_stub_dnet_ntoa=no + fi + +- +- +-# Check whether --with-ffmpeg or --without-ffmpeg was given. +-if test "${with_ffmpeg+set}" = set; then +- withval="$with_ffmpeg" +- +-fi; +- +- +- +-if test ! -z "$with_ffmpeg"; then +- WITH_FFMPEG_TRUE= +- WITH_FFMPEG_FALSE='#' +-else +- WITH_FFMPEG_TRUE='#' +- WITH_FFMPEG_FALSE= ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 ++echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } ++if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" + fi + +-if test ! -z "$with_ffmpeg"; then +- echo "$as_me:$LINENO: checking for lame_init in -lmp3lame" >&5 +-echo $ECHO_N "checking for lame_init in -lmp3lame... $ECHO_C" >&6 +-if test "${ac_cv_lib_mp3lame_lame_init+set}" = set; then ++ fi ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ LIBS="$ac_xsave_LIBS" ++ ++ # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, ++ # to get the SysV transport functions. ++ # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) ++ # needs -lnsl. ++ # The nsl library prevents programs from opening the X display ++ # on Irix 5.2, according to T.E. Dickey. ++ # The functions gethostbyname, getservbyname, and inet_addr are ++ # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. ++ { echo "$as_me:$LINENO: checking for gethostbyname" >&5 ++echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; } ++if test "${ac_cv_func_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lmp3lame $LIBS" +-cat >conftest.$ac_ext <<_ACEOF ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++/* Define gethostbyname to an innocuous variant, in case declares gethostbyname. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define gethostbyname innocuous_gethostbyname ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char gethostbyname (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef gethostbyname ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char lame_init (); ++char gethostbyname (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_gethostbyname || defined __stub___gethostbyname ++choke me ++#endif ++ + int + main () + { +-lame_init (); ++return gethostbyname (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_mp3lame_lame_init=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_gethostbyname=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_mp3lame_lame_init=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_mp3lame_lame_init" >&5 +-echo "${ECHO_T}$ac_cv_lib_mp3lame_lame_init" >&6 +-if test $ac_cv_lib_mp3lame_lame_init = yes; then +- HAVE_MP3LAME="true" +-else +- HAVE_MP3LAME="false" +-fi +- ++ ac_cv_func_gethostbyname=no + fi + +- +-if test "$HAVE_MP3LAME" = "true"; then +- HAVE_MP3LAME_TRUE= +- HAVE_MP3LAME_FALSE='#' +-else +- HAVE_MP3LAME_TRUE='#' +- HAVE_MP3LAME_FALSE= ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; } + +- +-# Seem to need this dummy here to induce the 'checking for egrep... grep -E', etc. +-# before it seemed to be inside the with_jpeg conditional. +-if test "${ac_cv_header_thenonexistentheader_h+set}" = set; then +- echo "$as_me:$LINENO: checking for thenonexistentheader.h" >&5 +-echo $ECHO_N "checking for thenonexistentheader.h... $ECHO_C" >&6 +-if test "${ac_cv_header_thenonexistentheader_h+set}" = set; then ++ if test $ac_cv_func_gethostbyname = no; then ++ { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 ++echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +-fi +-echo "$as_me:$LINENO: result: $ac_cv_header_thenonexistentheader_h" >&5 +-echo "${ECHO_T}$ac_cv_header_thenonexistentheader_h" >&6 + else +- # Is the header compilable? +-echo "$as_me:$LINENO: checking thenonexistentheader.h usability" >&5 +-echo $ECHO_N "checking thenonexistentheader.h usability... $ECHO_C" >&6 ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lnsl $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_includes_default +-#include ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char gethostbyname (); ++int ++main () ++{ ++return gethostbyname (); ++ ; ++ return 0; ++} + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_header_compiler=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_nsl_gethostbyname=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_cv_lib_nsl_gethostbyname=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 + +-# Is the header present? +-echo "$as_me:$LINENO: checking thenonexistentheader.h presence" >&5 +-echo $ECHO_N "checking thenonexistentheader.h presence... $ECHO_C" >&6 ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; } ++if test $ac_cv_lib_nsl_gethostbyname = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" ++fi ++ ++ if test $ac_cv_lib_nsl_gethostbyname = no; then ++ { echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 ++echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; } ++if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lbsd $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char gethostbyname (); ++int ++main () ++{ ++return gethostbyname (); ++ ; ++ return 0; ++} + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_bsd_gethostbyname=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_preproc=no +-fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: thenonexistentheader.h: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: thenonexistentheader.h: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: thenonexistentheader.h: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: thenonexistentheader.h: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: thenonexistentheader.h: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: section \"Present But Cannot Be Compiled\"" >&5 +-echo "$as_me: WARNING: thenonexistentheader.h: section \"Present But Cannot Be Compiled\"" >&2;} +- { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: thenonexistentheader.h: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: thenonexistentheader.h: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: thenonexistentheader.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ----------------------------------------------------------- ## +-## Report this to http://sourceforge.net/projects/libvncserver ## +-## ----------------------------------------------------------- ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-echo "$as_me:$LINENO: checking for thenonexistentheader.h" >&5 +-echo $ECHO_N "checking for thenonexistentheader.h... $ECHO_C" >&6 +-if test "${ac_cv_header_thenonexistentheader_h+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_header_thenonexistentheader_h=$ac_header_preproc ++ ac_cv_lib_bsd_gethostbyname=no + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_thenonexistentheader_h" >&5 +-echo "${ECHO_T}$ac_cv_header_thenonexistentheader_h" >&6 + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS + fi +-if test $ac_cv_header_thenonexistentheader_h = yes; then +- HAVE_THENONEXISTENTHEADER_H="true" ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; } ++if test $ac_cv_lib_bsd_gethostbyname = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" + fi + ++ fi ++ fi + +- +-# Checks for X libraries +-HAVE_X="false" +-echo "$as_me:$LINENO: checking for X" >&5 +-echo $ECHO_N "checking for X... $ECHO_C" >&6 +- +- +-# Check whether --with-x or --without-x was given. +-if test "${with_x+set}" = set; then +- withval="$with_x" +- +-fi; +-# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +-if test "x$with_x" = xno; then +- # The user explicitly disabled X. +- have_x=disabled +-else +- if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then +- # Both variables are already set. +- have_x=yes +- else +- if test "${ac_cv_have_x+set}" = set; then ++ # lieder@skyler.mavd.honeywell.com says without -lsocket, ++ # socket/setsockopt and other routines are undefined under SCO ODT ++ # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary ++ # on later versions), says Simon Leinen: it contains gethostby* ++ # variants that don't use the name server (or something). -lsocket ++ # must be given before -lnsl if both are needed. We assume that ++ # if connect needs -lnsl, so does gethostbyname. ++ { echo "$as_me:$LINENO: checking for connect" >&5 ++echo $ECHO_N "checking for connect... $ECHO_C" >&6; } ++if test "${ac_cv_func_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- # One or both of the vars are not set, and there is no cached value. +-ac_x_includes=no ac_x_libraries=no +-rm -fr conftest.dir +-if mkdir conftest.dir; then +- cd conftest.dir +- # Make sure to not put "make" in the Imakefile rules, since we grep it out. +- cat >Imakefile <<'_ACEOF' +-acfindx: +- @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' +-_ACEOF +- if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then +- # GNU make sometimes prints "make[1]: Entering...", which would confuse us. +- eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` +- # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. +- for ac_extension in a so sl; do +- if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && +- test -f $ac_im_libdir/libX11.$ac_extension; then +- ac_im_usrlibdir=$ac_im_libdir; break +- fi +- done +- # Screen out bogus values from the imake configuration. They are +- # bogus both because they are the default anyway, and because +- # using them would break gcc on systems where it needs fixed includes. +- case $ac_im_incroot in +- /usr/include) ;; +- *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; +- esac +- case $ac_im_usrlibdir in +- /usr/lib | /lib) ;; +- *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; +- esac +- fi +- cd .. +- rm -fr conftest.dir +-fi +- +-# Standard set of common directories for X headers. +-# Check X11 before X11Rn because it is often a symlink to the current release. +-ac_x_header_dirs=' +-/usr/X11/include +-/usr/X11R6/include +-/usr/X11R5/include +-/usr/X11R4/include +- +-/usr/include/X11 +-/usr/include/X11R6 +-/usr/include/X11R5 +-/usr/include/X11R4 +- +-/usr/local/X11/include +-/usr/local/X11R6/include +-/usr/local/X11R5/include +-/usr/local/X11R4/include +- +-/usr/local/include/X11 +-/usr/local/include/X11R6 +-/usr/local/include/X11R5 +-/usr/local/include/X11R4 +- +-/usr/X386/include +-/usr/x386/include +-/usr/XFree86/include/X11 +- +-/usr/include +-/usr/local/include +-/usr/unsupported/include +-/usr/athena/include +-/usr/local/x11r5/include +-/usr/lpp/Xamples/include +- +-/usr/openwin/include +-/usr/openwin/share/include' +- +-if test "$ac_x_includes" = no; then +- # Guess where to find include files, by looking for Intrinsic.h. +- # First, try using that file with no special directory specified. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++/* Define connect to an innocuous variant, in case declares connect. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define connect innocuous_connect ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char connect (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef connect ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char connect (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_connect || defined __stub___connect ++choke me ++#endif ++ ++int ++main () ++{ ++return connect (); ++ ; ++ return 0; ++} + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- # We can compile using X headers with no special include directory. +-ac_x_includes= ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_connect=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +- for ac_dir in $ac_x_header_dirs; do +- if test -r "$ac_dir/X11/Intrinsic.h"; then +- ac_x_includes=$ac_dir +- break +- fi +-done ++ ac_cv_func_connect=no + fi +-rm -f conftest.err conftest.$ac_ext +-fi # $ac_x_includes = no + +-if test "$ac_x_libraries" = no; then +- # Check for the libraries. +- # See if we find them without any special options. +- # Don't add to $LIBS permanently. +- ac_save_LIBS=$LIBS +- LIBS="-lXt $LIBS" +- cat >conftest.$ac_ext <<_ACEOF ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 ++echo "${ECHO_T}$ac_cv_func_connect" >&6; } ++ ++ if test $ac_cv_func_connect = no; then ++ { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 ++echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; } ++if test "${ac_cv_lib_socket_connect+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsocket $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char connect (); + int + main () + { +-XtMalloc (0) ++return connect (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- LIBS=$ac_save_LIBS +-# We can link X programs with no special library path. +-ac_x_libraries= ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_socket_connect=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-LIBS=$ac_save_LIBS +-for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +-do +- # Don't even attempt the hair of trying to link an X program! +- for ac_extension in a so sl; do +- if test -r $ac_dir/libXt.$ac_extension; then +- ac_x_libraries=$ac_dir +- break 2 +- fi +- done +-done ++ ac_cv_lib_socket_connect=no + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi # $ac_x_libraries = no + +-if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then +- # Didn't find X anywhere. Cache the known absence of X. +- ac_cv_have_x="have_x=no" +-else +- # Record where we found X for the cache. +- ac_cv_have_x="have_x=yes \ +- ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" +-fi ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS + fi +- +- fi +- eval "$ac_cv_have_x" +-fi # $with_x != no +- +-if test "$have_x" != yes; then +- echo "$as_me:$LINENO: result: $have_x" >&5 +-echo "${ECHO_T}$have_x" >&6 +- no_x=yes +-else +- # If each of the values was on the command line, it overrides each guess. +- test "x$x_includes" = xNONE && x_includes=$ac_x_includes +- test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries +- # Update the cache value to reflect the command line values. +- ac_cv_have_x="have_x=yes \ +- ac_x_includes=$x_includes ac_x_libraries=$x_libraries" +- echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 +-echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 ++echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; } ++if test $ac_cv_lib_socket_connect = yes; then ++ X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" + fi + +-if test "$no_x" = yes; then +- # Not all programs may use this symbol, but it does not hurt to define it. +- +-cat >>confdefs.h <<\_ACEOF +-#define X_DISPLAY_MISSING 1 +-_ACEOF ++ fi + +- X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= ++ # Guillermo Gomez says -lposix is necessary on A/UX. ++ { echo "$as_me:$LINENO: checking for remove" >&5 ++echo $ECHO_N "checking for remove... $ECHO_C" >&6; } ++if test "${ac_cv_func_remove+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$x_includes"; then +- X_CFLAGS="$X_CFLAGS -I$x_includes" +- fi +- +- # It would also be nice to do this for all -L options, not just this one. +- if test -n "$x_libraries"; then +- X_LIBS="$X_LIBS -L$x_libraries" +- # For Solaris; some versions of Sun CC require a space after -R and +- # others require no space. Words are not sufficient . . . . +- case `(uname -sr) 2>/dev/null` in +- "SunOS 5"*) +- echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 +-echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 +- ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" +- cat >conftest.$ac_ext <<_ACEOF ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++/* Define remove to an innocuous variant, in case declares remove. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define remove innocuous_remove ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char remove (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef remove ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char remove (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_remove || defined __stub___remove ++choke me ++#endif + + int + main () + { +- ++return remove (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_R_nospace=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_remove=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_R_nospace=no ++ ac_cv_func_remove=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +- if test $ac_R_nospace = yes; then +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +- X_LIBS="$X_LIBS -R$x_libraries" +- else +- LIBS="$ac_xsave_LIBS -R $x_libraries" +- cat >conftest.$ac_ext <<_ACEOF ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 ++echo "${ECHO_T}$ac_cv_func_remove" >&6; } ++ ++ if test $ac_cv_func_remove = no; then ++ { echo "$as_me:$LINENO: checking for remove in -lposix" >&5 ++echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; } ++if test "${ac_cv_lib_posix_remove+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lposix $LIBS" ++cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char remove (); + int + main () + { +- ++return remove (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_R_space=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_posix_remove=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_R_space=no ++ ac_cv_lib_posix_remove=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +- if test $ac_R_space = yes; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +- X_LIBS="$X_LIBS -R $x_libraries" +- else +- echo "$as_me:$LINENO: result: neither works" >&5 +-echo "${ECHO_T}neither works" >&6 +- fi +- fi +- LIBS=$ac_xsave_LIBS +- esac +- fi ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 ++echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; } ++if test $ac_cv_lib_posix_remove = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" ++fi + +- # Check for system-dependent libraries X programs must link with. +- # Do this before checking for the system-independent R6 libraries +- # (-lICE), since we may need -lsocket or whatever for X linking. ++ fi + +- if test "$ISC" = yes; then +- X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" +- else +- # Martyn Johnson says this is needed for Ultrix, if the X +- # libraries were built with DECnet support. And Karl Berry says +- # the Alpha needs dnet_stub (dnet does not exist). +- ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" +- cat >conftest.$ac_ext <<_ACEOF ++ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. ++ { echo "$as_me:$LINENO: checking for shmat" >&5 ++echo $ECHO_N "checking for shmat... $ECHO_C" >&6; } ++if test "${ac_cv_func_shmat+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++/* Define shmat to an innocuous variant, in case declares shmat. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define shmat innocuous_shmat ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char shmat (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif + +-/* Override any gcc2 internal prototype to avoid an error. */ ++#undef shmat ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XOpenDisplay (); ++char shmat (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_shmat || defined __stub___shmat ++choke me ++#endif ++ + int + main () + { +-XOpenDisplay (); ++return shmat (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_shmat=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 +-echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 +-if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then ++ ac_cv_func_shmat=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 ++echo "${ECHO_T}$ac_cv_func_shmat" >&6; } ++ ++ if test $ac_cv_func_shmat = no; then ++ { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 ++echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; } ++if test "${ac_cv_lib_ipc_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldnet $LIBS" ++LIBS="-lipc $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -19361,68 +12313,76 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dnet_ntoa (); ++char shmat (); + int + main () + { +-dnet_ntoa (); ++return shmat (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dnet_dnet_ntoa=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_ipc_shmat=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_dnet_dnet_ntoa=no ++ ac_cv_lib_ipc_shmat=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 +-echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 +-if test $ac_cv_lib_dnet_dnet_ntoa = yes; then +- X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 ++echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; } ++if test $ac_cv_lib_ipc_shmat = yes; then ++ X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" + fi + +- if test $ac_cv_lib_dnet_dnet_ntoa = no; then +- echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 +-echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 +-if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then ++ fi ++ fi ++ ++ # Check for libraries that X11R6 Xt/Xaw programs need. ++ ac_save_LDFLAGS=$LDFLAGS ++ test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" ++ # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to ++ # check for ICE first), but we must link in the order -lSM -lICE or ++ # we get undefined symbols. So assume we have SM if we have ICE. ++ # These have to be linked with before -lX11, unlike the other ++ # libraries we check for below, so use a different variable. ++ # John Interrante, Karl Berry ++ { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 ++echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; } ++if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldnet_stub $LIBS" ++LIBS="-lICE $X_EXTRA_LIBS $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -19430,173 +12390,297 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dnet_ntoa (); ++char IceConnectionNumber (); + int + main () + { +-dnet_ntoa (); ++return IceConnectionNumber (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dnet_stub_dnet_ntoa=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_ICE_IceConnectionNumber=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_dnet_stub_dnet_ntoa=no ++ ac_cv_lib_ICE_IceConnectionNumber=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 +-echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 +-if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then +- X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 ++echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; } ++if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then ++ X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" + fi + +- fi ++ LDFLAGS=$ac_save_LDFLAGS ++ + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- LIBS="$ac_xsave_LIBS" + +- # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, +- # to get the SysV transport functions. +- # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) +- # needs -lnsl. +- # The nsl library prevents programs from opening the X display +- # on Irix 5.2, according to T.E. Dickey. +- # The functions gethostbyname, getservbyname, and inet_addr are +- # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. +- echo "$as_me:$LINENO: checking for gethostbyname" >&5 +-echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 +-if test "${ac_cv_func_gethostbyname+set}" = set; then ++ ++ ++ ++# See if we are to build x11vnc: ++ ++ ++ ++# Check whether --with-system-libvncserver was given. ++if test "${with_system_libvncserver+set}" = set; then ++ withval=$with_system_libvncserver; ++fi ++ ++ ++# Check whether --with-x11vnc was given. ++if test "${with_x11vnc+set}" = set; then ++ withval=$with_x11vnc; ++fi ++ ++ ++if test ! -z "$with_x11vnc" -a "$with_x11vnc" = "yes"; then ++ build_x11vnc="yes" ++elif test "$PACKAGE_NAME" = "x11vnc"; then ++ build_x11vnc="yes" ++else ++ build_x11vnc="no" ++fi ++ ++# x11vnc only: ++if test "$build_x11vnc" = "yes"; then ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --with-xkeyboard was given. ++if test "${with_xkeyboard+set}" = set; then ++ withval=$with_xkeyboard; ++fi ++ ++ ++# Check whether --with-xinerama was given. ++if test "${with_xinerama+set}" = set; then ++ withval=$with_xinerama; ++fi ++ ++ ++# Check whether --with-xrandr was given. ++if test "${with_xrandr+set}" = set; then ++ withval=$with_xrandr; ++fi ++ ++ ++# Check whether --with-xfixes was given. ++if test "${with_xfixes+set}" = set; then ++ withval=$with_xfixes; ++fi ++ ++ ++# Check whether --with-xdamage was given. ++if test "${with_xdamage+set}" = set; then ++ withval=$with_xdamage; ++fi ++ ++ ++# Check whether --with-xtrap was given. ++if test "${with_xtrap+set}" = set; then ++ withval=$with_xtrap; ++fi ++ ++ ++# Check whether --with-xrecord was given. ++if test "${with_xrecord+set}" = set; then ++ withval=$with_xrecord; ++fi ++ ++ ++# Check whether --with-fbpm was given. ++if test "${with_fbpm+set}" = set; then ++ withval=$with_fbpm; ++fi ++ ++ ++# Check whether --with-dpms was given. ++if test "${with_dpms+set}" = set; then ++ withval=$with_dpms; ++fi ++ ++ ++# Check whether --with-v4l was given. ++if test "${with_v4l+set}" = set; then ++ withval=$with_v4l; ++fi ++ ++ ++# Check whether --with-fbdev was given. ++if test "${with_fbdev+set}" = set; then ++ withval=$with_fbdev; ++fi ++ ++ ++# Check whether --with-uinput was given. ++if test "${with_uinput+set}" = set; then ++ withval=$with_uinput; ++fi ++ ++ ++# Check whether --with-macosx-native was given. ++if test "${with_macosx_native+set}" = set; then ++ withval=$with_macosx_native; ++fi ++ ++ ++fi ++# end x11vnc only. ++ ++if test "x$with_x" = "xno"; then ++ HAVE_X="false" ++elif test "$X_CFLAGS" != "-DX_DISPLAY_MISSING"; then ++ { echo "$as_me:$LINENO: checking for XGetImage in -lX11" >&5 ++echo $ECHO_N "checking for XGetImage in -lX11... $ECHO_C" >&6; } ++if test "${ac_cv_lib_X11_XGetImage+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lX11 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-/* Define gethostbyname to an innocuous variant, in case declares gethostbyname. +- For example, HP-UX 11i declares gettimeofday. */ +-#define gethostbyname innocuous_gethostbyname +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char gethostbyname (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef gethostbyname + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +-char gethostbyname (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) +-choke me +-#else +-char (*f) () = gethostbyname; +-#endif + #ifdef __cplusplus +-} ++extern "C" + #endif +- ++char XGetImage (); + int + main () + { +-return f != gethostbyname; ++return XGetImage (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_gethostbyname=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_X11_XGetImage=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_gethostbyname=no ++ ac_cv_lib_X11_XGetImage=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XGetImage" >&5 ++echo "${ECHO_T}$ac_cv_lib_X11_XGetImage" >&6; } ++if test $ac_cv_lib_X11_XGetImage = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_X11 1 ++_ACEOF ++ HAVE_X="true" ++else ++ HAVE_X="false" + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 +-echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 + +- if test $ac_cv_func_gethostbyname = no; then +- echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 +-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 +-if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then ++ ++ # x11vnc only: ++ if test $HAVE_X = "true" -a "$build_x11vnc" = "yes"; then ++ X_PRELIBS="$X_PRELIBS -lXext" ++ ++ { echo "$as_me:$LINENO: checking for XShmGetImage in -lXext" >&5 ++echo $ECHO_N "checking for XShmGetImage in -lXext... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xext_XShmGetImage+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lnsl $LIBS" ++LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -19604,68 +12688,68 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char gethostbyname (); ++char XShmGetImage (); + int + main () + { +-gethostbyname (); ++return XShmGetImage (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_nsl_gethostbyname=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xext_XShmGetImage=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_nsl_gethostbyname=no ++ ac_cv_lib_Xext_XShmGetImage=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 +-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 +-if test $ac_cv_lib_nsl_gethostbyname = yes; then +- X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XShmGetImage" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xext_XShmGetImage" >&6; } ++if test $ac_cv_lib_Xext_XShmGetImage = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_XSHM 1 ++_ACEOF ++ + fi + +- if test $ac_cv_lib_nsl_gethostbyname = no; then +- echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 +-echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 +-if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then ++ ++ { echo "$as_me:$LINENO: checking for XReadScreen in -lXext" >&5 ++echo $ECHO_N "checking for XReadScreen in -lXext... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xext_XReadScreen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lbsd $LIBS" ++LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -19673,73 +12757,64 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char gethostbyname (); ++char XReadScreen (); + int + main () + { +-gethostbyname (); ++return XReadScreen (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_bsd_gethostbyname=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xext_XReadScreen=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_bsd_gethostbyname=no ++ ac_cv_lib_Xext_XReadScreen=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 +-echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 +-if test $ac_cv_lib_bsd_gethostbyname = yes; then +- X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XReadScreen" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xext_XReadScreen" >&6; } ++if test $ac_cv_lib_Xext_XReadScreen = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_SOLARIS_XREADSCREEN 1 ++_ACEOF ++ + fi + +- fi +- fi + +- # lieder@skyler.mavd.honeywell.com says without -lsocket, +- # socket/setsockopt and other routines are undefined under SCO ODT +- # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary +- # on later versions), says Simon Leinen: it contains gethostby* +- # variants that don't use the name server (or something). -lsocket +- # must be given before -lnsl if both are needed. We assume that +- # if connect needs -lnsl, so does gethostbyname. +- echo "$as_me:$LINENO: checking for connect" >&5 +-echo $ECHO_N "checking for connect... $ECHO_C" >&6 +-if test "${ac_cv_func_connect+set}" = set; then ++ { echo "$as_me:$LINENO: checking for X11/extensions/readdisplay.h" >&5 ++echo $ECHO_N "checking for X11/extensions/readdisplay.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_X11_extensions_readdisplay_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -19748,94 +12823,127 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-/* Define connect to an innocuous variant, in case declares connect. +- For example, HP-UX 11i declares gettimeofday. */ +-#define connect innocuous_connect ++#include + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char connect (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++#include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_X11_extensions_readdisplay_h=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++ ac_cv_header_X11_extensions_readdisplay_h=no ++fi + +-#undef connect ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_readdisplay_h" >&5 ++echo "${ECHO_T}$ac_cv_header_X11_extensions_readdisplay_h" >&6; } ++if test $ac_cv_header_X11_extensions_readdisplay_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_IRIX_XREADDISPLAY 1 ++_ACEOF + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 ++fi ++ ++ ++ ++ if test "x$with_fbpm" != "xno"; then ++ { echo "$as_me:$LINENO: checking for FBPMForceLevel in -lXext" >&5 ++echo $ECHO_N "checking for FBPMForceLevel in -lXext... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xext_FBPMForceLevel+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +-char connect (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_connect) || defined (__stub___connect) +-choke me +-#else +-char (*f) () = connect; +-#endif + #ifdef __cplusplus +-} ++extern "C" + #endif +- ++char FBPMForceLevel (); + int + main () + { +-return f != connect; ++return FBPMForceLevel (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_connect=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xext_FBPMForceLevel=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_connect=no ++ ac_cv_lib_Xext_FBPMForceLevel=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_FBPMForceLevel" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xext_FBPMForceLevel" >&6; } ++if test $ac_cv_lib_Xext_FBPMForceLevel = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_FBPM 1 ++_ACEOF ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 +-echo "${ECHO_T}$ac_cv_func_connect" >&6 + +- if test $ac_cv_func_connect = no; then +- echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 +-echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 +-if test "${ac_cv_lib_socket_connect+set}" = set; then ++ fi ++ ++ if test "x$with_dpms" != "xno"; then ++ { echo "$as_me:$LINENO: checking for DPMSForceLevel in -lXext" >&5 ++echo $ECHO_N "checking for DPMSForceLevel in -lXext... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xext_DPMSForceLevel+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsocket $X_EXTRA_LIBS $LIBS" ++LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -19843,162 +12951,139 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char connect (); ++char DPMSForceLevel (); + int + main () + { +-connect (); ++return DPMSForceLevel (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_socket_connect=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xext_DPMSForceLevel=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_socket_connect=no ++ ac_cv_lib_Xext_DPMSForceLevel=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 +-echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 +-if test $ac_cv_lib_socket_connect = yes; then +- X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_DPMSForceLevel" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xext_DPMSForceLevel" >&6; } ++if test $ac_cv_lib_Xext_DPMSForceLevel = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_DPMS 1 ++_ACEOF ++ + fi + +- fi ++ fi + +- # Guillermo Gomez says -lposix is necessary on A/UX. +- echo "$as_me:$LINENO: checking for remove" >&5 +-echo $ECHO_N "checking for remove... $ECHO_C" >&6 +-if test "${ac_cv_func_remove+set}" = set; then ++ { echo "$as_me:$LINENO: checking for XTestGrabControl in -lXtst" >&5 ++echo $ECHO_N "checking for XTestGrabControl in -lXtst... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xtst_XTestGrabControl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXtst $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-/* Define remove to an innocuous variant, in case declares remove. +- For example, HP-UX 11i declares gettimeofday. */ +-#define remove innocuous_remove +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char remove (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif + +-#undef remove +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +-char remove (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_remove) || defined (__stub___remove) +-choke me +-#else +-char (*f) () = remove; +-#endif + #ifdef __cplusplus +-} ++extern "C" + #endif +- ++char XTestGrabControl (); + int + main () + { +-return f != remove; ++return XTestGrabControl (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_remove=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xtst_XTestGrabControl=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_remove=no ++ ac_cv_lib_Xtst_XTestGrabControl=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_XTestGrabControl" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xtst_XTestGrabControl" >&6; } ++if test $ac_cv_lib_Xtst_XTestGrabControl = yes; then ++ X_PRELIBS="-lXtst $X_PRELIBS" ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_XTESTGRABCONTROL 1 ++_ACEOF ++ HAVE_XTESTGRABCONTROL="true" + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 +-echo "${ECHO_T}$ac_cv_func_remove" >&6 + +- if test $ac_cv_func_remove = no; then +- echo "$as_me:$LINENO: checking for remove in -lposix" >&5 +-echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 +-if test "${ac_cv_lib_posix_remove+set}" = set; then ++ ++ { echo "$as_me:$LINENO: checking for XTestFakeKeyEvent in -lXtst" >&5 ++echo $ECHO_N "checking for XTestFakeKeyEvent in -lXtst... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xtst_XTestFakeKeyEvent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lposix $LIBS" ++LIBS="-lXtst $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -20006,162 +13091,144 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char remove (); ++char XTestFakeKeyEvent (); + int + main () + { +-remove (); ++return XTestFakeKeyEvent (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_posix_remove=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xtst_XTestFakeKeyEvent=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_posix_remove=no ++ ac_cv_lib_Xtst_XTestFakeKeyEvent=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 +-echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 +-if test $ac_cv_lib_posix_remove = yes; then +- X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" +-fi +- +- fi +- +- # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. +- echo "$as_me:$LINENO: checking for shmat" >&5 +-echo $ECHO_N "checking for shmat... $ECHO_C" >&6 +-if test "${ac_cv_func_shmat+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_XTestFakeKeyEvent" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xtst_XTestFakeKeyEvent" >&6; } ++if test $ac_cv_lib_Xtst_XTestFakeKeyEvent = yes; then ++ X_PRELIBS="-lXtst $X_PRELIBS" ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_XTEST 1 + _ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define shmat to an innocuous variant, in case declares shmat. +- For example, HP-UX 11i declares gettimeofday. */ +-#define shmat innocuous_shmat +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char shmat (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++ HAVE_XTEST="true" ++fi + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif + +-#undef shmat ++ if test "x$with_xrecord" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XRecordEnableContextAsync in -lXtst" >&5 ++echo $ECHO_N "checking for XRecordEnableContextAsync in -lXtst... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xtst_XRecordEnableContextAsync+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXtst $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +-char shmat (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_shmat) || defined (__stub___shmat) +-choke me +-#else +-char (*f) () = shmat; +-#endif + #ifdef __cplusplus +-} ++extern "C" + #endif +- ++char XRecordEnableContextAsync (); + int + main () + { +-return f != shmat; ++return XRecordEnableContextAsync (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_shmat=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xtst_XRecordEnableContextAsync=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_shmat=no ++ ac_cv_lib_Xtst_XRecordEnableContextAsync=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_XRecordEnableContextAsync" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xtst_XRecordEnableContextAsync" >&6; } ++if test $ac_cv_lib_Xtst_XRecordEnableContextAsync = yes; then ++ X_PRELIBS="-lXtst $X_PRELIBS" ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_RECORD 1 ++_ACEOF ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 +-echo "${ECHO_T}$ac_cv_func_shmat" >&6 + +- if test $ac_cv_func_shmat = no; then +- echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 +-echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 +-if test "${ac_cv_lib_ipc_shmat+set}" = set; then ++ fi ++ ++ # we use XTRAP on X11R5, or user can set X11VNC_USE_XTRAP ++ if test "x$with_xtrap" != "xno"; then ++ if test ! -z "$X11VNC_USE_XTRAP" -o -z "$HAVE_XTESTGRABCONTROL"; then ++ { echo "$as_me:$LINENO: checking for XETrapSetGrabServer in -lXTrap" >&5 ++echo $ECHO_N "checking for XETrapSetGrabServer in -lXTrap... $ECHO_C" >&6; } ++if test "${ac_cv_lib_XTrap_XETrapSetGrabServer+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lipc $LIBS" ++LIBS="-lXTrap $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -20169,79 +13236,69 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shmat (); ++char XETrapSetGrabServer (); + int + main () + { +-shmat (); ++return XETrapSetGrabServer (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_ipc_shmat=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_XTrap_XETrapSetGrabServer=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_ipc_shmat=no ++ ac_cv_lib_XTrap_XETrapSetGrabServer=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 +-echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 +-if test $ac_cv_lib_ipc_shmat = yes; then +- X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" +-fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_XTrap_XETrapSetGrabServer" >&5 ++echo "${ECHO_T}$ac_cv_lib_XTrap_XETrapSetGrabServer" >&6; } ++if test $ac_cv_lib_XTrap_XETrapSetGrabServer = yes; then ++ X_PRELIBS="$X_PRELIBS -lXTrap" ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_LIBXTRAP 1 ++_ACEOF + +- fi +- fi ++fi + +- # Check for libraries that X11R6 Xt/Xaw programs need. +- ac_save_LDFLAGS=$LDFLAGS +- test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" +- # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to +- # check for ICE first), but we must link in the order -lSM -lICE or +- # we get undefined symbols. So assume we have SM if we have ICE. +- # These have to be linked with before -lX11, unlike the other +- # libraries we check for below, so use a different variable. +- # John Interrante, Karl Berry +- echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 +-echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 +-if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then ++ # tru64 uses libXETrap.so ++ { echo "$as_me:$LINENO: checking for XETrapSetGrabServer in -lXETrap" >&5 ++echo $ECHO_N "checking for XETrapSetGrabServer in -lXETrap... $ECHO_C" >&6; } ++if test "${ac_cv_lib_XETrap_XETrapSetGrabServer+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lICE $X_EXTRA_LIBS $LIBS" ++LIBS="-lXETrap $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -20249,225 +13306,271 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char IceConnectionNumber (); ++char XETrapSetGrabServer (); + int + main () + { +-IceConnectionNumber (); ++return XETrapSetGrabServer (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_ICE_IceConnectionNumber=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_XETrap_XETrapSetGrabServer=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_ICE_IceConnectionNumber=no ++ ac_cv_lib_XETrap_XETrapSetGrabServer=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 +-echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 +-if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then +- X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" +-fi +- +- LDFLAGS=$ac_save_LDFLAGS ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_XETrap_XETrapSetGrabServer" >&5 ++echo "${ECHO_T}$ac_cv_lib_XETrap_XETrapSetGrabServer" >&6; } ++if test $ac_cv_lib_XETrap_XETrapSetGrabServer = yes; then ++ X_PRELIBS="$X_PRELIBS -lXETrap" ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_LIBXTRAP 1 ++_ACEOF + + fi + ++ fi ++ fi + ++ if test "x$with_xkeyboard" != "xno"; then ++ saved_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$CPPFLAGS $X_CFLAGS" ++ { echo "$as_me:$LINENO: checking for X11/XKBlib.h" >&5 ++echo $ECHO_N "checking for X11/XKBlib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_X11_XKBlib_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + ++#include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_X11_XKBlib_h=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# See if we are to build x11vnc: +- +- +- +-# Check whether --with-system-libvncserver or --without-system-libvncserver was given. +-if test "${with_system_libvncserver+set}" = set; then +- withval="$with_system_libvncserver" +- +-fi; +- +-# Check whether --with-x11vnc or --without-x11vnc was given. +-if test "${with_x11vnc+set}" = set; then +- withval="$with_x11vnc" +- +-fi; ++ ac_cv_header_X11_XKBlib_h=no ++fi + +-if test ! -z "$with_x11vnc" -a "$with_x11vnc" = "yes"; then +- build_x11vnc="yes" +-elif test "$PACKAGE_NAME" = "x11vnc"; then +- build_x11vnc="yes" ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_XKBlib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_X11_XKBlib_h" >&6; } ++if test $ac_cv_header_X11_XKBlib_h = yes; then ++ HAVE_XKBLIB_H="true" + else +- build_x11vnc="no" ++ HAVE_XKBLIB_H="false" + fi + +-# x11vnc only: +-if test "$build_x11vnc" = "yes"; then +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + ++ CPPFLAGS="$saved_CPPFLAGS" ++ if test $HAVE_XKBLIB_H = "true"; then ++ { echo "$as_me:$LINENO: checking for XkbSelectEvents in -lX11" >&5 ++echo $ECHO_N "checking for XkbSelectEvents in -lX11... $ECHO_C" >&6; } ++if test "${ac_cv_lib_X11_XkbSelectEvents+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lX11 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XkbSelectEvents (); ++int ++main () ++{ ++return XkbSelectEvents (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_X11_XkbSelectEvents=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ ac_cv_lib_X11_XkbSelectEvents=no ++fi + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XkbSelectEvents" >&5 ++echo "${ECHO_T}$ac_cv_lib_X11_XkbSelectEvents" >&6; } ++if test $ac_cv_lib_X11_XkbSelectEvents = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_XKEYBOARD 1 ++_ACEOF + ++fi + ++ fi ++ fi + ++ if test "x$with_xinerama" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XineramaQueryScreens in -lXinerama" >&5 ++echo $ECHO_N "checking for XineramaQueryScreens in -lXinerama... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xinerama_XineramaQueryScreens+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXinerama $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XineramaQueryScreens (); ++int ++main () ++{ ++return XineramaQueryScreens (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xinerama_XineramaQueryScreens=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ ac_cv_lib_Xinerama_XineramaQueryScreens=no ++fi + +- +- +- +- +- +-# Check whether --with-xkeyboard or --without-xkeyboard was given. +-if test "${with_xkeyboard+set}" = set; then +- withval="$with_xkeyboard" +- +-fi; +- +-# Check whether --with-xinerama or --without-xinerama was given. +-if test "${with_xinerama+set}" = set; then +- withval="$with_xinerama" +- +-fi; +- +-# Check whether --with-xrandr or --without-xrandr was given. +-if test "${with_xrandr+set}" = set; then +- withval="$with_xrandr" +- +-fi; +- +-# Check whether --with-xfixes or --without-xfixes was given. +-if test "${with_xfixes+set}" = set; then +- withval="$with_xfixes" +- +-fi; +- +-# Check whether --with-xdamage or --without-xdamage was given. +-if test "${with_xdamage+set}" = set; then +- withval="$with_xdamage" +- +-fi; +- +-# Check whether --with-xtrap or --without-xtrap was given. +-if test "${with_xtrap+set}" = set; then +- withval="$with_xtrap" +- +-fi; +- +-# Check whether --with-xrecord or --without-xrecord was given. +-if test "${with_xrecord+set}" = set; then +- withval="$with_xrecord" +- +-fi; +- +-# Check whether --with-fbpm or --without-fbpm was given. +-if test "${with_fbpm+set}" = set; then +- withval="$with_fbpm" +- +-fi; +- +-# Check whether --with-dpms or --without-dpms was given. +-if test "${with_dpms+set}" = set; then +- withval="$with_dpms" +- +-fi; +- +-# Check whether --with-v4l or --without-v4l was given. +-if test "${with_v4l+set}" = set; then +- withval="$with_v4l" +- +-fi; +- +-# Check whether --with-fbdev or --without-fbdev was given. +-if test "${with_fbdev+set}" = set; then +- withval="$with_fbdev" +- +-fi; +- +-# Check whether --with-uinput or --without-uinput was given. +-if test "${with_uinput+set}" = set; then +- withval="$with_uinput" +- +-fi; +- +-# Check whether --with-macosx-native or --without-macosx-native was given. +-if test "${with_macosx_native+set}" = set; then +- withval="$with_macosx_native" +- +-fi; ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xinerama_XineramaQueryScreens" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xinerama_XineramaQueryScreens" >&6; } ++if test $ac_cv_lib_Xinerama_XineramaQueryScreens = yes; then ++ X_PRELIBS="$X_PRELIBS -lXinerama" ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_LIBXINERAMA 1 ++_ACEOF + + fi +-# end x11vnc only. + +-if test "x$with_x" = "xno"; then +- HAVE_X="false" +-elif test "$X_CFLAGS" != "-DX_DISPLAY_MISSING"; then +- echo "$as_me:$LINENO: checking for XGetImage in -lX11" >&5 +-echo $ECHO_N "checking for XGetImage in -lX11... $ECHO_C" >&6 +-if test "${ac_cv_lib_X11_XGetImage+set}" = set; then ++ fi ++ ++ if test "x$with_xrandr" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XRRSelectInput in -lXrandr" >&5 ++echo $ECHO_N "checking for XRRSelectInput in -lXrandr... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xrandr_XRRSelectInput+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lX11 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++LIBS="-lXrandr $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -20475,77 +13578,71 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XGetImage (); ++char XRRSelectInput (); + int + main () + { +-XGetImage (); ++return XRRSelectInput (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_X11_XGetImage=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xrandr_XRRSelectInput=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_X11_XGetImage=no ++ ac_cv_lib_Xrandr_XRRSelectInput=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XGetImage" >&5 +-echo "${ECHO_T}$ac_cv_lib_X11_XGetImage" >&6 +-if test $ac_cv_lib_X11_XGetImage = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_X11 1 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xrandr_XRRSelectInput" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xrandr_XRRSelectInput" >&6; } ++if test $ac_cv_lib_Xrandr_XRRSelectInput = yes; then ++ X_PRELIBS="$X_PRELIBS -lXrandr" ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_LIBXRANDR 1 + _ACEOF +- HAVE_X="true" +-else +- HAVE_X="false" +-fi + ++fi + +- # x11vnc only: +- if test $HAVE_X = "true" -a "$build_x11vnc" = "yes"; then +- X_PRELIBS="$X_PRELIBS -lXext" ++ fi + +- echo "$as_me:$LINENO: checking for XShmGetImage in -lXext" >&5 +-echo $ECHO_N "checking for XShmGetImage in -lXext... $ECHO_C" >&6 +-if test "${ac_cv_lib_Xext_XShmGetImage+set}" = set; then ++ if test "x$with_xfixes" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XFixesGetCursorImage in -lXfixes" >&5 ++echo $ECHO_N "checking for XFixesGetCursorImage in -lXfixes... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xfixes_XFixesGetCursorImage+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++LIBS="-lXfixes $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -20553,71 +13650,71 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XShmGetImage (); ++char XFixesGetCursorImage (); + int + main () + { +-XShmGetImage (); ++return XFixesGetCursorImage (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_Xext_XShmGetImage=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xfixes_XFixesGetCursorImage=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_Xext_XShmGetImage=no ++ ac_cv_lib_Xfixes_XFixesGetCursorImage=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XShmGetImage" >&5 +-echo "${ECHO_T}$ac_cv_lib_Xext_XShmGetImage" >&6 +-if test $ac_cv_lib_Xext_XShmGetImage = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_XSHM 1 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xfixes_XFixesGetCursorImage" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xfixes_XFixesGetCursorImage" >&6; } ++if test $ac_cv_lib_Xfixes_XFixesGetCursorImage = yes; then ++ X_PRELIBS="$X_PRELIBS -lXfixes" ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_LIBXFIXES 1 + _ACEOF +- ++ HAVE_LIBXFIXES="true" + fi + ++ fi + +- echo "$as_me:$LINENO: checking for XReadScreen in -lXext" >&5 +-echo $ECHO_N "checking for XReadScreen in -lXext... $ECHO_C" >&6 +-if test "${ac_cv_lib_Xext_XReadScreen+set}" = set; then ++ if test "x$with_xdamage" != "xno"; then ++ { echo "$as_me:$LINENO: checking for XDamageQueryExtension in -lXdamage" >&5 ++echo $ECHO_N "checking for XDamageQueryExtension in -lXdamage... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xdamage_XDamageQueryExtension+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++LIBS="-lXdamage $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -20625,67 +13722,163 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XReadScreen (); ++char XDamageQueryExtension (); + int + main () + { +-XReadScreen (); ++return XDamageQueryExtension (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_Xext_XReadScreen=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xdamage_XDamageQueryExtension=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_Xext_XReadScreen=no ++ ac_cv_lib_Xdamage_XDamageQueryExtension=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XReadScreen" >&5 +-echo "${ECHO_T}$ac_cv_lib_Xext_XReadScreen" >&6 +-if test $ac_cv_lib_Xext_XReadScreen = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_SOLARIS_XREADSCREEN 1 +-_ACEOF ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xdamage_XDamageQueryExtension" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xdamage_XDamageQueryExtension" >&6; } ++if test $ac_cv_lib_Xdamage_XDamageQueryExtension = yes; then ++ X_PRELIBS="$X_PRELIBS -lXdamage" ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_LIBXDAMAGE 1 ++_ACEOF ++ HAVE_LIBXDAMAGE="true" ++fi ++ ++ fi ++ ++ if test ! -z "$HAVE_LIBXFIXES" -o ! -z "$HAVE_LIBXDAMAGE"; then ++ # need /usr/sfw/lib in RPATH for Solaris 10 and later ++ case `(uname -sr) 2>/dev/null` in ++ "SunOS 5"*) X_EXTRA_LIBS="$X_EXTRA_LIBS -R/usr/sfw/lib" ;; ++ esac ++ fi ++ ++ X_LIBS="$X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS" ++ fi ++ # end x11vnc only. ++fi ++ ++ ++ if test $HAVE_X != "false"; then ++ HAVE_X_TRUE= ++ HAVE_X_FALSE='#' ++else ++ HAVE_X_TRUE='#' ++ HAVE_X_FALSE= ++fi ++ ++ ++# x11vnc only: ++if test "$build_x11vnc" = "yes"; then ++ ++if test "x$HAVE_X" = "xfalse" -a "x$with_x" != "xno"; then ++ { { echo "$as_me:$LINENO: error: ++========================================================================== ++A working X window system build environment is required to build x11vnc. ++Make sure any required X development packages are installed. If they are ++installed in non-standard locations, one can use the --x-includes=DIR ++and --x-libraries=DIR configure options or set the CPPFLAGS and LDFLAGS ++environment variables to indicate where the X window system header files ++and libraries may be found. On 64+32 bit machines you may need to point ++to lib64 or lib32 directories to pick up the correct word size. ++ ++If you want to build x11vnc without X support (e.g. for -rawfb use only ++or for native Mac OS X), specify the --without-x configure option. ++========================================================================== ++" >&5 ++echo "$as_me: error: ++========================================================================== ++A working X window system build environment is required to build x11vnc. ++Make sure any required X development packages are installed. If they are ++installed in non-standard locations, one can use the --x-includes=DIR ++and --x-libraries=DIR configure options or set the CPPFLAGS and LDFLAGS ++environment variables to indicate where the X window system header files ++and libraries may be found. On 64+32 bit machines you may need to point ++to lib64 or lib32 directories to pick up the correct word size. ++ ++If you want to build x11vnc without X support (e.g. for -rawfb use only ++or for native Mac OS X), specify the --without-x configure option. ++========================================================================== ++" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++if test "x$HAVE_X" = "xtrue" -a "x$HAVE_XTEST" != "xtrue"; then ++ { echo "$as_me:$LINENO: WARNING: ++========================================================================== ++A working build environment for the XTEST extension was not found (libXtst). ++An x11vnc built this way will be only barely usable. You will be able to ++move the mouse but not click or type. There can also be deadlocks if an ++application grabs the X server. ++ ++It is recommended that you install the necessary development packages ++for XTEST (perhaps it is named something like libxtst-dev) and run ++configure again. ++========================================================================== ++" >&5 ++echo "$as_me: WARNING: ++========================================================================== ++A working build environment for the XTEST extension was not found (libXtst). ++An x11vnc built this way will be only barely usable. You will be able to ++move the mouse but not click or type. There can also be deadlocks if an ++application grabs the X server. ++ ++It is recommended that you install the necessary development packages ++for XTEST (perhaps it is named something like libxtst-dev) and run ++configure again. ++========================================================================== ++" >&2;} ++fi ++ ++ ++ + ++# Check whether --with-crypt was given. ++if test "${with_crypt+set}" = set; then ++ withval=$with_crypt; + fi + ++if test "x$with_crypt" != "xno"; then + +- echo "$as_me:$LINENO: checking for X11/extensions/readdisplay.h" >&5 +-echo $ECHO_N "checking for X11/extensions/readdisplay.h... $ECHO_C" >&6 +-if test "${ac_cv_header_X11_extensions_readdisplay_h+set}" = set; then ++for ac_func in crypt ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -20694,60 +13887,93 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func + +-#include ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_header_X11_extensions_readdisplay_h=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_X11_extensions_readdisplay_h=no ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_readdisplay_h" >&5 +-echo "${ECHO_T}$ac_cv_header_X11_extensions_readdisplay_h" >&6 +-if test $ac_cv_header_X11_extensions_readdisplay_h = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_IRIX_XREADDISPLAY 1 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF +- ++ HAVE_LIBC_CRYPT="true" + fi ++done + +- +- +- if test "x$with_fbpm" != "xno"; then +- echo "$as_me:$LINENO: checking for FBPMForceLevel in -lXext" >&5 +-echo $ECHO_N "checking for FBPMForceLevel in -lXext... $ECHO_C" >&6 +-if test "${ac_cv_lib_Xext_FBPMForceLevel+set}" = set; then ++ if test -z "$HAVE_LIBC_CRYPT"; then ++ { echo "$as_me:$LINENO: checking for crypt in -lcrypt" >&5 ++echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6; } ++if test "${ac_cv_lib_crypt_crypt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++LIBS="-lcrypt $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -20755,73 +13981,92 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char FBPMForceLevel (); ++char crypt (); + int + main () + { +-FBPMForceLevel (); ++return crypt (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_Xext_FBPMForceLevel=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_crypt_crypt=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_Xext_FBPMForceLevel=no ++ ac_cv_lib_crypt_crypt=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_FBPMForceLevel" >&5 +-echo "${ECHO_T}$ac_cv_lib_Xext_FBPMForceLevel" >&6 +-if test $ac_cv_lib_Xext_FBPMForceLevel = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_FBPM 1 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5 ++echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6; } ++if test $ac_cv_lib_crypt_crypt = yes; then ++ CRYPT_LIBS="-lcrypt" ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_LIBCRYPT 1 + _ACEOF + + fi + +- fi ++ fi ++fi + +- if test "x$with_dpms" != "xno"; then +- echo "$as_me:$LINENO: checking for DPMSForceLevel in -lXext" >&5 +-echo $ECHO_N "checking for DPMSForceLevel in -lXext... $ECHO_C" >&6 +-if test "${ac_cv_lib_Xext_DPMSForceLevel+set}" = set; then ++ ++# some OS's need both -lssl and -lcrypto on link line: ++ ++ ++ ++# Check whether --with-crypto was given. ++if test "${with_crypto+set}" = set; then ++ withval=$with_crypto; ++fi ++ ++ ++ ++ ++ ++# Check whether --with-ssl was given. ++if test "${with_ssl+set}" = set; then ++ withval=$with_ssl; ++fi ++ ++ ++if test "x$with_crypto" != "xno" -a "x$with_ssl" != "xno"; then ++ { echo "$as_me:$LINENO: checking for RAND_file_name in -lcrypto" >&5 ++echo $ECHO_N "checking for RAND_file_name in -lcrypto... $ECHO_C" >&6; } ++if test "${ac_cv_lib_crypto_RAND_file_name+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lXext $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++LIBS="-lcrypto $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -20829,72 +14074,71 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char DPMSForceLevel (); ++char RAND_file_name (); + int + main () + { +-DPMSForceLevel (); ++return RAND_file_name (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_Xext_DPMSForceLevel=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_crypto_RAND_file_name=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_Xext_DPMSForceLevel=no ++ ac_cv_lib_crypto_RAND_file_name=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_DPMSForceLevel" >&5 +-echo "${ECHO_T}$ac_cv_lib_Xext_DPMSForceLevel" >&6 +-if test $ac_cv_lib_Xext_DPMSForceLevel = yes; then ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_RAND_file_name" >&5 ++echo "${ECHO_T}$ac_cv_lib_crypto_RAND_file_name" >&6; } ++if test $ac_cv_lib_crypto_RAND_file_name = yes; then + cat >>confdefs.h <<\_ACEOF +-#define HAVE_DPMS 1 ++#define HAVE_LIBCRYPTO 1 + _ACEOF +- ++ HAVE_LIBCRYPTO="true" + fi + +- fi ++fi + +- echo "$as_me:$LINENO: checking for XTestGrabControl in -lXtst" >&5 +-echo $ECHO_N "checking for XTestGrabControl in -lXtst... $ECHO_C" >&6 +-if test "${ac_cv_lib_Xtst_XTestGrabControl+set}" = set; then ++if test "x$with_ssl" != "xno"; then ++ if test "x$HAVE_LIBCRYPTO" = "xtrue"; then ++ { echo "$as_me:$LINENO: checking for SSL_library_init in -lssl" >&5 ++echo $ECHO_N "checking for SSL_library_init in -lssl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_ssl_SSL_library_init+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lXtst $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++LIBS="-lssl -lcrypto $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -20902,72 +14146,69 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XTestGrabControl (); ++char SSL_library_init (); + int + main () + { +-XTestGrabControl (); ++return SSL_library_init (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_Xtst_XTestGrabControl=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_ssl_SSL_library_init=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_Xtst_XTestGrabControl=no ++ ac_cv_lib_ssl_SSL_library_init=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_XTestGrabControl" >&5 +-echo "${ECHO_T}$ac_cv_lib_Xtst_XTestGrabControl" >&6 +-if test $ac_cv_lib_Xtst_XTestGrabControl = yes; then +- X_PRELIBS="-lXtst $X_PRELIBS" ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_library_init" >&5 ++echo "${ECHO_T}$ac_cv_lib_ssl_SSL_library_init" >&6; } ++if test $ac_cv_lib_ssl_SSL_library_init = yes; then ++ SSL_LIBS="-lssl -lcrypto" + cat >>confdefs.h <<\_ACEOF +-#define HAVE_XTESTGRABCONTROL 1 ++#define HAVE_LIBSSL 1 + _ACEOF +- HAVE_XTESTGRABCONTROL="true" ++ HAVE_LIBSSL="true" + fi + +- +- echo "$as_me:$LINENO: checking for XTestFakeKeyEvent in -lXtst" >&5 +-echo $ECHO_N "checking for XTestFakeKeyEvent in -lXtst... $ECHO_C" >&6 +-if test "${ac_cv_lib_Xtst_XTestFakeKeyEvent+set}" = set; then ++ else ++ { echo "$as_me:$LINENO: checking for SSL_library_init in -lssl" >&5 ++echo $ECHO_N "checking for SSL_library_init in -lssl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_ssl_SSL_library_init+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lXtst $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++LIBS="-lssl $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -20975,930 +14216,841 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XTestFakeKeyEvent (); ++char SSL_library_init (); + int + main () + { +-XTestFakeKeyEvent (); ++return SSL_library_init (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_Xtst_XTestFakeKeyEvent=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_ssl_SSL_library_init=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_Xtst_XTestFakeKeyEvent=no ++ ac_cv_lib_ssl_SSL_library_init=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_XTestFakeKeyEvent" >&5 +-echo "${ECHO_T}$ac_cv_lib_Xtst_XTestFakeKeyEvent" >&6 +-if test $ac_cv_lib_Xtst_XTestFakeKeyEvent = yes; then +- X_PRELIBS="-lXtst $X_PRELIBS" ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_library_init" >&5 ++echo "${ECHO_T}$ac_cv_lib_ssl_SSL_library_init" >&6; } ++if test $ac_cv_lib_ssl_SSL_library_init = yes; then ++ SSL_LIBS="-lssl" + cat >>confdefs.h <<\_ACEOF +-#define HAVE_XTEST 1 ++#define HAVE_LIBSSL 1 + _ACEOF +- HAVE_XTEST="true" ++ HAVE_LIBSSL="true" ++fi ++ ++ fi + fi + + +- if test "x$with_xrecord" != "xno"; then +- echo "$as_me:$LINENO: checking for XRecordEnableContextAsync in -lXtst" >&5 +-echo $ECHO_N "checking for XRecordEnableContextAsync in -lXtst... $ECHO_C" >&6 +-if test "${ac_cv_lib_Xtst_XRecordEnableContextAsync+set}" = set; then ++ if test "x$HAVE_LIBSSL" != "xtrue"; then ++ { echo "$as_me:$LINENO: WARNING: ++========================================================================== ++The openssl encryption library libssl.so was not found. An x11vnc built ++this way will not support SSL encryption. To enable SSL install the ++necessary development packages (perhaps it is named something like ++libssl-dev) and run configure again. ++========================================================================== ++" >&5 ++echo "$as_me: WARNING: ++========================================================================== ++The openssl encryption library libssl.so was not found. An x11vnc built ++this way will not support SSL encryption. To enable SSL install the ++necessary development packages (perhaps it is named something like ++libssl-dev) and run configure again. ++========================================================================== ++" >&2;} ++ fi ++ ++if test "x$with_v4l" != "xno"; then ++ if test "${ac_cv_header_linux_videodev_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for linux/videodev.h" >&5 ++echo $ECHO_N "checking for linux/videodev.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_videodev_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_videodev_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_videodev_h" >&6; } + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lXtst $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking linux/videodev.h usability" >&5 ++echo $ECHO_N "checking linux/videodev.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XRecordEnableContextAsync (); +-int +-main () +-{ +-XRecordEnableContextAsync (); +- ; +- return 0; +-} ++$ac_includes_default ++#include + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_Xtst_XRecordEnableContextAsync=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_Xtst_XRecordEnableContextAsync=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_XRecordEnableContextAsync" >&5 +-echo "${ECHO_T}$ac_cv_lib_Xtst_XRecordEnableContextAsync" >&6 +-if test $ac_cv_lib_Xtst_XRecordEnableContextAsync = yes; then +- X_PRELIBS="-lXtst $X_PRELIBS" +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_RECORD 1 +-_ACEOF +- ++ ac_header_compiler=no + fi + +- fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + +- # we use XTRAP on X11R5, or user can set X11VNC_USE_XTRAP +- if test "x$with_xtrap" != "xno"; then +- if test ! -z "$X11VNC_USE_XTRAP" -o -z "$HAVE_XTESTGRABCONTROL"; then +- echo "$as_me:$LINENO: checking for XETrapSetGrabServer in -lXTrap" >&5 +-echo $ECHO_N "checking for XETrapSetGrabServer in -lXTrap... $ECHO_C" >&6 +-if test "${ac_cv_lib_XTrap_XETrapSetGrabServer+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lXTrap $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++# Is the header present? ++{ echo "$as_me:$LINENO: checking linux/videodev.h presence" >&5 ++echo $ECHO_N "checking linux/videodev.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XETrapSetGrabServer (); +-int +-main () +-{ +-XETrapSetGrabServer (); +- ; +- return 0; +-} ++#include + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_XTrap_XETrapSetGrabServer=yes ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_XTrap_XETrapSetGrabServer=no ++ ac_header_preproc=no + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: linux/videodev.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: linux/videodev.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: linux/videodev.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: linux/videodev.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: linux/videodev.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: linux/videodev.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: linux/videodev.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/videodev.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: linux/videodev.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++## ----------------------------------------------------------- ## ++## Report this to http://sourceforge.net/projects/libvncserver ## ++## ----------------------------------------------------------- ## ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for linux/videodev.h" >&5 ++echo $ECHO_N "checking for linux/videodev.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_videodev_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_linux_videodev_h=$ac_header_preproc + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_XTrap_XETrapSetGrabServer" >&5 +-echo "${ECHO_T}$ac_cv_lib_XTrap_XETrapSetGrabServer" >&6 +-if test $ac_cv_lib_XTrap_XETrapSetGrabServer = yes; then +- X_PRELIBS="$X_PRELIBS -lXTrap" +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBXTRAP 1 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_videodev_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_videodev_h" >&6; } ++ ++fi ++if test $ac_cv_header_linux_videodev_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_LINUX_VIDEODEV_H 1 + _ACEOF + + fi + +- # tru64 uses libXETrap.so +- echo "$as_me:$LINENO: checking for XETrapSetGrabServer in -lXETrap" >&5 +-echo $ECHO_N "checking for XETrapSetGrabServer in -lXETrap... $ECHO_C" >&6 +-if test "${ac_cv_lib_XETrap_XETrapSetGrabServer+set}" = set; then ++ ++fi ++if test "x$with_fbdev" != "xno"; then ++ if test "${ac_cv_header_linux_fb_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for linux/fb.h" >&5 ++echo $ECHO_N "checking for linux/fb.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_fb_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_fb_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_fb_h" >&6; } + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lXETrap $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking linux/fb.h usability" >&5 ++echo $ECHO_N "checking linux/fb.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XETrapSetGrabServer (); +-int +-main () +-{ +-XETrapSetGrabServer (); +- ; +- return 0; +-} ++$ac_includes_default ++#include + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_XETrap_XETrapSetGrabServer=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_XETrap_XETrapSetGrabServer=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_XETrap_XETrapSetGrabServer" >&5 +-echo "${ECHO_T}$ac_cv_lib_XETrap_XETrapSetGrabServer" >&6 +-if test $ac_cv_lib_XETrap_XETrapSetGrabServer = yes; then +- X_PRELIBS="$X_PRELIBS -lXETrap" +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBXTRAP 1 +-_ACEOF +- ++ ac_header_compiler=no + fi + +- fi +- fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + +- if test "x$with_xkeyboard" != "xno"; then +- saved_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="$CPPFLAGS $X_CFLAGS" +- echo "$as_me:$LINENO: checking for X11/XKBlib.h" >&5 +-echo $ECHO_N "checking for X11/XKBlib.h... $ECHO_C" >&6 +-if test "${ac_cv_header_X11_XKBlib_h+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF ++# Is the header present? ++{ echo "$as_me:$LINENO: checking linux/fb.h presence" >&5 ++echo $ECHO_N "checking linux/fb.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include +- +-#include ++#include + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_header_X11_XKBlib_h=yes ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_X11_XKBlib_h=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_header_preproc=no + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_X11_XKBlib_h" >&5 +-echo "${ECHO_T}$ac_cv_header_X11_XKBlib_h" >&6 +-if test $ac_cv_header_X11_XKBlib_h = yes; then +- HAVE_XKBLIB_H="true" ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: linux/fb.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: linux/fb.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: linux/fb.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: linux/fb.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: linux/fb.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: linux/fb.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: linux/fb.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/fb.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: linux/fb.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++## ----------------------------------------------------------- ## ++## Report this to http://sourceforge.net/projects/libvncserver ## ++## ----------------------------------------------------------- ## ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for linux/fb.h" >&5 ++echo $ECHO_N "checking for linux/fb.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_fb_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- HAVE_XKBLIB_H="false" ++ ac_cv_header_linux_fb_h=$ac_header_preproc + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_fb_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_fb_h" >&6; } + ++fi ++if test $ac_cv_header_linux_fb_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_LINUX_FB_H 1 ++_ACEOF + +- CPPFLAGS="$saved_CPPFLAGS" +- if test $HAVE_XKBLIB_H = "true"; then +- echo "$as_me:$LINENO: checking for XkbSelectEvents in -lX11" >&5 +-echo $ECHO_N "checking for XkbSelectEvents in -lX11... $ECHO_C" >&6 +-if test "${ac_cv_lib_X11_XkbSelectEvents+set}" = set; then ++fi ++ ++ ++fi ++if test "x$with_uinput" != "xno"; then ++ if test "${ac_cv_header_linux_input_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for linux/input.h" >&5 ++echo $ECHO_N "checking for linux/input.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_input_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_input_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_input_h" >&6; } + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lX11 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking linux/input.h usability" >&5 ++echo $ECHO_N "checking linux/input.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XkbSelectEvents (); +-int +-main () +-{ +-XkbSelectEvents (); +- ; +- return 0; +-} ++$ac_includes_default ++#include + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_X11_XkbSelectEvents=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_X11_XkbSelectEvents=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XkbSelectEvents" >&5 +-echo "${ECHO_T}$ac_cv_lib_X11_XkbSelectEvents" >&6 +-if test $ac_cv_lib_X11_XkbSelectEvents = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_XKEYBOARD 1 +-_ACEOF +- ++ ac_header_compiler=no + fi + +- fi +- fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + +- if test "x$with_xinerama" != "xno"; then +- echo "$as_me:$LINENO: checking for XineramaQueryScreens in -lXinerama" >&5 +-echo $ECHO_N "checking for XineramaQueryScreens in -lXinerama... $ECHO_C" >&6 +-if test "${ac_cv_lib_Xinerama_XineramaQueryScreens+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lXinerama $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++# Is the header present? ++{ echo "$as_me:$LINENO: checking linux/input.h presence" >&5 ++echo $ECHO_N "checking linux/input.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XineramaQueryScreens (); +-int +-main () +-{ +-XineramaQueryScreens (); +- ; +- return 0; +-} ++#include + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_Xinerama_XineramaQueryScreens=yes ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_Xinerama_XineramaQueryScreens=no ++ ac_header_preproc=no + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: linux/input.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: linux/input.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: linux/input.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: linux/input.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: linux/input.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: linux/input.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: linux/input.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: linux/input.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: linux/input.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++## ----------------------------------------------------------- ## ++## Report this to http://sourceforge.net/projects/libvncserver ## ++## ----------------------------------------------------------- ## ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for linux/input.h" >&5 ++echo $ECHO_N "checking for linux/input.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_input_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_linux_input_h=$ac_header_preproc + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_Xinerama_XineramaQueryScreens" >&5 +-echo "${ECHO_T}$ac_cv_lib_Xinerama_XineramaQueryScreens" >&6 +-if test $ac_cv_lib_Xinerama_XineramaQueryScreens = yes; then +- X_PRELIBS="$X_PRELIBS -lXinerama" +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBXINERAMA 1 +-_ACEOF ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_input_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_input_h" >&6; } + + fi ++if test $ac_cv_header_linux_input_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_LINUX_INPUT_H 1 ++_ACEOF ++ HAVE_LINUX_INPUT_H="true" ++fi + +- fi + +- if test "x$with_xrandr" != "xno"; then +- echo "$as_me:$LINENO: checking for XRRSelectInput in -lXrandr" >&5 +-echo $ECHO_N "checking for XRRSelectInput in -lXrandr... $ECHO_C" >&6 +-if test "${ac_cv_lib_Xrandr_XRRSelectInput+set}" = set; then ++ if test "x$HAVE_LINUX_INPUT_H" = "xtrue"; then ++ { echo "$as_me:$LINENO: checking for linux/uinput.h" >&5 ++echo $ECHO_N "checking for linux/uinput.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_linux_uinput_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lXrandr $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" +-cat >conftest.$ac_ext <<_ACEOF ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++#include + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XRRSelectInput (); +-int +-main () +-{ +-XRRSelectInput (); +- ; +- return 0; +-} ++#include + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_Xrandr_XRRSelectInput=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_linux_uinput_h=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_Xrandr_XRRSelectInput=no ++ ac_cv_header_linux_uinput_h=no + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_Xrandr_XRRSelectInput" >&5 +-echo "${ECHO_T}$ac_cv_lib_Xrandr_XRRSelectInput" >&6 +-if test $ac_cv_lib_Xrandr_XRRSelectInput = yes; then +- X_PRELIBS="$X_PRELIBS -lXrandr" +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBXRANDR 1 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_uinput_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_uinput_h" >&6; } ++if test $ac_cv_header_linux_uinput_h = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_LINUX_UINPUT_H 1 ++_ACEOF ++ ++fi ++ ++ ++ fi ++fi ++ ++if test "x$with_macosx_native" != "xno"; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_MACOSX_NATIVE_DISPLAY 1 ++_ACEOF ++ ++fi ++ ++ ++ ++ ++# Check whether --with-avahi was given. ++if test "${with_avahi+set}" = set; then ++ withval=$with_avahi; ++fi ++ ++if test "x$with_avahi" != "xno"; then ++ printf "checking for avahi... " ++ if test ! -z "$with_avahi" -a "x$with_avahi" != "xyes"; then ++ AVAHI_CFLAGS="-I$with_avahi/include" ++ AVAHI_LIBS="-L$with_avahi/lib -lavahi-common -lavahi-client" ++ echo "using $with_avahi" ++ with_avahi=yes ++ elif pkg-config --atleast-version=0.6.4 avahi-client >/dev/null 2>&1; then ++ AVAHI_CFLAGS=`pkg-config --cflags avahi-client` ++ AVAHI_LIBS=`pkg-config --libs avahi-client` ++ with_avahi=yes ++ echo yes ++ else ++ with_avahi=no ++ echo no ++ fi ++fi ++if test "x$with_avahi" = "xyes"; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_AVAHI 1 + _ACEOF + ++ ++ ++fi ++ ++fi ++# end x11vnc only. ++ ++# Checks for libraries. ++ ++uname_s=`(uname -s) 2>/dev/null` ++ld_minus_R="yes" ++if test "x$uname_s" = "xHP-UX"; then ++ ld_minus_R="no" ++elif test "x$uname_s" = "xOSF1"; then ++ ld_minus_R="no" ++elif test "x$uname_s" = "xDarwin"; then ++ ld_minus_R="no" + fi + ++if test ! -z "$with_system_libvncserver" -a "x$with_system_libvncserver" != "xno"; then ++ printf "checking for system libvncserver... " ++ if test "x$with_system_libvncserver" != "xyes"; then ++ rflag="" ++ if test "x$ld_minus_R" = "xno"; then ++ : ++ elif test "x$GCC" = "xyes"; then ++ rflag="-Xlinker -R$with_system_libvncserver/lib" ++ else ++ rflag="-R$with_system_libvncserver/lib" ++ fi ++ SYSTEM_LIBVNCSERVER_CFLAGS="-I$with_system_libvncserver/include" ++ SYSTEM_LIBVNCSERVER_LIBS="-L$with_system_libvncserver/lib $rflag -lvncserver -lvncclient" ++ echo "using $with_system_libvncserver" ++ with_system_libvncserver=yes ++ elif libvncserver-config --version >/dev/null 2>&1; then ++ rflag="" ++ rprefix=`libvncserver-config --prefix` ++ if test "x$ld_minus_R" = "xno"; then ++ : ++ elif test "x$GCC" = "xyes"; then ++ rflag=" -Xlinker -R$rprefix/lib " ++ else ++ rflag=" -R$rprefix/lib " + fi ++ SYSTEM_LIBVNCSERVER_CFLAGS=`libvncserver-config --cflags` ++ SYSTEM_LIBVNCSERVER_LIBS="$rflag"`libvncserver-config --libs` ++ with_system_libvncserver=yes ++ echo yes ++ else ++ with_system_libvncserver=no ++ echo no ++ fi ++fi + +- if test "x$with_xfixes" != "xno"; then +- echo "$as_me:$LINENO: checking for XFixesGetCursorImage in -lXfixes" >&5 +-echo $ECHO_N "checking for XFixesGetCursorImage in -lXfixes... $ECHO_C" >&6 +-if test "${ac_cv_lib_Xfixes_XFixesGetCursorImage+set}" = set; then ++if test "x$with_system_libvncserver" = "xyes"; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_SYSTEM_LIBVNCSERVER 1 ++_ACEOF ++ ++ ++ ++fi ++ if test "x$with_system_libvncserver" = "xyes"; then ++ HAVE_SYSTEM_LIBVNCSERVER_TRUE= ++ HAVE_SYSTEM_LIBVNCSERVER_FALSE='#' ++else ++ HAVE_SYSTEM_LIBVNCSERVER_TRUE='#' ++ HAVE_SYSTEM_LIBVNCSERVER_FALSE= ++fi ++ ++ ++ ++ ++# Check whether --with-jpeg was given. ++if test "${with_jpeg+set}" = set; then ++ withval=$with_jpeg; ++fi ++ ++ ++# At this point: ++# no jpeg on command line with_jpeg="" ++# -with-jpeg with_jpeg="yes" ++# -without-jpeg with_jpeg="no" ++# -with-jpeg=/foo/dir with_jpeg="/foo/dir" ++ ++if test "x$with_jpeg" != "xno"; then ++ if test ! -z "$with_jpeg" -a "x$with_jpeg" != "xyes"; then ++ # add user supplied directory to flags: ++ saved_CPPFLAGS="$CPPFLAGS" ++ saved_LDFLAGS="$LDFLAGS" ++ CPPFLAGS="$CPPFLAGS -I$with_jpeg/include" ++ LDFLAGS="$LDFLAGS -L$with_jpeg/lib" ++ if test "x$ld_minus_R" = "xno"; then ++ : ++ elif test "x$GCC" = "xyes"; then ++ # this is not complete... in general a rat's nest. ++ LDFLAGS="$LDFLAGS -Xlinker -R$with_jpeg/lib" ++ else ++ LDFLAGS="$LDFLAGS -R$with_jpeg/lib" ++ fi ++ fi ++ if test "${ac_cv_header_jpeglib_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for jpeglib.h" >&5 ++echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_jpeglib_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6; } + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lXfixes $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking jpeglib.h usability" >&5 ++echo $ECHO_N "checking jpeglib.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XFixesGetCursorImage (); +-int +-main () +-{ +-XFixesGetCursorImage (); +- ; +- return 0; +-} ++$ac_includes_default ++#include + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_Xfixes_XFixesGetCursorImage=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_Xfixes_XFixesGetCursorImage=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_Xfixes_XFixesGetCursorImage" >&5 +-echo "${ECHO_T}$ac_cv_lib_Xfixes_XFixesGetCursorImage" >&6 +-if test $ac_cv_lib_Xfixes_XFixesGetCursorImage = yes; then +- X_PRELIBS="$X_PRELIBS -lXfixes" +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBXFIXES 1 +-_ACEOF +- HAVE_LIBXFIXES="true" ++ ac_header_compiler=no + fi + +- fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + +- if test "x$with_xdamage" != "xno"; then +- echo "$as_me:$LINENO: checking for XDamageQueryExtension in -lXdamage" >&5 +-echo $ECHO_N "checking for XDamageQueryExtension in -lXdamage... $ECHO_C" >&6 +-if test "${ac_cv_lib_Xdamage_XDamageQueryExtension+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lXdamage $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS $LIBS" ++# Is the header present? ++{ echo "$as_me:$LINENO: checking jpeglib.h presence" >&5 ++echo $ECHO_N "checking jpeglib.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char XDamageQueryExtension (); +-int +-main () +-{ +-XDamageQueryExtension (); +- ; +- return 0; +-} ++#include + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_Xdamage_XDamageQueryExtension=yes ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_Xdamage_XDamageQueryExtension=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_Xdamage_XDamageQueryExtension" >&5 +-echo "${ECHO_T}$ac_cv_lib_Xdamage_XDamageQueryExtension" >&6 +-if test $ac_cv_lib_Xdamage_XDamageQueryExtension = yes; then +- X_PRELIBS="$X_PRELIBS -lXdamage" +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBXDAMAGE 1 +-_ACEOF +- HAVE_LIBXDAMAGE="true" +-fi +- +- fi +- +- if test ! -z "$HAVE_LIBXFIXES" -o ! -z "$HAVE_LIBXDAMAGE"; then +- # need /usr/sfw/lib in RPATH for Solaris 10 and later +- case `(uname -sr) 2>/dev/null` in +- "SunOS 5"*) X_EXTRA_LIBS="$X_EXTRA_LIBS -R/usr/sfw/lib" ;; +- esac +- fi +- +- X_LIBS="$X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS" +- fi +- # end x11vnc only. +-fi +- +- +- +- +-if test $HAVE_X != "false"; then +- HAVE_X_TRUE= +- HAVE_X_FALSE='#' +-else +- HAVE_X_TRUE='#' +- HAVE_X_FALSE= +-fi +- +- +-# x11vnc only: +-if test "$build_x11vnc" = "yes"; then +- +-if test "x$HAVE_X" = "xfalse" -a "x$with_x" != "xno"; then +- { { echo "$as_me:$LINENO: error: +-========================================================================== +-A working X window system build environment is required to build x11vnc. +-Make sure any required X development packages are installed. If they are +-installed in non-standard locations, one can use the --x-includes=DIR +-and --x-libraries=DIR configure options or set the CPPFLAGS and LDFLAGS +-environment variables to indicate where the X window system header files +-and libraries may be found. On 64+32 bit machines you may need to point +-to lib64 or lib32 directories to pick up the correct word size. +- +-If you want to build x11vnc without X support (e.g. for -rawfb use only +-or for native Mac OS X), specify the --without-x configure option. +-========================================================================== +-" >&5 +-echo "$as_me: error: +-========================================================================== +-A working X window system build environment is required to build x11vnc. +-Make sure any required X development packages are installed. If they are +-installed in non-standard locations, one can use the --x-includes=DIR +-and --x-libraries=DIR configure options or set the CPPFLAGS and LDFLAGS +-environment variables to indicate where the X window system header files +-and libraries may be found. On 64+32 bit machines you may need to point +-to lib64 or lib32 directories to pick up the correct word size. +- +-If you want to build x11vnc without X support (e.g. for -rawfb use only +-or for native Mac OS X), specify the --without-x configure option. +-========================================================================== +-" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-if test "x$HAVE_X" = "xtrue" -a "x$HAVE_XTEST" != "xtrue"; then +- { echo "$as_me:$LINENO: WARNING: +-========================================================================== +-A working build environment for the XTEST extension was not found (libXtst). +-An x11vnc built this way will be only barely usable. You will be able to +-move the mouse but not click or type. There can also be deadlocks if an +-application grabs the X server. +- +-It is recommended that you install the necessary development packages +-for XTEST (perhaps it is named something like libxtst-dev) and run +-configure again. +-========================================================================== +-" >&5 +-echo "$as_me: WARNING: +-========================================================================== +-A working build environment for the XTEST extension was not found (libXtst). +-An x11vnc built this way will be only barely usable. You will be able to +-move the mouse but not click or type. There can also be deadlocks if an +-application grabs the X server. +- +-It is recommended that you install the necessary development packages +-for XTEST (perhaps it is named something like libxtst-dev) and run +-configure again. +-========================================================================== +-" >&2;} ++ ac_header_preproc=no + fi + ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + +- +- +-# Check whether --with-crypt or --without-crypt was given. +-if test "${with_crypt+set}" = set; then +- withval="$with_crypt" +- +-fi; +-if test "x$with_crypt" != "xno"; then +- +-for ac_func in crypt +-do +-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +-choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} +-#endif +- +-int +-main () +-{ +-return f != $ac_func; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- eval "$as_ac_var=yes" ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: jpeglib.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: jpeglib.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: jpeglib.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++## ----------------------------------------------------------- ## ++## Report this to http://sourceforge.net/projects/libvncserver ## ++## ----------------------------------------------------------- ## ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for jpeglib.h" >&5 ++echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_jpeglib_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-eval "$as_ac_var=no" ++ ac_cv_header_jpeglib_h=$ac_header_preproc + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6; } ++ + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +-if test `eval echo '${'$as_ac_var'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF +- HAVE_LIBC_CRYPT="true" ++if test $ac_cv_header_jpeglib_h = yes; then ++ HAVE_JPEGLIB_H="true" + fi +-done + +- if test -z "$HAVE_LIBC_CRYPT"; then +- echo "$as_me:$LINENO: checking for crypt in -lcrypt" >&5 +-echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6 +-if test "${ac_cv_lib_crypt_crypt+set}" = set; then ++ ++ if test "x$HAVE_JPEGLIB_H" = "xtrue"; then ++ ++{ echo "$as_me:$LINENO: checking for jpeg_CreateCompress in -ljpeg" >&5 ++echo $ECHO_N "checking for jpeg_CreateCompress in -ljpeg... $ECHO_C" >&6; } ++if test "${ac_cv_lib_jpeg_jpeg_CreateCompress+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lcrypt $LIBS" ++LIBS="-ljpeg $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -21906,243 +15058,267 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char crypt (); ++char jpeg_CreateCompress (); + int + main () + { +-crypt (); ++return jpeg_CreateCompress (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_crypt_crypt=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_jpeg_jpeg_CreateCompress=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_crypt_crypt=no ++ ac_cv_lib_jpeg_jpeg_CreateCompress=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5 +-echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6 +-if test $ac_cv_lib_crypt_crypt = yes; then +- CRYPT_LIBS="-lcrypt" +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBCRYPT 1 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_CreateCompress" >&5 ++echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_CreateCompress" >&6; } ++if test $ac_cv_lib_jpeg_jpeg_CreateCompress = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBJPEG 1 + _ACEOF + ++ LIBS="-ljpeg $LIBS" ++ ++else ++ HAVE_JPEGLIB_H="" + fi + + fi ++ if test ! -z "$with_jpeg" -a "x$with_jpeg" != "xyes"; then ++ if test "x$HAVE_JPEGLIB_H" != "xtrue"; then ++ # restore old flags on failure: ++ CPPFLAGS="$saved_CPPFLAGS" ++ LDFLAGS="$saved_LDFLAGS" ++ fi ++ fi ++ if test "$build" = "yes"; then ++ if test "x$HAVE_JPEGLIB_H" != "xtrue"; then ++ { echo "$as_me:$LINENO: WARNING: ++========================================================================== ++The libjpeg compression library was not found: this may lead to reduced ++performance, especially over slow links. If libjpeg is in a non-standard ++location use --with-jpeg=DIR to indicate the header file is in ++DIR/include/jpeglib.h and the library in DIR/lib/libjpeg.a. A copy of ++libjpeg may be obtained from: ftp://ftp.uu.net/graphics/jpeg/ ++========================================================================== ++" >&5 ++echo "$as_me: WARNING: ++========================================================================== ++The libjpeg compression library was not found: this may lead to reduced ++performance, especially over slow links. If libjpeg is in a non-standard ++location use --with-jpeg=DIR to indicate the header file is in ++DIR/include/jpeglib.h and the library in DIR/lib/libjpeg.a. A copy of ++libjpeg may be obtained from: ftp://ftp.uu.net/graphics/jpeg/ ++========================================================================== ++" >&2;} ++ fi ++ fi + fi + + +-# some OS's need both -lssl and -lcrypto on link line: +- +- +- +-# Check whether --with-crypto or --without-crypto was given. +-if test "${with_crypto+set}" = set; then +- withval="$with_crypto" +- +-fi; +- +- ++# Check whether --with-libz was given. ++if test "${with_libz+set}" = set; then ++ withval=$with_libz; ++fi + + +-# Check whether --with-ssl or --without-ssl was given. +-if test "${with_ssl+set}" = set; then +- withval="$with_ssl" ++# Check whether --with-zlib was given. ++if test "${with_zlib+set}" = set; then ++ withval=$with_zlib; ++fi + +-fi; + +-if test "x$with_crypto" != "xno" -a "x$with_ssl" != "xno"; then +- echo "$as_me:$LINENO: checking for RAND_file_name in -lcrypto" >&5 +-echo $ECHO_N "checking for RAND_file_name in -lcrypto... $ECHO_C" >&6 +-if test "${ac_cv_lib_crypto_RAND_file_name+set}" = set; then ++if test "x$with_zlib" != "xno" -a "x$with_libz" != "xno"; then ++ if test ! -z "$with_zlib" -a "x$with_zlib" != "xyes"; then ++ saved_CPPFLAGS="$CPPFLAGS" ++ saved_LDFLAGS="$LDFLAGS" ++ CPPFLAGS="$CPPFLAGS -I$with_zlib/include" ++ LDFLAGS="$LDFLAGS -L$with_zlib/lib" ++ if test "x$ld_minus_R" = "xno"; then ++ : ++ elif test "x$GCC" = "xyes"; then ++ LDFLAGS="$LDFLAGS -Xlinker -R$with_zlib/lib" ++ else ++ LDFLAGS="$LDFLAGS -R$with_zlib/lib" ++ fi ++ fi ++ if test "${ac_cv_header_zlib_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for zlib.h" >&5 ++echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_zlib_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; } + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lcrypto $LIBS" ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking zlib.h usability" >&5 ++echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char RAND_file_name (); +-int +-main () +-{ +-RAND_file_name (); +- ; +- return 0; +-} ++$ac_includes_default ++#include + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_crypto_RAND_file_name=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_crypto_RAND_file_name=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_RAND_file_name" >&5 +-echo "${ECHO_T}$ac_cv_lib_crypto_RAND_file_name" >&6 +-if test $ac_cv_lib_crypto_RAND_file_name = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBCRYPTO 1 +-_ACEOF +- HAVE_LIBCRYPTO="true" ++ ac_header_compiler=no + fi + +-fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + +-if test "x$with_ssl" != "xno"; then +- if test "x$HAVE_LIBCRYPTO" = "xtrue"; then +- echo "$as_me:$LINENO: checking for SSL_library_init in -lssl" >&5 +-echo $ECHO_N "checking for SSL_library_init in -lssl... $ECHO_C" >&6 +-if test "${ac_cv_lib_ssl_SSL_library_init+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lssl -lcrypto $LIBS" ++# Is the header present? ++{ echo "$as_me:$LINENO: checking zlib.h presence" >&5 ++echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char SSL_library_init (); +-int +-main () +-{ +-SSL_library_init (); +- ; +- return 0; +-} ++#include + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_ssl_SSL_library_init=yes ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_ssl_SSL_library_init=no ++ ac_header_preproc=no + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++## ----------------------------------------------------------- ## ++## Report this to http://sourceforge.net/projects/libvncserver ## ++## ----------------------------------------------------------- ## ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for zlib.h" >&5 ++echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_zlib_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_zlib_h=$ac_header_preproc + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_library_init" >&5 +-echo "${ECHO_T}$ac_cv_lib_ssl_SSL_library_init" >&6 +-if test $ac_cv_lib_ssl_SSL_library_init = yes; then +- SSL_LIBS="-lssl -lcrypto" +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBSSL 1 +-_ACEOF +- HAVE_LIBSSL="true" ++{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; } ++ ++fi ++if test $ac_cv_header_zlib_h = yes; then ++ HAVE_ZLIB_H="true" + fi + +- else +- echo "$as_me:$LINENO: checking for SSL_library_init in -lssl" >&5 +-echo $ECHO_N "checking for SSL_library_init in -lssl... $ECHO_C" >&6 +-if test "${ac_cv_lib_ssl_SSL_library_init+set}" = set; then ++ ++ if test "x$HAVE_ZLIB_H" = "xtrue"; then ++ ++{ echo "$as_me:$LINENO: checking for deflate in -lz" >&5 ++echo $ECHO_N "checking for deflate in -lz... $ECHO_C" >&6; } ++if test "${ac_cv_lib_z_deflate+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lssl $LIBS" ++LIBS="-lz $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -22150,100 +15326,115 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char SSL_library_init (); ++char deflate (); + int + main () + { +-SSL_library_init (); ++return deflate (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_ssl_SSL_library_init=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_z_deflate=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_ssl_SSL_library_init=no ++ ac_cv_lib_z_deflate=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_library_init" >&5 +-echo "${ECHO_T}$ac_cv_lib_ssl_SSL_library_init" >&6 +-if test $ac_cv_lib_ssl_SSL_library_init = yes; then +- SSL_LIBS="-lssl" +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBSSL 1 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_z_deflate" >&5 ++echo "${ECHO_T}$ac_cv_lib_z_deflate" >&6; } ++if test $ac_cv_lib_z_deflate = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBZ 1 + _ACEOF +- HAVE_LIBSSL="true" +-fi + +- fi +-fi ++ LIBS="-lz $LIBS" + ++else ++ HAVE_ZLIB_H="" ++fi + +- if test "x$HAVE_LIBSSL" != "xtrue"; then +- { echo "$as_me:$LINENO: WARNING: ++ fi ++ if test ! -z "$with_zlib" -a "x$with_zlib" != "xyes"; then ++ if test "x$HAVE_ZLIB_H" != "xtrue"; then ++ CPPFLAGS="$saved_CPPFLAGS" ++ LDFLAGS="$saved_LDFLAGS" ++ fi ++ fi ++ if test "$build_x11vnc" = "yes"; then ++ if test "x$HAVE_ZLIB_H" != "xtrue"; then ++ { echo "$as_me:$LINENO: WARNING: + ========================================================================== +-The openssl encryption library libssl.so was not found. An x11vnc built +-this way will not support SSL encryption. To enable SSL install the +-necessary development packages (perhaps it is named something like +-libssl-dev) and run configure again. ++The libz compression library was not found: this may lead to reduced ++performance, especially over slow links. If libz is in a non-standard ++location use --with-zlib=DIR to indicate the header file is in ++DIR/include/zlib.h and the library in DIR/lib/libz.a. A copy of ++libz may be obtained from: http://www.gzip.org/zlib/ + ========================================================================== + " >&5 + echo "$as_me: WARNING: + ========================================================================== +-The openssl encryption library libssl.so was not found. An x11vnc built +-this way will not support SSL encryption. To enable SSL install the +-necessary development packages (perhaps it is named something like +-libssl-dev) and run configure again. ++The libz compression library was not found: this may lead to reduced ++performance, especially over slow links. If libz is in a non-standard ++location use --with-zlib=DIR to indicate the header file is in ++DIR/include/zlib.h and the library in DIR/lib/libz.a. A copy of ++libz may be obtained from: http://www.gzip.org/zlib/ + ========================================================================== + " >&2;} ++ fi + fi ++fi + +-if test "x$with_v4l" != "xno"; then +- if test "${ac_cv_header_linux_videodev_h+set}" = set; then +- echo "$as_me:$LINENO: checking for linux/videodev.h" >&5 +-echo $ECHO_N "checking for linux/videodev.h... $ECHO_C" >&6 +-if test "${ac_cv_header_linux_videodev_h+set}" = set; then ++ ++# Check whether --with-pthread was given. ++if test "${with_pthread+set}" = set; then ++ withval=$with_pthread; ++fi ++ ++ ++if test "x$with_pthread" != "xno"; then ++ if test "${ac_cv_header_pthread_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for pthread.h" >&5 ++echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_pthread_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_videodev_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_videodev_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 ++echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking linux/videodev.h usability" >&5 +-echo $ECHO_N "checking linux/videodev.h usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking pthread.h usability" >&5 ++echo $ECHO_N "checking pthread.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -22251,70 +15442,64 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default +-#include ++#include + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking linux/videodev.h presence" >&5 +-echo $ECHO_N "checking linux/videodev.h presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking pthread.h presence" >&5 ++echo $ECHO_N "checking pthread.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++#include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -22322,359 +15507,279 @@ + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) +- { echo "$as_me:$LINENO: WARNING: linux/videodev.h: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: linux/videodev.h: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/videodev.h: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: linux/videodev.h: proceeding with the compiler's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: pthread.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: linux/videodev.h: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: linux/videodev.h: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/videodev.h: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: linux/videodev.h: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/videodev.h: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: linux/videodev.h: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/videodev.h: section \"Present But Cannot Be Compiled\"" >&5 +-echo "$as_me: WARNING: linux/videodev.h: section \"Present But Cannot Be Compiled\"" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/videodev.h: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: linux/videodev.h: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/videodev.h: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: linux/videodev.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX ++ { echo "$as_me:$LINENO: WARNING: pthread.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: pthread.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: pthread.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: pthread.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: pthread.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: pthread.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX + ## ----------------------------------------------------------- ## + ## Report this to http://sourceforge.net/projects/libvncserver ## + ## ----------------------------------------------------------- ## + _ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; + esac +-echo "$as_me:$LINENO: checking for linux/videodev.h" >&5 +-echo $ECHO_N "checking for linux/videodev.h... $ECHO_C" >&6 +-if test "${ac_cv_header_linux_videodev_h+set}" = set; then ++{ echo "$as_me:$LINENO: checking for pthread.h" >&5 ++echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_pthread_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_header_linux_videodev_h=$ac_header_preproc ++ ac_cv_header_pthread_h=$ac_header_preproc + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_videodev_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_videodev_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 ++echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; } + + fi +-if test $ac_cv_header_linux_videodev_h = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LINUX_VIDEODEV_H 1 +-_ACEOF +- ++if test $ac_cv_header_pthread_h = yes; then ++ HAVE_PTHREAD_H="true" + fi + + +-fi +-if test "x$with_fbdev" != "xno"; then +- if test "${ac_cv_header_linux_fb_h+set}" = set; then +- echo "$as_me:$LINENO: checking for linux/fb.h" >&5 +-echo $ECHO_N "checking for linux/fb.h... $ECHO_C" >&6 +-if test "${ac_cv_header_linux_fb_h+set}" = set; then ++ if test ! -z "$HAVE_PTHREAD_H"; then ++ ++{ echo "$as_me:$LINENO: checking for pthread_mutex_lock in -lpthread" >&5 ++echo $ECHO_N "checking for pthread_mutex_lock in -lpthread... $ECHO_C" >&6; } ++if test "${ac_cv_lib_pthread_pthread_mutex_lock+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +-fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_fb_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_fb_h" >&6 + else +- # Is the header compilable? +-echo "$as_me:$LINENO: checking linux/fb.h usability" >&5 +-echo $ECHO_N "checking linux/fb.h usability... $ECHO_C" >&6 ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lpthread $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_includes_default +-#include +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_header_compiler=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_header_compiler=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 + +-# Is the header present? +-echo "$as_me:$LINENO: checking linux/fb.h presence" >&5 +-echo $ECHO_N "checking linux/fb.h presence... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char pthread_mutex_lock (); ++int ++main () ++{ ++return pthread_mutex_lock (); ++ ; ++ return 0; ++} + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_pthread_pthread_mutex_lock=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_preproc=no +-fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { echo "$as_me:$LINENO: WARNING: linux/fb.h: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: linux/fb.h: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/fb.h: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: linux/fb.h: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: linux/fb.h: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: linux/fb.h: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/fb.h: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: linux/fb.h: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/fb.h: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: linux/fb.h: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/fb.h: section \"Present But Cannot Be Compiled\"" >&5 +-echo "$as_me: WARNING: linux/fb.h: section \"Present But Cannot Be Compiled\"" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/fb.h: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: linux/fb.h: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/fb.h: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: linux/fb.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ----------------------------------------------------------- ## +-## Report this to http://sourceforge.net/projects/libvncserver ## +-## ----------------------------------------------------------- ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-echo "$as_me:$LINENO: checking for linux/fb.h" >&5 +-echo $ECHO_N "checking for linux/fb.h... $ECHO_C" >&6 +-if test "${ac_cv_header_linux_fb_h+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_header_linux_fb_h=$ac_header_preproc ++ ac_cv_lib_pthread_pthread_mutex_lock=no + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_fb_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_fb_h" >&6 + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS + fi +-if test $ac_cv_header_linux_fb_h = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LINUX_FB_H 1 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_lock" >&5 ++echo "${ECHO_T}$ac_cv_lib_pthread_pthread_mutex_lock" >&6; } ++if test $ac_cv_lib_pthread_pthread_mutex_lock = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBPTHREAD 1 + _ACEOF + +-fi +- ++ LIBS="-lpthread $LIBS" + + fi +-if test "x$with_uinput" != "xno"; then +- if test "${ac_cv_header_linux_input_h+set}" = set; then +- echo "$as_me:$LINENO: checking for linux/input.h" >&5 +-echo $ECHO_N "checking for linux/input.h... $ECHO_C" >&6 +-if test "${ac_cv_header_linux_input_h+set}" = set; then ++ ++ { echo "$as_me:$LINENO: checking for pthread_mutex_lock in -lpthread" >&5 ++echo $ECHO_N "checking for pthread_mutex_lock in -lpthread... $ECHO_C" >&6; } ++if test "${ac_cv_lib_pthread_pthread_mutex_lock+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +-fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_input_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_input_h" >&6 + else +- # Is the header compilable? +-echo "$as_me:$LINENO: checking linux/input.h usability" >&5 +-echo $ECHO_N "checking linux/input.h usability... $ECHO_C" >&6 ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lpthread $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_includes_default +-#include ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char pthread_mutex_lock (); ++int ++main () ++{ ++return pthread_mutex_lock (); ++ ; ++ return 0; ++} + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_header_compiler=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_pthread_pthread_mutex_lock=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_cv_lib_pthread_pthread_mutex_lock=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 + +-# Is the header present? +-echo "$as_me:$LINENO: checking linux/input.h presence" >&5 +-echo $ECHO_N "checking linux/input.h presence... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_lock" >&5 ++echo "${ECHO_T}$ac_cv_lib_pthread_pthread_mutex_lock" >&6; } ++if test $ac_cv_lib_pthread_pthread_mutex_lock = yes; then ++ HAVE_LIBPTHREAD="true" ++fi ++ ++ fi ++fi ++ if test ! -z "$HAVE_LIBPTHREAD"; then ++ HAVE_LIBPTHREAD_TRUE= ++ HAVE_LIBPTHREAD_FALSE='#' ++else ++ HAVE_LIBPTHREAD_TRUE='#' ++ HAVE_LIBPTHREAD_FALSE= ++fi ++ ++ ++# tightvnc-filetransfer implemented using threads: ++if test -z "$HAVE_LIBPTHREAD"; then ++ with_tightvnc_filetransfer="" ++fi ++if test "x$with_tightvnc_filetransfer" = "xyes"; then ++ cat >>confdefs.h <<\_ACEOF ++#define WITH_TIGHTVNC_FILETRANSFER 1 + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi ++ ++fi ++ if test "$with_tightvnc_filetransfer" = "yes"; then ++ WITH_TIGHTVNC_FILETRANSFER_TRUE= ++ WITH_TIGHTVNC_FILETRANSFER_FALSE='#' + else +- ac_cpp_err=yes ++ WITH_TIGHTVNC_FILETRANSFER_TRUE='#' ++ WITH_TIGHTVNC_FILETRANSFER_FALSE= + fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes ++ ++ ++ if test ! -z "$HAVE_ZLIB_H"; then ++ HAVE_LIBZ_TRUE= ++ HAVE_LIBZ_FALSE='#' + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ HAVE_LIBZ_TRUE='#' ++ HAVE_LIBZ_FALSE= ++fi + +- ac_header_preproc=no ++ if test ! -z "$HAVE_JPEGLIB_H"; then ++ HAVE_LIBJPEG_TRUE= ++ HAVE_LIBJPEG_FALSE='#' ++else ++ HAVE_LIBJPEG_TRUE='#' ++ HAVE_LIBJPEG_FALSE= + fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 + +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { echo "$as_me:$LINENO: WARNING: linux/input.h: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: linux/input.h: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/input.h: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: linux/input.h: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: linux/input.h: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: linux/input.h: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/input.h: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: linux/input.h: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/input.h: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: linux/input.h: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/input.h: section \"Present But Cannot Be Compiled\"" >&5 +-echo "$as_me: WARNING: linux/input.h: section \"Present But Cannot Be Compiled\"" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/input.h: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: linux/input.h: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: linux/input.h: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: linux/input.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ----------------------------------------------------------- ## +-## Report this to http://sourceforge.net/projects/libvncserver ## +-## ----------------------------------------------------------- ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-echo "$as_me:$LINENO: checking for linux/input.h" >&5 +-echo $ECHO_N "checking for linux/input.h... $ECHO_C" >&6 +-if test "${ac_cv_header_linux_input_h+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++ ++if test -z "$with_sdl"; then ++ if sdl-config --version >/dev/null 2>&1; then ++ with_sdl=yes ++ SDL_CFLAGS=`sdl-config --cflags` ++ SDL_LIBS=`sdl-config --libs` ++ else ++ with_sdl=no ++ fi ++fi ++ if test "x$with_sdl" = "xyes"; then ++ HAVE_LIBSDL_TRUE= ++ HAVE_LIBSDL_FALSE='#' + else +- ac_cv_header_linux_input_h=$ac_header_preproc ++ HAVE_LIBSDL_TRUE='#' ++ HAVE_LIBSDL_FALSE= + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_input_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_input_h" >&6 + ++ ++ ++ ++MINGW=`uname -s | grep MINGW 2>/dev/null` ++ if test ! -z "$MINGW" ; then ++ MINGW_TRUE= ++ MINGW_FALSE='#' ++else ++ MINGW_TRUE='#' ++ MINGW_FALSE= + fi +-if test $ac_cv_header_linux_input_h = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LINUX_INPUT_H 1 +-_ACEOF +- HAVE_LINUX_INPUT_H="true" ++ ++if test ! -z "$MINGW"; then ++ WSOCKLIB="-lws2_32" + fi + + +- if test "x$HAVE_LINUX_INPUT_H" = "xtrue"; then +- echo "$as_me:$LINENO: checking for linux/uinput.h" >&5 +-echo $ECHO_N "checking for linux/uinput.h... $ECHO_C" >&6 +-if test "${ac_cv_header_linux_uinput_h+set}" = set; then ++# Checks for header files. ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } ++if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -22683,206 +15788,196 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++#include ++#include ++#include ++#include + +-#include ++int ++main () ++{ ++ ++ ; ++ return 0; ++} + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_header_linux_uinput_h=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_stdc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_linux_uinput_h=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cv_header_stdc=no + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_uinput_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_uinput_h" >&6 +-if test $ac_cv_header_linux_uinput_h = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LINUX_UINPUT_H 1 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ + _ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "memchr" >/dev/null 2>&1; then ++ : ++else ++ ac_cv_header_stdc=no + fi ++rm -f conftest* + +- +- fi + fi + +-if test "x$with_macosx_native" != "xno"; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_MACOSX_NATIVE_DISPLAY 1 ++if test $ac_cv_header_stdc = yes; then ++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ + _ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "free" >/dev/null 2>&1; then ++ : ++else ++ ac_cv_header_stdc=no + fi ++rm -f conftest* + ++fi + ++if test $ac_cv_header_stdc = yes; then ++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. ++ if test "$cross_compiling" = yes; then ++ : ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#if ((' ' & 0x0FF) == 0x020) ++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) ++#else ++# define ISLOWER(c) \ ++ (('a' <= (c) && (c) <= 'i') \ ++ || ('j' <= (c) && (c) <= 'r') \ ++ || ('s' <= (c) && (c) <= 'z')) ++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) ++#endif + +- +-# Check whether --with-avahi or --without-avahi was given. +-if test "${with_avahi+set}" = set; then +- withval="$with_avahi" +- +-fi; +-if test "x$with_avahi" != "xno"; then +- printf "checking for avahi... " +- if test ! -z "$with_avahi" -a "x$with_avahi" != "xyes"; then +- AVAHI_CFLAGS="-I$with_avahi/include" +- AVAHI_LIBS="-L$with_avahi/lib -lavahi-common -lavahi-client" +- echo "using $with_avahi" +- with_avahi=yes +- elif pkg-config --atleast-version=0.6.4 avahi-client >/dev/null 2>&1; then +- AVAHI_CFLAGS=`pkg-config --cflags avahi-client` +- AVAHI_LIBS=`pkg-config --libs avahi-client` +- with_avahi=yes +- echo yes +- else +- with_avahi=no +- echo no +- fi +-fi +-if test "x$with_avahi" = "xyes"; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_AVAHI 1 ++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) ++int ++main () ++{ ++ int i; ++ for (i = 0; i < 256; i++) ++ if (XOR (islower (i), ISLOWER (i)) ++ || toupper (i) != TOUPPER (i)) ++ return 2; ++ return 0; ++} + _ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ : ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- +- ++( exit $ac_status ) ++ac_cv_header_stdc=no + fi +- ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi +-# end x11vnc only. + +-# Checks for libraries. + +-uname_s=`(uname -s) 2>/dev/null` +-ld_minus_R="yes" +-if test "x$uname_s" = "xHP-UX"; then +- ld_minus_R="no" +-elif test "x$uname_s" = "xOSF1"; then +- ld_minus_R="no" +-elif test "x$uname_s" = "xDarwin"; then +- ld_minus_R="no" + fi +- +-if test ! -z "$with_system_libvncserver" -a "x$with_system_libvncserver" != "xno"; then +- printf "checking for system libvncserver... " +- if test "x$with_system_libvncserver" != "xyes"; then +- rflag="" +- if test "x$ld_minus_R" = "xno"; then +- : +- elif test "x$GCC" = "xyes"; then +- rflag="-Xlinker -R$with_system_libvncserver/lib" +- else +- rflag="-R$with_system_libvncserver/lib" +- fi +- SYSTEM_LIBVNCSERVER_CFLAGS="-I$with_system_libvncserver/include" +- SYSTEM_LIBVNCSERVER_LIBS="-L$with_system_libvncserver/lib $rflag -lvncserver -lvncclient" +- echo "using $with_system_libvncserver" +- with_system_libvncserver=yes +- elif libvncserver-config --version >/dev/null 2>&1; then +- rflag="" +- rprefix=`libvncserver-config --prefix` +- if test "x$ld_minus_R" = "xno"; then +- : +- elif test "x$GCC" = "xyes"; then +- rflag=" -Xlinker -R$rprefix/lib " +- else +- rflag=" -R$rprefix/lib " +- fi +- SYSTEM_LIBVNCSERVER_CFLAGS=`libvncserver-config --cflags` +- SYSTEM_LIBVNCSERVER_LIBS="$rflag"`libvncserver-config --libs` +- with_system_libvncserver=yes +- echo yes +- else +- with_system_libvncserver=no +- echo no +- fi + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } ++if test $ac_cv_header_stdc = yes; then + +-if test "x$with_system_libvncserver" = "xyes"; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_SYSTEM_LIBVNCSERVER 1 ++cat >>confdefs.h <<\_ACEOF ++#define STDC_HEADERS 1 + _ACEOF + ++fi + + +-fi + + +-if test "x$with_system_libvncserver" = "xyes"; then +- HAVE_SYSTEM_LIBVNCSERVER_TRUE= +- HAVE_SYSTEM_LIBVNCSERVER_FALSE='#' +-else +- HAVE_SYSTEM_LIBVNCSERVER_TRUE='#' +- HAVE_SYSTEM_LIBVNCSERVER_FALSE= +-fi + + + + +-# Check whether --with-jpeg or --without-jpeg was given. +-if test "${with_jpeg+set}" = set; then +- withval="$with_jpeg" + +-fi; + +-# At this point: +-# no jpeg on command line with_jpeg="" +-# -with-jpeg with_jpeg="yes" +-# -without-jpeg with_jpeg="no" +-# -with-jpeg=/foo/dir with_jpeg="/foo/dir" + +-if test "x$with_jpeg" != "xno"; then +- if test ! -z "$with_jpeg" -a "x$with_jpeg" != "xyes"; then +- # add user supplied directory to flags: +- saved_CPPFLAGS="$CPPFLAGS" +- saved_LDFLAGS="$LDFLAGS" +- CPPFLAGS="$CPPFLAGS -I$with_jpeg/include" +- LDFLAGS="$LDFLAGS -L$with_jpeg/lib" +- if test "x$ld_minus_R" = "xno"; then +- : +- elif test "x$GCC" = "xyes"; then +- # this is not complete... in general a rat's nest. +- LDFLAGS="$LDFLAGS -Xlinker -R$with_jpeg/lib" +- else +- LDFLAGS="$LDFLAGS -R$with_jpeg/lib" +- fi +- fi +- if test "${ac_cv_header_jpeglib_h+set}" = set; then +- echo "$as_me:$LINENO: checking for jpeglib.h" >&5 +-echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6 +-if test "${ac_cv_header_jpeglib_h+set}" = set; then ++ ++for ac_header in arpa/inet.h fcntl.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h sys/time.h sys/timeb.h syslog.h unistd.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 +-echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking jpeglib.h usability" >&5 +-echo $ECHO_N "checking jpeglib.h usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -22890,70 +15985,64 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default +-#include ++#include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking jpeglib.h presence" >&5 +-echo $ECHO_N "checking jpeglib.h presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++#include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -22961,206 +16050,87 @@ + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) +- { echo "$as_me:$LINENO: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: jpeglib.h: proceeding with the compiler's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: jpeglib.h: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: jpeglib.h: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: jpeglib.h: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: jpeglib.h: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&5 +-echo "$as_me: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&2;} +- { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX + ## ----------------------------------------------------------- ## + ## Report this to http://sourceforge.net/projects/libvncserver ## + ## ----------------------------------------------------------- ## + _ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; + esac +-echo "$as_me:$LINENO: checking for jpeglib.h" >&5 +-echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6 +-if test "${ac_cv_header_jpeglib_h+set}" = set; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_header_jpeglib_h=$ac_header_preproc ++ eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 +-echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi +-if test $ac_cv_header_jpeglib_h = yes; then +- HAVE_JPEGLIB_H="true" +-fi +- +- +- if test "x$HAVE_JPEGLIB_H" = "xtrue"; then +- +-echo "$as_me:$LINENO: checking for jpeg_CreateCompress in -ljpeg" >&5 +-echo $ECHO_N "checking for jpeg_CreateCompress in -ljpeg... $ECHO_C" >&6 +-if test "${ac_cv_lib_jpeg_jpeg_CreateCompress+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ljpeg $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char jpeg_CreateCompress (); +-int +-main () +-{ +-jpeg_CreateCompress (); +- ; +- return 0; +-} ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_jpeg_jpeg_CreateCompress=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_jpeg_jpeg_CreateCompress=no + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_CreateCompress" >&5 +-echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_CreateCompress" >&6 +-if test $ac_cv_lib_jpeg_jpeg_CreateCompress = yes; then +- cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBJPEG 1 +-_ACEOF + +- LIBS="-ljpeg $LIBS" ++done + +-else +- HAVE_JPEGLIB_H="" +-fi + +- fi +- if test ! -z "$with_jpeg" -a "x$with_jpeg" != "xyes"; then +- if test "x$HAVE_JPEGLIB_H" != "xtrue"; then +- # restore old flags on failure: +- CPPFLAGS="$saved_CPPFLAGS" +- LDFLAGS="$saved_LDFLAGS" +- fi +- fi +- if test "$build" = "yes"; then +- if test "x$HAVE_JPEGLIB_H" != "xtrue"; then +- { echo "$as_me:$LINENO: WARNING: +-========================================================================== +-The libjpeg compression library was not found: this may lead to reduced +-performance, especially over slow links. If libjpeg is in a non-standard +-location use --with-jpeg=DIR to indicate the header file is in +-DIR/include/jpeglib.h and the library in DIR/lib/libjpeg.a. A copy of +-libjpeg may be obtained from: ftp://ftp.uu.net/graphics/jpeg/ +-========================================================================== +-" >&5 +-echo "$as_me: WARNING: +-========================================================================== +-The libjpeg compression library was not found: this may lead to reduced +-performance, especially over slow links. If libjpeg is in a non-standard +-location use --with-jpeg=DIR to indicate the header file is in +-DIR/include/jpeglib.h and the library in DIR/lib/libjpeg.a. A copy of +-libjpeg may be obtained from: ftp://ftp.uu.net/graphics/jpeg/ +-========================================================================== +-" >&2;} +- fi +- fi +-fi ++# x11vnc only: ++if test "$build_x11vnc" = "yes"; then + + +-# Check whether --with-libz or --without-libz was given. +-if test "${with_libz+set}" = set; then +- withval="$with_libz" + +-fi; + +-# Check whether --with-zlib or --without-zlib was given. +-if test "${with_zlib+set}" = set; then +- withval="$with_zlib" + +-fi; + +-if test "x$with_zlib" != "xno" -a "x$with_libz" != "xno"; then +- if test ! -z "$with_zlib" -a "x$with_zlib" != "xyes"; then +- saved_CPPFLAGS="$CPPFLAGS" +- saved_LDFLAGS="$LDFLAGS" +- CPPFLAGS="$CPPFLAGS -I$with_zlib/include" +- LDFLAGS="$LDFLAGS -L$with_zlib/lib" +- if test "x$ld_minus_R" = "xno"; then +- : +- elif test "x$GCC" = "xyes"; then +- LDFLAGS="$LDFLAGS -Xlinker -R$with_zlib/lib" +- else +- LDFLAGS="$LDFLAGS -R$with_zlib/lib" +- fi +- fi +- if test "${ac_cv_header_zlib_h+set}" = set; then +- echo "$as_me:$LINENO: checking for zlib.h" >&5 +-echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6 +-if test "${ac_cv_header_zlib_h+set}" = set; then ++for ac_header in pwd.h sys/wait.h utmpx.h termios.h sys/ioctl.h sys/stropts.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 +-echo "${ECHO_T}$ac_cv_header_zlib_h" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking zlib.h usability" >&5 +-echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -23168,70 +16138,64 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default +-#include ++#include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking zlib.h presence" >&5 +-echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++#include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -23239,556 +16203,479 @@ + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) +- { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5 +-echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;} +- { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX + ## ----------------------------------------------------------- ## + ## Report this to http://sourceforge.net/projects/libvncserver ## + ## ----------------------------------------------------------- ## + _ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; + esac +-echo "$as_me:$LINENO: checking for zlib.h" >&5 +-echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6 +-if test "${ac_cv_header_zlib_h+set}" = set; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_header_zlib_h=$ac_header_preproc ++ eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 +-echo "${ECHO_T}$ac_cv_header_zlib_h" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi +-if test $ac_cv_header_zlib_h = yes; then +- HAVE_ZLIB_H="true" ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ + fi + ++done + +- if test "x$HAVE_ZLIB_H" = "xtrue"; then ++fi + +-echo "$as_me:$LINENO: checking for deflate in -lz" >&5 +-echo $ECHO_N "checking for deflate in -lz... $ECHO_C" >&6 +-if test "${ac_cv_lib_z_deflate+set}" = set; then ++# Checks for typedefs, structures, and compiler characteristics. ++{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 ++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } ++if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lz $LIBS" +-cat >conftest.$ac_ext <<_ACEOF ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char deflate (); + int + main () + { +-deflate (); ++/* FIXME: Include the comments suggested by Paul. */ ++#ifndef __cplusplus ++ /* Ultrix mips cc rejects this. */ ++ typedef int charset[2]; ++ const charset cs; ++ /* SunOS 4.1.1 cc rejects this. */ ++ char const *const *pcpcc; ++ char **ppc; ++ /* NEC SVR4.0.2 mips cc rejects this. */ ++ struct point {int x, y;}; ++ static struct point const zero = {0,0}; ++ /* AIX XL C 1.02.0.0 rejects this. ++ It does not let you subtract one const X* pointer from another in ++ an arm of an if-expression whose if-part is not a constant ++ expression */ ++ const char *g = "string"; ++ pcpcc = &g + (g ? g-g : 0); ++ /* HPUX 7.0 cc rejects these. */ ++ ++pcpcc; ++ ppc = (char**) pcpcc; ++ pcpcc = (char const *const *) ppc; ++ { /* SCO 3.2v4 cc rejects this. */ ++ char *t; ++ char const *s = 0 ? (char *) 0 : (char const *) 0; ++ ++ *t++ = 0; ++ if (s) return 0; ++ } ++ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ ++ int x[] = {25, 17}; ++ const int *foo = &x[0]; ++ ++foo; ++ } ++ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ ++ typedef const int *iptr; ++ iptr p = 0; ++ ++p; ++ } ++ { /* AIX XL C 1.02.0.0 rejects this saying ++ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ ++ struct s { int j; const int *ap[3]; }; ++ struct s *b; b->j = 5; ++ } ++ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ ++ const int foo = 10; ++ if (!foo) return 0; ++ } ++ return !cs[0] && !zero.x; ++#endif ++ + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_z_deflate=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_const=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_z_deflate=no ++ ac_cv_c_const=no + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_z_deflate" >&5 +-echo "${ECHO_T}$ac_cv_lib_z_deflate" >&6 +-if test $ac_cv_lib_z_deflate = yes; then +- cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBZ 1 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 ++echo "${ECHO_T}$ac_cv_c_const" >&6; } ++if test $ac_cv_c_const = no; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define const + _ACEOF + +- LIBS="-lz $LIBS" ++fi + ++{ echo "$as_me:$LINENO: checking for inline" >&5 ++echo $ECHO_N "checking for inline... $ECHO_C" >&6; } ++if test "${ac_cv_c_inline+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- HAVE_ZLIB_H="" +-fi ++ ac_cv_c_inline=no ++for ac_kw in inline __inline__ __inline; do ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifndef __cplusplus ++typedef int foo_t; ++static $ac_kw foo_t static_foo () {return 0; } ++$ac_kw foo_t foo () {return 0; } ++#endif ++ ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_inline=$ac_kw ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + +- fi +- if test ! -z "$with_zlib" -a "x$with_zlib" != "xyes"; then +- if test "x$HAVE_ZLIB_H" != "xtrue"; then +- CPPFLAGS="$saved_CPPFLAGS" +- LDFLAGS="$saved_LDFLAGS" +- fi +- fi +- if test "$build_x11vnc" = "yes"; then +- if test "x$HAVE_ZLIB_H" != "xtrue"; then +- { echo "$as_me:$LINENO: WARNING: +-========================================================================== +-The libz compression library was not found: this may lead to reduced +-performance, especially over slow links. If libz is in a non-standard +-location use --with-zlib=DIR to indicate the header file is in +-DIR/include/zlib.h and the library in DIR/lib/libz.a. A copy of +-libz may be obtained from: http://www.gzip.org/zlib/ +-========================================================================== +-" >&5 +-echo "$as_me: WARNING: +-========================================================================== +-The libz compression library was not found: this may lead to reduced +-performance, especially over slow links. If libz is in a non-standard +-location use --with-zlib=DIR to indicate the header file is in +-DIR/include/zlib.h and the library in DIR/lib/libz.a. A copy of +-libz may be obtained from: http://www.gzip.org/zlib/ +-========================================================================== +-" >&2;} +- fi +- fi + fi + ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ test "$ac_cv_c_inline" != no && break ++done + +-# Check whether --with-pthread or --without-pthread was given. +-if test "${with_pthread+set}" = set; then +- withval="$with_pthread" ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 ++echo "${ECHO_T}$ac_cv_c_inline" >&6; } + +-fi; + +-if test "x$with_pthread" != "xno"; then +- if test "${ac_cv_header_pthread_h+set}" = set; then +- echo "$as_me:$LINENO: checking for pthread.h" >&5 +-echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6 +-if test "${ac_cv_header_pthread_h+set}" = set; then ++case $ac_cv_c_inline in ++ inline | yes) ;; ++ *) ++ case $ac_cv_c_inline in ++ no) ac_val=;; ++ *) ac_val=$ac_cv_c_inline;; ++ esac ++ cat >>confdefs.h <<_ACEOF ++#ifndef __cplusplus ++#define inline $ac_val ++#endif ++_ACEOF ++ ;; ++esac ++ ++{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 ++echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } ++if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +-fi +-echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 +-echo "${ECHO_T}$ac_cv_header_pthread_h" >&6 + else +- # Is the header compilable? +-echo "$as_me:$LINENO: checking pthread.h usability" >&5 +-echo $ECHO_N "checking pthread.h usability... $ECHO_C" >&6 ++ # See if sys/param.h defines the BYTE_ORDER macro. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_includes_default +-#include ++#include ++#include ++ ++int ++main () ++{ ++#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ ++ && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) ++ bogus endian macros ++#endif ++ ++ ; ++ return 0; ++} + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_header_compiler=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_header_compiler=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 +- +-# Is the header present? +-echo "$as_me:$LINENO: checking pthread.h presence" >&5 +-echo $ECHO_N "checking pthread.h presence... $ECHO_C" >&6 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ # It does; now see whether it defined to BIG_ENDIAN or not. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++#include ++#include ++ ++int ++main () ++{ ++#if BYTE_ORDER != BIG_ENDIAN ++ not big endian ++#endif ++ ++ ; ++ return 0; ++} + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_bigendian=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_preproc=no ++ ac_cv_c_bigendian=no + fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 + +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { echo "$as_me:$LINENO: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: pthread.h: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: pthread.h: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: pthread.h: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: pthread.h: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: pthread.h: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: pthread.h: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: pthread.h: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&5 +-echo "$as_me: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&2;} +- { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: pthread.h: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: pthread.h: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: pthread.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ----------------------------------------------------------- ## +-## Report this to http://sourceforge.net/projects/libvncserver ## +-## ----------------------------------------------------------- ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-echo "$as_me:$LINENO: checking for pthread.h" >&5 +-echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6 +-if test "${ac_cv_header_pthread_h+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + else +- ac_cv_header_pthread_h=$ac_header_preproc +-fi +-echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 +-echo "${ECHO_T}$ac_cv_header_pthread_h" >&6 +- +-fi +-if test $ac_cv_header_pthread_h = yes; then +- HAVE_PTHREAD_H="true" +-fi +- +- +- if test ! -z "$HAVE_PTHREAD_H"; then ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-echo "$as_me:$LINENO: checking for pthread_mutex_lock in -lpthread" >&5 +-echo $ECHO_N "checking for pthread_mutex_lock in -lpthread... $ECHO_C" >&6 +-if test "${ac_cv_lib_pthread_pthread_mutex_lock+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lpthread $LIBS" +-cat >conftest.$ac_ext <<_ACEOF ++ # It does not; compile a test program. ++if test "$cross_compiling" = yes; then ++ # try to guess the endianness by grepping values into an object file ++ ac_cv_c_bigendian=unknown ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char pthread_mutex_lock (); ++short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; ++short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; ++void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } ++short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; ++short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; ++void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } + int + main () + { +-pthread_mutex_lock (); ++ _ascii (); _ebcdic (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_pthread_pthread_mutex_lock=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then ++ ac_cv_c_bigendian=yes ++fi ++if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then ++ if test "$ac_cv_c_bigendian" = unknown; then ++ ac_cv_c_bigendian=no ++ else ++ # finding both strings is unlikely to happen, but who knows? ++ ac_cv_c_bigendian=unknown ++ fi ++fi + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_pthread_pthread_mutex_lock=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_lock" >&5 +-echo "${ECHO_T}$ac_cv_lib_pthread_pthread_mutex_lock" >&6 +-if test $ac_cv_lib_pthread_pthread_mutex_lock = yes; then +- cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBPTHREAD 1 +-_ACEOF +- +- LIBS="-lpthread $LIBS" + + fi + +- echo "$as_me:$LINENO: checking for pthread_mutex_lock in -lpthread" >&5 +-echo $ECHO_N "checking for pthread_mutex_lock in -lpthread... $ECHO_C" >&6 +-if test "${ac_cv_lib_pthread_pthread_mutex_lock+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lpthread $LIBS" +-cat >conftest.$ac_ext <<_ACEOF ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char pthread_mutex_lock (); ++$ac_includes_default + int + main () + { +-pthread_mutex_lock (); ++ ++ /* Are we little or big endian? From Harbison&Steele. */ ++ union ++ { ++ long int l; ++ char c[sizeof (long int)]; ++ } u; ++ u.l = 1; ++ return u.c[sizeof (long int) - 1] == 1; ++ + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +- ac_cv_lib_pthread_pthread_mutex_lock=yes ++ ac_cv_c_bigendian=no + else +- echo "$as_me: failed program was:" >&5 ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_pthread_pthread_mutex_lock=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_lock" >&5 +-echo "${ECHO_T}$ac_cv_lib_pthread_pthread_mutex_lock" >&6 +-if test $ac_cv_lib_pthread_pthread_mutex_lock = yes; then +- HAVE_LIBPTHREAD="true" +-fi +- +- fi +-fi +- +- +-if test ! -z "$HAVE_LIBPTHREAD"; then +- HAVE_LIBPTHREAD_TRUE= +- HAVE_LIBPTHREAD_FALSE='#' +-else +- HAVE_LIBPTHREAD_TRUE='#' +- HAVE_LIBPTHREAD_FALSE= +-fi +- +- +-# tightvnc-filetransfer implemented using threads: +-if test -z "$HAVE_LIBPTHREAD"; then +- with_tightvnc_filetransfer="" +-fi +-if test "x$with_tightvnc_filetransfer" = "xyes"; then +- cat >>confdefs.h <<\_ACEOF +-#define WITH_TIGHTVNC_FILETRANSFER 1 +-_ACEOF +- +-fi +- +- +-if test "$with_tightvnc_filetransfer" = "yes"; then +- WITH_TIGHTVNC_FILETRANSFER_TRUE= +- WITH_TIGHTVNC_FILETRANSFER_FALSE='#' +-else +- WITH_TIGHTVNC_FILETRANSFER_TRUE='#' +- WITH_TIGHTVNC_FILETRANSFER_FALSE= +-fi +- +- +- +- +-if test ! -z "$HAVE_ZLIB_H"; then +- HAVE_LIBZ_TRUE= +- HAVE_LIBZ_FALSE='#' +-else +- HAVE_LIBZ_TRUE='#' +- HAVE_LIBZ_FALSE= +-fi +- +- +- +-if test ! -z "$HAVE_JPEGLIB_H"; then +- HAVE_LIBJPEG_TRUE= +- HAVE_LIBJPEG_FALSE='#' +-else +- HAVE_LIBJPEG_TRUE='#' +- HAVE_LIBJPEG_FALSE= +-fi +- +- +-if test -z "$with_sdl"; then +- if sdl-config --version >/dev/null 2>&1; then +- with_sdl=yes +- SDL_CFLAGS=`sdl-config --cflags` +- SDL_LIBS=`sdl-config --libs` +- else +- with_sdl=no +- fi ++( exit $ac_status ) ++ac_cv_c_bigendian=yes + fi +- +- +-if test "x$with_sdl" = "xyes"; then +- HAVE_LIBSDL_TRUE= +- HAVE_LIBSDL_FALSE='#' +-else +- HAVE_LIBSDL_TRUE='#' +- HAVE_LIBSDL_FALSE= ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + + +- +- +-MINGW=`uname -s | grep MINGW 2>/dev/null` +- +- +-if test ! -z "$MINGW" ; then +- MINGW_TRUE= +- MINGW_FALSE='#' +-else +- MINGW_TRUE='#' +- MINGW_FALSE= + fi + +-if test ! -z "$MINGW"; then +- WSOCKLIB="-lws2_32" ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 ++echo "${ECHO_T}$ac_cv_c_bigendian" >&6; } ++case $ac_cv_c_bigendian in ++ yes) + ++cat >>confdefs.h <<\_ACEOF ++#define WORDS_BIGENDIAN 1 ++_ACEOF ++ ;; ++ no) ++ ;; ++ *) ++ { { echo "$as_me:$LINENO: error: unknown endianness ++presetting ac_cv_c_bigendian=no (or yes) will help" >&5 ++echo "$as_me: error: unknown endianness ++presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} ++ { (exit 1); exit 1; }; } ;; ++esac + +-# Checks for header files. +-echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +-if test "${ac_cv_header_stdc+set}" = set; then ++{ echo "$as_me:$LINENO: checking for size_t" >&5 ++echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -23797,96 +16684,62 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include +-#include +-#include +-#include +- ++$ac_includes_default ++typedef size_t ac__type_new_; + int + main () + { +- ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_header_stdc=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_size_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_stdc=no ++ ac_cv_type_size_t=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- +-if test $ac_cv_header_stdc = yes; then +- # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include + +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "memchr" >/dev/null 2>&1; then ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 ++echo "${ECHO_T}$ac_cv_type_size_t" >&6; } ++if test $ac_cv_type_size_t = yes; then + : + else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* +- +-fi +- +-if test $ac_cv_header_stdc = yes; then +- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include + ++cat >>confdefs.h <<_ACEOF ++#define size_t unsigned int + _ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "free" >/dev/null 2>&1; then +- : +-else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* + + fi + +-if test $ac_cv_header_stdc = yes; then +- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +- if test "$cross_compiling" = yes; then +- : ++{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 ++echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; } ++if test "${ac_cv_header_time+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -23894,388 +16747,401 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include +-#if ((' ' & 0x0FF) == 0x020) +-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +-#else +-# define ISLOWER(c) \ +- (('a' <= (c) && (c) <= 'i') \ +- || ('j' <= (c) && (c) <= 'r') \ +- || ('s' <= (c) && (c) <= 'z')) +-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +-#endif ++#include ++#include ++#include + +-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) + int + main () + { +- int i; +- for (i = 0; i < 256; i++) +- if (XOR (islower (i), ISLOWER (i)) +- || toupper (i) != TOUPPER (i)) +- exit(2); +- exit (0); ++if ((struct tm *) 0) ++return 0; ++ ; ++ return 0; + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_time=yes + else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 ++ echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-( exit $ac_status ) +-ac_cv_header_stdc=no +-fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi ++ ac_cv_header_time=no + fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +-echo "${ECHO_T}$ac_cv_header_stdc" >&6 +-if test $ac_cv_header_stdc = yes; then ++{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 ++echo "${ECHO_T}$ac_cv_header_time" >&6; } ++if test $ac_cv_header_time = yes; then + + cat >>confdefs.h <<\_ACEOF +-#define STDC_HEADERS 1 ++#define TIME_WITH_SYS_TIME 1 + _ACEOF + + fi + +- +- +- +- +- +- +- +- +- +- +- +-for ac_header in arpa/inet.h fcntl.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h sys/time.h sys/timeb.h syslog.h unistd.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 ++echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6; } ++if test "${ac_cv_header_sys_wait_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + else +- # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> ++#include ++#include ++#ifndef WEXITSTATUS ++# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) ++#endif ++#ifndef WIFEXITED ++# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) ++#endif ++ ++int ++main () ++{ ++ int s; ++ wait (&s); ++ s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ++ ; ++ return 0; ++} + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_header_compiler=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_sys_wait_h=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_cv_header_sys_wait_h=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 + +-# Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 ++echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6; } ++if test $ac_cv_header_sys_wait_h = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_SYS_WAIT_H 1 ++_ACEOF ++ ++fi ++ ++{ echo "$as_me:$LINENO: checking for socklen_t" >&5 ++echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_socklen_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include <$ac_header> ++#include ++ #include ++int ++main () ++{ ++socklen_t len = 42; return 0; ++ ; ++ return 0; ++} + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_socklen_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_preproc=no +-fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ----------------------------------------------------------- ## +-## Report this to http://sourceforge.net/projects/libvncserver ## +-## ----------------------------------------------------------- ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +- +-fi +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF +- ++ ac_cv_type_socklen_t=no + fi + +-done +- +- +-# x11vnc only: +-if test "$build_x11vnc" = "yes"; then +- ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5 ++echo "${ECHO_T}$ac_cv_type_socklen_t" >&6; } ++ if test $ac_cv_type_socklen_t != yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define socklen_t int ++_ACEOF + ++ fi + ++if test ! -d ./rfb; then ++ echo "creating subdir ./rfb for rfbint.h" ++ mkdir ./rfb ++fi ++# ------ AC CREATE STDINT H ------------------------------------- ++{ echo "$as_me:$LINENO: checking for stdint-types...." >&5 ++echo $ECHO_N "checking for stdint-types....... $ECHO_C" >&6; } ++ac_stdint_h=`echo rfb/rfbint.h` ++if test "$ac_stdint_h" = "stdint.h" ; then ++ { echo "$as_me:$LINENO: result: \"(are you sure you want them in ./stdint.h?)\"" >&5 ++echo "${ECHO_T}\"(are you sure you want them in ./stdint.h?)\"" >&6; } ++elif test "$ac_stdint_h" = "inttypes.h" ; then ++ { echo "$as_me:$LINENO: result: \"(are you sure you want them in ./inttypes.h?)\"" >&5 ++echo "${ECHO_T}\"(are you sure you want them in ./inttypes.h?)\"" >&6; } ++else ++ { echo "$as_me:$LINENO: result: \"(putting them into $ac_stdint_h)\"" >&5 ++echo "${ECHO_T}\"(putting them into $ac_stdint_h)\"" >&6; } ++fi + ++inttype_headers=`echo inttypes.h sys/inttypes.h sys/inttypes.h \ ++| sed -e 's/,/ /g'` + +-for ac_header in pwd.h sys/wait.h utmpx.h termios.h sys/ioctl.h sys/stropts.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++ ac_cv_header_stdint_x="no-file" ++ ac_cv_header_stdint_o="no-file" ++ ac_cv_header_stdint_u="no-file" ++ for i in stdint.h $inttype_headers ; do ++ unset ac_cv_type_uintptr_t ++ unset ac_cv_type_uint64_t ++ { echo "$as_me:$LINENO: checking for uintptr_t" >&5 ++echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uintptr_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + else +- # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> ++#include <$i> ++ ++typedef uintptr_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_header_compiler=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uintptr_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_cv_type_uintptr_t=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 + +-# Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6; } ++if test $ac_cv_type_uintptr_t = yes; then ++ ac_cv_header_stdint_x=$i ++else ++ continue ++fi ++ ++ { echo "$as_me:$LINENO: checking for uint64_t" >&5 ++echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uint64_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include <$ac_header> ++#include<$i> ++ ++typedef uint64_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uint64_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_preproc=no ++ ac_cv_type_uint64_t=no + fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 + +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ----------------------------------------------------------- ## +-## Report this to http://sourceforge.net/projects/libvncserver ## +-## ----------------------------------------------------------- ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uint64_t" >&6; } ++if test $ac_cv_type_uint64_t = yes; then ++ and64="(uint64_t too)" + else +- eval "$as_ac_Header=\$ac_header_preproc" ++ and64="" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +-fi +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++ { echo "$as_me:$LINENO: result: ... seen our uintptr_t in $i $and64" >&5 ++echo "${ECHO_T}... seen our uintptr_t in $i $and64" >&6; } ++ break; ++ done ++ if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ for i in stdint.h $inttype_headers ; do ++ unset ac_cv_type_uint32_t ++ unset ac_cv_type_uint64_t ++ { echo "$as_me:$LINENO: checking for uint32_t" >&5 ++echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uint32_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ + _ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$i> + +-fi ++typedef uint32_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uint32_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-done ++ ac_cv_type_uint32_t=no ++fi + ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uint32_t" >&6; } ++if test $ac_cv_type_uint32_t = yes; then ++ ac_cv_header_stdint_o=$i ++else ++ continue + fi + +-# Checks for typedefs, structures, and compiler characteristics. +-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +-if test "${ac_cv_c_const+set}" = set; then ++ { echo "$as_me:$LINENO: checking for uint64_t" >&5 ++echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uint64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -24284,537 +17150,570 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++#include<$i> + ++typedef uint64_t ac__type_new_; + int + main () + { +-/* FIXME: Include the comments suggested by Paul. */ +-#ifndef __cplusplus +- /* Ultrix mips cc rejects this. */ +- typedef int charset[2]; +- const charset x; +- /* SunOS 4.1.1 cc rejects this. */ +- char const *const *ccp; +- char **p; +- /* NEC SVR4.0.2 mips cc rejects this. */ +- struct point {int x, y;}; +- static struct point const zero = {0,0}; +- /* AIX XL C 1.02.0.0 rejects this. +- It does not let you subtract one const X* pointer from another in +- an arm of an if-expression whose if-part is not a constant +- expression */ +- const char *g = "string"; +- ccp = &g + (g ? g-g : 0); +- /* HPUX 7.0 cc rejects these. */ +- ++ccp; +- p = (char**) ccp; +- ccp = (char const *const *) p; +- { /* SCO 3.2v4 cc rejects this. */ +- char *t; +- char const *s = 0 ? (char *) 0 : (char const *) 0; +- +- *t++ = 0; +- } +- { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ +- int x[] = {25, 17}; +- const int *foo = &x[0]; +- ++foo; +- } +- { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ +- typedef const int *iptr; +- iptr p = 0; +- ++p; +- } +- { /* AIX XL C 1.02.0.0 rejects this saying +- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ +- struct s { int j; const int *ap[3]; }; +- struct s *b; b->j = 5; +- } +- { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ +- const int foo = 10; +- } +-#endif +- ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_c_const=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uint64_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_c_const=no ++ ac_cv_type_uint64_t=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +-echo "${ECHO_T}$ac_cv_c_const" >&6 +-if test $ac_cv_c_const = no; then +- +-cat >>confdefs.h <<\_ACEOF +-#define const +-_ACEOF + ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uint64_t" >&6; } ++if test $ac_cv_type_uint64_t = yes; then ++ and64="(uint64_t too)" ++else ++ and64="" + fi + +-echo "$as_me:$LINENO: checking for inline" >&5 +-echo $ECHO_N "checking for inline... $ECHO_C" >&6 +-if test "${ac_cv_c_inline+set}" = set; then ++ { echo "$as_me:$LINENO: result: ... seen our uint32_t in $i $and64" >&5 ++echo "${ECHO_T}... seen our uint32_t in $i $and64" >&6; } ++ break; ++ done ++ if test "$ac_cv_header_stdint_o" = "no-file" ; then ++ for i in sys/types.h $inttype_headers ; do ++ unset ac_cv_type_u_int32_t ++ unset ac_cv_type_u_int64_t ++ { echo "$as_me:$LINENO: checking for u_int32_t" >&5 ++echo $ECHO_N "checking for u_int32_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_u_int32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_c_inline=no +-for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#ifndef __cplusplus +-typedef int foo_t; +-static $ac_kw foo_t static_foo () {return 0; } +-$ac_kw foo_t foo () {return 0; } +-#endif ++#include <$i> + ++typedef u_int32_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_c_inline=$ac_kw; break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_u_int32_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ ac_cv_type_u_int32_t=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-done + ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int32_t" >&5 ++echo "${ECHO_T}$ac_cv_type_u_int32_t" >&6; } ++if test $ac_cv_type_u_int32_t = yes; then ++ ac_cv_header_stdint_u=$i ++else ++ continue + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +-echo "${ECHO_T}$ac_cv_c_inline" >&6 +- +- +-case $ac_cv_c_inline in +- inline | yes) ;; +- *) +- case $ac_cv_c_inline in +- no) ac_val=;; +- *) ac_val=$ac_cv_c_inline;; +- esac +- cat >>confdefs.h <<_ACEOF +-#ifndef __cplusplus +-#define inline $ac_val +-#endif +-_ACEOF +- ;; +-esac + +-echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +-echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 +-if test "${ac_cv_c_bigendian+set}" = set; then ++ { echo "$as_me:$LINENO: checking for uint64_t" >&5 ++echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_uint64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- # See if sys/param.h defines the BYTE_ORDER macro. +-cat >conftest.$ac_ext <<_ACEOF ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include +-#include ++#include<$i> + ++typedef uint64_t ac__type_new_; + int + main () + { +-#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN +- bogus endian macros +-#endif +- ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- # It does; now see whether it defined to BIG_ENDIAN or not. +-cat >conftest.$ac_ext <<_ACEOF ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_uint64_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_uint64_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 ++echo "${ECHO_T}$ac_cv_type_uint64_t" >&6; } ++if test $ac_cv_type_uint64_t = yes; then ++ and64="(u_int64_t too)" ++else ++ and64="" ++fi ++ ++ { echo "$as_me:$LINENO: result: ... seen our u_int32_t in $i $and64" >&5 ++echo "${ECHO_T}... seen our u_int32_t in $i $and64" >&6; } ++ break; ++ done ++ fi ++ fi ++ ++# ----------------- DONE inttypes.h checks MAYBE C basic types -------- ++ ++if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ { echo "$as_me:$LINENO: checking size of char" >&5 ++echo $ECHO_N "checking size of char... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_char+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++#include "confdefs.h" + #include +-#include ++ + + int + main () + { +-#if BYTE_ORDER != BIG_ENDIAN +- not big endian +-#endif +- ++switch (0) case 0: case (sizeof (char) == $ac_size):; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_c_bigendian=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_char=$ac_size + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_c_bigendian=no ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-# It does not; compile a test program. +-if test "$cross_compiling" = yes; then +- # try to guess the endianness by grepping values into an object file +- ac_cv_c_bigendian=unknown ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_char != x ; then break; fi ++done ++ ++fi ++ ++if test x$ac_cv_sizeof_char = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for char" >&5 ++echo "$as_me: error: cannot determine a size for char" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_char" >&6; } ++ ++cat >>confdefs.h <<_ACEOF ++#define SIZEOF_CHAR $ac_cv_sizeof_char ++_ACEOF ++ ++ ++ { echo "$as_me:$LINENO: checking size of short" >&5 ++echo $ECHO_N "checking size of short... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_short+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +-short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +-void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +-short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +-short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +-void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } ++#include "confdefs.h" ++#include ++ ++ + int + main () + { +- _ascii (); _ebcdic (); ++switch (0) case 0: case (sizeof (short) == $ac_size):; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then +- ac_cv_c_bigendian=yes +-fi +-if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then +- if test "$ac_cv_c_bigendian" = unknown; then +- ac_cv_c_bigendian=no +- else +- # finding both strings is unlikely to happen, but who knows? +- ac_cv_c_bigendian=unknown +- fi +-fi ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_short=$ac_size + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_short != x ; then break; fi ++done ++ ++fi ++ ++if test x$ac_cv_sizeof_short = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for short" >&5 ++echo "$as_me: error: cannot determine a size for short" >&2;} ++ { (exit 1); exit 1; }; } + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_short" >&6; } ++ ++cat >>confdefs.h <<_ACEOF ++#define SIZEOF_SHORT $ac_cv_sizeof_short ++_ACEOF ++ ++ ++ { echo "$as_me:$LINENO: checking size of int" >&5 ++echo $ECHO_N "checking size of int... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_int+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++#include "confdefs.h" ++#include ++ ++ + int + main () + { +- /* Are we little or big endian? From Harbison&Steele. */ +- union +- { +- long l; +- char c[sizeof (long)]; +- } u; +- u.l = 1; +- exit (u.c[sizeof (long) - 1] == 1); ++switch (0) case 0: case (sizeof (int) == $ac_size):; ++ ; ++ return 0; + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_c_bigendian=no ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_int=$ac_size + else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 ++ echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-( exit $ac_status ) +-ac_cv_c_bigendian=yes +-fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++ + fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_int != x ; then break; fi ++done ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++if test x$ac_cv_sizeof_int = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for int" >&5 ++echo "$as_me: error: cannot determine a size for int" >&2;} ++ { (exit 1); exit 1; }; } + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +-echo "${ECHO_T}$ac_cv_c_bigendian" >&6 +-case $ac_cv_c_bigendian in +- yes) ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_int" >&6; } + +-cat >>confdefs.h <<\_ACEOF +-#define WORDS_BIGENDIAN 1 ++cat >>confdefs.h <<_ACEOF ++#define SIZEOF_INT $ac_cv_sizeof_int + _ACEOF +- ;; +- no) +- ;; +- *) +- { { echo "$as_me:$LINENO: error: unknown endianness +-presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +-echo "$as_me: error: unknown endianness +-presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} +- { (exit 1); exit 1; }; } ;; +-esac + +-echo "$as_me:$LINENO: checking for size_t" >&5 +-echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +-if test "${ac_cv_type_size_t+set}" = set; then ++ ++ { echo "$as_me:$LINENO: checking size of long" >&5 ++echo $ECHO_N "checking size of long... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_includes_default ++#include "confdefs.h" ++#include ++ ++ + int + main () + { +-if ((size_t *) 0) +- return 0; +-if (sizeof (size_t)) +- return 0; ++switch (0) case 0: case (sizeof (long) == $ac_size):; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_type_size_t=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_long=$ac_size + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_size_t=no ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_long != x ; then break; fi ++done ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++if test x$ac_cv_sizeof_long = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for long" >&5 ++echo "$as_me: error: cannot determine a size for long" >&2;} ++ { (exit 1); exit 1; }; } + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +-echo "${ECHO_T}$ac_cv_type_size_t" >&6 +-if test $ac_cv_type_size_t = yes; then +- : +-else ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_long" >&6; } + + cat >>confdefs.h <<_ACEOF +-#define size_t unsigned ++#define SIZEOF_LONG $ac_cv_sizeof_long + _ACEOF + +-fi + +-echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +-echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +-if test "${ac_cv_header_time+set}" = set; then ++ { echo "$as_me:$LINENO: checking size of void*" >&5 ++echo $ECHO_N "checking size of void*... $ECHO_C" >&6; } ++if test "${ac_cv_sizeof_voidp+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else ++ for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++#include "confdefs.h" + #include +-#include +-#include ++ + + int + main () + { +-if ((struct tm *) 0) +-return 0; ++switch (0) case 0: case (sizeof (void*) == $ac_size):; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_header_time=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_sizeof_voidp=$ac_size + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_time=no ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x$ac_cv_sizeof_voidp != x ; then break; fi ++done ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +-echo "${ECHO_T}$ac_cv_header_time" >&6 +-if test $ac_cv_header_time = yes; then + +-cat >>confdefs.h <<\_ACEOF +-#define TIME_WITH_SYS_TIME 1 ++if test x$ac_cv_sizeof_voidp = x ; then ++ { { echo "$as_me:$LINENO: error: cannot determine a size for void*" >&5 ++echo "$as_me: error: cannot determine a size for void*" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_voidp" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_voidp" >&6; } ++ ++cat >>confdefs.h <<_ACEOF ++#define SIZEOF_VOIDP $ac_cv_sizeof_voidp + _ACEOF + ++ ++ ac_cv_header_stdint_test="yes" ++else ++ ac_cv_header_stdint_test="no" + fi + +-echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 +-echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6 +-if test "${ac_cv_header_sys_wait_h+set}" = set; then ++# ----------------- DONE inttypes.h checks START header ------------- ++_ac_stdint_h=`echo "_$ac_stdint_h" | $as_tr_cpp` ++{ echo "$as_me:$LINENO: result: creating $ac_stdint_h : $_ac_stdint_h" >&5 ++echo "${ECHO_T}creating $ac_stdint_h : $_ac_stdint_h" >&6; } ++echo "#ifndef" $_ac_stdint_h >$ac_stdint_h ++echo "#define" $_ac_stdint_h "1" >>$ac_stdint_h ++echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint_h ++echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint_h ++if test "$GCC" = "yes" ; then ++ echo "/* generated using a gnu compiler version" `$CC --version` "*/" \ ++ >>$ac_stdint_h ++else ++ echo "/* generated using $CC */" >>$ac_stdint_h ++fi ++echo "" >>$ac_stdint_h ++ ++if test "$ac_cv_header_stdint_x" != "no-file" ; then ++ ac_cv_header_stdint="$ac_cv_header_stdint_x" ++elif test "$ac_cv_header_stdint_o" != "no-file" ; then ++ ac_cv_header_stdint="$ac_cv_header_stdint_o" ++elif test "$ac_cv_header_stdint_u" != "no-file" ; then ++ ac_cv_header_stdint="$ac_cv_header_stdint_u" ++else ++ ac_cv_header_stdint="stddef.h" ++fi ++ ++# ----------------- See if int_least and int_fast types are present ++unset ac_cv_type_int_least32_t ++unset ac_cv_type_int_fast32_t ++{ echo "$as_me:$LINENO: checking for int_least32_t" >&5 ++echo $ECHO_N "checking for int_least32_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_int_least32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -24823,953 +17722,977 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include +-#include +-#ifndef WEXITSTATUS +-# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) +-#endif +-#ifndef WIFEXITED +-# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) +-#endif ++#include <$ac_cv_header_stdint> + ++typedef int_least32_t ac__type_new_; + int + main () + { +- int s; +- wait (&s); +- s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_header_sys_wait_h=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_int_least32_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_sys_wait_h=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cv_type_int_least32_t=no + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 +-echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 +-if test $ac_cv_header_sys_wait_h = yes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_SYS_WAIT_H 1 +-_ACEOF + ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_int_least32_t" >&5 ++echo "${ECHO_T}$ac_cv_type_int_least32_t" >&6; } + +-echo "$as_me:$LINENO: checking for socklen_t" >&5 +-echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 +-if test "${ac_cv_type_socklen_t+set}" = set; then ++{ echo "$as_me:$LINENO: checking for int_fast32_t" >&5 ++echo $ECHO_N "checking for int_fast32_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_int_fast32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include +- #include ++#include<$ac_cv_header_stdint> ++ ++typedef int_fast32_t ac__type_new_; + int + main () + { +-socklen_t len = 42; return 0; ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_type_socklen_t=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_int_fast32_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_socklen_t=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cv_type_int_fast32_t=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_int_fast32_t" >&5 ++echo "${ECHO_T}$ac_cv_type_int_fast32_t" >&6; } ++ ++ ++if test "$ac_cv_header_stdint" != "stddef.h" ; then ++if test "$ac_cv_header_stdint" != "stdint.h" ; then ++{ echo "$as_me:$LINENO: result: ..adding include stddef.h" >&5 ++echo "${ECHO_T}..adding include stddef.h" >&6; } ++ echo "#include " >>$ac_stdint_h ++fi ; fi ++{ echo "$as_me:$LINENO: result: ..adding include $ac_cv_header_stdint" >&5 ++echo "${ECHO_T}..adding include $ac_cv_header_stdint" >&6; } ++ echo "#include <$ac_cv_header_stdint>" >>$ac_stdint_h ++echo "" >>$ac_stdint_h ++ ++# ----------------- DONE header START basic int types ------------- ++if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ { echo "$as_me:$LINENO: result: ... need to look at C basic types" >&5 ++echo "${ECHO_T}... need to look at C basic types" >&6; } ++else ++ { echo "$as_me:$LINENO: result: ... seen good stdint.h inttypes" >&5 ++echo "${ECHO_T}... seen good stdint.h inttypes" >&6; } ++fi ++ ++if test "$ac_cv_header_stdint_u" != "no-file" ; then ++ { echo "$as_me:$LINENO: result: ... seen bsd/sysv typedefs" >&5 ++echo "${ECHO_T}... seen bsd/sysv typedefs" >&6; } ++ cat >>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t normal 16-bit system" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t 32-bit system derived from a 16-bit" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t normal 32-bit system" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t 32-bit system prepared for 64-bit" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t normal 64-bit system" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding $t 64-bit system derived from a 32-bit" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "$as_me: error: $ac_cv_sizeof_X what is that a system? contact the author, quick! http://ac-archive.sf.net" >&2;} ++ { (exit 1); exit 1; }; } ++ exit 1 ++;; ++ esac ++fi ++ ++# ------------- DONE basic int types START int64_t types ------------ ++if test "$ac_cv_type_uint64_t" = "yes" ++then { echo "$as_me:$LINENO: result: ... seen good uint64_t" >&5 ++echo "${ECHO_T}... seen good uint64_t" >&6; } ++ cat >>$ac_stdint_h <&5 +-echo "${ECHO_T}$ac_cv_type_socklen_t" >&6 +- if test $ac_cv_type_socklen_t != yes; then +- cat >>confdefs.h <<\_ACEOF +-#define socklen_t int +-_ACEOF ++elif test "$ac_cv_type_u_int64_t" = "yes" ++then { echo "$as_me:$LINENO: result: ..adding typedef u_int64_t uint64_t" >&5 ++echo "${ECHO_T}..adding typedef u_int64_t uint64_t" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding generic uint64_t runtime checks" >&6; } ++ cat >>$ac_stdint_h <&5 +-echo $ECHO_N "checking for stdint-types....... $ECHO_C" >&6 +-ac_stdint_h=`echo rfb/rfbint.h` +-if test "$ac_stdint_h" = "stdint.h" ; then +- echo "$as_me:$LINENO: result: \"(are you sure you want them in ./stdint.h?)\"" >&5 +-echo "${ECHO_T}\"(are you sure you want them in ./stdint.h?)\"" >&6 +-elif test "$ac_stdint_h" = "inttypes.h" ; then +- echo "$as_me:$LINENO: result: \"(are you sure you want them in ./inttypes.h?)\"" >&5 +-echo "${ECHO_T}\"(are you sure you want them in ./inttypes.h?)\"" >&6 +-else +- echo "$as_me:$LINENO: result: \"(putting them into $ac_stdint_h)\"" >&5 +-echo "${ECHO_T}\"(putting them into $ac_stdint_h)\"" >&6 +-fi ++/* -------------------- 64 BIT GENERIC SECTION -------------------- */ ++/* here are some common heuristics using compiler runtime specifics */ ++#if defined __STDC_VERSION__ && defined __STDC_VERSION__ > 199901L + +-inttype_headers=`echo inttypes.h sys/inttypes.h sys/inttypes.h \ +-| sed -e 's/,/ /g'` ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef long long int64_t; ++typedef unsigned long long uint64_t; ++#endif + +- ac_cv_header_stdint_x="no-file" +- ac_cv_header_stdint_o="no-file" +- ac_cv_header_stdint_u="no-file" +- for i in stdint.h $inttype_headers ; do +- unset ac_cv_type_uintptr_t +- unset ac_cv_type_uint64_t +- echo "$as_me:$LINENO: checking for uintptr_t" >&5 +-echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6 +-if test "${ac_cv_type_uintptr_t+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$i> ++#elif !defined __STRICT_ANSI__ ++#if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__ + +-int +-main () +-{ +-if ((uintptr_t *) 0) +- return 0; +-if (sizeof (uintptr_t)) +- return 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_type_uintptr_t=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef __int64 int64_t; ++typedef unsigned __int64 uint64_t; ++#endif + +-ac_cv_type_uintptr_t=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5 +-echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6 +-if test $ac_cv_type_uintptr_t = yes; then +- ac_cv_header_stdint_x=$i +-else +- continue +-fi ++#elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__ + +- echo "$as_me:$LINENO: checking for uint64_t" >&5 +-echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6 +-if test "${ac_cv_type_uint64_t+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include<$i> ++#if !defined _NO_LONGLONG ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef long long int64_t; ++typedef unsigned long long uint64_t; ++#endif ++#endif + +-int +-main () +-{ +-if ((uint64_t *) 0) +- return 0; +-if (sizeof (uint64_t)) +- return 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_type_uint64_t=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++#elif defined __alpha || (defined __mips && defined _ABIN32) + +-ac_cv_type_uint64_t=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 +-echo "${ECHO_T}$ac_cv_type_uint64_t" >&6 +-if test $ac_cv_type_uint64_t = yes; then +- and64="(uint64_t too)" +-else +- and64="" ++#if !defined _NO_LONGLONG ++#ifndef _HAVE_UINT64_T ++#define _HAVE_UINT64_T ++typedef long int64_t; ++typedef unsigned long uint64_t; ++#endif ++#endif ++ /* compiler/cpu type ... or just ISO C99 */ ++#endif ++#endif ++EOF ++ ++# plus a default 64-bit for systems that are likely to be 64-bit ready ++ case "$ac_cv_sizeof_x:$ac_cv_sizeof_voidp:$ac_cv_sizeof_long" in ++ 1:2:8:8) { echo "$as_me:$LINENO: result: ..adding uint64_t default" >&5 ++echo "${ECHO_T}..adding uint64_t default" >&6; } ++cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding uint64_t default" >&6; } ++cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding uint64_t default" >&6; } ++cat >>$ac_stdint_h <>$ac_stdint_h <&5 +-echo "${ECHO_T}... seen our uintptr_t in $i $and64" >&6 +- break; +- done +- if test "$ac_cv_header_stdint_x" = "no-file" ; then +- for i in stdint.h $inttype_headers ; do +- unset ac_cv_type_uint32_t +- unset ac_cv_type_uint64_t +- echo "$as_me:$LINENO: checking for uint32_t" >&5 +-echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6 +-if test "${ac_cv_type_uint32_t+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$i> ++# ------------- DONE int64_t types START intptr types ------------ ++if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ cat >>$ac_stdint_h <&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_type_uint32_t=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++/* -------------------------- INPTR SECTION --------------------------- */ ++EOF ++ case "$ac_cv_sizeof_x:$ac_cv_sizeof_voidp" in ++ 1:2:2) ++ a="int16_t" ; cat >>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <&5 +-echo "${ECHO_T}$ac_cv_type_uint32_t" >&6 +-if test $ac_cv_type_uint32_t = yes; then +- ac_cv_header_stdint_o=$i +-else +- continue ++typedef uint64_t uintptr_t; ++typedef int64_t intptr_t; ++EOF ++;; ++ *) ++ a="long" ; cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}..adding typedef $a intptr_t" >&6; } + fi + +- echo "$as_me:$LINENO: checking for uint64_t" >&5 +-echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6 +-if test "${ac_cv_type_uint64_t+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include<$i> ++# ------------- DONE intptr types START int_least types ------------ ++if test "$ac_cv_type_int_least32_t" = "no"; then ++{ echo "$as_me:$LINENO: result: ..adding generic int_least-types" >&5 ++echo "${ECHO_T}..adding generic int_least-types" >&6; } ++ cat >>$ac_stdint_h <&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_type_uint64_t=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++/* --------------GENERIC INT_LEAST ------------------ */ + +-ac_cv_type_uint64_t=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 +-echo "${ECHO_T}$ac_cv_type_uint64_t" >&6 +-if test $ac_cv_type_uint64_t = yes; then +- and64="(uint64_t too)" +-else +- and64="" ++typedef int8_t int_least8_t; ++typedef int16_t int_least16_t; ++typedef int32_t int_least32_t; ++#ifdef _HAVE_INT64_T ++typedef int64_t int_least64_t; ++#endif ++ ++typedef uint8_t uint_least8_t; ++typedef uint16_t uint_least16_t; ++typedef uint32_t uint_least32_t; ++#ifdef _HAVE_INT64_T ++typedef uint64_t uint_least64_t; ++#endif ++EOF + fi + +- echo "$as_me:$LINENO: result: ... seen our uint32_t in $i $and64" >&5 +-echo "${ECHO_T}... seen our uint32_t in $i $and64" >&6 +- break; +- done +- if test "$ac_cv_header_stdint_o" = "no-file" ; then +- for i in sys/types.h $inttype_headers ; do +- unset ac_cv_type_u_int32_t +- unset ac_cv_type_u_int64_t +- echo "$as_me:$LINENO: checking for u_int32_t" >&5 +-echo $ECHO_N "checking for u_int32_t... $ECHO_C" >&6 +-if test "${ac_cv_type_u_int32_t+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$i> ++# ------------- DONE intptr types START int_least types ------------ ++if test "$ac_cv_type_int_fast32_t" = "no"; then ++{ echo "$as_me:$LINENO: result: ..adding generic int_fast-types" >&5 ++echo "${ECHO_T}..adding generic int_fast-types" >&6; } ++ cat >>$ac_stdint_h <&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_type_u_int32_t=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++/* --------------GENERIC INT_FAST ------------------ */ + +-ac_cv_type_u_int32_t=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++typedef int8_t int_fast8_t; ++typedef int32_t int_fast16_t; ++typedef int32_t int_fast32_t; ++#ifdef _HAVE_INT64_T ++typedef int64_t int_fast64_t; ++#endif ++ ++typedef uint8_t uint_fast8_t; ++typedef uint32_t uint_fast16_t; ++typedef uint32_t uint_fast32_t; ++#ifdef _HAVE_INT64_T ++typedef uint64_t uint_fast64_t; ++#endif ++EOF + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_u_int32_t" >&5 +-echo "${ECHO_T}$ac_cv_type_u_int32_t" >&6 +-if test $ac_cv_type_u_int32_t = yes; then +- ac_cv_header_stdint_u=$i +-else +- continue ++ ++if test "$ac_cv_header_stdint_x" = "no-file" ; then ++ cat >>$ac_stdint_h <&5 +-echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6 +-if test "${ac_cv_type_uint64_t+set}" = set; then ++{ echo "$as_me:$LINENO: result: ... DONE $ac_stdint_h" >&5 ++echo "${ECHO_T}... DONE $ac_stdint_h" >&6; } ++ cat >>$ac_stdint_h <&5 ++echo $ECHO_N "checking for in_addr_t... $ECHO_C" >&6; } ++if test "${inaddrt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include<$i> +- ++#include ++#include + int + main () + { +-if ((uint64_t *) 0) +- return 0; +-if (sizeof (uint64_t)) +- return 0; ++in_addr_t foo; return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_type_uint64_t=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ inaddrt=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_uint64_t=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ inaddrt=no + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 +-echo "${ECHO_T}$ac_cv_type_uint64_t" >&6 +-if test $ac_cv_type_uint64_t = yes; then +- and64="(u_int64_t too)" +-else +- and64="" ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext, ++ + fi ++{ echo "$as_me:$LINENO: result: $inaddrt" >&5 ++echo "${ECHO_T}$inaddrt" >&6; } + +- echo "$as_me:$LINENO: result: ... seen our u_int32_t in $i $and64" >&5 +-echo "${ECHO_T}... seen our u_int32_t in $i $and64" >&6 +- break; +- done +- fi +- fi + +-# ----------------- DONE inttypes.h checks MAYBE C basic types -------- ++if test $inaddrt = no ; then ++ cat >>confdefs.h <<\_ACEOF ++#define NEED_INADDR_T 1 ++_ACEOF + +-if test "$ac_cv_header_stdint_x" = "no-file" ; then +- echo "$as_me:$LINENO: checking size of char" >&5 +-echo $ECHO_N "checking size of char... $ECHO_C" >&6 +-if test "${ac_cv_sizeof_char+set}" = set; then ++fi ++ ++# Checks for library functions. ++{ echo "$as_me:$LINENO: checking for working memcmp" >&5 ++echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6; } ++if test "${ac_cv_func_memcmp_working+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_memcmp_working=no ++else + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include "confdefs.h" +-#include +- +- ++$ac_includes_default + int + main () + { +-switch (0) case 0: case (sizeof (char) == $ac_size):; ++ ++ /* Some versions of memcmp are not 8-bit clean. */ ++ char c0 = '\100', c1 = '\200', c2 = '\201'; ++ if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) ++ return 1; ++ ++ /* The Next x86 OpenStep bug shows up only when comparing 16 bytes ++ or more and with at least one buffer not starting on a 4-byte boundary. ++ William Lewis provided this test program. */ ++ { ++ char foo[21]; ++ char bar[21]; ++ int i; ++ for (i = 0; i < 4; i++) ++ { ++ char *a = foo + i; ++ char *b = bar + i; ++ strcpy (a, "--------01111111"); ++ strcpy (b, "--------10000000"); ++ if (memcmp (a, b, 16) >= 0) ++ return 1; ++ } ++ return 0; ++ } ++ + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +- ac_cv_sizeof_char=$ac_size ++ ac_cv_func_memcmp_working=yes + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- if test x$ac_cv_sizeof_char != x ; then break; fi +-done ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++( exit $ac_status ) ++ac_cv_func_memcmp_working=no + fi +- +-if test x$ac_cv_sizeof_char = x ; then +- { { echo "$as_me:$LINENO: error: cannot determine a size for char" >&5 +-echo "$as_me: error: cannot determine a size for char" >&2;} +- { (exit 1); exit 1; }; } ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 +-echo "${ECHO_T}$ac_cv_sizeof_char" >&6 + +-cat >>confdefs.h <<_ACEOF +-#define SIZEOF_CHAR $ac_cv_sizeof_char +-_ACEOF + ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 ++echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6; } ++test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in ++ *" memcmp.$ac_objext "* ) ;; ++ *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ++ ;; ++esac + +- echo "$as_me:$LINENO: checking size of short" >&5 +-echo $ECHO_N "checking size of short... $ECHO_C" >&6 +-if test "${ac_cv_sizeof_short+set}" = set; then ++ ++{ echo "$as_me:$LINENO: checking whether lstat dereferences a symlink specified with a trailing slash" >&5 ++echo $ECHO_N "checking whether lstat dereferences a symlink specified with a trailing slash... $ECHO_C" >&6; } ++if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ rm -f conftest.sym conftest.file ++echo >conftest.file ++if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_lstat_dereferences_slashed_symlink=no ++else + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include "confdefs.h" +-#include +- +- ++$ac_includes_default + int + main () + { +-switch (0) case 0: case (sizeof (short) == $ac_size):; ++struct stat sbuf; ++ /* Linux will dereference the symlink and fail. ++ That is better in the sense that it means we will not ++ have to compile and use the lstat wrapper. */ ++ return lstat ("conftest.sym/", &sbuf) == 0; + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +- ac_cv_sizeof_short=$ac_size ++ ac_cv_func_lstat_dereferences_slashed_symlink=yes + else +- echo "$as_me: failed program was:" >&5 ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++( exit $ac_status ) ++ac_cv_func_lstat_dereferences_slashed_symlink=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- if test x$ac_cv_sizeof_short != x ; then break; fi +-done ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ + ++else ++ # If the `ln -s' command failed, then we probably don't even ++ # have an lstat function. ++ ac_cv_func_lstat_dereferences_slashed_symlink=no + fi ++rm -f conftest.sym conftest.file + +-if test x$ac_cv_sizeof_short = x ; then +- { { echo "$as_me:$LINENO: error: cannot determine a size for short" >&5 +-echo "$as_me: error: cannot determine a size for short" >&2;} +- { (exit 1); exit 1; }; } + fi +-echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 +-echo "${ECHO_T}$ac_cv_sizeof_short" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 ++echo "${ECHO_T}$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } ++ ++test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && + + cat >>confdefs.h <<_ACEOF +-#define SIZEOF_SHORT $ac_cv_sizeof_short ++#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 + _ACEOF + + +- echo "$as_me:$LINENO: checking size of int" >&5 +-echo $ECHO_N "checking size of int... $ECHO_C" >&6 +-if test "${ac_cv_sizeof_int+set}" = set; then ++if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then ++ case " $LIBOBJS " in ++ *" lstat.$ac_objext "* ) ;; ++ *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ++ ;; ++esac ++ ++fi ++ ++{ echo "$as_me:$LINENO: checking whether stat accepts an empty string" >&5 ++echo $ECHO_N "checking whether stat accepts an empty string... $ECHO_C" >&6; } ++if test "${ac_cv_func_stat_empty_string_bug+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_stat_empty_string_bug=yes ++else + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include "confdefs.h" +-#include +- +- ++$ac_includes_default + int + main () + { +-switch (0) case 0: case (sizeof (int) == $ac_size):; ++struct stat sbuf; ++ return stat ("", &sbuf) == 0; + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +- ac_cv_sizeof_int=$ac_size ++ ac_cv_func_stat_empty_string_bug=no + else +- echo "$as_me: failed program was:" >&5 ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++( exit $ac_status ) ++ac_cv_func_stat_empty_string_bug=yes + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- if test x$ac_cv_sizeof_int != x ; then break; fi +-done +- ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + +-if test x$ac_cv_sizeof_int = x ; then +- { { echo "$as_me:$LINENO: error: cannot determine a size for int" >&5 +-echo "$as_me: error: cannot determine a size for int" >&2;} +- { (exit 1); exit 1; }; } ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 +-echo "${ECHO_T}$ac_cv_sizeof_int" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_stat_empty_string_bug" >&5 ++echo "${ECHO_T}$ac_cv_func_stat_empty_string_bug" >&6; } ++if test $ac_cv_func_stat_empty_string_bug = yes; then ++ case " $LIBOBJS " in ++ *" stat.$ac_objext "* ) ;; ++ *) LIBOBJS="$LIBOBJS stat.$ac_objext" ++ ;; ++esac ++ + + cat >>confdefs.h <<_ACEOF +-#define SIZEOF_INT $ac_cv_sizeof_int ++#define HAVE_STAT_EMPTY_STRING_BUG 1 + _ACEOF + ++fi ++ + +- echo "$as_me:$LINENO: checking size of long" >&5 +-echo $ECHO_N "checking size of long... $ECHO_C" >&6 +-if test "${ac_cv_sizeof_long+set}" = set; then ++for ac_func in strftime ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include "confdefs.h" +-#include ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func + ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif + + int + main () + { +-switch (0) case 0: case (sizeof (long) == $ac_size):; ++return $ac_func (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_sizeof_long=$ac_size ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- if test x$ac_cv_sizeof_long != x ; then break; fi +-done +- ++ eval "$as_ac_var=no" + fi + +-if test x$ac_cv_sizeof_long = x ; then +- { { echo "$as_me:$LINENO: error: cannot determine a size for long" >&5 +-echo "$as_me: error: cannot determine a size for long" >&2;} +- { (exit 1); exit 1; }; } ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +-echo "${ECHO_T}$ac_cv_sizeof_long" >&6 +- +-cat >>confdefs.h <<_ACEOF +-#define SIZEOF_LONG $ac_cv_sizeof_long ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF + +- +- echo "$as_me:$LINENO: checking size of void*" >&5 +-echo $ECHO_N "checking size of void*... $ECHO_C" >&6 +-if test "${ac_cv_sizeof_voidp+set}" = set; then ++else ++ # strftime is in -lintl on SCO UNIX. ++{ echo "$as_me:$LINENO: checking for strftime in -lintl" >&5 ++echo $ECHO_N "checking for strftime in -lintl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_intl_strftime+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence. +- cat >conftest.$ac_ext <<_ACEOF ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lintl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include "confdefs.h" +-#include +- + ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char strftime (); + int + main () + { +-switch (0) case 0: case (sizeof (void*) == $ac_size):; ++return strftime (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_sizeof_voidp=$ac_size ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_intl_strftime=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- if test x$ac_cv_sizeof_voidp != x ; then break; fi +-done +- ++ ac_cv_lib_intl_strftime=no + fi + +-if test x$ac_cv_sizeof_voidp = x ; then +- { { echo "$as_me:$LINENO: error: cannot determine a size for void*" >&5 +-echo "$as_me: error: cannot determine a size for void*" >&2;} +- { (exit 1); exit 1; }; } ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_sizeof_voidp" >&5 +-echo "${ECHO_T}$ac_cv_sizeof_voidp" >&6 +- +-cat >>confdefs.h <<_ACEOF +-#define SIZEOF_VOIDP $ac_cv_sizeof_voidp ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_strftime" >&5 ++echo "${ECHO_T}$ac_cv_lib_intl_strftime" >&6; } ++if test $ac_cv_lib_intl_strftime = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_STRFTIME 1 + _ACEOF + +- +- ac_cv_header_stdint_test="yes" +-else +- ac_cv_header_stdint_test="no" ++LIBS="-lintl $LIBS" + fi + +-# ----------------- DONE inttypes.h checks START header ------------- +-_ac_stdint_h=`echo "_$ac_stdint_h" | $as_tr_cpp` +-echo "$as_me:$LINENO: result: creating $ac_stdint_h : $_ac_stdint_h" >&5 +-echo "${ECHO_T}creating $ac_stdint_h : $_ac_stdint_h" >&6 +-echo "#ifndef" $_ac_stdint_h >$ac_stdint_h +-echo "#define" $_ac_stdint_h "1" >>$ac_stdint_h +-echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint_h +-echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint_h +-if test "$GCC" = "yes" ; then +- echo "/* generated using a gnu compiler version" `$CC --version` "*/" \ +- >>$ac_stdint_h +-else +- echo "/* generated using $CC */" >>$ac_stdint_h + fi +-echo "" >>$ac_stdint_h ++done + +-if test "$ac_cv_header_stdint_x" != "no-file" ; then +- ac_cv_header_stdint="$ac_cv_header_stdint_x" +-elif test "$ac_cv_header_stdint_o" != "no-file" ; then +- ac_cv_header_stdint="$ac_cv_header_stdint_o" +-elif test "$ac_cv_header_stdint_u" != "no-file" ; then +- ac_cv_header_stdint="$ac_cv_header_stdint_u" +-else +- ac_cv_header_stdint="stddef.h" +-fi + +-# ----------------- See if int_least and int_fast types are present +-unset ac_cv_type_int_least32_t +-unset ac_cv_type_int_fast32_t +-echo "$as_me:$LINENO: checking for int_least32_t" >&5 +-echo $ECHO_N "checking for int_least32_t... $ECHO_C" >&6 +-if test "${ac_cv_type_int_least32_t+set}" = set; then ++for ac_func in vprintf ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -25778,56 +18701,85 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include <$ac_cv_header_stdint> ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif + + int + main () + { +-if ((int_least32_t *) 0) +- return 0; +-if (sizeof (int_least32_t)) +- return 0; ++return $ac_func (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_type_int_least32_t=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_int_least32_t=no ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_int_least32_t" >&5 +-echo "${ECHO_T}$ac_cv_type_int_least32_t" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF + +-echo "$as_me:$LINENO: checking for int_fast32_t" >&5 +-echo $ECHO_N "checking for int_fast32_t... $ECHO_C" >&6 +-if test "${ac_cv_type_int_fast32_t+set}" = set; then ++{ echo "$as_me:$LINENO: checking for _doprnt" >&5 ++echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6; } ++if test "${ac_cv_func__doprnt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -25836,737 +18788,923 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include<$ac_cv_header_stdint> ++/* Define _doprnt to an innocuous variant, in case declares _doprnt. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define _doprnt innocuous__doprnt ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char _doprnt (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef _doprnt ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char _doprnt (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub__doprnt || defined __stub____doprnt ++choke me ++#endif + + int + main () + { +-if ((int_fast32_t *) 0) +- return 0; +-if (sizeof (int_fast32_t)) +- return 0; ++return _doprnt (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_type_int_fast32_t=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func__doprnt=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_int_fast32_t=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cv_func__doprnt=no + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_int_fast32_t" >&5 +-echo "${ECHO_T}$ac_cv_type_int_fast32_t" >&6 +- +- +-if test "$ac_cv_header_stdint" != "stddef.h" ; then +-if test "$ac_cv_header_stdint" != "stdint.h" ; then +-echo "$as_me:$LINENO: result: ..adding include stddef.h" >&5 +-echo "${ECHO_T}..adding include stddef.h" >&6 +- echo "#include " >>$ac_stdint_h +-fi ; fi +-echo "$as_me:$LINENO: result: ..adding include $ac_cv_header_stdint" >&5 +-echo "${ECHO_T}..adding include $ac_cv_header_stdint" >&6 +- echo "#include <$ac_cv_header_stdint>" >>$ac_stdint_h +-echo "" >>$ac_stdint_h + +-# ----------------- DONE header START basic int types ------------- +-if test "$ac_cv_header_stdint_x" = "no-file" ; then +- echo "$as_me:$LINENO: result: ... need to look at C basic types" >&5 +-echo "${ECHO_T}... need to look at C basic types" >&6 +-else +- echo "$as_me:$LINENO: result: ... seen good stdint.h inttypes" >&5 +-echo "${ECHO_T}... seen good stdint.h inttypes" >&6 ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 ++echo "${ECHO_T}$ac_cv_func__doprnt" >&6; } ++if test $ac_cv_func__doprnt = yes; then + +-if test "$ac_cv_header_stdint_u" != "no-file" ; then +- echo "$as_me:$LINENO: result: ... seen bsd/sysv typedefs" >&5 +-echo "${ECHO_T}... seen bsd/sysv typedefs" >&6 +- cat >>$ac_stdint_h <>$ac_stdint_h <>confdefs.h <<\_ACEOF ++#define HAVE_DOPRNT 1 ++_ACEOF + +-/* glibc compatibility */ +-#ifndef __int8_t_defined +-#define __int8_t_defined +-#endif +-EOF + fi + +-ac_cv_sizeof_x="$ac_cv_sizeof_char:$ac_cv_sizeof_short" +-ac_cv_sizeof_X="$ac_cv_sizeof_x:$ac_cv_sizeof_int" +-ac_cv_sizeof_X="$ac_cv_sizeof_X:$ac_cv_sizeof_voidp:$ac_cv_sizeof_long" +-if test "$ac_cv_header_stdint" = "stddef.h" ; then +-# we must guess all the basic types. Apart from byte-adressable system, +-# there a few 32-bit-only dsp-systems. nibble-addressable systems are way off. +- cat >>$ac_stdint_h <&5 +-echo "${ECHO_T}..adding $t normal 16-bit system" >&6 +- cat >>$ac_stdint_h <&5 +-echo "${ECHO_T}..adding $t 32-bit system derived from a 16-bit" >&6 +- cat >>$ac_stdint_h <&5 +-echo "${ECHO_T}..adding $t normal 32-bit system" >&6 +- cat >>$ac_stdint_h <&5 +-echo "${ECHO_T}..adding $t 32-bit system prepared for 64-bit" >&6 +- cat >>$ac_stdint_h <&5 +-echo "${ECHO_T}..adding $t normal 64-bit system" >&6 +- cat >>$ac_stdint_h <&5 +-echo "${ECHO_T}..adding $t 64-bit system derived from a 32-bit" >&6 +- cat >>$ac_stdint_h <&5 +-echo "$as_me: error: $ac_cv_sizeof_X what is that a system? contact the author, quick! http://ac-archive.sf.net" >&2;} +- { (exit 1); exit 1; }; } +- exit 1 +-;; +- esac + fi ++done + +-# ------------- DONE basic int types START int64_t types ------------ +-if test "$ac_cv_type_uint64_t" = "yes" +-then echo "$as_me:$LINENO: result: ... seen good uint64_t" >&5 +-echo "${ECHO_T}... seen good uint64_t" >&6 +- cat >>$ac_stdint_h <&5 +-echo "${ECHO_T}..adding typedef u_int64_t uint64_t" >&6 +- cat >>$ac_stdint_h <&5 +-echo "${ECHO_T}..adding generic uint64_t runtime checks" >&6 +- cat >>$ac_stdint_h < 199901L + +-#ifndef _HAVE_UINT64_T +-#define _HAVE_UINT64_T +-typedef long long int64_t; +-typedef unsigned long long uint64_t; +-#endif ++{ echo "$as_me:$LINENO: checking for pid_t" >&5 ++echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; } ++if test "${ac_cv_type_pid_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++typedef pid_t ac__type_new_; ++int ++main () ++{ ++if ((ac__type_new_ *) 0) ++ return 0; ++if (sizeof (ac__type_new_)) ++ return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_type_pid_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-#elif !defined __STRICT_ANSI__ +-#if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__ ++ ac_cv_type_pid_t=no ++fi + +-#ifndef _HAVE_UINT64_T +-#define _HAVE_UINT64_T +-typedef __int64 int64_t; +-typedef unsigned __int64 uint64_t; +-#endif ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 ++echo "${ECHO_T}$ac_cv_type_pid_t" >&6; } ++if test $ac_cv_type_pid_t = yes; then ++ : ++else + +-#elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__ ++cat >>confdefs.h <<_ACEOF ++#define pid_t int ++_ACEOF + +-#if !defined _NO_LONGLONG +-#ifndef _HAVE_UINT64_T +-#define _HAVE_UINT64_T +-typedef long long int64_t; +-typedef unsigned long long uint64_t; +-#endif +-#endif ++fi + +-#elif defined __alpha || (defined __mips && defined _ABIN32) + +-#if !defined _NO_LONGLONG +-#ifndef _HAVE_UINT64_T +-#define _HAVE_UINT64_T +-typedef long int64_t; +-typedef unsigned long uint64_t; +-#endif +-#endif +- /* compiler/cpu type ... or just ISO C99 */ +-#endif +-#endif +-EOF ++for ac_header in vfork.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++#include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# plus a default 64-bit for systems that are likely to be 64-bit ready +- case "$ac_cv_sizeof_x:$ac_cv_sizeof_voidp:$ac_cv_sizeof_long" in +- 1:2:8:8) echo "$as_me:$LINENO: result: ..adding uint64_t default" >&5 +-echo "${ECHO_T}..adding uint64_t default" >&6 +-cat >>$ac_stdint_h <&5 +-echo "${ECHO_T}..adding uint64_t default" >&6 +-cat >>$ac_stdint_h <&5 +-echo "${ECHO_T}..adding uint64_t default" >&6 +-cat >>$ac_stdint_h <>$ac_stdint_h <>$ac_stdint_h <&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + +-/* -------------------------- INPTR SECTION --------------------------- */ +-EOF +- case "$ac_cv_sizeof_x:$ac_cv_sizeof_voidp" in +- 1:2:2) +- a="int16_t" ; cat >>$ac_stdint_h <&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$ac_header> ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-typedef uint16_t uintptr_t; +-typedef int16_t intptr_t; +-EOF +-;; +- 1:2:4) +- a="int32_t" ; cat >>$ac_stdint_h <>$ac_stdint_h <&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + +-typedef uint64_t uintptr_t; +-typedef int64_t intptr_t; +-EOF +-;; +- *) +- a="long" ; cat >>$ac_stdint_h <&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++## ----------------------------------------------------------- ## ++## Report this to http://sourceforge.net/projects/libvncserver ## ++## ----------------------------------------------------------- ## ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ eval "$as_ac_Header=\$ac_header_preproc" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + +-typedef unsigned long uintptr_t; +-typedef long intptr_t; +-EOF +-;; +- esac +-echo "$as_me:$LINENO: result: ..adding typedef $a intptr_t" >&5 +-echo "${ECHO_T}..adding typedef $a intptr_t" >&6 + fi ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF + +-# ------------- DONE intptr types START int_least types ------------ +-if test "$ac_cv_type_int_least32_t" = "no"; then +-echo "$as_me:$LINENO: result: ..adding generic int_least-types" >&5 +-echo "${ECHO_T}..adding generic int_least-types" >&6 +- cat >>$ac_stdint_h <&5 +-echo "${ECHO_T}..adding generic int_fast-types" >&6 +- cat >>$ac_stdint_h <&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func + +-/* --------------GENERIC INT_FAST ------------------ */ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ + +-typedef int8_t int_fast8_t; +-typedef int32_t int_fast16_t; +-typedef int32_t int_fast32_t; +-#ifdef _HAVE_INT64_T +-typedef int64_t int_fast64_t; ++#ifdef __STDC__ ++# include ++#else ++# include + #endif + +-typedef uint8_t uint_fast8_t; +-typedef uint32_t uint_fast16_t; +-typedef uint32_t uint_fast32_t; +-#ifdef _HAVE_INT64_T +-typedef uint64_t uint_fast64_t; ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me + #endif +-EOF +-fi + +-if test "$ac_cv_header_stdint_x" = "no-file" ; then +- cat >>$ac_stdint_h <&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-#ifdef _HAVE_INT64_T +-typedef int64_t intmax_t; +-typedef uint64_t uintmax_t; +-#else +-typedef long int intmax_t; +-typedef unsigned long uintmax_t; +-#endif +-EOF ++ eval "$as_ac_var=no" + fi + +-echo "$as_me:$LINENO: result: ... DONE $ac_stdint_h" >&5 +-echo "${ECHO_T}... DONE $ac_stdint_h" >&6 +- cat >>$ac_stdint_h <&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF + +- /* once */ +-#endif +-#endif +-EOF ++fi ++done + +-echo "$as_me:$LINENO: checking for in_addr_t" >&5 +-echo $ECHO_N "checking for in_addr_t... $ECHO_C" >&6 +-if test "${inaddrt+set}" = set; then ++if test "x$ac_cv_func_fork" = xyes; then ++ { echo "$as_me:$LINENO: checking for working fork" >&5 ++echo $ECHO_N "checking for working fork... $ECHO_C" >&6; } ++if test "${ac_cv_func_fork_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- +- cat >conftest.$ac_ext <<_ACEOF ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_fork_works=cross ++else ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include +-#include ++$ac_includes_default + int + main () + { +-in_addr_t foo; return 0; ++ ++ /* By Ruediger Kuhlmann. */ ++ return fork () < 0; ++ + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); }; }; then ++ ac_cv_func_fork_works=yes ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_func_fork_works=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_fork_works" >&5 ++echo "${ECHO_T}$ac_cv_func_fork_works" >&6; } ++ ++else ++ ac_cv_func_fork_works=$ac_cv_func_fork ++fi ++if test "x$ac_cv_func_fork_works" = xcross; then ++ case $host in ++ *-*-amigaos* | *-*-msdosdjgpp*) ++ # Override, as these systems have only a dummy fork() stub ++ ac_cv_func_fork_works=no ++ ;; ++ *) ++ ac_cv_func_fork_works=yes ++ ;; ++ esac ++ { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 ++echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} ++fi ++ac_cv_func_vfork_works=$ac_cv_func_vfork ++if test "x$ac_cv_func_vfork" = xyes; then ++ { echo "$as_me:$LINENO: checking for working vfork" >&5 ++echo $ECHO_N "checking for working vfork... $ECHO_C" >&6; } ++if test "${ac_cv_func_vfork_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then ++ ac_cv_func_vfork_works=cross ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Thanks to Paul Eggert for this test. */ ++$ac_includes_default ++#include ++#ifdef HAVE_VFORK_H ++# include ++#endif ++/* On some sparc systems, changes by the child to local and incoming ++ argument registers are propagated back to the parent. The compiler ++ is told about this with #include , but some compilers ++ (e.g. gcc -O) don't grok . Test for this by using a ++ static variable whose address is put into a register that is ++ clobbered by the vfork. */ ++static void ++#ifdef __cplusplus ++sparc_address_test (int arg) ++# else ++sparc_address_test (arg) int arg; ++#endif ++{ ++ static pid_t child; ++ if (!child) { ++ child = vfork (); ++ if (child < 0) { ++ perror ("vfork"); ++ _exit(2); ++ } ++ if (!child) { ++ arg = getpid(); ++ write(-1, "", 0); ++ _exit (arg); ++ } ++ } ++} ++ ++int ++main () ++{ ++ pid_t parent = getpid (); ++ pid_t child; ++ ++ sparc_address_test (0); ++ ++ child = vfork (); ++ ++ if (child == 0) { ++ /* Here is another test for sparc vfork register problems. This ++ test uses lots of local variables, at least as many local ++ variables as main has allocated so far including compiler ++ temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris ++ 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should ++ reuse the register of parent for one of the local variables, ++ since it will think that parent can't possibly be used any more ++ in this routine. Assigning to the local variable will thus ++ munge parent in the parent process. */ ++ pid_t ++ p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), ++ p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); ++ /* Convince the compiler that p..p7 are live; otherwise, it might ++ use the same hardware register for all 8 local variables. */ ++ if (p != p1 || p != p2 || p != p3 || p != p4 ++ || p != p5 || p != p6 || p != p7) ++ _exit(1); ++ ++ /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent ++ from child file descriptors. If the child closes a descriptor ++ before it execs or exits, this munges the parent's descriptor ++ as well. Test for this by closing stdout in the child. */ ++ _exit(close(fileno(stdout)) != 0); ++ } else { ++ int status; ++ struct stat st; ++ ++ while (wait(&status) != child) ++ ; ++ return ( ++ /* Was there some problem with vforking? */ ++ child < 0 ++ ++ /* Did the child fail? (This shouldn't happen.) */ ++ || status ++ ++ /* Did the vfork/compiler bug occur? */ ++ || parent != getpid() ++ ++ /* Did the file descriptor bug occur? */ ++ || fstat(fileno(stdout), &st) != 0 ++ ); ++ } ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +- inaddrt=yes ++ ac_cv_func_vfork_works=yes ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_func_vfork_works=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_vfork_works" >&5 ++echo "${ECHO_T}$ac_cv_func_vfork_works" >&6; } ++ ++fi; ++if test "x$ac_cv_func_fork_works" = xcross; then ++ ac_cv_func_vfork_works=$ac_cv_func_vfork ++ { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 ++echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} ++fi ++ ++if test "x$ac_cv_func_vfork_works" = xyes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_WORKING_VFORK 1 ++_ACEOF ++ + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-inaddrt=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext, ++cat >>confdefs.h <<\_ACEOF ++#define vfork fork ++_ACEOF + + fi +-echo "$as_me:$LINENO: result: $inaddrt" >&5 +-echo "${ECHO_T}$inaddrt" >&6 +- ++if test "x$ac_cv_func_fork_works" = xyes; then + +-if test $inaddrt = no ; then +- cat >>confdefs.h <<\_ACEOF +-#define NEED_INADDR_T 1 ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_WORKING_FORK 1 + _ACEOF + + fi + +-# Checks for library functions. +-echo "$as_me:$LINENO: checking for working memcmp" >&5 +-echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6 +-if test "${ac_cv_func_memcmp_working+set}" = set; then ++ ++{ echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 ++echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test "$cross_compiling" = yes; then +- ac_cv_func_memcmp_working=no +-else +- cat >conftest.$ac_ext <<_ACEOF ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lnsl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_includes_default ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char gethostbyname (); + int + main () + { +- +- /* Some versions of memcmp are not 8-bit clean. */ +- char c0 = 0x40, c1 = 0x80, c2 = 0x81; +- if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) +- exit (1); +- +- /* The Next x86 OpenStep bug shows up only when comparing 16 bytes +- or more and with at least one buffer not starting on a 4-byte boundary. +- William Lewis provided this test program. */ +- { +- char foo[21]; +- char bar[21]; +- int i; +- for (i = 0; i < 4; i++) +- { +- char *a = foo + i; +- char *b = bar + i; +- strcpy (a, "--------01111111"); +- strcpy (b, "--------10000000"); +- if (memcmp (a, b, 16) >= 0) +- exit (1); +- } +- exit (0); +- } +- ++return gethostbyname (); + ; + return 0; + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_memcmp_working=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_nsl_gethostbyname=yes + else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 ++ echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-( exit $ac_status ) +-ac_cv_func_memcmp_working=no ++ ac_cv_lib_nsl_gethostbyname=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; } ++if test $ac_cv_lib_nsl_gethostbyname = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBNSL 1 ++_ACEOF ++ ++ LIBS="-lnsl $LIBS" ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 +-echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6 +-test $ac_cv_func_memcmp_working = no && case $LIBOBJS in +- "memcmp.$ac_objext" | \ +- *" memcmp.$ac_objext" | \ +- "memcmp.$ac_objext "* | \ +- *" memcmp.$ac_objext "* ) ;; +- *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ;; +-esac + + +-echo "$as_me:$LINENO: checking whether lstat dereferences a symlink specified with a trailing slash" >&5 +-echo $ECHO_N "checking whether lstat dereferences a symlink specified with a trailing slash... $ECHO_C" >&6 +-if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then ++{ echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 ++echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6; } ++if test "${ac_cv_lib_socket_socket+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- rm -f conftest.sym conftest.file +-echo >conftest.file +-if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then +- if test "$cross_compiling" = yes; then +- ac_cv_func_lstat_dereferences_slashed_symlink=no +-else +- cat >conftest.$ac_ext <<_ACEOF ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsocket $LIBS" ++cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_includes_default ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char socket (); + int + main () + { +-struct stat sbuf; +- /* Linux will dereference the symlink and fail. +- That is better in the sense that it means we will not +- have to compile and use the lstat wrapper. */ +- exit (lstat ("conftest.sym/", &sbuf) ? 0 : 1); ++return socket (); + ; + return 0; + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_lstat_dereferences_slashed_symlink=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_socket_socket=yes + else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 ++ echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-( exit $ac_status ) +-ac_cv_func_lstat_dereferences_slashed_symlink=no ++ ac_cv_lib_socket_socket=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS + fi +-else +- # If the `ln -s' command failed, then we probably don't even +- # have an lstat function. +- ac_cv_func_lstat_dereferences_slashed_symlink=no ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 ++echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6; } ++if test $ac_cv_lib_socket_socket = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBSOCKET 1 ++_ACEOF ++ ++ LIBS="-lsocket $LIBS" ++ + fi +-rm -f conftest.sym conftest.file + ++ ++uname_s=`(uname -s) 2>/dev/null` ++if test "x$uname_s" = "xHP-UX"; then ++ # need -lsec for getspnam() ++ LDFLAGS="$LDFLAGS -lsec" + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 +-echo "${ECHO_T}$ac_cv_func_lstat_dereferences_slashed_symlink" >&6 + +-test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && + +-cat >>confdefs.h <<_ACEOF +-#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 +-_ACEOF + + +-if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then +- case $LIBOBJS in +- "lstat.$ac_objext" | \ +- *" lstat.$ac_objext" | \ +- "lstat.$ac_objext "* | \ +- *" lstat.$ac_objext "* ) ;; +- *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;; +-esac + +-fi + +-echo "$as_me:$LINENO: checking whether stat accepts an empty string" >&5 +-echo $ECHO_N "checking whether stat accepts an empty string... $ECHO_C" >&6 +-if test "${ac_cv_func_stat_empty_string_bug+set}" = set; then ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_func in ftime gethostbyname gethostname gettimeofday inet_ntoa memmove memset mmap mkfifo select socket strchr strcspn strdup strerror strstr ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test "$cross_compiling" = yes; then +- ac_cv_func_stat_empty_string_bug=yes +-else + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_includes_default ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ + int + main () + { +-struct stat sbuf; +- exit (stat ("", &sbuf) ? 1 : 0); ++return $ac_func (); + ; + return 0; + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_stat_empty_string_bug=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" + else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 ++ echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-( exit $ac_status ) +-ac_cv_func_stat_empty_string_bug=no ++ eval "$as_ac_var=no" + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_stat_empty_string_bug" >&5 +-echo "${ECHO_T}$ac_cv_func_stat_empty_string_bug" >&6 +-if test $ac_cv_func_stat_empty_string_bug = yes; then +- case $LIBOBJS in +- "stat.$ac_objext" | \ +- *" stat.$ac_objext" | \ +- "stat.$ac_objext "* | \ +- *" stat.$ac_objext "* ) ;; +- *) LIBOBJS="$LIBOBJS stat.$ac_objext" ;; +-esac ++done + ++# x11vnc only: ++if test "$build_x11vnc" = "yes"; then + +-cat >>confdefs.h <<_ACEOF +-#define HAVE_STAT_EMPTY_STRING_BUG 1 +-_ACEOF + +-fi + + +-for ac_func in strftime ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_func in setsid setpgrp getpwuid getpwnam getspnam getuid geteuid setuid setgid seteuid setegid initgroups waitpid setutxent grantpt + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -26592,82 +19730,79 @@ + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF + +-else +- # strftime is in -lintl on SCO UNIX. +-echo "$as_me:$LINENO: checking for strftime in -lintl" >&5 +-echo $ECHO_N "checking for strftime in -lintl... $ECHO_C" >&6 +-if test "${ac_cv_lib_intl_strftime+set}" = set; then ++fi ++done ++ ++fi ++ ++# check, if shmget is in cygipc.a ++ ++{ echo "$as_me:$LINENO: checking for shmget in -lcygipc" >&5 ++echo $ECHO_N "checking for shmget in -lcygipc... $ECHO_C" >&6; } ++if test "${ac_cv_lib_cygipc_shmget+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lintl $LIBS" ++LIBS="-lcygipc $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -26675,3171 +19810,2803 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char strftime (); ++char shmget (); + int + main () + { +-strftime (); ++return shmget (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_intl_strftime=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_cygipc_shmget=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_intl_strftime=no ++ ac_cv_lib_cygipc_shmget=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_intl_strftime" >&5 +-echo "${ECHO_T}$ac_cv_lib_intl_strftime" >&6 +-if test $ac_cv_lib_intl_strftime = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_STRFTIME 1 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_cygipc_shmget" >&5 ++echo "${ECHO_T}$ac_cv_lib_cygipc_shmget" >&6; } ++if test $ac_cv_lib_cygipc_shmget = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBCYGIPC 1 + _ACEOF + +-LIBS="-lintl $LIBS" ++ LIBS="-lcygipc $LIBS" ++ ++fi ++ ++ if test "$HAVE_CYGIPC" = "true"; then ++ CYGIPC_TRUE= ++ CYGIPC_FALSE='#' ++else ++ CYGIPC_TRUE='#' ++ CYGIPC_FALSE= + fi + ++ ++# Check if /dev/vcsa1 exists, if so, define LINUX ++ if test -c /dev/vcsa1; then ++ LINUX_TRUE= ++ LINUX_FALSE='#' ++else ++ LINUX_TRUE='#' ++ LINUX_FALSE= + fi +-done + + +-for ac_func in vprintf +-do +-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++# Check for OS X specific header ++if test "${ac_cv_header_ApplicationServices_ApplicationServices_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for ApplicationServices/ApplicationServices.h" >&5 ++echo $ECHO_N "checking for ApplicationServices/ApplicationServices.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_ApplicationServices_ApplicationServices_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_ApplicationServices_ApplicationServices_h" >&5 ++echo "${ECHO_T}$ac_cv_header_ApplicationServices_ApplicationServices_h" >&6; } + else +- cat >conftest.$ac_ext <<_ACEOF ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking ApplicationServices/ApplicationServices.h usability" >&5 ++echo $ECHO_N "checking ApplicationServices/ApplicationServices.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++$ac_includes_default ++#include ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-#undef $ac_func ++ ac_header_compiler=no ++fi + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +-choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} +-#endif ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + +-int +-main () +-{ +-return f != $ac_func; +- ; +- return 0; +-} ++# Is the header present? ++{ echo "$as_me:$LINENO: checking ApplicationServices/ApplicationServices.h presence" >&5 ++echo $ECHO_N "checking ApplicationServices/ApplicationServices.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- eval "$as_ac_var=yes" ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ ac_header_preproc=no + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext ++ ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: in the future, the compiler will take precedence" >&2;} ++ ( cat <<\_ASBOX ++## ----------------------------------------------------------- ## ++## Report this to http://sourceforge.net/projects/libvncserver ## ++## ----------------------------------------------------------- ## ++_ASBOX ++ ) | sed "s/^/$as_me: WARNING: /" >&2 ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for ApplicationServices/ApplicationServices.h" >&5 ++echo $ECHO_N "checking for ApplicationServices/ApplicationServices.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_ApplicationServices_ApplicationServices_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_ApplicationServices_ApplicationServices_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_ApplicationServices_ApplicationServices_h" >&5 ++echo "${ECHO_T}$ac_cv_header_ApplicationServices_ApplicationServices_h" >&6; } ++ ++fi ++if test $ac_cv_header_ApplicationServices_ApplicationServices_h = yes; then ++ HAVE_OSX="true" ++fi ++ ++ ++ if test "$HAVE_OSX" = "true"; then ++ OSX_TRUE= ++ OSX_FALSE='#' ++else ++ OSX_TRUE='#' ++ OSX_FALSE= ++fi ++ ++ ++# On Solaris 2.7, write() returns ENOENT when it really means EAGAIN ++ ++ ++case `(uname -sr) 2>/dev/null` in ++ "SunOS 5.7") ++ cat >>confdefs.h <<\_ACEOF ++#define ENOENT_WORKAROUND 1 ++_ACEOF ++ ++ ;; ++esac ++ ++# Check for rpm SOURCES path ++printf "checking for rpm sources path... " ++RPMSOURCEDIR="NOT-FOUND" ++for directory in packages OpenLinux redhat RedHat rpm RPM "" ; do ++ if test -d /usr/src/${directory}/SOURCES; then ++ RPMSOURCEDIR="/usr/src/${directory}/SOURCES/" ++ fi ++done ++echo "$RPMSOURCEDIR" ++ if test "$RPMSOURCEDIR" != "NOT-FOUND"; then ++ HAVE_RPM_TRUE= ++ HAVE_RPM_FALSE='#' ++else ++ HAVE_RPM_TRUE='#' ++ HAVE_RPM_FALSE= ++fi ++ ++ ++ ++ac_config_files="$ac_config_files Makefile libvncserver/Makefile contrib/Makefile examples/Makefile vncterm/Makefile classes/Makefile classes/ssl/Makefile libvncclient/Makefile client_examples/Makefile test/Makefile libvncserver-config LibVNCServer.spec" ++ ++# x11vnc only: ++# if test "$build_x11vnc" = "yes"; then ++# AC_CONFIG_FILES([x11vnc/Makefile x11vnc/misc/Makefile]) ++# fi ++ ++ac_config_commands="$ac_config_commands chmod-libvncserver-config" ++ ++cat >confcache <<\_ACEOF ++# This file is a shell script that caches the results of configure ++# tests run on this system so they can be shared between configure ++# scripts and configure runs, see configure's option --config-cache. ++# It is not useful on other systems. If it contains results you don't ++# want to keep, you may remove or edit it. ++# ++# config.status only pays attention to the cache file if you give it ++# the --recheck option to rerun configure. ++# ++# `ac_cv_env_foo' variables (set or unset) will be overridden when ++# loading this file, other *unset* `ac_cv_foo' will be assigned the ++# following values. ++ ++_ACEOF ++ ++# The following way of writing the cache mishandles newlines in values, ++# but we know of no workaround that is simple, portable, and efficient. ++# So, we kill variables containing newlines. ++# Ultrix sh set writes to stderr and can't be redirected directly, ++# and sets the high bit in the cache file unless we assign to the vars. ++( ++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ ++ (set) 2>&1 | ++ case $as_nl`(ac_space=' '; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) ++ # `set' does not quote correctly, so add quotes (double-quote ++ # substitution turns \\\\ into \\, and sed turns \\ into \). ++ sed -n \ ++ "s/'/'\\\\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ++ ;; #( ++ *) ++ # `set' quotes correctly as required by POSIX, so do not add quotes. ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ++ ;; ++ esac | ++ sort ++) | ++ sed ' ++ /^ac_cv_env_/b end ++ t clear ++ :clear ++ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ ++ t end ++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ ++ :end' >>confcache ++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else ++ if test -w "$cache_file"; then ++ test "x$cache_file" != "x/dev/null" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} ++ cat confcache >$cache_file ++ else ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} ++ fi + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +-if test `eval echo '${'$as_ac_var'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF +- +-echo "$as_me:$LINENO: checking for _doprnt" >&5 +-echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 +-if test "${ac_cv_func__doprnt+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define _doprnt to an innocuous variant, in case declares _doprnt. +- For example, HP-UX 11i declares gettimeofday. */ +-#define _doprnt innocuous__doprnt ++rm -f confcache + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char _doprnt (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++test "x$prefix" = xNONE && prefix=$ac_default_prefix ++# Let make expand exec_prefix. ++test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++DEFS=-DHAVE_CONFIG_H + +-#undef _doprnt ++ac_libobjs= ++ac_ltlibobjs= ++for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue ++ # 1. Remove the extension, and $U if already installed. ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`echo "$ac_i" | sed "$ac_script"` ++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR ++ # will be set to the directory where LIBOBJS objects are built. ++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' ++done ++LIBOBJS=$ac_libobjs + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char _doprnt (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub__doprnt) || defined (__stub____doprnt) +-choke me +-#else +-char (*f) () = _doprnt; +-#endif +-#ifdef __cplusplus +-} +-#endif ++LTLIBOBJS=$ac_ltlibobjs + +-int +-main () +-{ +-return f != _doprnt; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func__doprnt=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func__doprnt=no ++if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"AMDEP\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext ++if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } + fi +-echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 +-echo "${ECHO_T}$ac_cv_func__doprnt" >&6 +-if test $ac_cv_func__doprnt = yes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_DOPRNT 1 +-_ACEOF +- ++if test -z "${WITH_FFMPEG_TRUE}" && test -z "${WITH_FFMPEG_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"WITH_FFMPEG\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"WITH_FFMPEG\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } + fi +- ++if test -z "${HAVE_MP3LAME_TRUE}" && test -z "${HAVE_MP3LAME_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_MP3LAME\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_MP3LAME\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_X_TRUE}" && test -z "${HAVE_X_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_X\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_X\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_SYSTEM_LIBVNCSERVER_TRUE}" && test -z "${HAVE_SYSTEM_LIBVNCSERVER_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_SYSTEM_LIBVNCSERVER\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_SYSTEM_LIBVNCSERVER\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_LIBPTHREAD_TRUE}" && test -z "${HAVE_LIBPTHREAD_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBPTHREAD\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_LIBPTHREAD\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${WITH_TIGHTVNC_FILETRANSFER_TRUE}" && test -z "${WITH_TIGHTVNC_FILETRANSFER_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"WITH_TIGHTVNC_FILETRANSFER\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"WITH_TIGHTVNC_FILETRANSFER\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_LIBZ_TRUE}" && test -z "${HAVE_LIBZ_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBZ\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_LIBZ\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_LIBJPEG_TRUE}" && test -z "${HAVE_LIBJPEG_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBJPEG\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_LIBJPEG\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_LIBSDL_TRUE}" && test -z "${HAVE_LIBSDL_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBSDL\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_LIBSDL\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${MINGW_TRUE}" && test -z "${MINGW_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"MINGW\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"MINGW\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${CYGIPC_TRUE}" && test -z "${CYGIPC_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"CYGIPC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"CYGIPC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${LINUX_TRUE}" && test -z "${LINUX_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"LINUX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"LINUX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${OSX_TRUE}" && test -z "${OSX_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"OSX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"OSX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${HAVE_RPM_TRUE}" && test -z "${HAVE_RPM_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"HAVE_RPM\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"HAVE_RPM\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } + fi +-done + ++: ${CONFIG_STATUS=./config.status} ++ac_clean_files_save=$ac_clean_files ++ac_clean_files="$ac_clean_files $CONFIG_STATUS" ++{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 ++echo "$as_me: creating $CONFIG_STATUS" >&6;} ++cat >$CONFIG_STATUS <<_ACEOF ++#! $SHELL ++# Generated by $as_me. ++# Run this file to recreate the current configuration. ++# Compiler output produced by configure, useful for debugging ++# configure, is in config.log if it exists. + +-echo "$as_me:$LINENO: checking for pid_t" >&5 +-echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 +-if test "${ac_cv_type_pid_t+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-if ((pid_t *) 0) +- return 0; +-if (sizeof (pid_t)) +- return 0; +- ; +- return 0; +-} ++debug=false ++ac_cs_recheck=false ++ac_cs_silent=false ++SHELL=\${CONFIG_SHELL-$SHELL} + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_type_pid_t=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_pid_t=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +-echo "${ECHO_T}$ac_cv_type_pid_t" >&6 +-if test $ac_cv_type_pid_t = yes; then +- : ++cat >>$CONFIG_STATUS <<\_ACEOF ++## --------------------- ## ++## M4sh Initialization. ## ++## --------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST + else +- +-cat >>confdefs.h <<_ACEOF +-#define pid_t int +-_ACEOF ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac + + fi + + + +-for ac_header in unistd.h vfork.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +-else +- # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_header_compiler=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits + +-# Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' + else +- ac_cpp_err= ++ PATH_SEPARATOR=: + fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no ++ rm -f conf$$.sh + fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 + +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ----------------------------------------------------------- ## +-## Report this to http://sourceforge.net/projects/libvncserver ## +-## ----------------------------------------------------------- ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++# Support unset when possible. ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ as_unset=unset + else +- eval "$as_ac_Header=\$ac_header_preproc" ++ as_unset=false + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +-fi +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF + +-fi ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" + ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done ++IFS=$as_save_IFS + ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi + ++# Work around bugs in pre-3.0 UWIN ksh. ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' + +-for ac_func in fork vfork ++# NLS nuisances. ++for as_var in \ ++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ ++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ ++ LC_TELEPHONE LC_TIME + do +-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +-choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} +-#endif +- +-int +-main () +-{ +-return f != $ac_func; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- eval "$as_ac_var=yes" +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-eval "$as_ac_var=no" +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +-if test `eval echo '${'$as_ac_var'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF +- +-fi ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then ++ eval $as_var=C; export $as_var ++ else ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ fi + done + +-if test "x$ac_cv_func_fork" = xyes; then +- echo "$as_me:$LINENO: checking for working fork" >&5 +-echo $ECHO_N "checking for working fork... $ECHO_C" >&6 +-if test "${ac_cv_func_fork_works+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then +- ac_cv_func_fork_works=cross +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* By Ruediger Kuhlmann. */ +- #include +- #if HAVE_UNISTD_H +- # include +- #endif +- /* Some systems only have a dummy stub for fork() */ +- int main () +- { +- if (fork() < 0) +- exit (1); +- exit (0); +- } +-_ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_fork_works=yes ++# Required to use basename. ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr + else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-( exit $ac_status ) +-ac_cv_func_fork_works=no +-fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi ++ as_expr=false + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_fork_works" >&5 +-echo "${ECHO_T}$ac_cv_func_fork_works" >&6 + ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename + else +- ac_cv_func_fork_works=$ac_cv_func_fork +-fi +-if test "x$ac_cv_func_fork_works" = xcross; then +- case $host in +- *-*-amigaos* | *-*-msdosdjgpp*) +- # Override, as these systems have only a dummy fork() stub +- ac_cv_func_fork_works=no +- ;; +- *) +- ac_cv_func_fork_works=yes +- ;; +- esac +- { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +-echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} ++ as_basename=false + fi +-ac_cv_func_vfork_works=$ac_cv_func_vfork +-if test "x$ac_cv_func_vfork" = xyes; then +- echo "$as_me:$LINENO: checking for working vfork" >&5 +-echo $ECHO_N "checking for working vfork... $ECHO_C" >&6 +-if test "${ac_cv_func_vfork_works+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then +- ac_cv_func_vfork_works=cross +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Thanks to Paul Eggert for this test. */ +-#include +-#include +-#include +-#include +-#include +-#if HAVE_UNISTD_H +-# include +-#endif +-#if HAVE_VFORK_H +-# include +-#endif +-/* On some sparc systems, changes by the child to local and incoming +- argument registers are propagated back to the parent. The compiler +- is told about this with #include , but some compilers +- (e.g. gcc -O) don't grok . Test for this by using a +- static variable whose address is put into a register that is +- clobbered by the vfork. */ +-static void +-#ifdef __cplusplus +-sparc_address_test (int arg) +-# else +-sparc_address_test (arg) int arg; +-#endif +-{ +- static pid_t child; +- if (!child) { +- child = vfork (); +- if (child < 0) { +- perror ("vfork"); +- _exit(2); +- } +- if (!child) { +- arg = getpid(); +- write(-1, "", 0); +- _exit (arg); +- } +- } +-} +- +-int +-main () +-{ +- pid_t parent = getpid (); +- pid_t child; + +- sparc_address_test (0); + +- child = vfork (); ++# Name of the executable. ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + +- if (child == 0) { +- /* Here is another test for sparc vfork register problems. This +- test uses lots of local variables, at least as many local +- variables as main has allocated so far including compiler +- temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris +- 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should +- reuse the register of parent for one of the local variables, +- since it will think that parent can't possibly be used any more +- in this routine. Assigning to the local variable will thus +- munge parent in the parent process. */ +- pid_t +- p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), +- p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); +- /* Convince the compiler that p..p7 are live; otherwise, it might +- use the same hardware register for all 8 local variables. */ +- if (p != p1 || p != p2 || p != p3 || p != p4 +- || p != p5 || p != p6 || p != p7) +- _exit(1); ++# CDPATH. ++$as_unset CDPATH + +- /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent +- from child file descriptors. If the child closes a descriptor +- before it execs or exits, this munges the parent's descriptor +- as well. Test for this by closing stdout in the child. */ +- _exit(close(fileno(stdout)) != 0); +- } else { +- int status; +- struct stat st; + +- while (wait(&status) != child) +- ; +- exit( +- /* Was there some problem with vforking? */ +- child < 0 + +- /* Did the child fail? (This shouldn't happen.) */ +- || status ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + +- /* Did the vfork/compiler bug occur? */ +- || parent != getpid() ++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO ++ # uniformly replaced by the line number. The first 'sed' inserts a ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. ++ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | ++ sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno ++ N ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ ++ t loop ++ s/-\n.*// ++ ' >$as_me.lineno && ++ chmod +x "$as_me.lineno" || ++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 ++ { (exit 1); exit 1; }; } + +- /* Did the file descriptor bug occur? */ +- || fstat(fileno(stdout), &st) != 0 +- ); +- } ++ # Don't try to exec as it changes $[0], causing all sort of problems ++ # (the dirname of $[0] is not the place where we might find the ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" ++ # Exit status is that of the last command. ++ exit + } +-_ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_vfork_works=yes ++ ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname + else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ as_dirname=false ++fi + +-( exit $ac_status ) +-ac_cv_func_vfork_works=no ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir + fi ++echo >conf$$.file ++if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -p' ++elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++else ++ as_ln_s='cp -p' + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_vfork_works" >&5 +-echo "${ECHO_T}$ac_cv_func_vfork_works" >&6 ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null + +-fi; +-if test "x$ac_cv_func_fork_works" = xcross; then +- ac_cv_func_vfork_works=$ac_cv_func_vfork +- { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +-echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p=: ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false + fi + +-if test "x$ac_cv_func_vfork_works" = xyes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_WORKING_VFORK 1 +-_ACEOF +- ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' + else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' ++fi ++as_executable_p=$as_test_x + +-cat >>confdefs.h <<\_ACEOF +-#define vfork fork +-_ACEOF ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +-fi +-if test "x$ac_cv_func_fork_works" = xyes; then ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_WORKING_FORK 1 +-_ACEOF + +-fi ++exec 6>&1 + ++# Save the log message, to keep $[0] and so on meaningful, and to ++# report actual input values of CONFIG_FILES etc. instead of their ++# values after options handling. ++ac_log=" ++This file was extended by LibVNCServer $as_me 0.9.1, which was ++generated by GNU Autoconf 2.61. Invocation command line was + +-echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 +-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 +-if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lnsl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++ CONFIG_FILES = $CONFIG_FILES ++ CONFIG_HEADERS = $CONFIG_HEADERS ++ CONFIG_LINKS = $CONFIG_LINKS ++ CONFIG_COMMANDS = $CONFIG_COMMANDS ++ $ $0 $@ ++ ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char gethostbyname (); +-int +-main () +-{ +-gethostbyname (); +- ; +- return 0; +-} + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_nsl_gethostbyname=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_nsl_gethostbyname=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 +-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 +-if test $ac_cv_lib_nsl_gethostbyname = yes; then +- cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBNSL 1 ++cat >>$CONFIG_STATUS <<_ACEOF ++# Files that config.status was made for. ++config_files="$ac_config_files" ++config_headers="$ac_config_headers" ++config_commands="$ac_config_commands" ++ + _ACEOF + +- LIBS="-lnsl $LIBS" ++cat >>$CONFIG_STATUS <<\_ACEOF ++ac_cs_usage="\ ++\`$as_me' instantiates files from templates according to the ++current configuration. + +-fi ++Usage: $0 [OPTIONS] [FILE]... + ++ -h, --help print this help, then exit ++ -V, --version print version number and configuration settings, then exit ++ -q, --quiet do not print progress messages ++ -d, --debug don't remove temporary files ++ --recheck update $as_me by reconfiguring in the same conditions ++ --file=FILE[:TEMPLATE] ++ instantiate the configuration file FILE ++ --header=FILE[:TEMPLATE] ++ instantiate the configuration header FILE + +-echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 +-echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 +-if test "${ac_cv_lib_socket_socket+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsocket $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++Configuration files: ++$config_files ++ ++Configuration headers: ++$config_headers ++ ++Configuration commands: ++$config_commands ++ ++Report bugs to ." + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char socket (); +-int +-main () +-{ +-socket (); +- ; +- return 0; +-} + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_socket_socket=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++cat >>$CONFIG_STATUS <<_ACEOF ++ac_cs_version="\\ ++LibVNCServer config.status 0.9.1 ++configured by $0, generated by GNU Autoconf 2.61, ++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +-ac_cv_lib_socket_socket=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 +-echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 +-if test $ac_cv_lib_socket_socket = yes; then +- cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBSOCKET 1 ++Copyright (C) 2006 Free Software Foundation, Inc. ++This config.status script is free software; the Free Software Foundation ++gives unlimited permission to copy, distribute and modify it." ++ ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' ++INSTALL='$INSTALL' ++MKDIR_P='$MKDIR_P' + _ACEOF + +- LIBS="-lsocket $LIBS" ++cat >>$CONFIG_STATUS <<\_ACEOF ++# If no file are specified by the user, then we need to provide default ++# value. By we need to know if files were specified by the user. ++ac_need_defaults=: ++while test $# != 0 ++do ++ case $1 in ++ --*=*) ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ++ ac_shift=: ++ ;; ++ *) ++ ac_option=$1 ++ ac_optarg=$2 ++ ac_shift=shift ++ ;; ++ esac + +-fi ++ case $ac_option in ++ # Handling of the options. ++ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ++ ac_cs_recheck=: ;; ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ echo "$ac_cs_version"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) ++ debug=: ;; ++ --file | --fil | --fi | --f ) ++ $ac_shift ++ CONFIG_FILES="$CONFIG_FILES $ac_optarg" ++ ac_need_defaults=false;; ++ --header | --heade | --head | --hea ) ++ $ac_shift ++ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ++ ac_need_defaults=false;; ++ --he | --h) ++ # Conflict between --help and --header ++ { echo "$as_me: error: ambiguous option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; };; ++ --help | --hel | -h ) ++ echo "$ac_cs_usage"; exit ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil | --si | --s) ++ ac_cs_silent=: ;; ++ ++ # This is an error. ++ -*) { echo "$as_me: error: unrecognized option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; } ;; + ++ *) ac_config_targets="$ac_config_targets $1" ++ ac_need_defaults=false ;; + +-uname_s=`(uname -s) 2>/dev/null` +-if test "x$uname_s" = "xHP-UX"; then +- # need -lsec for getspnam() +- LDFLAGS="$LDFLAGS -lsec" ++ esac ++ shift ++done ++ ++ac_configure_extra_args= ++ ++if $ac_cs_silent; then ++ exec 6>/dev/null ++ ac_configure_extra_args="$ac_configure_extra_args --silent" + fi + ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++if \$ac_cs_recheck; then ++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 ++ CONFIG_SHELL=$SHELL ++ export CONFIG_SHELL ++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++fi + ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ++## Running $as_me. ## ++_ASBOX ++ echo "$ac_log" ++} >&5 + ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++# ++# INIT-COMMANDS ++# ++PACKAGE="$PACKAGE" ++AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + ++sed_quote_subst='$sed_quote_subst' ++double_quote_subst='$double_quote_subst' ++delay_variable_subst='$delay_variable_subst' ++macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' ++macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' ++enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' ++enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' ++pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' ++enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' ++host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' ++host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' ++host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' ++build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' ++build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' ++build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' ++SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' ++Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' ++GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' ++EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' ++FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' ++LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' ++NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' ++LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' ++max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ++ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' ++exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' ++lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' ++lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' ++lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' ++reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' ++reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' ++file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' ++AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' ++AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' ++STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' ++RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' ++old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' ++CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' ++compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' ++GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' ++objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' ++SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ++ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' ++MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' ++lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' ++lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' ++lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' ++lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' ++lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' ++need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' ++DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' ++NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' ++LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' ++OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' ++OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' ++libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' ++shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' ++enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' ++export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' ++whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' ++compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' ++old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' ++allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' ++no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' ++inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' ++link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' ++fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' ++always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' ++export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' ++include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' ++prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' ++variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' ++need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' ++need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' ++version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' ++runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' ++shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' ++shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' ++libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' ++library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' ++soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' ++postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' ++finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' ++sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' ++sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' ++hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' ++enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' ++enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' ++enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' ++old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' ++striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' ++ ++LTCC='$LTCC' ++LTCFLAGS='$LTCFLAGS' ++compiler='$compiler_DEFAULT' ++ ++# Quote evaled strings. ++for var in SED \ ++GREP \ ++EGREP \ ++FGREP \ ++LD \ ++NM \ ++LN_S \ ++lt_SP2NL \ ++lt_NL2SP \ ++reload_flag \ ++deplibs_check_method \ ++file_magic_cmd \ ++AR \ ++AR_FLAGS \ ++STRIP \ ++RANLIB \ ++CC \ ++CFLAGS \ ++compiler \ ++lt_cv_sys_global_symbol_pipe \ ++lt_cv_sys_global_symbol_to_cdecl \ ++lt_cv_sys_global_symbol_to_c_name_address \ ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ ++SHELL \ ++ECHO \ ++lt_prog_compiler_no_builtin_flag \ ++lt_prog_compiler_wl \ ++lt_prog_compiler_pic \ ++lt_prog_compiler_static \ ++lt_cv_prog_compiler_c_o \ ++need_locks \ ++DSYMUTIL \ ++NMEDIT \ ++LIPO \ ++OTOOL \ ++OTOOL64 \ ++shrext_cmds \ ++export_dynamic_flag_spec \ ++whole_archive_flag_spec \ ++compiler_needs_object \ ++with_gnu_ld \ ++allow_undefined_flag \ ++no_undefined_flag \ ++hardcode_libdir_flag_spec \ ++hardcode_libdir_flag_spec_ld \ ++hardcode_libdir_separator \ ++fix_srcfile_path \ ++exclude_expsyms \ ++include_expsyms \ ++file_list_spec \ ++variables_saved_for_relink \ ++libname_spec \ ++library_names_spec \ ++soname_spec \ ++finish_eval \ ++old_striplib \ ++striplib; do ++ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in ++ *[\\\\\\\`\\"\\\$]*) ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ++ ;; ++ *) ++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ++ ;; ++ esac ++done + ++# Double-quote double-evaled strings. ++for var in reload_cmds \ ++old_postinstall_cmds \ ++old_postuninstall_cmds \ ++old_archive_cmds \ ++extract_expsyms_cmds \ ++old_archive_from_new_cmds \ ++old_archive_from_expsyms_cmds \ ++archive_cmds \ ++archive_expsym_cmds \ ++module_cmds \ ++module_expsym_cmds \ ++export_symbols_cmds \ ++prelink_cmds \ ++postinstall_cmds \ ++postuninstall_cmds \ ++finish_cmds \ ++sys_lib_search_path_spec \ ++sys_lib_dlsearch_path_spec; do ++ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in ++ *[\\\\\\\`\\"\\\$]*) ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ++ ;; ++ *) ++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ++ ;; ++ esac ++done + ++# Fix-up fallback echo if it was mangled by the above quoting rules. ++case \$lt_ECHO in ++*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ++ ;; ++esac + ++ac_aux_dir='$ac_aux_dir' ++xsi_shell='$xsi_shell' ++lt_shell_append='$lt_shell_append' ++ ++# See if we are running on zsh, and set the options which allow our ++# commands through without removal of \ escapes INIT. ++if test -n "\${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++fi + + ++ PACKAGE='$PACKAGE' ++ VERSION='$VERSION' ++ TIMESTAMP='$TIMESTAMP' ++ RM='$RM' ++ ofile='$ofile' + + + + ++_ACEOF + ++cat >>$CONFIG_STATUS <<\_ACEOF + +-for ac_func in ftime gethostbyname gethostname gettimeofday inet_ntoa memmove memset mmap mkfifo select socket strchr strcspn strdup strerror strstr ++# Handling of arguments. ++for ac_config_target in $ac_config_targets + do +-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func ++ case $ac_config_target in ++ "rfbconfig.h") CONFIG_HEADERS="$CONFIG_HEADERS rfbconfig.h" ;; ++ "rfb/rfbconfig.h") CONFIG_COMMANDS="$CONFIG_COMMANDS rfb/rfbconfig.h" ;; ++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ "libvncserver/Makefile") CONFIG_FILES="$CONFIG_FILES libvncserver/Makefile" ;; ++ "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;; ++ "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; ++ "vncterm/Makefile") CONFIG_FILES="$CONFIG_FILES vncterm/Makefile" ;; ++ "classes/Makefile") CONFIG_FILES="$CONFIG_FILES classes/Makefile" ;; ++ "classes/ssl/Makefile") CONFIG_FILES="$CONFIG_FILES classes/ssl/Makefile" ;; ++ "libvncclient/Makefile") CONFIG_FILES="$CONFIG_FILES libvncclient/Makefile" ;; ++ "client_examples/Makefile") CONFIG_FILES="$CONFIG_FILES client_examples/Makefile" ;; ++ "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; ++ "libvncserver-config") CONFIG_FILES="$CONFIG_FILES libvncserver-config" ;; ++ "LibVNCServer.spec") CONFIG_FILES="$CONFIG_FILES LibVNCServer.spec" ;; ++ "chmod-libvncserver-config") CONFIG_COMMANDS="$CONFIG_COMMANDS chmod-libvncserver-config" ;; + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 ++echo "$as_me: error: invalid argument: $ac_config_target" >&2;} ++ { (exit 1); exit 1; }; };; ++ esac ++done + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif + +-#undef $ac_func ++# If the user did not use the arguments to specify the items to instantiate, ++# then the envvar interface is used. Set only those that are not. ++# We use the long form for the default assignment because of an extremely ++# bizarre bug on SunOS 4.1.3. ++if $ac_need_defaults; then ++ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files ++ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers ++ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands ++fi + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" ++# Have a temporary directory for convenience. Make it in the build tree ++# simply because there is no reason against having it here, and in addition, ++# creating and moving files from /tmp can sometimes cause problems. ++# Hook for its removal unless debugging. ++# Note that there is a small window in which the directory will not be cleaned: ++# after its creation but before its name has been assigned to `$tmp'. ++$debug || + { +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +-choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus ++ tmp= ++ trap 'exit_status=$? ++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ++' 0 ++ trap '{ (exit 1); exit 1; }' 1 2 13 15 + } +-#endif ++# Create a (secure) tmp directory for tmp files. + +-int +-main () + { +-return f != $ac_func; +- ; +- return 0; ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && ++ test -n "$tmp" && test -d "$tmp" ++} || ++{ ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") ++} || ++{ ++ echo "$me: cannot create a temporary directory in ." >&2 ++ { (exit 1); exit 1; } + } +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- eval "$as_ac_var=yes" +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +-if test `eval echo '${'$as_ac_var'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF ++# ++# Set up the sed scripts for CONFIG_FILES section. ++# ++ ++# No need to generate the scripts if there are no CONFIG_FILES. ++# This happens for instance when ./config.status config.h ++if test -n "$CONFIG_FILES"; then + +-fi +-done ++_ACEOF + +-# x11vnc only: +-if test "$build_x11vnc" = "yes"; then + + ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++SHELL!$SHELL$ac_delim ++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim ++PACKAGE_NAME!$PACKAGE_NAME$ac_delim ++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim ++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim ++PACKAGE_STRING!$PACKAGE_STRING$ac_delim ++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim ++exec_prefix!$exec_prefix$ac_delim ++prefix!$prefix$ac_delim ++program_transform_name!$program_transform_name$ac_delim ++bindir!$bindir$ac_delim ++sbindir!$sbindir$ac_delim ++libexecdir!$libexecdir$ac_delim ++datarootdir!$datarootdir$ac_delim ++datadir!$datadir$ac_delim ++sysconfdir!$sysconfdir$ac_delim ++sharedstatedir!$sharedstatedir$ac_delim ++localstatedir!$localstatedir$ac_delim ++includedir!$includedir$ac_delim ++oldincludedir!$oldincludedir$ac_delim ++docdir!$docdir$ac_delim ++infodir!$infodir$ac_delim ++htmldir!$htmldir$ac_delim ++dvidir!$dvidir$ac_delim ++pdfdir!$pdfdir$ac_delim ++psdir!$psdir$ac_delim ++libdir!$libdir$ac_delim ++localedir!$localedir$ac_delim ++mandir!$mandir$ac_delim ++DEFS!$DEFS$ac_delim ++ECHO_C!$ECHO_C$ac_delim ++ECHO_N!$ECHO_N$ac_delim ++ECHO_T!$ECHO_T$ac_delim ++LIBS!$LIBS$ac_delim ++build_alias!$build_alias$ac_delim ++host_alias!$host_alias$ac_delim ++target_alias!$target_alias$ac_delim ++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim ++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim ++INSTALL_DATA!$INSTALL_DATA$ac_delim ++am__isrc!$am__isrc$ac_delim ++CYGPATH_W!$CYGPATH_W$ac_delim ++PACKAGE!$PACKAGE$ac_delim ++VERSION!$VERSION$ac_delim ++ACLOCAL!$ACLOCAL$ac_delim ++AUTOCONF!$AUTOCONF$ac_delim ++AUTOMAKE!$AUTOMAKE$ac_delim ++AUTOHEADER!$AUTOHEADER$ac_delim ++MAKEINFO!$MAKEINFO$ac_delim ++install_sh!$install_sh$ac_delim ++STRIP!$STRIP$ac_delim ++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim ++mkdir_p!$mkdir_p$ac_delim ++AWK!$AWK$ac_delim ++SET_MAKE!$SET_MAKE$ac_delim ++am__leading_dot!$am__leading_dot$ac_delim ++AMTAR!$AMTAR$ac_delim ++am__tar!$am__tar$ac_delim ++am__untar!$am__untar$ac_delim ++CC!$CC$ac_delim ++CFLAGS!$CFLAGS$ac_delim ++LDFLAGS!$LDFLAGS$ac_delim ++CPPFLAGS!$CPPFLAGS$ac_delim ++ac_ct_CC!$ac_ct_CC$ac_delim ++EXEEXT!$EXEEXT$ac_delim ++OBJEXT!$OBJEXT$ac_delim ++DEPDIR!$DEPDIR$ac_delim ++am__include!$am__include$ac_delim ++am__quote!$am__quote$ac_delim ++AMDEP_TRUE!$AMDEP_TRUE$ac_delim ++AMDEP_FALSE!$AMDEP_FALSE$ac_delim ++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim ++CCDEPMODE!$CCDEPMODE$ac_delim ++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim ++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim ++LIBTOOL!$LIBTOOL$ac_delim ++build!$build$ac_delim ++build_cpu!$build_cpu$ac_delim ++build_vendor!$build_vendor$ac_delim ++build_os!$build_os$ac_delim ++host!$host$ac_delim ++host_cpu!$host_cpu$ac_delim ++host_vendor!$host_vendor$ac_delim ++host_os!$host_os$ac_delim ++SED!$SED$ac_delim ++GREP!$GREP$ac_delim ++EGREP!$EGREP$ac_delim ++FGREP!$FGREP$ac_delim ++LD!$LD$ac_delim ++DUMPBIN!$DUMPBIN$ac_delim ++ac_ct_DUMPBIN!$ac_ct_DUMPBIN$ac_delim ++NM!$NM$ac_delim ++LN_S!$LN_S$ac_delim ++AR!$AR$ac_delim ++RANLIB!$RANLIB$ac_delim ++lt_ECHO!$lt_ECHO$ac_delim ++DSYMUTIL!$DSYMUTIL$ac_delim ++_ACEOF + ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done + ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi + ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++CEOF$ac_eof ++_ACEOF + + ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++NMEDIT!$NMEDIT$ac_delim ++LIPO!$LIPO$ac_delim ++OTOOL!$OTOOL$ac_delim ++OTOOL64!$OTOOL64$ac_delim ++CPP!$CPP$ac_delim ++with_ffmpeg!$with_ffmpeg$ac_delim ++WITH_FFMPEG_TRUE!$WITH_FFMPEG_TRUE$ac_delim ++WITH_FFMPEG_FALSE!$WITH_FFMPEG_FALSE$ac_delim ++HAVE_MP3LAME_TRUE!$HAVE_MP3LAME_TRUE$ac_delim ++HAVE_MP3LAME_FALSE!$HAVE_MP3LAME_FALSE$ac_delim ++X_CFLAGS!$X_CFLAGS$ac_delim ++X_PRE_LIBS!$X_PRE_LIBS$ac_delim ++X_LIBS!$X_LIBS$ac_delim ++X_EXTRA_LIBS!$X_EXTRA_LIBS$ac_delim ++HAVE_X_TRUE!$HAVE_X_TRUE$ac_delim ++HAVE_X_FALSE!$HAVE_X_FALSE$ac_delim ++CRYPT_LIBS!$CRYPT_LIBS$ac_delim ++SSL_LIBS!$SSL_LIBS$ac_delim ++AVAHI_CFLAGS!$AVAHI_CFLAGS$ac_delim ++AVAHI_LIBS!$AVAHI_LIBS$ac_delim ++SYSTEM_LIBVNCSERVER_CFLAGS!$SYSTEM_LIBVNCSERVER_CFLAGS$ac_delim ++SYSTEM_LIBVNCSERVER_LIBS!$SYSTEM_LIBVNCSERVER_LIBS$ac_delim ++HAVE_SYSTEM_LIBVNCSERVER_TRUE!$HAVE_SYSTEM_LIBVNCSERVER_TRUE$ac_delim ++HAVE_SYSTEM_LIBVNCSERVER_FALSE!$HAVE_SYSTEM_LIBVNCSERVER_FALSE$ac_delim ++HAVE_LIBPTHREAD_TRUE!$HAVE_LIBPTHREAD_TRUE$ac_delim ++HAVE_LIBPTHREAD_FALSE!$HAVE_LIBPTHREAD_FALSE$ac_delim ++WITH_TIGHTVNC_FILETRANSFER_TRUE!$WITH_TIGHTVNC_FILETRANSFER_TRUE$ac_delim ++WITH_TIGHTVNC_FILETRANSFER_FALSE!$WITH_TIGHTVNC_FILETRANSFER_FALSE$ac_delim ++HAVE_LIBZ_TRUE!$HAVE_LIBZ_TRUE$ac_delim ++HAVE_LIBZ_FALSE!$HAVE_LIBZ_FALSE$ac_delim ++HAVE_LIBJPEG_TRUE!$HAVE_LIBJPEG_TRUE$ac_delim ++HAVE_LIBJPEG_FALSE!$HAVE_LIBJPEG_FALSE$ac_delim ++HAVE_LIBSDL_TRUE!$HAVE_LIBSDL_TRUE$ac_delim ++HAVE_LIBSDL_FALSE!$HAVE_LIBSDL_FALSE$ac_delim ++SDL_CFLAGS!$SDL_CFLAGS$ac_delim ++SDL_LIBS!$SDL_LIBS$ac_delim ++MINGW_TRUE!$MINGW_TRUE$ac_delim ++MINGW_FALSE!$MINGW_FALSE$ac_delim ++WSOCKLIB!$WSOCKLIB$ac_delim ++LIBOBJS!$LIBOBJS$ac_delim ++CYGIPC_TRUE!$CYGIPC_TRUE$ac_delim ++CYGIPC_FALSE!$CYGIPC_FALSE$ac_delim ++LINUX_TRUE!$LINUX_TRUE$ac_delim ++LINUX_FALSE!$LINUX_FALSE$ac_delim ++OSX_TRUE!$OSX_TRUE$ac_delim ++OSX_FALSE!$OSX_FALSE$ac_delim ++HAVE_RPM_TRUE!$HAVE_RPM_TRUE$ac_delim ++HAVE_RPM_FALSE!$HAVE_RPM_FALSE$ac_delim ++RPMSOURCEDIR!$RPMSOURCEDIR$ac_delim ++LTLIBOBJS!$LTLIBOBJS$ac_delim ++_ACEOF + ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 50; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done + ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi + ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++:end ++s/|#_!!_#|//g ++CEOF$ac_eof ++_ACEOF + + ++# VPATH may cause trouble with some makes, so we remove $(srcdir), ++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and ++# trailing colons and then remove the whole line if VPATH becomes empty ++# (actually we leave an empty line to preserve line numbers). ++if test "x$srcdir" = x.; then ++ ac_vpsub='/^[ ]*VPATH[ ]*=/{ ++s/:*\$(srcdir):*/:/ ++s/:*\${srcdir}:*/:/ ++s/:*@srcdir@:*/:/ ++s/^\([^=]*=[ ]*\):*/\1/ ++s/:*$// ++s/^[^=]*=[ ]*$// ++}' ++fi + ++cat >>$CONFIG_STATUS <<\_ACEOF ++fi # test -n "$CONFIG_FILES" + + +-for ac_func in setsid setpgrp getpwuid getpwnam getspnam getuid geteuid setuid setgid seteuid setegid initgroups waitpid setutxent grantpt ++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS + do +-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 ++echo "$as_me: error: Invalid tag $ac_tag." >&2;} ++ { (exit 1); exit 1; }; };; ++ :[FH]-) ac_tag=-:-;; ++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; ++ esac ++ ac_save_IFS=$IFS ++ IFS=: ++ set x $ac_tag ++ IFS=$ac_save_IFS ++ shift ++ ac_file=$1 ++ shift + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++ case $ac_mode in ++ :L) ac_source=$1;; ++ :[FH]) ++ ac_file_inputs= ++ for ac_f ++ do ++ case $ac_f in ++ -) ac_f="$tmp/stdin";; ++ *) # Look for the file first in the build tree, then in the source tree ++ # (if the path is not absolute). The absolute path cannot be DOS-style, ++ # because $ac_f cannot contain `:'. ++ test -f "$ac_f" || ++ case $ac_f in ++ [\\/$]*) false;; ++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; ++ esac || ++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 ++echo "$as_me: error: cannot find input file: $ac_f" >&2;} ++ { (exit 1); exit 1; }; };; ++ esac ++ ac_file_inputs="$ac_file_inputs $ac_f" ++ done + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++ # Let's still pretend it is `configure' which instantiates (i.e., don't ++ # use $as_me), people would be surprised to read: ++ # /* config.h. Generated by config.status. */ ++ configure_input="Generated from "`IFS=: ++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { echo "$as_me:$LINENO: creating $ac_file" >&5 ++echo "$as_me: creating $ac_file" >&6;} ++ fi + +-#undef $ac_func ++ case $ac_tag in ++ *:-:* | *:-) cat >"$tmp/stdin";; ++ esac ++ ;; ++ esac + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +-choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} +-#endif ++ ac_dir=`$as_dirname -- "$ac_file" || ++$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$ac_file" : 'X\(//\)[^/]' \| \ ++ X"$ac_file" : 'X\(//\)$' \| \ ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$ac_file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir="$ac_dir" ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } ++ ac_builddir=. + +-int +-main () +-{ +-return f != $ac_func; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- eval "$as_ac_var=yes" +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix + +-eval "$as_ac_var=no" +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +-if test `eval echo '${'$as_ac_var'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + +-fi +-done + +-fi ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # + +-# check, if shmget is in cygipc.a ++ case $INSTALL in ++ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; ++ esac ++ ac_MKDIR_P=$MKDIR_P ++ case $MKDIR_P in ++ [\\/$]* | ?:[\\/]* ) ;; ++ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; ++ esac ++_ACEOF + +-echo "$as_me:$LINENO: checking for shmget in -lcygipc" >&5 +-echo $ECHO_N "checking for shmget in -lcygipc... $ECHO_C" >&6 +-if test "${ac_cv_lib_cygipc_shmget+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lcygipc $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ ++cat >>$CONFIG_STATUS <<\_ACEOF ++# If the template does not know about datarootdir, expand it. ++# FIXME: This hack should be removed a few years after 2.60. ++ac_datarootdir_hack=; ac_datarootdir_seen= ++ ++case `sed -n '/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p ++' $ac_file_inputs` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++ ac_datarootdir_hack=' ++ s&@datadir@&$datadir&g ++ s&@docdir@&$docdir&g ++ s&@infodir@&$infodir&g ++ s&@localedir@&$localedir&g ++ s&@mandir@&$mandir&g ++ s&\\\${datarootdir}&$datarootdir&g' ;; ++esac + _ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shmget (); +-int +-main () +-{ +-shmget (); +- ; +- return 0; +-} ++# Neutralize VPATH when `$srcdir' = `.'. ++# Shell code in configure.ac might set extrasub. ++# FIXME: do we really want to maintain this feature? ++cat >>$CONFIG_STATUS <<_ACEOF ++ sed "$ac_vpsub ++$extrasub + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_cygipc_shmget=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++cat >>$CONFIG_STATUS <<\_ACEOF ++:t ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++s&@configure_input@&$configure_input&;t t ++s&@top_builddir@&$ac_top_builddir_sub&;t t ++s&@srcdir@&$ac_srcdir&;t t ++s&@abs_srcdir@&$ac_abs_srcdir&;t t ++s&@top_srcdir@&$ac_top_srcdir&;t t ++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t ++s&@builddir@&$ac_builddir&;t t ++s&@abs_builddir@&$ac_abs_builddir&;t t ++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t ++s&@INSTALL@&$ac_INSTALL&;t t ++s&@MKDIR_P@&$ac_MKDIR_P&;t t ++$ac_datarootdir_hack ++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out ++ ++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && ++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && ++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && ++ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&5 ++echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&2;} + +-ac_cv_lib_cygipc_shmget=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_cygipc_shmget" >&5 +-echo "${ECHO_T}$ac_cv_lib_cygipc_shmget" >&6 +-if test $ac_cv_lib_cygipc_shmget = yes; then +- cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBCYGIPC 1 ++ rm -f "$tmp/stdin" ++ case $ac_file in ++ -) cat "$tmp/out"; rm -f "$tmp/out";; ++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; ++ esac ++ ;; ++ :H) ++ # ++ # CONFIG_HEADER ++ # + _ACEOF + +- LIBS="-lcygipc $LIBS" ++# Transform confdefs.h into a sed script `conftest.defines', that ++# substitutes the proper values into config.h.in to produce config.h. ++rm -f conftest.defines conftest.tail ++# First, append a space to every undef/define line, to ease matching. ++echo 's/$/ /' >conftest.defines ++# Then, protect against being on the right side of a sed subst, or in ++# an unquoted here document, in config.status. If some macros were ++# called several times there might be several #defines for the same ++# symbol, which is useless. But do not sort them, since the last ++# AC_DEFINE must be honored. ++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* ++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where ++# NAME is the cpp macro being defined, VALUE is the value it is being given. ++# PARAMS is the parameter list in the macro definition--in most cases, it's ++# just an empty string. ++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ++ac_dB='\\)[ (].*,\\1define\\2' ++ac_dC=' ' ++ac_dD=' ,' + +-fi ++uniq confdefs.h | ++ sed -n ' ++ t rset ++ :rset ++ s/^[ ]*#[ ]*define[ ][ ]*// ++ t ok ++ d ++ :ok ++ s/[\\&,]/\\&/g ++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p ++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ++ ' >>conftest.defines ++ ++# Remove the space that was appended to ease matching. ++# Then replace #undef with comments. This is necessary, for ++# example, in the case of _POSIX_SOURCE, which is predefined and required ++# on some systems where configure will not decide to define it. ++# (The regexp can be short, since the line contains either #define or #undef.) ++echo 's/ $// ++s,^[ #]*u.*,/* & */,' >>conftest.defines ++ ++# Break up conftest.defines: ++ac_max_sed_lines=50 ++ ++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" ++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" ++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" ++# et cetera. ++ac_in='$ac_file_inputs' ++ac_out='"$tmp/out1"' ++ac_nxt='"$tmp/out2"' ++ ++while : ++do ++ # Write a here document: ++ cat >>$CONFIG_STATUS <<_ACEOF ++ # First, check the format of the line: ++ cat >"\$tmp/defines.sed" <<\\CEOF ++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def ++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def ++b ++:def ++_ACEOF ++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS ++ echo 'CEOF ++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in ++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail ++ grep . conftest.tail >/dev/null || break ++ rm -f conftest.defines ++ mv conftest.tail conftest.defines ++done ++rm -f conftest.defines conftest.tail ++ ++echo "ac_result=$ac_in" >>$CONFIG_STATUS ++cat >>$CONFIG_STATUS <<\_ACEOF ++ if test x"$ac_file" != x-; then ++ echo "/* $configure_input */" >"$tmp/config.h" ++ cat "$ac_result" >>"$tmp/config.h" ++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then ++ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 ++echo "$as_me: $ac_file is unchanged" >&6;} ++ else ++ rm -f $ac_file ++ mv "$tmp/config.h" $ac_file ++ fi ++ else ++ echo "/* $configure_input */" ++ cat "$ac_result" ++ fi ++ rm -f "$tmp/out12" ++# Compute $ac_file's index in $config_headers. ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $ac_file | $ac_file:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; ++ esac ++done ++echo "timestamp for $ac_file" >`$as_dirname -- $ac_file || ++$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X$ac_file : 'X\(//\)[^/]' \| \ ++ X$ac_file : 'X\(//\)$' \| \ ++ X$ac_file : 'X\(/\)' \| . 2>/dev/null || ++echo X$ac_file | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'`/stamp-h$_am_stamp_count ++ ;; + ++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 ++echo "$as_me: executing $ac_file commands" >&6;} ++ ;; ++ esac + + +-if test "$HAVE_CYGIPC" = "true"; then +- CYGIPC_TRUE= +- CYGIPC_FALSE='#' ++ case $ac_file$ac_mode in ++ "rfb/rfbconfig.h":C) ac_prefix_conf_OUT=`echo rfb/rfbconfig.h` ++ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e "y:abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:" -e "s/[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g"` ++ac_prefix_conf_PKG=`echo $PACKAGE` ++ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e "y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:"` ++ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e "y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:" -e "/^[0123456789]/s/^/_/"` ++ac_prefix_conf_INP=`echo _` ++if test "$ac_prefix_conf_INP" = "_"; then ++ for ac_file in : $CONFIG_HEADERS; do test "_$ac_file" = _: && continue ++ test -f "$ac_prefix_conf_INP" && continue ++ case $ac_file in ++ *.h) test -f $ac_file && ac_prefix_conf_INP=$ac_file ;; ++ *) ++ esac ++ done ++fi ++if test "$ac_prefix_conf_INP" = "_"; then ++ case "$ac_prefix_conf_OUT" in ++ */*) ac_prefix_conf_INP=`basename "$ac_prefix_conf_OUT"` ++ ;; ++ *-*) ac_prefix_conf_INP=`echo "$ac_prefix_conf_OUT" | sed -e "s/[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*-//"` ++ ;; ++ *) ac_prefix_conf_INP=config.h ++ ;; ++ esac ++fi ++if test -z "$ac_prefix_conf_PKG" ; then ++ { { echo "$as_me:$LINENO: error: no prefix for _PREFIX_PKG_CONFIG_H" >&5 ++echo "$as_me: error: no prefix for _PREFIX_PKG_CONFIG_H" >&2;} ++ { (exit 1); exit 1; }; } + else +- CYGIPC_TRUE='#' +- CYGIPC_FALSE= ++ if test ! -f "$ac_prefix_conf_INP" ; then if test -f "$srcdir/$ac_prefix_conf_INP" ; then ++ ac_prefix_conf_INP="$srcdir/$ac_prefix_conf_INP" ++ fi fi ++ { echo "$as_me:$LINENO: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&5 ++echo "$as_me: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&6;} ++ if test -f $ac_prefix_conf_INP ; then ++ echo "s/#undef *\\([ABCDEFGHIJKLMNOPQRSTUVWXYZ_]\\)/#undef $ac_prefix_conf_UPP""_\\1/" > conftest.prefix ++ # no! these are things like socklen_t, const, vfork ++ # echo "s/#undef *\\([m4_cr_letters]\\)/#undef $_LOW""_\\1/" >> _script ++ echo "s/#define *\\([ABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*\\)\\(.*\\)/#ifndef $ac_prefix_conf_UPP""_\\1 \\" >> conftest.prefix ++ echo "#define $ac_prefix_conf_UPP""_\\1 \\2 \\" >> conftest.prefix ++ echo "#endif/" >>conftest.prefix ++ # no! these are things like socklen_t, const, vfork ++ # echo "s/#def[]ine *\\([m4_cr_letters][_symbol]*\\)\\(.*\\)/#ifndef $_LOW""_\\1 \\" >> _script ++ # echo "#define $_LOW""_\\1 \\2 \\" >> _script ++ # echo "#endif/" >> _script ++ # now executing _script on _DEF input to create _OUT output file ++ echo "#ifndef $ac_prefix_conf_DEF" >$tmp/pconfig.h ++ echo "#define $ac_prefix_conf_DEF 1" >>$tmp/pconfig.h ++ echo ' ' >>$tmp/pconfig.h ++ echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$tmp/pconfig.h ++ ++ sed -f conftest.prefix $ac_prefix_conf_INP >>$tmp/pconfig.h ++ echo ' ' >>$tmp/pconfig.h ++ echo '/* once:' $ac_prefix_conf_DEF '*/' >>$tmp/pconfig.h ++ echo "#endif" >>$tmp/pconfig.h ++ if cmp -s $ac_prefix_conf_OUT $tmp/pconfig.h 2>/dev/null; then ++ { echo "$as_me:$LINENO: $ac_prefix_conf_OUT is unchanged" >&5 ++echo "$as_me: $ac_prefix_conf_OUT is unchanged" >&6;} ++ else ++ ac_dir=`$as_dirname -- "$ac_prefix_conf_OUT" || ++$as_expr X"$ac_prefix_conf_OUT" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$ac_prefix_conf_OUT" : 'X\(//\)[^/]' \| \ ++ X"$ac_prefix_conf_OUT" : 'X\(//\)$' \| \ ++ X"$ac_prefix_conf_OUT" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$ac_prefix_conf_OUT" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir="$ac_dir" ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } ++ rm -f "$ac_prefix_conf_OUT" ++ mv $tmp/pconfig.h "$ac_prefix_conf_OUT" ++ fi ++ cp conftest.prefix _configs.sed ++ else ++ { { echo "$as_me:$LINENO: error: input file $ac_prefix_conf_INP does not exist - skip generating $ac_prefix_conf_OUT" >&5 ++echo "$as_me: error: input file $ac_prefix_conf_INP does not exist - skip generating $ac_prefix_conf_OUT" >&2;} ++ { (exit 1); exit 1; }; } ++ fi ++ rm -f conftest.* + fi ++ ;; ++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do ++ # 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 ++ # 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. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then ++ dirpart=`$as_dirname -- "$mf" || ++$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$mf" : 'X\(//\)[^/]' \| \ ++ X"$mf" : 'X\(//\)$' \| \ ++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$mf" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # 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 ++ 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 ++ # Make sure the directory exists. ++ test -f "$dirpart/$file" && continue ++ fdir=`$as_dirname -- "$file" || ++$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$file" : 'X\(//\)[^/]' \| \ ++ X"$file" : 'X\(//\)$' \| \ ++ X"$file" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir=$dirpart/$fdir ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } ++ # echo "creating $dirpart/$file" ++ echo '# dummy' > "$dirpart/$file" ++ done ++done ++ ;; ++ "libtool":C) + ++ # See if we are running on zsh, and set the options which allow our ++ # commands through without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi + +-# Check if /dev/vcsa1 exists, if so, define LINUX ++ cfgfile="${ofile}T" ++ trap "$RM \"$cfgfile\"; exit 1" 1 2 15 ++ $RM "$cfgfile" + ++ cat <<_LT_EOF >> "$cfgfile" ++#! $SHELL + +-if test -c /dev/vcsa1; then +- LINUX_TRUE= +- LINUX_FALSE='#' +-else +- LINUX_TRUE='#' +- LINUX_FALSE= +-fi ++# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. ++# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++# NOTE: Changes made to this file will be lost: look at ltmain.sh. ++# ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, ++# 2006, 2007, 2008 Free Software Foundation, Inc. ++# Written by Gordon Matzigkeit, 1996 ++# ++# This file is part of GNU Libtool. ++# ++# GNU Libtool is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License as ++# published by the Free Software Foundation; either version 2 of ++# the License, or (at your option) any later version. ++# ++# As a special exception to the GNU General Public License, ++# if you distribute this file as part of a program or library that ++# is built using GNU Libtool, you may include this file under the ++# same distribution terms that you use for the rest of that program. ++# ++# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy ++# can be downloaded from http://www.gnu.org/licenses/gpl.html, or ++# obtained by writing to the Free Software Foundation, Inc., ++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +-# Check for OS X specific header +-if test "${ac_cv_header_ApplicationServices_ApplicationServices_h+set}" = set; then +- echo "$as_me:$LINENO: checking for ApplicationServices/ApplicationServices.h" >&5 +-echo $ECHO_N "checking for ApplicationServices/ApplicationServices.h... $ECHO_C" >&6 +-if test "${ac_cv_header_ApplicationServices_ApplicationServices_h+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-fi +-echo "$as_me:$LINENO: result: $ac_cv_header_ApplicationServices_ApplicationServices_h" >&5 +-echo "${ECHO_T}$ac_cv_header_ApplicationServices_ApplicationServices_h" >&6 +-else +- # Is the header compilable? +-echo "$as_me:$LINENO: checking ApplicationServices/ApplicationServices.h usability" >&5 +-echo $ECHO_N "checking ApplicationServices/ApplicationServices.h usability... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_header_compiler=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# The names of the tagged configurations supported by this script. ++available_tags="" + +-ac_header_compiler=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++# ### BEGIN LIBTOOL CONFIG + +-# Is the header present? +-echo "$as_me:$LINENO: checking ApplicationServices/ApplicationServices.h presence" >&5 +-echo $ECHO_N "checking ApplicationServices/ApplicationServices.h presence... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# Which release of libtool.m4 was used? ++macro_version=$macro_version ++macro_revision=$macro_revision + +- ac_header_preproc=no +-fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared + +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: section \"Present But Cannot Be Compiled\"" >&5 +-echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: section \"Present But Cannot Be Compiled\"" >&2;} +- { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: ApplicationServices/ApplicationServices.h: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: ApplicationServices/ApplicationServices.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ----------------------------------------------------------- ## +-## Report this to http://sourceforge.net/projects/libvncserver ## +-## ----------------------------------------------------------- ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-echo "$as_me:$LINENO: checking for ApplicationServices/ApplicationServices.h" >&5 +-echo $ECHO_N "checking for ApplicationServices/ApplicationServices.h... $ECHO_C" >&6 +-if test "${ac_cv_header_ApplicationServices_ApplicationServices_h+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_header_ApplicationServices_ApplicationServices_h=$ac_header_preproc +-fi +-echo "$as_me:$LINENO: result: $ac_cv_header_ApplicationServices_ApplicationServices_h" >&5 +-echo "${ECHO_T}$ac_cv_header_ApplicationServices_ApplicationServices_h" >&6 ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# What type of objects to build. ++pic_mode=$pic_mode + +-fi +-if test $ac_cv_header_ApplicationServices_ApplicationServices_h = yes; then +- HAVE_OSX="true" +-fi ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install + ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os + ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os + ++# A sed program that does not truncate output. ++SED=$lt_SED + +-if test "$HAVE_OSX" = "true"; then +- OSX_TRUE= +- OSX_FALSE='#' +-else +- OSX_TRUE='#' +- OSX_FALSE= +-fi ++# Sed that helps us avoid accidentally triggering echo(1) options like -n. ++Xsed="\$SED -e 1s/^X//" + ++# A grep program that handles long lines. ++GREP=$lt_GREP + +-# On Solaris 2.7, write() returns ENOENT when it really means EAGAIN ++# An ERE matcher. ++EGREP=$lt_EGREP + ++# A literal string matcher. ++FGREP=$lt_FGREP + +-case `(uname -sr) 2>/dev/null` in +- "SunOS 5.7") +- cat >>confdefs.h <<\_ACEOF +-#define ENOENT_WORKAROUND 1 +-_ACEOF ++# A BSD- or MS-compatible name lister. ++NM=$lt_NM + +- ;; +-esac ++# Whether we need soft or hard links. ++LN_S=$lt_LN_S + +-# Check for rpm SOURCES path +-printf "checking for rpm sources path... " +-RPMSOURCEDIR="NOT-FOUND" +-for directory in packages OpenLinux redhat RedHat rpm RPM "" ; do +- if test -d /usr/src/${directory}/SOURCES; then +- RPMSOURCEDIR="/usr/src/${directory}/SOURCES/" +- fi +-done +-echo "$RPMSOURCEDIR" ++# What is the maximum length of a command? ++max_cmd_len=$max_cmd_len + ++# Object file suffix (normally "o"). ++objext=$ac_objext + +-if test "$RPMSOURCEDIR" != "NOT-FOUND"; then +- HAVE_RPM_TRUE= +- HAVE_RPM_FALSE='#' +-else +- HAVE_RPM_TRUE='#' +- HAVE_RPM_FALSE= +-fi ++# Executable file suffix (normally ""). ++exeext=$exeext + ++# whether the shell understands "unset". ++lt_unset=$lt_unset + ++# turn spaces into newlines. ++SP2NL=$lt_lt_SP2NL + +- ac_config_files="$ac_config_files Makefile libvncserver/Makefile contrib/Makefile examples/Makefile vncterm/Makefile classes/Makefile classes/ssl/Makefile libvncclient/Makefile client_examples/Makefile test/Makefile libvncserver-config LibVNCServer.spec" ++# turn newlines into spaces. ++NL2SP=$lt_lt_NL2SP + +-# x11vnc only: +-if test "$build_x11vnc" = "yes"; then +- ac_config_files="$ac_config_files x11vnc/Makefile x11vnc/misc/Makefile" ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds + +-fi ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method + +- ac_config_commands="$ac_config_commands chmod-libvncserver-config" ++# Command to use when deplibs_check_method == "file_magic". ++file_magic_cmd=$lt_file_magic_cmd + +-cat >confcache <<\_ACEOF +-# This file is a shell script that caches the results of configure +-# tests run on this system so they can be shared between configure +-# scripts and configure runs, see configure's option --config-cache. +-# It is not useful on other systems. If it contains results you don't +-# want to keep, you may remove or edit it. +-# +-# config.status only pays attention to the cache file if you give it +-# the --recheck option to rerun configure. +-# +-# `ac_cv_env_foo' variables (set or unset) will be overridden when +-# loading this file, other *unset* `ac_cv_foo' will be assigned the +-# following values. ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS + +-_ACEOF ++# A symbol stripping program. ++STRIP=$lt_STRIP + +-# The following way of writing the cache mishandles newlines in values, +-# but we know of no workaround that is simple, portable, and efficient. +-# So, don't put newlines in cache variables' values. +-# Ultrix sh set writes to stderr and can't be redirected directly, +-# and sets the high bit in the cache file unless we assign to the vars. +-{ +- (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) +- # `set' does not quote correctly, so add quotes (double-quote +- # substitution turns \\\\ into \\, and sed turns \\ into \). +- sed -n \ +- "s/'/'\\\\''/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" +- ;; +- *) +- # `set' quotes correctly as required by POSIX, so do not add quotes. +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" +- ;; +- esac; +-} | +- sed ' +- t clear +- : clear +- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ +- t end +- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ +- : end' >>confcache +-if diff $cache_file confcache >/dev/null 2>&1; then :; else +- if test -w $cache_file; then +- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" +- cat confcache >$cache_file +- else +- echo "not updating unwritable cache $cache_file" +- fi +-fi +-rm -f confcache ++# Commands used to install an old-style archive. ++RANLIB=$lt_RANLIB ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds + +-test "x$prefix" = xNONE && prefix=$ac_default_prefix +-# Let make expand exec_prefix. +-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' ++# A C compiler. ++LTCC=$lt_CC + +-# VPATH may cause trouble with some makes, so we remove $(srcdir), +-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +-# trailing colons and then remove the whole line if VPATH becomes empty +-# (actually we leave an empty line to preserve line numbers). +-if test "x$srcdir" = x.; then +- ac_vpsub='/^[ ]*VPATH[ ]*=/{ +-s/:*\$(srcdir):*/:/; +-s/:*\${srcdir}:*/:/; +-s/:*@srcdir@:*/:/; +-s/^\([^=]*=[ ]*\):*/\1/; +-s/:*$//; +-s/^[^=]*=[ ]*$//; +-}' +-fi ++# LTCC compiler flags. ++LTCFLAGS=$lt_CFLAGS + +-DEFS=-DHAVE_CONFIG_H ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +-ac_libobjs= +-ac_ltlibobjs= +-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue +- # 1. Remove the extension, and $U if already installed. +- ac_i=`echo "$ac_i" | +- sed 's/\$U\././;s/\.o$//;s/\.obj$//'` +- # 2. Add them. +- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" +- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +-done +-LIBOBJS=$ac_libobjs ++# Transform the output of nm in a proper C declaration. ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +-LTLIBOBJS=$ac_ltlibobjs ++# Transform the output of nm in a C name address pair. ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + ++# Transform the output of nm in a C name address pair when lib prefix is needed. ++global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"AMDEP\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${WITH_FFMPEG_TRUE}" && test -z "${WITH_FFMPEG_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"WITH_FFMPEG\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"WITH_FFMPEG\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${HAVE_MP3LAME_TRUE}" && test -z "${HAVE_MP3LAME_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"HAVE_MP3LAME\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"HAVE_MP3LAME\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${HAVE_X_TRUE}" && test -z "${HAVE_X_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"HAVE_X\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"HAVE_X\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${HAVE_SYSTEM_LIBVNCSERVER_TRUE}" && test -z "${HAVE_SYSTEM_LIBVNCSERVER_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"HAVE_SYSTEM_LIBVNCSERVER\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"HAVE_SYSTEM_LIBVNCSERVER\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${HAVE_LIBPTHREAD_TRUE}" && test -z "${HAVE_LIBPTHREAD_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBPTHREAD\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"HAVE_LIBPTHREAD\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${WITH_TIGHTVNC_FILETRANSFER_TRUE}" && test -z "${WITH_TIGHTVNC_FILETRANSFER_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"WITH_TIGHTVNC_FILETRANSFER\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"WITH_TIGHTVNC_FILETRANSFER\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${HAVE_LIBZ_TRUE}" && test -z "${HAVE_LIBZ_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBZ\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"HAVE_LIBZ\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${HAVE_LIBJPEG_TRUE}" && test -z "${HAVE_LIBJPEG_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBJPEG\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"HAVE_LIBJPEG\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${HAVE_LIBSDL_TRUE}" && test -z "${HAVE_LIBSDL_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBSDL\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"HAVE_LIBSDL\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${MINGW_TRUE}" && test -z "${MINGW_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"MINGW\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"MINGW\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${CYGIPC_TRUE}" && test -z "${CYGIPC_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"CYGIPC\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"CYGIPC\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${LINUX_TRUE}" && test -z "${LINUX_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"LINUX\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"LINUX\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${OSX_TRUE}" && test -z "${OSX_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"OSX\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"OSX\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${HAVE_RPM_TRUE}" && test -z "${HAVE_RPM_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"HAVE_RPM\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"HAVE_RPM\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# An echo program that does not interpret backslashes. ++ECHO=$lt_ECHO + +-: ${CONFIG_STATUS=./config.status} +-ac_clean_files_save=$ac_clean_files +-ac_clean_files="$ac_clean_files $CONFIG_STATUS" +-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +-echo "$as_me: creating $CONFIG_STATUS" >&6;} +-cat >$CONFIG_STATUS <<_ACEOF +-#! $SHELL +-# Generated by $as_me. +-# Run this file to recreate the current configuration. +-# Compiler output produced by configure, useful for debugging +-# configure, is in config.log if it exists. ++# Used to examine libraries when file_magic_cmd begins with "file". ++MAGIC_CMD=$MAGIC_CMD + +-debug=false +-ac_cs_recheck=false +-ac_cs_silent=false +-SHELL=\${CONFIG_SHELL-$SHELL} +-_ACEOF ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks + +-cat >>$CONFIG_STATUS <<\_ACEOF +-## --------------------- ## +-## M4sh Initialization. ## +-## --------------------- ## ++# Tool to manipulate archived DWARF debug symbol files on Mac OS X. ++DSYMUTIL=$lt_DSYMUTIL + +-# Be Bourne compatible +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which +- # is contrary to our usage. Disable this feature. +- alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix +-fi +-DUALCASE=1; export DUALCASE # for MKS sh ++# Tool to change global to local symbols on Mac OS X. ++NMEDIT=$lt_NMEDIT + +-# Support unset when possible. +-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +- as_unset=unset +-else +- as_unset=false +-fi ++# Tool to manipulate fat objects and archives on Mac OS X. ++LIPO=$lt_LIPO + ++# ldd/readelf like tool for Mach-O binaries on Mac OS X. ++OTOOL=$lt_OTOOL + +-# Work around bugs in pre-3.0 UWIN ksh. +-$as_unset ENV MAIL MAILPATH +-PS1='$ ' +-PS2='> ' +-PS4='+ ' ++# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. ++OTOOL64=$lt_OTOOL64 + +-# NLS nuisances. +-for as_var in \ +- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ +- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ +- LC_TELEPHONE LC_TIME +-do +- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then +- eval $as_var=C; export $as_var +- else +- $as_unset $as_var +- fi +-done ++# Old archive suffix (normally "a"). ++libext=$libext + +-# Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi ++# Shared library suffix (normally ".so"). ++shrext_cmds=$lt_shrext_cmds + +-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +- as_basename=basename +-else +- as_basename=false +-fi ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds + ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at link time. ++variables_saved_for_relink=$lt_variables_saved_for_relink + +-# Name of the executable. +-as_me=`$as_basename "$0" || +-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ +- X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++# Do we need the "lib" prefix for modules? ++need_lib_prefix=$need_lib_prefix + ++# Do we need a version for libraries? ++need_version=$need_version + +-# PATH needs CR, and LINENO needs CR and PATH. +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits ++# Library versioning type. ++version_type=$version_type + +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh +-fi ++# Shared library runtime path variable. ++runpath_var=$runpath_var + ++# Shared library path variable. ++shlibpath_var=$shlibpath_var + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- case $0 in +- *[\\/]* ) as_myself=$0 ;; +- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +- ;; +- esac +- # We did not find ourselves, most probably we were run as `sh COMMAND' +- # in which case we are not to be found in the path. +- if test "x$as_myself" = x; then +- as_myself=$0 +- fi +- if test ! -f "$as_myself"; then +- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in +- /*) +- if ("$as_dir/$as_base" -c ' +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++# Format of library name prefix. ++libname_spec=$lt_libname_spec + +- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO +- # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. +- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | +- sed ' +- N +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, +- t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, +- ' >$as_me.lineno && +- chmod +x $as_me.lineno || +- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} +- { (exit 1); exit 1; }; } ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME ++library_names_spec=$lt_library_names_spec + +- # Don't try to exec as it changes $[0], causing all sort of problems +- # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensible to this). +- . ./$as_me.lineno +- # Exit status is that of the last command. +- exit +-} ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec + ++# Command to use after installation of a shared archive. ++postinstall_cmds=$lt_postinstall_cmds + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +-esac ++# Command to use after uninstallation of a shared archive. ++postuninstall_cmds=$lt_postuninstall_cmds + +-if expr a : '\(a\)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds + +-rm -f conf$$ conf$$.exe conf$$.file +-echo >conf$$.file +-if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links +- as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi +-elif ln conf$$.file conf$$ 2>/dev/null; then +- as_ln_s=ln +-else +- as_ln_s='cp -p' +-fi +-rm -f conf$$ conf$$.exe conf$$.file ++# As "finish_cmds", except a single script fragment to be evaled but ++# not shown. ++finish_eval=$lt_finish_eval + +-if mkdir -p . 2>/dev/null; then +- as_mkdir_p=: +-else +- test -d ./-p && rmdir ./-p +- as_mkdir_p=false +-fi ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs + +-as_executable_p="test -f" ++# Compile-time system search path for libraries. ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +-# Sed expression to map a string onto a valid CPP name. +-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++# Run-time system search path for libraries. ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +-# Sed expression to map a string onto a valid variable name. +-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen + ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static + +-# CDPATH. +-$as_unset CDPATH ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib + +-exec 6>&1 + +-# Open the log real soon, to keep \$[0] and so on meaningful, and to +-# report actual input values of CONFIG_FILES etc. instead of their +-# values after options handling. Logging --version etc. is OK. +-exec 5>>config.log +-{ +- echo +- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +-## Running $as_me. ## +-_ASBOX +-} >&5 +-cat >&5 <<_CSEOF ++# The linker used to build libraries. ++LD=$lt_LD + +-This file was extended by LibVNCServer $as_me 0.9.1, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++# Commands used to build an old-style archive. ++old_archive_cmds=$lt_old_archive_cmds + +- CONFIG_FILES = $CONFIG_FILES +- CONFIG_HEADERS = $CONFIG_HEADERS +- CONFIG_LINKS = $CONFIG_LINKS +- CONFIG_COMMANDS = $CONFIG_COMMANDS +- $ $0 $@ ++# A language specific compiler. ++CC=$lt_compiler + +-_CSEOF +-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +-echo >&5 +-_ACEOF ++# Is the compiler the GNU compiler? ++with_gcc=$GCC + +-# Files that config.status was made for. +-if test -n "$ac_config_files"; then +- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +-fi ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +-if test -n "$ac_config_headers"; then +- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +-fi ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl + +-if test -n "$ac_config_links"; then +- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +-fi ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic + +-if test -n "$ac_config_commands"; then +- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +-fi ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static + +-cat >>$CONFIG_STATUS <<\_ACEOF ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +-ac_cs_usage="\ +-\`$as_me' instantiates files from templates according to the +-current configuration. ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc + +-Usage: $0 [OPTIONS] [FILE]... ++# Whether or not to disallow shared libs when runtime libs are static. ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +- -h, --help print this help, then exit +- -V, --version print version number, then exit +- -q, --quiet do not print progress messages +- -d, --debug don't remove temporary files +- --recheck update $as_me by reconfiguring in the same conditions +- --file=FILE[:TEMPLATE] +- instantiate the configuration file FILE +- --header=FILE[:TEMPLATE] +- instantiate the configuration header FILE ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +-Configuration files: +-$config_files ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec ++ ++# Whether the compiler copes with passing no objects directly. ++compiler_needs_object=$lt_compiler_needs_object ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +-Configuration headers: +-$config_headers ++# Commands used to build a shared archive. ++archive_cmds=$lt_archive_cmds ++archive_expsym_cmds=$lt_archive_expsym_cmds + +-Configuration commands: +-$config_commands ++# Commands used to build a loadable module if different from building ++# a shared archive. ++module_cmds=$lt_module_cmds ++module_expsym_cmds=$lt_module_expsym_cmds + +-Report bugs to ." +-_ACEOF ++# Whether we are building with GNU ld or not. ++with_gnu_ld=$lt_with_gnu_ld + +-cat >>$CONFIG_STATUS <<_ACEOF +-ac_cs_version="\\ +-LibVNCServer config.status 0.9.1 +-configured by $0, generated by GNU Autoconf 2.59, +- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag + +-Copyright (C) 2003 Free Software Foundation, Inc. +-This config.status script is free software; the Free Software Foundation +-gives unlimited permission to copy, distribute and modify it." +-srcdir=$srcdir +-INSTALL="$INSTALL" +-_ACEOF ++# Flag that enforces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag + +-cat >>$CONFIG_STATUS <<\_ACEOF +-# If no file are specified by the user, then we need to provide default +-# value. By we need to know if files were specified by the user. +-ac_need_defaults=: +-while test $# != 0 +-do +- case $1 in +- --*=*) +- ac_option=`expr "x$1" : 'x\([^=]*\)='` +- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` +- ac_shift=: +- ;; +- -*) +- ac_option=$1 +- ac_optarg=$2 +- ac_shift=shift +- ;; +- *) # This is not an option, so the user has probably given explicit +- # arguments. +- ac_option=$1 +- ac_need_defaults=false;; +- esac ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +- case $ac_option in +- # Handling of the options. +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) +- ac_cs_recheck=: ;; +- --version | --vers* | -V ) +- echo "$ac_cs_version"; exit 0 ;; +- --he | --h) +- # Conflict between --help and --header +- { { echo "$as_me:$LINENO: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; };; +- --help | --hel | -h ) +- echo "$ac_cs_usage"; exit 0 ;; +- --debug | --d* | -d ) +- debug=: ;; +- --file | --fil | --fi | --f ) +- $ac_shift +- CONFIG_FILES="$CONFIG_FILES $ac_optarg" +- ac_need_defaults=false;; +- --header | --heade | --head | --hea ) +- $ac_shift +- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" +- ac_need_defaults=false;; +- -q | -quiet | --quiet | --quie | --qui | --qu | --q \ +- | -silent | --silent | --silen | --sile | --sil | --si | --s) +- ac_cs_silent=: ;; ++# If ld is used when linking, flag to hardcode \$libdir into a binary ++# during linking. This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +- # This is an error. +- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; } ;; ++# Whether we need a single "-rpath" flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator + +- *) ac_config_targets="$ac_config_targets $1" ;; ++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes ++# DIR into the resulting binary. ++hardcode_direct=$hardcode_direct + +- esac +- shift +-done ++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes ++# DIR into the resulting binary and the resulting library dependency is ++# "absolute",i.e impossible to change by setting \${shlibpath_var} if the ++# library is relocated. ++hardcode_direct_absolute=$hardcode_direct_absolute + +-ac_configure_extra_args= ++# Set to "yes" if using the -LDIR flag during linking hardcodes DIR ++# into the resulting binary. ++hardcode_minus_L=$hardcode_minus_L + +-if $ac_cs_silent; then +- exec 6>/dev/null +- ac_configure_extra_args="$ac_configure_extra_args --silent" +-fi ++# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR ++# into the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var + +-_ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +-if \$ac_cs_recheck; then +- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 +- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +-fi ++# Set to "yes" if building a shared library automatically hardcodes DIR ++# into the library and all subsequent libraries and executables linked ++# against it. ++hardcode_automatic=$hardcode_automatic + +-_ACEOF ++# Set to yes if linker adds runtime paths of dependent libraries ++# to runtime path list. ++inherit_rpath=$inherit_rpath + +-cat >>$CONFIG_STATUS <<_ACEOF +-# +-# INIT-COMMANDS section. +-# ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs + +-PACKAGE="$PACKAGE" +-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path + +-_ACEOF ++# Set to "yes" if exported symbols are required. ++always_export_symbols=$always_export_symbols + ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds + ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms + +-cat >>$CONFIG_STATUS <<\_ACEOF +-for ac_config_target in $ac_config_targets +-do +- case "$ac_config_target" in +- # Handling of arguments. +- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; +- "libvncserver/Makefile" ) CONFIG_FILES="$CONFIG_FILES libvncserver/Makefile" ;; +- "contrib/Makefile" ) CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;; +- "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; +- "vncterm/Makefile" ) CONFIG_FILES="$CONFIG_FILES vncterm/Makefile" ;; +- "classes/Makefile" ) CONFIG_FILES="$CONFIG_FILES classes/Makefile" ;; +- "classes/ssl/Makefile" ) CONFIG_FILES="$CONFIG_FILES classes/ssl/Makefile" ;; +- "libvncclient/Makefile" ) CONFIG_FILES="$CONFIG_FILES libvncclient/Makefile" ;; +- "client_examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES client_examples/Makefile" ;; +- "test/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; +- "libvncserver-config" ) CONFIG_FILES="$CONFIG_FILES libvncserver-config" ;; +- "LibVNCServer.spec" ) CONFIG_FILES="$CONFIG_FILES LibVNCServer.spec" ;; +- "x11vnc/Makefile" ) CONFIG_FILES="$CONFIG_FILES x11vnc/Makefile" ;; +- "x11vnc/misc/Makefile" ) CONFIG_FILES="$CONFIG_FILES x11vnc/misc/Makefile" ;; +- "rfb/rfbconfig.h" ) CONFIG_COMMANDS="$CONFIG_COMMANDS rfb/rfbconfig.h" ;; +- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; +- "chmod-libvncserver-config" ) CONFIG_COMMANDS="$CONFIG_COMMANDS chmod-libvncserver-config" ;; +- "rfbconfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS rfbconfig.h" ;; +- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +-echo "$as_me: error: invalid argument: $ac_config_target" >&2;} +- { (exit 1); exit 1; }; };; +- esac +-done ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms + +-# If the user did not use the arguments to specify the items to instantiate, +-# then the envvar interface is used. Set only those that are not. +-# We use the long form for the default assignment because of an extremely +-# bizarre bug on SunOS 4.1.3. +-if $ac_need_defaults; then +- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +-fi ++# Commands necessary for linking programs (against libraries) with templates. ++prelink_cmds=$lt_prelink_cmds + +-# Have a temporary directory for convenience. Make it in the build tree +-# simply because there is no reason to put it here, and in addition, +-# creating and moving files from /tmp can sometimes cause problems. +-# Create a temporary directory, and hook for its removal unless debugging. +-$debug || +-{ +- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 +- trap '{ (exit 1); exit 1; }' 1 2 13 15 +-} ++# Specify filename containing input files. ++file_list_spec=$lt_file_list_spec + +-# Create a (secure) tmp directory for tmp files. ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action + +-{ +- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && +- test -n "$tmp" && test -d "$tmp" +-} || +-{ +- tmp=./confstat$$-$RANDOM +- (umask 077 && mkdir $tmp) +-} || +-{ +- echo "$me: cannot create a temporary directory in ." >&2 +- { (exit 1); exit 1; } +-} ++# ### END LIBTOOL CONFIG + +-_ACEOF ++_LT_EOF + +-cat >>$CONFIG_STATUS <<_ACEOF ++ case $host_os in ++ aix3*) ++ cat <<\_LT_EOF >> "$cfgfile" ++# AIX sometimes has problems with the GCC collect2 program. For some ++# reason, if we set the COLLECT_NAMES environment variable, the problems ++# vanish in a puff of smoke. ++if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++fi ++_LT_EOF ++ ;; ++ esac + +-# +-# CONFIG_FILES section. +-# + +-# No need to generate the scripts if there are no CONFIG_FILES. +-# This happens for instance when ./config.status config.h +-if test -n "\$CONFIG_FILES"; then +- # Protect against being on the right side of a sed subst in config.status. +- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; +- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +-s,@SHELL@,$SHELL,;t t +-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +-s,@exec_prefix@,$exec_prefix,;t t +-s,@prefix@,$prefix,;t t +-s,@program_transform_name@,$program_transform_name,;t t +-s,@bindir@,$bindir,;t t +-s,@sbindir@,$sbindir,;t t +-s,@libexecdir@,$libexecdir,;t t +-s,@datadir@,$datadir,;t t +-s,@sysconfdir@,$sysconfdir,;t t +-s,@sharedstatedir@,$sharedstatedir,;t t +-s,@localstatedir@,$localstatedir,;t t +-s,@libdir@,$libdir,;t t +-s,@includedir@,$includedir,;t t +-s,@oldincludedir@,$oldincludedir,;t t +-s,@infodir@,$infodir,;t t +-s,@mandir@,$mandir,;t t +-s,@build_alias@,$build_alias,;t t +-s,@host_alias@,$host_alias,;t t +-s,@target_alias@,$target_alias,;t t +-s,@DEFS@,$DEFS,;t t +-s,@ECHO_C@,$ECHO_C,;t t +-s,@ECHO_N@,$ECHO_N,;t t +-s,@ECHO_T@,$ECHO_T,;t t +-s,@LIBS@,$LIBS,;t t +-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +-s,@INSTALL_DATA@,$INSTALL_DATA,;t t +-s,@CYGPATH_W@,$CYGPATH_W,;t t +-s,@PACKAGE@,$PACKAGE,;t t +-s,@VERSION@,$VERSION,;t t +-s,@ACLOCAL@,$ACLOCAL,;t t +-s,@AUTOCONF@,$AUTOCONF,;t t +-s,@AUTOMAKE@,$AUTOMAKE,;t t +-s,@AUTOHEADER@,$AUTOHEADER,;t t +-s,@MAKEINFO@,$MAKEINFO,;t t +-s,@install_sh@,$install_sh,;t t +-s,@STRIP@,$STRIP,;t t +-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +-s,@mkdir_p@,$mkdir_p,;t t +-s,@AWK@,$AWK,;t t +-s,@SET_MAKE@,$SET_MAKE,;t t +-s,@am__leading_dot@,$am__leading_dot,;t t +-s,@AMTAR@,$AMTAR,;t t +-s,@am__tar@,$am__tar,;t t +-s,@am__untar@,$am__untar,;t t +-s,@CC@,$CC,;t t +-s,@CFLAGS@,$CFLAGS,;t t +-s,@LDFLAGS@,$LDFLAGS,;t t +-s,@CPPFLAGS@,$CPPFLAGS,;t t +-s,@ac_ct_CC@,$ac_ct_CC,;t t +-s,@EXEEXT@,$EXEEXT,;t t +-s,@OBJEXT@,$OBJEXT,;t t +-s,@DEPDIR@,$DEPDIR,;t t +-s,@am__include@,$am__include,;t t +-s,@am__quote@,$am__quote,;t t +-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +-s,@CCDEPMODE@,$CCDEPMODE,;t t +-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +-s,@build@,$build,;t t +-s,@build_cpu@,$build_cpu,;t t +-s,@build_vendor@,$build_vendor,;t t +-s,@build_os@,$build_os,;t t +-s,@host@,$host,;t t +-s,@host_cpu@,$host_cpu,;t t +-s,@host_vendor@,$host_vendor,;t t +-s,@host_os@,$host_os,;t t +-s,@EGREP@,$EGREP,;t t +-s,@LN_S@,$LN_S,;t t +-s,@ECHO@,$ECHO,;t t +-s,@AR@,$AR,;t t +-s,@ac_ct_AR@,$ac_ct_AR,;t t +-s,@RANLIB@,$RANLIB,;t t +-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +-s,@CPP@,$CPP,;t t +-s,@CXX@,$CXX,;t t +-s,@CXXFLAGS@,$CXXFLAGS,;t t +-s,@ac_ct_CXX@,$ac_ct_CXX,;t t +-s,@CXXDEPMODE@,$CXXDEPMODE,;t t +-s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +-s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +-s,@CXXCPP@,$CXXCPP,;t t +-s,@F77@,$F77,;t t +-s,@FFLAGS@,$FFLAGS,;t t +-s,@ac_ct_F77@,$ac_ct_F77,;t t +-s,@LIBTOOL@,$LIBTOOL,;t t +-s,@with_ffmpeg@,$with_ffmpeg,;t t +-s,@WITH_FFMPEG_TRUE@,$WITH_FFMPEG_TRUE,;t t +-s,@WITH_FFMPEG_FALSE@,$WITH_FFMPEG_FALSE,;t t +-s,@HAVE_MP3LAME_TRUE@,$HAVE_MP3LAME_TRUE,;t t +-s,@HAVE_MP3LAME_FALSE@,$HAVE_MP3LAME_FALSE,;t t +-s,@X_CFLAGS@,$X_CFLAGS,;t t +-s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t +-s,@X_LIBS@,$X_LIBS,;t t +-s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t +-s,@HAVE_X_TRUE@,$HAVE_X_TRUE,;t t +-s,@HAVE_X_FALSE@,$HAVE_X_FALSE,;t t +-s,@CRYPT_LIBS@,$CRYPT_LIBS,;t t +-s,@SSL_LIBS@,$SSL_LIBS,;t t +-s,@AVAHI_CFLAGS@,$AVAHI_CFLAGS,;t t +-s,@AVAHI_LIBS@,$AVAHI_LIBS,;t t +-s,@SYSTEM_LIBVNCSERVER_CFLAGS@,$SYSTEM_LIBVNCSERVER_CFLAGS,;t t +-s,@SYSTEM_LIBVNCSERVER_LIBS@,$SYSTEM_LIBVNCSERVER_LIBS,;t t +-s,@HAVE_SYSTEM_LIBVNCSERVER_TRUE@,$HAVE_SYSTEM_LIBVNCSERVER_TRUE,;t t +-s,@HAVE_SYSTEM_LIBVNCSERVER_FALSE@,$HAVE_SYSTEM_LIBVNCSERVER_FALSE,;t t +-s,@HAVE_LIBPTHREAD_TRUE@,$HAVE_LIBPTHREAD_TRUE,;t t +-s,@HAVE_LIBPTHREAD_FALSE@,$HAVE_LIBPTHREAD_FALSE,;t t +-s,@WITH_TIGHTVNC_FILETRANSFER_TRUE@,$WITH_TIGHTVNC_FILETRANSFER_TRUE,;t t +-s,@WITH_TIGHTVNC_FILETRANSFER_FALSE@,$WITH_TIGHTVNC_FILETRANSFER_FALSE,;t t +-s,@HAVE_LIBZ_TRUE@,$HAVE_LIBZ_TRUE,;t t +-s,@HAVE_LIBZ_FALSE@,$HAVE_LIBZ_FALSE,;t t +-s,@HAVE_LIBJPEG_TRUE@,$HAVE_LIBJPEG_TRUE,;t t +-s,@HAVE_LIBJPEG_FALSE@,$HAVE_LIBJPEG_FALSE,;t t +-s,@HAVE_LIBSDL_TRUE@,$HAVE_LIBSDL_TRUE,;t t +-s,@HAVE_LIBSDL_FALSE@,$HAVE_LIBSDL_FALSE,;t t +-s,@SDL_CFLAGS@,$SDL_CFLAGS,;t t +-s,@SDL_LIBS@,$SDL_LIBS,;t t +-s,@MINGW_TRUE@,$MINGW_TRUE,;t t +-s,@MINGW_FALSE@,$MINGW_FALSE,;t t +-s,@WSOCKLIB@,$WSOCKLIB,;t t +-s,@LIBOBJS@,$LIBOBJS,;t t +-s,@CYGIPC_TRUE@,$CYGIPC_TRUE,;t t +-s,@CYGIPC_FALSE@,$CYGIPC_FALSE,;t t +-s,@LINUX_TRUE@,$LINUX_TRUE,;t t +-s,@LINUX_FALSE@,$LINUX_FALSE,;t t +-s,@OSX_TRUE@,$OSX_TRUE,;t t +-s,@OSX_FALSE@,$OSX_FALSE,;t t +-s,@HAVE_RPM_TRUE@,$HAVE_RPM_TRUE,;t t +-s,@HAVE_RPM_FALSE@,$HAVE_RPM_FALSE,;t t +-s,@RPMSOURCEDIR@,$RPMSOURCEDIR,;t t +-s,@LTLIBOBJS@,$LTLIBOBJS,;t t +-CEOF +- +-_ACEOF +- +- cat >>$CONFIG_STATUS <<\_ACEOF +- # Split the substitutions into bite-sized pieces for seds with +- # small command number limits, like on Digital OSF/1 and HP-UX. +- ac_max_sed_lines=48 +- ac_sed_frag=1 # Number of current file. +- ac_beg=1 # First line for current file. +- ac_end=$ac_max_sed_lines # Line after last line for current file. +- ac_more_lines=: +- ac_sed_cmds= +- while $ac_more_lines; do +- if test $ac_beg -gt 1; then +- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- else +- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- fi +- if test ! -s $tmp/subs.frag; then +- ac_more_lines=false +- else +- # The purpose of the label and of the branching condition is to +- # speed up the sed processing (if there are no `@' at all, there +- # is no need to browse any of the substitutions). +- # These are the two extra sed commands mentioned above. +- (echo ':t +- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" +- else +- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" +- fi +- ac_sed_frag=`expr $ac_sed_frag + 1` +- ac_beg=$ac_end +- ac_end=`expr $ac_end + $ac_max_sed_lines` +- fi +- done +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds=cat +- fi +-fi # test -n "$CONFIG_FILES" ++ltmain="$ac_aux_dir/ltmain.sh" + +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; +- esac + +- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. +- ac_dir=`(dirname "$ac_file") 2>/dev/null || +-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } ++ # We use sed instead of cat because bash on DJGPP gets confused if ++ # if finds mixed CR/LF and LF-only lines. Since sed operates in ++ # text mode, it properly converts lines to CR/LF. This bash problem ++ # is reportedly fixed, but why not run on old versions too? ++ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) + +- ac_builddir=. ++ case $xsi_shell in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" + +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++} + +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac ++# func_basename file ++func_basename () ++{ ++ func_basename_result="${1##*/}" ++} + +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac ++# func_dirname_and_basename file append nondir_replacement ++# perform func_basename and func_dirname in a single function ++# call: ++# dirname: Compute the dirname of FILE. If nonempty, ++# add APPEND to the result, otherwise set result ++# to NONDIR_REPLACEMENT. ++# value returned in "$func_dirname_result" ++# basename: Compute filename of FILE. ++# value retuned in "$func_basename_result" ++# Implementation must be kept synchronized with func_dirname ++# and func_basename. For efficiency, we do not delegate to ++# those functions but instead duplicate the functionality here. ++func_dirname_and_basename () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++ func_basename_result="${1##*/}" ++} + ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++func_stripname () ++{ ++ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are ++ # positional parameters, so assign one to ordinary parameter first. ++ func_stripname_result=${3} ++ func_stripname_result=${func_stripname_result#"${1}"} ++ func_stripname_result=${func_stripname_result%"${2}"} ++} + +- case $INSTALL in +- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; +- *) ac_INSTALL=$ac_top_builddir$INSTALL ;; ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=${1%%=*} ++ func_opt_split_arg=${1#*=} ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ case ${1} in ++ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; ++ *) func_lo2o_result=${1} ;; + esac ++} + +- if test x"$ac_file" != x-; then +- { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- rm -f "$ac_file" +- fi +- # Let's still pretend it is `configure' which instantiates (i.e., don't +- # use $as_me), people would be surprised to read: +- # /* config.h. Generated by config.status. */ +- if test x"$ac_file" = x-; then +- configure_input= +- else +- configure_input="$ac_file. " +- fi +- configure_input=$configure_input"Generated from `echo $ac_file_in | +- sed 's,.*/,,'` by configure." ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=${1%.*}.lo ++} + +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +-_ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +- sed "$ac_vpsub +-$extrasub +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +-:t +-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +-s,@configure_input@,$configure_input,;t t +-s,@srcdir@,$ac_srcdir,;t t +-s,@abs_srcdir@,$ac_abs_srcdir,;t t +-s,@top_srcdir@,$ac_top_srcdir,;t t +-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +-s,@builddir@,$ac_builddir,;t t +-s,@abs_builddir@,$ac_abs_builddir,;t t +-s,@top_builddir@,$ac_top_builddir,;t t +-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +-s,@INSTALL@,$ac_INSTALL,;t t +-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out +- rm -f $tmp/stdin +- if test x"$ac_file" != x-; then +- mv $tmp/out $ac_file +- else +- cat $tmp/out +- rm -f $tmp/out +- fi ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=$(( $* )) ++} + +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=${#1} ++} + +-# +-# CONFIG_HEADER section. +-# ++_LT_EOF ++ ;; ++ *) # Bourne compatible functions. ++ cat << \_LT_EOF >> "$cfgfile" + +-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +-# NAME is the cpp macro being defined and VALUE is the value it is being given. +-# +-# ac_d sets the value in "#define NAME VALUE" lines. +-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +-ac_dB='[ ].*$,\1#\2' +-ac_dC=' ' +-ac_dD=',;t' +-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +-ac_uB='$,\1#\2define\3' +-ac_uC=' ' +-ac_uD=',;t' ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ # Extract subdirectory from the argument. ++ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` ++ if test "X$func_dirname_result" = "X${1}"; then ++ func_dirname_result="${3}" ++ else ++ func_dirname_result="$func_dirname_result${2}" ++ fi ++} + +-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; +- esac ++# func_basename file ++func_basename () ++{ ++ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` ++} + +- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} + +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- # Do quote $f, to prevent DOS paths from being IFS'd. +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +- # Remove the trailing spaces. +- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++# func_strip_suffix prefix name ++func_stripname () ++{ ++ case ${2} in ++ .*) func_stripname_result=`$ECHO "X${3}" \ ++ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; ++ *) func_stripname_result=`$ECHO "X${3}" \ ++ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; ++ esac ++} + +-_ACEOF ++# sed scripts: ++my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' ++my_sed_long_arg='1s/^-[^=]*=//' + +-# Transform confdefs.h into two sed scripts, `conftest.defines' and +-# `conftest.undefs', that substitutes the proper values into +-# config.h.in to produce config.h. The first handles `#define' +-# templates, and the second `#undef' templates. +-# And first: Protect against being on the right side of a sed subst in +-# config.status. Protect against being in an unquoted here document +-# in config.status. +-rm -f conftest.defines conftest.undefs +-# Using a here document instead of a string reduces the quoting nightmare. +-# Putting comments in sed scripts is not portable. +-# +-# `end' is used to avoid that the second main sed command (meant for +-# 0-ary CPP macros) applies to n-ary macro definitions. +-# See the Autoconf documentation for `clear'. +-cat >confdef2sed.sed <<\_ACEOF +-s/[\\&,]/\\&/g +-s,[\\$`],\\&,g +-t clear +-: clear +-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +-t end +-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +-: end +-_ACEOF +-# If some macros were called several times there might be several times +-# the same #defines, which is useless. Nevertheless, we may not want to +-# sort them, since we want the *last* AC-DEFINE to be honored. +-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +-rm -f confdef2sed.sed ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` ++ func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` ++} + +-# This sed command replaces #undef with comments. This is necessary, for +-# example, in the case of _POSIX_SOURCE, which is predefined and required +-# on some systems where configure will not decide to define it. +-cat >>conftest.undefs <<\_ACEOF +-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +-_ACEOF ++# func_lo2o object ++func_lo2o () ++{ ++ func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` ++} + +-# Break up conftest.defines because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +-echo ' :' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.defines >/dev/null +-do +- # Write a limited-size here document to $tmp/defines.sed. +- echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#define' lines. +- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS +- echo 'CEOF +- sed -f $tmp/defines.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail +- rm -f conftest.defines +- mv conftest.tail conftest.defines +-done +-rm -f conftest.defines +-echo ' fi # grep' >>$CONFIG_STATUS +-echo >>$CONFIG_STATUS +- +-# Break up conftest.undefs because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.undefs >/dev/null +-do +- # Write a limited-size here document to $tmp/undefs.sed. +- echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#undef' +- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS +- echo 'CEOF +- sed -f $tmp/undefs.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail +- rm -f conftest.undefs +- mv conftest.tail conftest.undefs +-done +-rm -f conftest.undefs ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` ++} + +-cat >>$CONFIG_STATUS <<\_ACEOF +- # Let's still pretend it is `configure' which instantiates (i.e., don't +- # use $as_me), people would be surprised to read: +- # /* config.h. Generated by config.status. */ +- if test x"$ac_file" = x-; then +- echo "/* Generated by configure. */" >$tmp/config.h +- else +- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h +- fi +- cat $tmp/in >>$tmp/config.h +- rm -f $tmp/in +- if test x"$ac_file" != x-; then +- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then +- { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +-echo "$as_me: $ac_file is unchanged" >&6;} +- else +- ac_dir=`(dirname "$ac_file") 2>/dev/null || +-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=`expr "$@"` ++} + +- rm -f $ac_file +- mv $tmp/config.h $ac_file +- fi +- else +- cat $tmp/config.h +- rm -f $tmp/config.h +- fi +-# Compute $ac_file's index in $config_headers. +-_am_stamp_count=1 +-for _am_header in $config_headers :; do +- case $_am_header in +- $ac_file | $ac_file:* ) +- break ;; +- * ) +- _am_stamp_count=`expr $_am_stamp_count + 1` ;; +- esac +-done +-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +-$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X$ac_file : 'X\(//\)[^/]' \| \ +- X$ac_file : 'X\(//\)$' \| \ +- X$ac_file : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X$ac_file | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'`/stamp-h$_am_stamp_count +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` ++} + +-# +-# CONFIG_COMMANDS section. +-# +-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue +- ac_dest=`echo "$ac_file" | sed 's,:.*,,'` +- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_dir=`(dirname "$ac_dest") 2>/dev/null || +-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_dest" : 'X\(//\)[^/]' \| \ +- X"$ac_dest" : 'X\(//\)$' \| \ +- X"$ac_dest" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_dest" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } ++_LT_EOF ++esac + +- ac_builddir=. ++case $lt_shell_append in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" + +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$1+=\$2" ++} ++_LT_EOF ++ ;; ++ *) ++ cat << \_LT_EOF >> "$cfgfile" + +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$1=\$$1\$2" ++} + +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac ++_LT_EOF ++ ;; ++ esac + + +- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +-echo "$as_me: executing $ac_dest commands" >&6;} +- case $ac_dest in +- rfb/rfbconfig.h ) ac_prefix_conf_OUT=`echo rfb/rfbconfig.h` +-ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e "y:abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:" -e "s/[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g"` +-ac_prefix_conf_PKG=`echo $PACKAGE` +-ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e "y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:"` +-ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e "y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:" -e "/^[0123456789]/s/^/_/"` +-ac_prefix_conf_INP=`echo _` +-if test "$ac_prefix_conf_INP" = "_"; then +- for ac_file in : $CONFIG_HEADERS; do test "_$ac_file" = _: && continue +- test -f "$ac_prefix_conf_INP" && continue +- case $ac_file in +- *.h) test -f $ac_file && ac_prefix_conf_INP=$ac_file ;; +- *) +- esac +- done +-fi +-if test "$ac_prefix_conf_INP" = "_"; then +- case "$ac_prefix_conf_OUT" in +- */*) ac_prefix_conf_INP=`basename "$ac_prefix_conf_OUT"` +- ;; +- *-*) ac_prefix_conf_INP=`echo "$ac_prefix_conf_OUT" | sed -e "s/[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*-//"` +- ;; +- *) ac_prefix_conf_INP=config.h +- ;; +- esac +-fi +-if test -z "$ac_prefix_conf_PKG" ; then +- { { echo "$as_me:$LINENO: error: no prefix for _PREFIX_PKG_CONFIG_H" >&5 +-echo "$as_me: error: no prefix for _PREFIX_PKG_CONFIG_H" >&2;} +- { (exit 1); exit 1; }; } +-else +- if test ! -f "$ac_prefix_conf_INP" ; then if test -f "$srcdir/$ac_prefix_conf_INP" ; then +- ac_prefix_conf_INP="$srcdir/$ac_prefix_conf_INP" +- fi fi +- { echo "$as_me:$LINENO: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&5 +-echo "$as_me: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&6;} +- if test -f $ac_prefix_conf_INP ; then +- echo "s/#undef *\\([ABCDEFGHIJKLMNOPQRSTUVWXYZ_]\\)/#undef $ac_prefix_conf_UPP""_\\1/" > conftest.prefix +- # no! these are things like socklen_t, const, vfork +- # echo "s/#undef *\\([m4_cr_letters]\\)/#undef $_LOW""_\\1/" >> _script +- echo "s/#define *\\([ABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*\\)\\(.*\\)/#ifndef $ac_prefix_conf_UPP""_\\1 \\" >> conftest.prefix +- echo "#define $ac_prefix_conf_UPP""_\\1 \\2 \\" >> conftest.prefix +- echo "#endif/" >>conftest.prefix +- # no! these are things like socklen_t, const, vfork +- # echo "s/#def[]ine *\\([m4_cr_letters][_symbol]*\\)\\(.*\\)/#ifndef $_LOW""_\\1 \\" >> _script +- # echo "#define $_LOW""_\\1 \\2 \\" >> _script +- # echo "#endif/" >> _script +- # now executing _script on _DEF input to create _OUT output file +- echo "#ifndef $ac_prefix_conf_DEF" >$tmp/pconfig.h +- echo "#define $ac_prefix_conf_DEF 1" >>$tmp/pconfig.h +- echo ' ' >>$tmp/pconfig.h +- echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$tmp/pconfig.h ++ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) + +- sed -f conftest.prefix $ac_prefix_conf_INP >>$tmp/pconfig.h +- echo ' ' >>$tmp/pconfig.h +- echo '/* once:' $ac_prefix_conf_DEF '*/' >>$tmp/pconfig.h +- echo "#endif" >>$tmp/pconfig.h +- if cmp -s $ac_prefix_conf_OUT $tmp/pconfig.h 2>/dev/null; then +- { echo "$as_me:$LINENO: $ac_prefix_conf_OUT is unchanged" >&5 +-echo "$as_me: $ac_prefix_conf_OUT is unchanged" >&6;} +- else +- ac_dir=`(dirname "$ac_prefix_conf_OUT") 2>/dev/null || +-$as_expr X"$ac_prefix_conf_OUT" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_prefix_conf_OUT" : 'X\(//\)[^/]' \| \ +- X"$ac_prefix_conf_OUT" : 'X\(//\)$' \| \ +- X"$ac_prefix_conf_OUT" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_prefix_conf_OUT" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } ++ mv -f "$cfgfile" "$ofile" || ++ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") ++ chmod +x "$ofile" + +- rm -f "$ac_prefix_conf_OUT" +- mv $tmp/pconfig.h "$ac_prefix_conf_OUT" +- fi +- cp conftest.prefix _configs.sed +- else +- { { echo "$as_me:$LINENO: error: input file $ac_prefix_conf_INP does not exist - skip generating $ac_prefix_conf_OUT" >&5 +-echo "$as_me: error: input file $ac_prefix_conf_INP does not exist - skip generating $ac_prefix_conf_OUT" >&2;} +- { (exit 1); exit 1; }; } +- fi +- rm -f conftest.* +-fi + ;; +- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do +- # 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 +- # 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. +- # So let's grep whole file. +- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then +- dirpart=`(dirname "$mf") 2>/dev/null || +-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$mf" : 'X\(//\)[^/]' \| \ +- X"$mf" : 'X\(//\)$' \| \ +- X"$mf" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$mf" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- else +- continue +- fi +- # Extract the definition of DEPDIR, am__include, and am__quote +- # 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 +- 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 +- # Make sure the directory exists. +- test -f "$dirpart/$file" && continue +- fdir=`(dirname "$file") 2>/dev/null || +-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$file" : 'X\(//\)[^/]' \| \ +- X"$file" : 'X\(//\)$' \| \ +- X"$file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p $dirpart/$fdir +- else +- as_dir=$dirpart/$fdir +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} +- { (exit 1); exit 1; }; }; } ++ "chmod-libvncserver-config":C) chmod a+x libvncserver-config ;; + +- # echo "creating $dirpart/$file" +- echo '# dummy' > "$dirpart/$file" +- done +-done +- ;; +- chmod-libvncserver-config ) chmod a+x libvncserver-config ;; + esac +-done +-_ACEOF ++done # for ac_tag + +-cat >>$CONFIG_STATUS <<\_ACEOF + + { (exit 0); exit 0; } + _ACEOF +diff -Nur LibVNCServer-0.9.1.orig/contrib/Makefile.in LibVNCServer-0.9.1/contrib/Makefile.in +--- LibVNCServer-0.9.1.orig/contrib/Makefile.in 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/contrib/Makefile.in 2008-10-31 18:46:26.000000000 -0200 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.9.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004, 2005 Free Software Foundation, Inc. ++# 2003, 2004, 2005, 2006 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. +@@ -14,17 +14,11 @@ + + @SET_MAKE@ + +-SOURCES = $(zippy_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -54,25 +48,24 @@ + zippy_OBJECTS = $(am_zippy_OBJECTS) + zippy_LDADD = $(LDADD) + zippy_DEPENDENCIES = ../libvncserver/libvncserver.la +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ + depcomp = $(SHELL) $(top_srcdir)/depcomp + am__depfiles_maybe = depfiles + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ +- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +- $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + CCLD = $(CC) +-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ + SOURCES = $(zippy_SOURCES) + DIST_SOURCES = $(zippy_SOURCES) + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -87,57 +80,38 @@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CRYPT_LIBS = @CRYPT_LIBS@ +-CXX = @CXX@ +-CXXCPP = @CXXCPP@ +-CXXDEPMODE = @CXXDEPMODE@ +-CXXFLAGS = @CXXFLAGS@ +-CYGIPC_FALSE = @CYGIPC_FALSE@ +-CYGIPC_TRUE = @CYGIPC_TRUE@ + CYGPATH_W = @CYGPATH_W@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-ECHO = @ECHO@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ +-F77 = @F77@ +-FFLAGS = @FFLAGS@ +-HAVE_LIBJPEG_FALSE = @HAVE_LIBJPEG_FALSE@ +-HAVE_LIBJPEG_TRUE = @HAVE_LIBJPEG_TRUE@ +-HAVE_LIBPTHREAD_FALSE = @HAVE_LIBPTHREAD_FALSE@ +-HAVE_LIBPTHREAD_TRUE = @HAVE_LIBPTHREAD_TRUE@ +-HAVE_LIBSDL_FALSE = @HAVE_LIBSDL_FALSE@ +-HAVE_LIBSDL_TRUE = @HAVE_LIBSDL_TRUE@ +-HAVE_LIBZ_FALSE = @HAVE_LIBZ_FALSE@ +-HAVE_LIBZ_TRUE = @HAVE_LIBZ_TRUE@ +-HAVE_MP3LAME_FALSE = @HAVE_MP3LAME_FALSE@ +-HAVE_MP3LAME_TRUE = @HAVE_MP3LAME_TRUE@ +-HAVE_RPM_FALSE = @HAVE_RPM_FALSE@ +-HAVE_RPM_TRUE = @HAVE_RPM_TRUE@ +-HAVE_SYSTEM_LIBVNCSERVER_FALSE = @HAVE_SYSTEM_LIBVNCSERVER_FALSE@ +-HAVE_SYSTEM_LIBVNCSERVER_TRUE = @HAVE_SYSTEM_LIBVNCSERVER_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++FGREP = @FGREP@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ +-LINUX_FALSE = @LINUX_FALSE@ +-LINUX_TRUE = @LINUX_TRUE@ ++LIPO = @LIPO@ + LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MINGW_FALSE = @MINGW_FALSE@ +-MINGW_TRUE = @MINGW_TRUE@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ + OBJEXT = @OBJEXT@ +-OSX_FALSE = @OSX_FALSE@ +-OSX_TRUE = @OSX_TRUE@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ +@@ -149,6 +123,7 @@ + RPMSOURCEDIR = @RPMSOURCEDIR@ + SDL_CFLAGS = @SDL_CFLAGS@ + SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + SSL_LIBS = @SSL_LIBS@ +@@ -156,25 +131,17 @@ + SYSTEM_LIBVNCSERVER_CFLAGS = @SYSTEM_LIBVNCSERVER_CFLAGS@ + SYSTEM_LIBVNCSERVER_LIBS = @SYSTEM_LIBVNCSERVER_LIBS@ + VERSION = @VERSION@ +-WITH_FFMPEG_FALSE = @WITH_FFMPEG_FALSE@ +-WITH_FFMPEG_TRUE = @WITH_FFMPEG_TRUE@ +-WITH_TIGHTVNC_FILETRANSFER_FALSE = @WITH_TIGHTVNC_FILETRANSFER_FALSE@ +-WITH_TIGHTVNC_FILETRANSFER_TRUE = @WITH_TIGHTVNC_FILETRANSFER_TRUE@ + WSOCKLIB = @WSOCKLIB@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_F77 = @ac_ct_F77@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ +@@ -186,28 +153,40 @@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + with_ffmpeg = @with_ffmpeg@ + AM_CFLAGS = -I $(top_srcdir) + LDADD = ../libvncserver/libvncserver.la @WSOCKLIB@ +@@ -225,9 +204,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu contrib/Makefile ++ $(AUTOMAKE) --foreign contrib/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -254,7 +233,7 @@ + done + zippy$(EXEEXT): $(zippy_OBJECTS) $(zippy_DEPENDENCIES) + @rm -f zippy$(EXEEXT) +- $(LINK) $(zippy_LDFLAGS) $(zippy_OBJECTS) $(zippy_LDADD) $(LIBS) ++ $(LINK) $(zippy_OBJECTS) $(zippy_LDADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -265,22 +244,22 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zippy.Po@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@@ -291,10 +270,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -344,22 +319,21 @@ + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -407,7 +381,7 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + +@@ -421,12 +395,20 @@ + + install-data-am: + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -447,19 +429,22 @@ + + ps-am: + +-uninstall-am: uninstall-info-am ++uninstall-am: ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ +- install install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am install-man \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ +- pdf pdf-am ps ps-am tags uninstall uninstall-am \ +- uninstall-info-am ++ pdf pdf-am ps ps-am tags uninstall uninstall-am + + # 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 -Nur LibVNCServer-0.9.1.orig/examples/Makefile.in LibVNCServer-0.9.1/examples/Makefile.in +--- LibVNCServer-0.9.1.orig/examples/Makefile.in 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/examples/Makefile.in 2008-10-31 18:46:27.000000000 -0200 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.9.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004, 2005 Free Software Foundation, Inc. ++# 2003, 2004, 2005, 2006 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. +@@ -15,17 +15,11 @@ + @SET_MAKE@ + + +-SOURCES = backchannel.c blooptest.c camera.c colourmaptest.c example.c filetransfer.c fontsel.c mac.c pnmshow.c pnmshow24.c regiontest.c rotate.c simple.c simple15.c storepasswd.c vncev.c +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -92,6 +86,9 @@ + mac_OBJECTS = mac.$(OBJEXT) + mac_LDADD = $(LDADD) + mac_DEPENDENCIES = ../libvncserver/libvncserver.la ++mac_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(mac_LDFLAGS) \ ++ $(LDFLAGS) -o $@ + pnmshow_SOURCES = pnmshow.c + pnmshow_OBJECTS = pnmshow.$(OBJEXT) + pnmshow_LDADD = $(LDADD) +@@ -124,17 +121,18 @@ + vncev_OBJECTS = vncev.$(OBJEXT) + vncev_LDADD = $(LDADD) + vncev_DEPENDENCIES = ../libvncserver/libvncserver.la +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ + depcomp = $(SHELL) $(top_srcdir)/depcomp + am__depfiles_maybe = depfiles + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ +- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +- $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + CCLD = $(CC) +-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ + SOURCES = backchannel.c blooptest.c camera.c colourmaptest.c example.c \ + filetransfer.c fontsel.c mac.c pnmshow.c pnmshow24.c \ + regiontest.c rotate.c simple.c simple15.c storepasswd.c \ +@@ -148,8 +146,6 @@ + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -164,57 +160,38 @@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CRYPT_LIBS = @CRYPT_LIBS@ +-CXX = @CXX@ +-CXXCPP = @CXXCPP@ +-CXXDEPMODE = @CXXDEPMODE@ +-CXXFLAGS = @CXXFLAGS@ +-CYGIPC_FALSE = @CYGIPC_FALSE@ +-CYGIPC_TRUE = @CYGIPC_TRUE@ + CYGPATH_W = @CYGPATH_W@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-ECHO = @ECHO@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ +-F77 = @F77@ +-FFLAGS = @FFLAGS@ +-HAVE_LIBJPEG_FALSE = @HAVE_LIBJPEG_FALSE@ +-HAVE_LIBJPEG_TRUE = @HAVE_LIBJPEG_TRUE@ +-HAVE_LIBPTHREAD_FALSE = @HAVE_LIBPTHREAD_FALSE@ +-HAVE_LIBPTHREAD_TRUE = @HAVE_LIBPTHREAD_TRUE@ +-HAVE_LIBSDL_FALSE = @HAVE_LIBSDL_FALSE@ +-HAVE_LIBSDL_TRUE = @HAVE_LIBSDL_TRUE@ +-HAVE_LIBZ_FALSE = @HAVE_LIBZ_FALSE@ +-HAVE_LIBZ_TRUE = @HAVE_LIBZ_TRUE@ +-HAVE_MP3LAME_FALSE = @HAVE_MP3LAME_FALSE@ +-HAVE_MP3LAME_TRUE = @HAVE_MP3LAME_TRUE@ +-HAVE_RPM_FALSE = @HAVE_RPM_FALSE@ +-HAVE_RPM_TRUE = @HAVE_RPM_TRUE@ +-HAVE_SYSTEM_LIBVNCSERVER_FALSE = @HAVE_SYSTEM_LIBVNCSERVER_FALSE@ +-HAVE_SYSTEM_LIBVNCSERVER_TRUE = @HAVE_SYSTEM_LIBVNCSERVER_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++FGREP = @FGREP@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ +-LINUX_FALSE = @LINUX_FALSE@ +-LINUX_TRUE = @LINUX_TRUE@ ++LIPO = @LIPO@ + LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MINGW_FALSE = @MINGW_FALSE@ +-MINGW_TRUE = @MINGW_TRUE@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ + OBJEXT = @OBJEXT@ +-OSX_FALSE = @OSX_FALSE@ +-OSX_TRUE = @OSX_TRUE@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ +@@ -226,6 +203,7 @@ + RPMSOURCEDIR = @RPMSOURCEDIR@ + SDL_CFLAGS = @SDL_CFLAGS@ + SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + SSL_LIBS = @SSL_LIBS@ +@@ -233,25 +211,17 @@ + SYSTEM_LIBVNCSERVER_CFLAGS = @SYSTEM_LIBVNCSERVER_CFLAGS@ + SYSTEM_LIBVNCSERVER_LIBS = @SYSTEM_LIBVNCSERVER_LIBS@ + VERSION = @VERSION@ +-WITH_FFMPEG_FALSE = @WITH_FFMPEG_FALSE@ +-WITH_FFMPEG_TRUE = @WITH_FFMPEG_TRUE@ +-WITH_TIGHTVNC_FILETRANSFER_FALSE = @WITH_TIGHTVNC_FILETRANSFER_FALSE@ +-WITH_TIGHTVNC_FILETRANSFER_TRUE = @WITH_TIGHTVNC_FILETRANSFER_TRUE@ + WSOCKLIB = @WSOCKLIB@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_F77 = @ac_ct_F77@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ +@@ -263,28 +233,40 @@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + with_ffmpeg = @with_ffmpeg@ + AM_CFLAGS = -I $(top_srcdir) -g -Wall + LDADD = ../libvncserver/libvncserver.la @WSOCKLIB@ +@@ -306,9 +288,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign examples/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu examples/Makefile ++ $(AUTOMAKE) --foreign examples/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -335,52 +317,52 @@ + done + backchannel$(EXEEXT): $(backchannel_OBJECTS) $(backchannel_DEPENDENCIES) + @rm -f backchannel$(EXEEXT) +- $(LINK) $(backchannel_LDFLAGS) $(backchannel_OBJECTS) $(backchannel_LDADD) $(LIBS) ++ $(LINK) $(backchannel_OBJECTS) $(backchannel_LDADD) $(LIBS) + blooptest$(EXEEXT): $(blooptest_OBJECTS) $(blooptest_DEPENDENCIES) + @rm -f blooptest$(EXEEXT) +- $(LINK) $(blooptest_LDFLAGS) $(blooptest_OBJECTS) $(blooptest_LDADD) $(LIBS) ++ $(LINK) $(blooptest_OBJECTS) $(blooptest_LDADD) $(LIBS) + camera$(EXEEXT): $(camera_OBJECTS) $(camera_DEPENDENCIES) + @rm -f camera$(EXEEXT) +- $(LINK) $(camera_LDFLAGS) $(camera_OBJECTS) $(camera_LDADD) $(LIBS) ++ $(LINK) $(camera_OBJECTS) $(camera_LDADD) $(LIBS) + colourmaptest$(EXEEXT): $(colourmaptest_OBJECTS) $(colourmaptest_DEPENDENCIES) + @rm -f colourmaptest$(EXEEXT) +- $(LINK) $(colourmaptest_LDFLAGS) $(colourmaptest_OBJECTS) $(colourmaptest_LDADD) $(LIBS) ++ $(LINK) $(colourmaptest_OBJECTS) $(colourmaptest_LDADD) $(LIBS) + example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES) + @rm -f example$(EXEEXT) +- $(LINK) $(example_LDFLAGS) $(example_OBJECTS) $(example_LDADD) $(LIBS) ++ $(LINK) $(example_OBJECTS) $(example_LDADD) $(LIBS) + filetransfer$(EXEEXT): $(filetransfer_OBJECTS) $(filetransfer_DEPENDENCIES) + @rm -f filetransfer$(EXEEXT) +- $(LINK) $(filetransfer_LDFLAGS) $(filetransfer_OBJECTS) $(filetransfer_LDADD) $(LIBS) ++ $(LINK) $(filetransfer_OBJECTS) $(filetransfer_LDADD) $(LIBS) + fontsel$(EXEEXT): $(fontsel_OBJECTS) $(fontsel_DEPENDENCIES) + @rm -f fontsel$(EXEEXT) +- $(LINK) $(fontsel_LDFLAGS) $(fontsel_OBJECTS) $(fontsel_LDADD) $(LIBS) ++ $(LINK) $(fontsel_OBJECTS) $(fontsel_LDADD) $(LIBS) + mac$(EXEEXT): $(mac_OBJECTS) $(mac_DEPENDENCIES) + @rm -f mac$(EXEEXT) +- $(LINK) $(mac_LDFLAGS) $(mac_OBJECTS) $(mac_LDADD) $(LIBS) ++ $(mac_LINK) $(mac_OBJECTS) $(mac_LDADD) $(LIBS) + pnmshow$(EXEEXT): $(pnmshow_OBJECTS) $(pnmshow_DEPENDENCIES) + @rm -f pnmshow$(EXEEXT) +- $(LINK) $(pnmshow_LDFLAGS) $(pnmshow_OBJECTS) $(pnmshow_LDADD) $(LIBS) ++ $(LINK) $(pnmshow_OBJECTS) $(pnmshow_LDADD) $(LIBS) + pnmshow24$(EXEEXT): $(pnmshow24_OBJECTS) $(pnmshow24_DEPENDENCIES) + @rm -f pnmshow24$(EXEEXT) +- $(LINK) $(pnmshow24_LDFLAGS) $(pnmshow24_OBJECTS) $(pnmshow24_LDADD) $(LIBS) ++ $(LINK) $(pnmshow24_OBJECTS) $(pnmshow24_LDADD) $(LIBS) + regiontest$(EXEEXT): $(regiontest_OBJECTS) $(regiontest_DEPENDENCIES) + @rm -f regiontest$(EXEEXT) +- $(LINK) $(regiontest_LDFLAGS) $(regiontest_OBJECTS) $(regiontest_LDADD) $(LIBS) ++ $(LINK) $(regiontest_OBJECTS) $(regiontest_LDADD) $(LIBS) + rotate$(EXEEXT): $(rotate_OBJECTS) $(rotate_DEPENDENCIES) + @rm -f rotate$(EXEEXT) +- $(LINK) $(rotate_LDFLAGS) $(rotate_OBJECTS) $(rotate_LDADD) $(LIBS) ++ $(LINK) $(rotate_OBJECTS) $(rotate_LDADD) $(LIBS) + simple$(EXEEXT): $(simple_OBJECTS) $(simple_DEPENDENCIES) + @rm -f simple$(EXEEXT) +- $(LINK) $(simple_LDFLAGS) $(simple_OBJECTS) $(simple_LDADD) $(LIBS) ++ $(LINK) $(simple_OBJECTS) $(simple_LDADD) $(LIBS) + simple15$(EXEEXT): $(simple15_OBJECTS) $(simple15_DEPENDENCIES) + @rm -f simple15$(EXEEXT) +- $(LINK) $(simple15_LDFLAGS) $(simple15_OBJECTS) $(simple15_LDADD) $(LIBS) ++ $(LINK) $(simple15_OBJECTS) $(simple15_LDADD) $(LIBS) + storepasswd$(EXEEXT): $(storepasswd_OBJECTS) $(storepasswd_DEPENDENCIES) + @rm -f storepasswd$(EXEEXT) +- $(LINK) $(storepasswd_LDFLAGS) $(storepasswd_OBJECTS) $(storepasswd_LDADD) $(LIBS) ++ $(LINK) $(storepasswd_OBJECTS) $(storepasswd_LDADD) $(LIBS) + vncev$(EXEEXT): $(vncev_OBJECTS) $(vncev_DEPENDENCIES) + @rm -f vncev$(EXEEXT) +- $(LINK) $(vncev_LDFLAGS) $(vncev_OBJECTS) $(vncev_LDADD) $(LIBS) ++ $(LINK) $(vncev_OBJECTS) $(vncev_LDADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -406,22 +388,22 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vncev.Po@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@@ -432,10 +414,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -485,22 +463,21 @@ + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -548,7 +525,7 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + +@@ -562,12 +539,20 @@ + + install-data-am: + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -588,19 +573,22 @@ + + ps-am: + +-uninstall-am: uninstall-info-am ++uninstall-am: ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ +- install install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am install-man \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ +- pdf pdf-am ps ps-am tags uninstall uninstall-am \ +- uninstall-info-am ++ pdf pdf-am ps ps-am tags uninstall uninstall-am + + # 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 -Nur LibVNCServer-0.9.1.orig/libvncclient/Makefile.in LibVNCServer-0.9.1/libvncclient/Makefile.in +--- LibVNCServer-0.9.1.orig/libvncclient/Makefile.in 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/libvncclient/Makefile.in 2008-10-31 18:46:27.000000000 -0200 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.9.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004, 2005 Free Software Foundation, Inc. ++# 2003, 2004, 2005, 2006 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. +@@ -15,17 +15,11 @@ + @SET_MAKE@ + + +-SOURCES = $(libvncclient_la_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -63,17 +57,18 @@ + am_libvncclient_la_OBJECTS = cursor.lo listen.lo rfbproto.lo \ + sockets.lo vncviewer.lo minilzo.lo + libvncclient_la_OBJECTS = $(am_libvncclient_la_OBJECTS) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ + depcomp = $(SHELL) $(top_srcdir)/depcomp + am__depfiles_maybe = depfiles + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ +- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +- $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + CCLD = $(CC) +-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ + SOURCES = $(libvncclient_la_SOURCES) + DIST_SOURCES = $(libvncclient_la_SOURCES) + HEADERS = $(noinst_HEADERS) +@@ -81,8 +76,6 @@ + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -97,57 +90,38 @@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CRYPT_LIBS = @CRYPT_LIBS@ +-CXX = @CXX@ +-CXXCPP = @CXXCPP@ +-CXXDEPMODE = @CXXDEPMODE@ +-CXXFLAGS = @CXXFLAGS@ +-CYGIPC_FALSE = @CYGIPC_FALSE@ +-CYGIPC_TRUE = @CYGIPC_TRUE@ + CYGPATH_W = @CYGPATH_W@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-ECHO = @ECHO@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ +-F77 = @F77@ +-FFLAGS = @FFLAGS@ +-HAVE_LIBJPEG_FALSE = @HAVE_LIBJPEG_FALSE@ +-HAVE_LIBJPEG_TRUE = @HAVE_LIBJPEG_TRUE@ +-HAVE_LIBPTHREAD_FALSE = @HAVE_LIBPTHREAD_FALSE@ +-HAVE_LIBPTHREAD_TRUE = @HAVE_LIBPTHREAD_TRUE@ +-HAVE_LIBSDL_FALSE = @HAVE_LIBSDL_FALSE@ +-HAVE_LIBSDL_TRUE = @HAVE_LIBSDL_TRUE@ +-HAVE_LIBZ_FALSE = @HAVE_LIBZ_FALSE@ +-HAVE_LIBZ_TRUE = @HAVE_LIBZ_TRUE@ +-HAVE_MP3LAME_FALSE = @HAVE_MP3LAME_FALSE@ +-HAVE_MP3LAME_TRUE = @HAVE_MP3LAME_TRUE@ +-HAVE_RPM_FALSE = @HAVE_RPM_FALSE@ +-HAVE_RPM_TRUE = @HAVE_RPM_TRUE@ +-HAVE_SYSTEM_LIBVNCSERVER_FALSE = @HAVE_SYSTEM_LIBVNCSERVER_FALSE@ +-HAVE_SYSTEM_LIBVNCSERVER_TRUE = @HAVE_SYSTEM_LIBVNCSERVER_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++FGREP = @FGREP@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ +-LINUX_FALSE = @LINUX_FALSE@ +-LINUX_TRUE = @LINUX_TRUE@ ++LIPO = @LIPO@ + LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MINGW_FALSE = @MINGW_FALSE@ +-MINGW_TRUE = @MINGW_TRUE@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ + OBJEXT = @OBJEXT@ +-OSX_FALSE = @OSX_FALSE@ +-OSX_TRUE = @OSX_TRUE@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ +@@ -159,6 +133,7 @@ + RPMSOURCEDIR = @RPMSOURCEDIR@ + SDL_CFLAGS = @SDL_CFLAGS@ + SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + SSL_LIBS = @SSL_LIBS@ +@@ -166,25 +141,17 @@ + SYSTEM_LIBVNCSERVER_CFLAGS = @SYSTEM_LIBVNCSERVER_CFLAGS@ + SYSTEM_LIBVNCSERVER_LIBS = @SYSTEM_LIBVNCSERVER_LIBS@ + VERSION = @VERSION@ +-WITH_FFMPEG_FALSE = @WITH_FFMPEG_FALSE@ +-WITH_FFMPEG_TRUE = @WITH_FFMPEG_TRUE@ +-WITH_TIGHTVNC_FILETRANSFER_FALSE = @WITH_TIGHTVNC_FILETRANSFER_FALSE@ +-WITH_TIGHTVNC_FILETRANSFER_TRUE = @WITH_TIGHTVNC_FILETRANSFER_TRUE@ + WSOCKLIB = @WSOCKLIB@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_F77 = @ac_ct_F77@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ +@@ -196,28 +163,40 @@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + with_ffmpeg = @with_ffmpeg@ + AM_CFLAGS = -g -I $(top_srcdir) -I. -Wall + libvncclient_la_SOURCES = cursor.c listen.c rfbproto.c sockets.c vncviewer.c minilzo.c +@@ -237,9 +216,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvncclient/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvncclient/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu libvncclient/Makefile ++ $(AUTOMAKE) --foreign libvncclient/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -259,7 +238,7 @@ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) +- test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" ++ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ +@@ -270,7 +249,7 @@ + + uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) +- @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ ++ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ +@@ -285,7 +264,7 @@ + rm -f "$${dir}/so_locations"; \ + done + libvncclient.la: $(libvncclient_la_OBJECTS) $(libvncclient_la_DEPENDENCIES) +- $(LINK) -rpath $(libdir) $(libvncclient_la_LDFLAGS) $(libvncclient_la_OBJECTS) $(libvncclient_la_LIBADD) $(LIBS) ++ $(LINK) -rpath $(libdir) $(libvncclient_la_OBJECTS) $(libvncclient_la_LIBADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -301,22 +280,22 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vncviewer.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@@ -327,10 +306,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -380,22 +355,21 @@ + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -411,7 +385,7 @@ + all-am: Makefile $(LTLIBRARIES) $(HEADERS) + installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done + install: install-am + install-exec: install-exec-am +@@ -446,7 +420,7 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + +@@ -460,12 +434,20 @@ + + install-data-am: + ++install-dvi: install-dvi-am ++ + install-exec-am: install-libLTLIBRARIES + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -486,20 +468,23 @@ + + ps-am: + +-uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES ++uninstall-am: uninstall-libLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ +- install install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am \ +- install-libLTLIBRARIES install-man install-strip installcheck \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am \ ++ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-info-am \ +- uninstall-libLTLIBRARIES ++ tags uninstall uninstall-am uninstall-libLTLIBRARIES + + + rfbproto.o: rfbproto.c corre.c hextile.c rre.c tight.c zlib.c zrle.c ultra.c +diff -Nur LibVNCServer-0.9.1.orig/libvncserver/Makefile.in LibVNCServer-0.9.1/libvncserver/Makefile.in +--- LibVNCServer-0.9.1.orig/libvncserver/Makefile.in 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/libvncserver/Makefile.in 2008-10-31 18:46:27.000000000 -0200 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.9.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004, 2005 Free Software Foundation, Inc. ++# 2003, 2004, 2005, 2006 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. +@@ -15,17 +15,11 @@ + @SET_MAKE@ + + +-SOURCES = $(libvncserver_la_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -83,17 +77,18 @@ + $(am__objects_1) $(am__objects_2) $(am__objects_3) + am_libvncserver_la_OBJECTS = $(am__objects_4) + libvncserver_la_OBJECTS = $(am_libvncserver_la_OBJECTS) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ + depcomp = $(SHELL) $(top_srcdir)/depcomp + am__depfiles_maybe = depfiles + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ +- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +- $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + CCLD = $(CC) +-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ + SOURCES = $(libvncserver_la_SOURCES) + DIST_SOURCES = $(am__libvncserver_la_SOURCES_DIST) + includeHEADERS_INSTALL = $(INSTALL_HEADER) +@@ -108,8 +103,6 @@ + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -124,57 +117,38 @@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CRYPT_LIBS = @CRYPT_LIBS@ +-CXX = @CXX@ +-CXXCPP = @CXXCPP@ +-CXXDEPMODE = @CXXDEPMODE@ +-CXXFLAGS = @CXXFLAGS@ +-CYGIPC_FALSE = @CYGIPC_FALSE@ +-CYGIPC_TRUE = @CYGIPC_TRUE@ + CYGPATH_W = @CYGPATH_W@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-ECHO = @ECHO@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ +-F77 = @F77@ +-FFLAGS = @FFLAGS@ +-HAVE_LIBJPEG_FALSE = @HAVE_LIBJPEG_FALSE@ +-HAVE_LIBJPEG_TRUE = @HAVE_LIBJPEG_TRUE@ +-HAVE_LIBPTHREAD_FALSE = @HAVE_LIBPTHREAD_FALSE@ +-HAVE_LIBPTHREAD_TRUE = @HAVE_LIBPTHREAD_TRUE@ +-HAVE_LIBSDL_FALSE = @HAVE_LIBSDL_FALSE@ +-HAVE_LIBSDL_TRUE = @HAVE_LIBSDL_TRUE@ +-HAVE_LIBZ_FALSE = @HAVE_LIBZ_FALSE@ +-HAVE_LIBZ_TRUE = @HAVE_LIBZ_TRUE@ +-HAVE_MP3LAME_FALSE = @HAVE_MP3LAME_FALSE@ +-HAVE_MP3LAME_TRUE = @HAVE_MP3LAME_TRUE@ +-HAVE_RPM_FALSE = @HAVE_RPM_FALSE@ +-HAVE_RPM_TRUE = @HAVE_RPM_TRUE@ +-HAVE_SYSTEM_LIBVNCSERVER_FALSE = @HAVE_SYSTEM_LIBVNCSERVER_FALSE@ +-HAVE_SYSTEM_LIBVNCSERVER_TRUE = @HAVE_SYSTEM_LIBVNCSERVER_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++FGREP = @FGREP@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ +-LINUX_FALSE = @LINUX_FALSE@ +-LINUX_TRUE = @LINUX_TRUE@ ++LIPO = @LIPO@ + LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MINGW_FALSE = @MINGW_FALSE@ +-MINGW_TRUE = @MINGW_TRUE@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ + OBJEXT = @OBJEXT@ +-OSX_FALSE = @OSX_FALSE@ +-OSX_TRUE = @OSX_TRUE@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ +@@ -186,6 +160,7 @@ + RPMSOURCEDIR = @RPMSOURCEDIR@ + SDL_CFLAGS = @SDL_CFLAGS@ + SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + SSL_LIBS = @SSL_LIBS@ +@@ -193,25 +168,17 @@ + SYSTEM_LIBVNCSERVER_CFLAGS = @SYSTEM_LIBVNCSERVER_CFLAGS@ + SYSTEM_LIBVNCSERVER_LIBS = @SYSTEM_LIBVNCSERVER_LIBS@ + VERSION = @VERSION@ +-WITH_FFMPEG_FALSE = @WITH_FFMPEG_FALSE@ +-WITH_FFMPEG_TRUE = @WITH_FFMPEG_TRUE@ +-WITH_TIGHTVNC_FILETRANSFER_FALSE = @WITH_TIGHTVNC_FILETRANSFER_FALSE@ +-WITH_TIGHTVNC_FILETRANSFER_TRUE = @WITH_TIGHTVNC_FILETRANSFER_TRUE@ + WSOCKLIB = @WSOCKLIB@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_F77 = @ac_ct_F77@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ +@@ -223,28 +190,40 @@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = $(prefix)/include/rfb + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + with_ffmpeg = @with_ffmpeg@ + AM_CFLAGS = -g -Wall -I $(top_srcdir) + @WITH_TIGHTVNC_FILETRANSFER_TRUE@TIGHTVNCFILETRANSFERHDRS = tightvnc-filetransfer/filelistinfo.h \ +@@ -292,9 +271,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libvncserver/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvncserver/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu libvncserver/Makefile ++ $(AUTOMAKE) --foreign libvncserver/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -314,7 +293,7 @@ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) +- test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" ++ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ +@@ -325,7 +304,7 @@ + + uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) +- @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ ++ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ +@@ -340,7 +319,7 @@ + rm -f "$${dir}/so_locations"; \ + done + libvncserver.la: $(libvncserver_la_OBJECTS) $(libvncserver_la_DEPENDENCIES) +- $(LINK) -rpath $(libdir) $(libvncserver_la_LDFLAGS) $(libvncserver_la_OBJECTS) $(libvncserver_la_LIBADD) $(LIBS) ++ $(LINK) -rpath $(libdir) $(libvncserver_la_OBJECTS) $(libvncserver_la_LIBADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -381,66 +360,62 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zrlepalettehelper.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + rfbtightserver.lo: tightvnc-filetransfer/rfbtightserver.c +-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT rfbtightserver.lo -MD -MP -MF "$(DEPDIR)/rfbtightserver.Tpo" -c -o rfbtightserver.lo `test -f 'tightvnc-filetransfer/rfbtightserver.c' || echo '$(srcdir)/'`tightvnc-filetransfer/rfbtightserver.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/rfbtightserver.Tpo" "$(DEPDIR)/rfbtightserver.Plo"; else rm -f "$(DEPDIR)/rfbtightserver.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT rfbtightserver.lo -MD -MP -MF $(DEPDIR)/rfbtightserver.Tpo -c -o rfbtightserver.lo `test -f 'tightvnc-filetransfer/rfbtightserver.c' || echo '$(srcdir)/'`tightvnc-filetransfer/rfbtightserver.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/rfbtightserver.Tpo $(DEPDIR)/rfbtightserver.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tightvnc-filetransfer/rfbtightserver.c' object='rfbtightserver.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o rfbtightserver.lo `test -f 'tightvnc-filetransfer/rfbtightserver.c' || echo '$(srcdir)/'`tightvnc-filetransfer/rfbtightserver.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o rfbtightserver.lo `test -f 'tightvnc-filetransfer/rfbtightserver.c' || echo '$(srcdir)/'`tightvnc-filetransfer/rfbtightserver.c + + handlefiletransferrequest.lo: tightvnc-filetransfer/handlefiletransferrequest.c +-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT handlefiletransferrequest.lo -MD -MP -MF "$(DEPDIR)/handlefiletransferrequest.Tpo" -c -o handlefiletransferrequest.lo `test -f 'tightvnc-filetransfer/handlefiletransferrequest.c' || echo '$(srcdir)/'`tightvnc-filetransfer/handlefiletransferrequest.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/handlefiletransferrequest.Tpo" "$(DEPDIR)/handlefiletransferrequest.Plo"; else rm -f "$(DEPDIR)/handlefiletransferrequest.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT handlefiletransferrequest.lo -MD -MP -MF $(DEPDIR)/handlefiletransferrequest.Tpo -c -o handlefiletransferrequest.lo `test -f 'tightvnc-filetransfer/handlefiletransferrequest.c' || echo '$(srcdir)/'`tightvnc-filetransfer/handlefiletransferrequest.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/handlefiletransferrequest.Tpo $(DEPDIR)/handlefiletransferrequest.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tightvnc-filetransfer/handlefiletransferrequest.c' object='handlefiletransferrequest.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o handlefiletransferrequest.lo `test -f 'tightvnc-filetransfer/handlefiletransferrequest.c' || echo '$(srcdir)/'`tightvnc-filetransfer/handlefiletransferrequest.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o handlefiletransferrequest.lo `test -f 'tightvnc-filetransfer/handlefiletransferrequest.c' || echo '$(srcdir)/'`tightvnc-filetransfer/handlefiletransferrequest.c + + filetransfermsg.lo: tightvnc-filetransfer/filetransfermsg.c +-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT filetransfermsg.lo -MD -MP -MF "$(DEPDIR)/filetransfermsg.Tpo" -c -o filetransfermsg.lo `test -f 'tightvnc-filetransfer/filetransfermsg.c' || echo '$(srcdir)/'`tightvnc-filetransfer/filetransfermsg.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/filetransfermsg.Tpo" "$(DEPDIR)/filetransfermsg.Plo"; else rm -f "$(DEPDIR)/filetransfermsg.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT filetransfermsg.lo -MD -MP -MF $(DEPDIR)/filetransfermsg.Tpo -c -o filetransfermsg.lo `test -f 'tightvnc-filetransfer/filetransfermsg.c' || echo '$(srcdir)/'`tightvnc-filetransfer/filetransfermsg.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/filetransfermsg.Tpo $(DEPDIR)/filetransfermsg.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tightvnc-filetransfer/filetransfermsg.c' object='filetransfermsg.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o filetransfermsg.lo `test -f 'tightvnc-filetransfer/filetransfermsg.c' || echo '$(srcdir)/'`tightvnc-filetransfer/filetransfermsg.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o filetransfermsg.lo `test -f 'tightvnc-filetransfer/filetransfermsg.c' || echo '$(srcdir)/'`tightvnc-filetransfer/filetransfermsg.c + + filelistinfo.lo: tightvnc-filetransfer/filelistinfo.c +-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT filelistinfo.lo -MD -MP -MF "$(DEPDIR)/filelistinfo.Tpo" -c -o filelistinfo.lo `test -f 'tightvnc-filetransfer/filelistinfo.c' || echo '$(srcdir)/'`tightvnc-filetransfer/filelistinfo.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/filelistinfo.Tpo" "$(DEPDIR)/filelistinfo.Plo"; else rm -f "$(DEPDIR)/filelistinfo.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT filelistinfo.lo -MD -MP -MF $(DEPDIR)/filelistinfo.Tpo -c -o filelistinfo.lo `test -f 'tightvnc-filetransfer/filelistinfo.c' || echo '$(srcdir)/'`tightvnc-filetransfer/filelistinfo.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/filelistinfo.Tpo $(DEPDIR)/filelistinfo.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tightvnc-filetransfer/filelistinfo.c' object='filelistinfo.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o filelistinfo.lo `test -f 'tightvnc-filetransfer/filelistinfo.c' || echo '$(srcdir)/'`tightvnc-filetransfer/filelistinfo.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o filelistinfo.lo `test -f 'tightvnc-filetransfer/filelistinfo.c' || echo '$(srcdir)/'`tightvnc-filetransfer/filelistinfo.c + + mostlyclean-libtool: + -rm -f *.lo + + clean-libtool: + -rm -rf .libs _libs +- +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: + install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) +- test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)" ++ test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ +@@ -505,23 +480,21 @@ + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- $(mkdir_p) $(distdir)/../rfb $(distdir)/tightvnc-filetransfer +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -537,7 +510,7 @@ + all-am: Makefile $(LTLIBRARIES) $(HEADERS) + installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done + install: install-am + install-exec: install-exec-am +@@ -572,7 +545,7 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + +@@ -586,12 +559,20 @@ + + install-data-am: install-includeHEADERS + ++install-dvi: install-dvi-am ++ + install-exec-am: install-libLTLIBRARIES + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -612,21 +593,23 @@ + + ps-am: + +-uninstall-am: uninstall-includeHEADERS uninstall-info-am \ +- uninstall-libLTLIBRARIES ++uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ +- install install-am install-data install-data-am install-exec \ +- install-exec-am install-includeHEADERS install-info \ +- install-info-am install-libLTLIBRARIES install-man \ +- install-strip installcheck installcheck-am installdirs \ +- maintainer-clean maintainer-clean-generic mostlyclean \ +- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ +- pdf pdf-am ps ps-am tags uninstall uninstall-am \ +- uninstall-includeHEADERS uninstall-info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-includeHEADERS install-info \ ++ install-info-am install-libLTLIBRARIES install-man install-pdf \ ++ install-pdf-am install-ps install-ps-am install-strip \ ++ installcheck installcheck-am installdirs maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-compile \ ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ tags uninstall uninstall-am uninstall-includeHEADERS \ + uninstall-libLTLIBRARIES + + +diff -Nur LibVNCServer-0.9.1.orig/rfbconfig.h.in LibVNCServer-0.9.1/rfbconfig.h.in +--- LibVNCServer-0.9.1.orig/rfbconfig.h.in 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/rfbconfig.h.in 2008-10-31 18:46:26.000000000 -0200 +@@ -302,6 +302,10 @@ + slash. */ + #undef LSTAT_FOLLOWS_SLASHED_SYMLINK + ++/* Define to the sub-directory in which libtool stores uninstalled libraries. ++ */ ++#undef LT_OBJDIR ++ + /* Need a typedef for in_addr_t */ + #undef NEED_INADDR_T + +@@ -369,7 +373,7 @@ + /* Define to `int' if does not define. */ + #undef pid_t + +-/* Define to `unsigned' if does not define. */ ++/* Define to `unsigned int' if does not define. */ + #undef size_t + + /* The type for socklen */ +diff -Nur LibVNCServer-0.9.1.orig/rfbconfig.h.in~ LibVNCServer-0.9.1/rfbconfig.h.in~ +--- LibVNCServer-0.9.1.orig/rfbconfig.h.in~ 1969-12-31 21:00:00.000000000 -0300 ++++ LibVNCServer-0.9.1/rfbconfig.h.in~ 2008-10-31 18:44:10.000000000 -0200 +@@ -0,0 +1,379 @@ ++/* rfbconfig.h.in. Generated from configure.ac by autoheader. */ ++ ++/* Enable 24 bit per pixel in native framebuffer */ ++#undef ALLOW24BPP ++ ++/* work around when write() returns ENOENT but does not mean it */ ++#undef ENOENT_WORKAROUND ++ ++/* Use ffmpeg (for vnc2mpg) */ ++#undef FFMPEG ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_ARPA_INET_H ++ ++/* Avahi/mDNS client build environment present */ ++#undef HAVE_AVAHI ++ ++/* Define to 1 if you have the `crypt' function. */ ++#undef HAVE_CRYPT ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_DLFCN_H ++ ++/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ ++#undef HAVE_DOPRNT ++ ++/* DPMS extension build environment present */ ++#undef HAVE_DPMS ++ ++/* FBPM extension build environment present */ ++#undef HAVE_FBPM ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_FCNTL_H ++ ++/* Define to 1 if you have the `fork' function. */ ++#undef HAVE_FORK ++ ++/* Define to 1 if you have the `ftime' function. */ ++#undef HAVE_FTIME ++ ++/* Define to 1 if you have the `geteuid' function. */ ++#undef HAVE_GETEUID ++ ++/* Define to 1 if you have the `gethostbyname' function. */ ++#undef HAVE_GETHOSTBYNAME ++ ++/* Define to 1 if you have the `gethostname' function. */ ++#undef HAVE_GETHOSTNAME ++ ++/* Define to 1 if you have the `getpwnam' function. */ ++#undef HAVE_GETPWNAM ++ ++/* Define to 1 if you have the `getpwuid' function. */ ++#undef HAVE_GETPWUID ++ ++/* Define to 1 if you have the `getspnam' function. */ ++#undef HAVE_GETSPNAM ++ ++/* Define to 1 if you have the `gettimeofday' function. */ ++#undef HAVE_GETTIMEOFDAY ++ ++/* Define to 1 if you have the `getuid' function. */ ++#undef HAVE_GETUID ++ ++/* Define to 1 if you have the `grantpt' function. */ ++#undef HAVE_GRANTPT ++ ++/* Define to 1 if you have the `inet_ntoa' function. */ ++#undef HAVE_INET_NTOA ++ ++/* Define to 1 if you have the `initgroups' function. */ ++#undef HAVE_INITGROUPS ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_INTTYPES_H ++ ++/* IRIX XReadDisplay available */ ++#undef HAVE_IRIX_XREADDISPLAY ++ ++/* libcrypt library present */ ++#undef HAVE_LIBCRYPT ++ ++/* openssl libcrypto library present */ ++#undef HAVE_LIBCRYPTO ++ ++/* Define to 1 if you have the `cygipc' library (-lcygipc). */ ++#undef HAVE_LIBCYGIPC ++ ++/* Define to 1 if you have the `jpeg' library (-ljpeg). */ ++#undef HAVE_LIBJPEG ++ ++/* Define to 1 if you have the `nsl' library (-lnsl). */ ++#undef HAVE_LIBNSL ++ ++/* Define to 1 if you have the `pthread' library (-lpthread). */ ++#undef HAVE_LIBPTHREAD ++ ++/* Define to 1 if you have the `socket' library (-lsocket). */ ++#undef HAVE_LIBSOCKET ++ ++/* openssl libssl library present */ ++#undef HAVE_LIBSSL ++ ++/* XDAMAGE extension build environment present */ ++#undef HAVE_LIBXDAMAGE ++ ++/* XFIXES extension build environment present */ ++#undef HAVE_LIBXFIXES ++ ++/* XINERAMA extension build environment present */ ++#undef HAVE_LIBXINERAMA ++ ++/* XRANDR extension build environment present */ ++#undef HAVE_LIBXRANDR ++ ++/* DEC-XTRAP extension build environment present */ ++#undef HAVE_LIBXTRAP ++ ++/* Define to 1 if you have the `z' library (-lz). */ ++#undef HAVE_LIBZ ++ ++/* linux fb device build environment present */ ++#undef HAVE_LINUX_FB_H ++ ++/* linux/input.h present */ ++#undef HAVE_LINUX_INPUT_H ++ ++/* linux uinput device build environment present */ ++#undef HAVE_LINUX_UINPUT_H ++ ++/* video4linux build environment present */ ++#undef HAVE_LINUX_VIDEODEV_H ++ ++/* build MacOS X native display support */ ++#undef HAVE_MACOSX_NATIVE_DISPLAY ++ ++/* Define to 1 if you have the `memmove' function. */ ++#undef HAVE_MEMMOVE ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_MEMORY_H ++ ++/* Define to 1 if you have the `memset' function. */ ++#undef HAVE_MEMSET ++ ++/* Define to 1 if you have the `mkfifo' function. */ ++#undef HAVE_MKFIFO ++ ++/* Define to 1 if you have the `mmap' function. */ ++#undef HAVE_MMAP ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_NETDB_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_NETINET_IN_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_PWD_H ++ ++/* RECORD extension build environment present */ ++#undef HAVE_RECORD ++ ++/* Define to 1 if you have the `select' function. */ ++#undef HAVE_SELECT ++ ++/* Define to 1 if you have the `setegid' function. */ ++#undef HAVE_SETEGID ++ ++/* Define to 1 if you have the `seteuid' function. */ ++#undef HAVE_SETEUID ++ ++/* Define to 1 if you have the `setgid' function. */ ++#undef HAVE_SETGID ++ ++/* Define to 1 if you have the `setpgrp' function. */ ++#undef HAVE_SETPGRP ++ ++/* Define to 1 if you have the `setsid' function. */ ++#undef HAVE_SETSID ++ ++/* Define to 1 if you have the `setuid' function. */ ++#undef HAVE_SETUID ++ ++/* Define to 1 if you have the `setutxent' function. */ ++#undef HAVE_SETUTXENT ++ ++/* Define to 1 if you have the `socket' function. */ ++#undef HAVE_SOCKET ++ ++/* Solaris XReadScreen available */ ++#undef HAVE_SOLARIS_XREADSCREEN ++ ++/* Define to 1 if `stat' has the bug that it succeeds when given the ++ zero-length file name argument. */ ++#undef HAVE_STAT_EMPTY_STRING_BUG ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_STDINT_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_STDLIB_H ++ ++/* Define to 1 if you have the `strchr' function. */ ++#undef HAVE_STRCHR ++ ++/* Define to 1 if you have the `strcspn' function. */ ++#undef HAVE_STRCSPN ++ ++/* Define to 1 if you have the `strdup' function. */ ++#undef HAVE_STRDUP ++ ++/* Define to 1 if you have the `strerror' function. */ ++#undef HAVE_STRERROR ++ ++/* Define to 1 if you have the `strftime' function. */ ++#undef HAVE_STRFTIME ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_STRINGS_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_STRING_H ++ ++/* Define to 1 if you have the `strstr' function. */ ++#undef HAVE_STRSTR ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYSLOG_H ++ ++/* Use the system libvncserver build environment for x11vnc. */ ++#undef HAVE_SYSTEM_LIBVNCSERVER ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_IOCTL_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_SOCKET_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_STAT_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_STROPTS_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_TIMEB_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_TIME_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_TYPES_H ++ ++/* Define to 1 if you have that is POSIX.1 compatible. */ ++#undef HAVE_SYS_WAIT_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_TERMIOS_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_UNISTD_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_UTMPX_H ++ ++/* Define to 1 if you have the `vfork' function. */ ++#undef HAVE_VFORK ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_VFORK_H ++ ++/* Define to 1 if you have the `vprintf' function. */ ++#undef HAVE_VPRINTF ++ ++/* Define to 1 if you have the `waitpid' function. */ ++#undef HAVE_WAITPID ++ ++/* Define to 1 if `fork' works. */ ++#undef HAVE_WORKING_FORK ++ ++/* Define to 1 if `vfork' works. */ ++#undef HAVE_WORKING_VFORK ++ ++/* X11 build environment present */ ++#undef HAVE_X11 ++ ++/* XKEYBOARD extension build environment present */ ++#undef HAVE_XKEYBOARD ++ ++/* MIT-SHM extension build environment present */ ++#undef HAVE_XSHM ++ ++/* XTEST extension build environment present */ ++#undef HAVE_XTEST ++ ++/* XTEST extension has XTestGrabControl */ ++#undef HAVE_XTESTGRABCONTROL ++ ++/* Define to 1 if `lstat' dereferences a symlink specified with a trailing ++ slash. */ ++#undef LSTAT_FOLLOWS_SLASHED_SYMLINK ++ ++/* Need a typedef for in_addr_t */ ++#undef NEED_INADDR_T ++ ++/* Name of package */ ++#undef PACKAGE ++ ++/* Define to the address where bug reports for this package should be sent. */ ++#undef PACKAGE_BUGREPORT ++ ++/* Define to the full name of this package. */ ++#undef PACKAGE_NAME ++ ++/* Define to the full name and version of this package. */ ++#undef PACKAGE_STRING ++ ++/* Define to the one symbol short name of this package. */ ++#undef PACKAGE_TARNAME ++ ++/* Define to the version of this package. */ ++#undef PACKAGE_VERSION ++ ++/* The number of bytes in type char */ ++#undef SIZEOF_CHAR ++ ++/* The number of bytes in type int */ ++#undef SIZEOF_INT ++ ++/* The number of bytes in type long */ ++#undef SIZEOF_LONG ++ ++/* The number of bytes in type short */ ++#undef SIZEOF_SHORT ++ ++/* The number of bytes in type void* */ ++#undef SIZEOF_VOIDP ++ ++/* Define to 1 if you have the ANSI C header files. */ ++#undef STDC_HEADERS ++ ++/* Define to 1 if you can safely include both and . */ ++#undef TIME_WITH_SYS_TIME ++ ++/* Version number of package */ ++#undef VERSION ++ ++/* Disable TightVNCFileTransfer protocol */ ++#undef WITH_TIGHTVNC_FILETRANSFER ++ ++/* Define to 1 if your processor stores words with the most significant byte ++ first (like Motorola and SPARC, unlike Intel and VAX). */ ++#undef WORDS_BIGENDIAN ++ ++/* Define to 1 if the X Window System is missing or not being used. */ ++#undef X_DISPLAY_MISSING ++ ++/* Define to empty if `const' does not conform to ANSI C. */ ++#undef const ++ ++/* Define to `__inline__' or `__inline' if that's what the C compiler ++ calls it, or to nothing if 'inline' is not supported under any name. */ ++#ifndef __cplusplus ++#undef inline ++#endif ++ ++/* Define to `int' if does not define. */ ++#undef pid_t ++ ++/* Define to `unsigned int' if does not define. */ ++#undef size_t ++ ++/* The type for socklen */ ++#undef socklen_t ++ ++/* Define as `fork' if `vfork' does not work. */ ++#undef vfork +diff -Nur LibVNCServer-0.9.1.orig/test/Makefile.in LibVNCServer-0.9.1/test/Makefile.in +--- LibVNCServer-0.9.1.orig/test/Makefile.in 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/test/Makefile.in 2008-10-31 18:46:27.000000000 -0200 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.9.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004, 2005 Free Software Foundation, Inc. ++# 2003, 2004, 2005, 2006 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. +@@ -14,17 +14,11 @@ + + @SET_MAKE@ + +-SOURCES = blooptest.c cargstest.c copyrecttest.c cursortest.c encodingstest.c +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -78,17 +72,18 @@ + encodingstest_LDADD = $(LDADD) + encodingstest_DEPENDENCIES = ../libvncserver/libvncserver.la \ + ../libvncclient/libvncclient.la +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ + depcomp = $(SHELL) $(top_srcdir)/depcomp + am__depfiles_maybe = depfiles + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ +- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +- $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + CCLD = $(CC) +-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ + SOURCES = blooptest.c cargstest.c copyrecttest.c cursortest.c \ + encodingstest.c + DIST_SOURCES = blooptest.c cargstest.c copyrecttest.c cursortest.c \ +@@ -97,8 +92,6 @@ + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -113,57 +106,38 @@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CRYPT_LIBS = @CRYPT_LIBS@ +-CXX = @CXX@ +-CXXCPP = @CXXCPP@ +-CXXDEPMODE = @CXXDEPMODE@ +-CXXFLAGS = @CXXFLAGS@ +-CYGIPC_FALSE = @CYGIPC_FALSE@ +-CYGIPC_TRUE = @CYGIPC_TRUE@ + CYGPATH_W = @CYGPATH_W@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-ECHO = @ECHO@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ +-F77 = @F77@ +-FFLAGS = @FFLAGS@ +-HAVE_LIBJPEG_FALSE = @HAVE_LIBJPEG_FALSE@ +-HAVE_LIBJPEG_TRUE = @HAVE_LIBJPEG_TRUE@ +-HAVE_LIBPTHREAD_FALSE = @HAVE_LIBPTHREAD_FALSE@ +-HAVE_LIBPTHREAD_TRUE = @HAVE_LIBPTHREAD_TRUE@ +-HAVE_LIBSDL_FALSE = @HAVE_LIBSDL_FALSE@ +-HAVE_LIBSDL_TRUE = @HAVE_LIBSDL_TRUE@ +-HAVE_LIBZ_FALSE = @HAVE_LIBZ_FALSE@ +-HAVE_LIBZ_TRUE = @HAVE_LIBZ_TRUE@ +-HAVE_MP3LAME_FALSE = @HAVE_MP3LAME_FALSE@ +-HAVE_MP3LAME_TRUE = @HAVE_MP3LAME_TRUE@ +-HAVE_RPM_FALSE = @HAVE_RPM_FALSE@ +-HAVE_RPM_TRUE = @HAVE_RPM_TRUE@ +-HAVE_SYSTEM_LIBVNCSERVER_FALSE = @HAVE_SYSTEM_LIBVNCSERVER_FALSE@ +-HAVE_SYSTEM_LIBVNCSERVER_TRUE = @HAVE_SYSTEM_LIBVNCSERVER_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++FGREP = @FGREP@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ +-LINUX_FALSE = @LINUX_FALSE@ +-LINUX_TRUE = @LINUX_TRUE@ ++LIPO = @LIPO@ + LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MINGW_FALSE = @MINGW_FALSE@ +-MINGW_TRUE = @MINGW_TRUE@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ + OBJEXT = @OBJEXT@ +-OSX_FALSE = @OSX_FALSE@ +-OSX_TRUE = @OSX_TRUE@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ +@@ -175,6 +149,7 @@ + RPMSOURCEDIR = @RPMSOURCEDIR@ + SDL_CFLAGS = @SDL_CFLAGS@ + SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + SSL_LIBS = @SSL_LIBS@ +@@ -182,25 +157,17 @@ + SYSTEM_LIBVNCSERVER_CFLAGS = @SYSTEM_LIBVNCSERVER_CFLAGS@ + SYSTEM_LIBVNCSERVER_LIBS = @SYSTEM_LIBVNCSERVER_LIBS@ + VERSION = @VERSION@ +-WITH_FFMPEG_FALSE = @WITH_FFMPEG_FALSE@ +-WITH_FFMPEG_TRUE = @WITH_FFMPEG_TRUE@ +-WITH_TIGHTVNC_FILETRANSFER_FALSE = @WITH_TIGHTVNC_FILETRANSFER_FALSE@ +-WITH_TIGHTVNC_FILETRANSFER_TRUE = @WITH_TIGHTVNC_FILETRANSFER_TRUE@ + WSOCKLIB = @WSOCKLIB@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_F77 = @ac_ct_F77@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ +@@ -212,28 +179,40 @@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + with_ffmpeg = @with_ffmpeg@ + AM_CFLAGS = -I $(top_srcdir) -g -Wall + LDADD = ../libvncserver/libvncserver.la ../libvncclient/libvncclient.la @WSOCKLIB@ +@@ -253,9 +232,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu test/Makefile ++ $(AUTOMAKE) --foreign test/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -282,19 +261,19 @@ + done + blooptest$(EXEEXT): $(blooptest_OBJECTS) $(blooptest_DEPENDENCIES) + @rm -f blooptest$(EXEEXT) +- $(LINK) $(blooptest_LDFLAGS) $(blooptest_OBJECTS) $(blooptest_LDADD) $(LIBS) ++ $(LINK) $(blooptest_OBJECTS) $(blooptest_LDADD) $(LIBS) + cargstest$(EXEEXT): $(cargstest_OBJECTS) $(cargstest_DEPENDENCIES) + @rm -f cargstest$(EXEEXT) +- $(LINK) $(cargstest_LDFLAGS) $(cargstest_OBJECTS) $(cargstest_LDADD) $(LIBS) ++ $(LINK) $(cargstest_OBJECTS) $(cargstest_LDADD) $(LIBS) + copyrecttest$(EXEEXT): $(copyrecttest_OBJECTS) $(copyrecttest_DEPENDENCIES) + @rm -f copyrecttest$(EXEEXT) +- $(LINK) $(copyrecttest_LDFLAGS) $(copyrecttest_OBJECTS) $(copyrecttest_LDADD) $(LIBS) ++ $(LINK) $(copyrecttest_OBJECTS) $(copyrecttest_LDADD) $(LIBS) + cursortest$(EXEEXT): $(cursortest_OBJECTS) $(cursortest_DEPENDENCIES) + @rm -f cursortest$(EXEEXT) +- $(LINK) $(cursortest_LDFLAGS) $(cursortest_OBJECTS) $(cursortest_LDADD) $(LIBS) ++ $(LINK) $(cursortest_OBJECTS) $(cursortest_LDADD) $(LIBS) + encodingstest$(EXEEXT): $(encodingstest_OBJECTS) $(encodingstest_DEPENDENCIES) + @rm -f encodingstest$(EXEEXT) +- $(LINK) $(encodingstest_LDFLAGS) $(encodingstest_OBJECTS) $(encodingstest_LDADD) $(LIBS) ++ $(LINK) $(encodingstest_OBJECTS) $(encodingstest_LDADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -309,22 +288,22 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encodingstest.Po@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@@ -335,10 +314,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -388,22 +363,21 @@ + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -451,7 +425,7 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + +@@ -465,12 +439,20 @@ + + install-data-am: + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -491,19 +473,22 @@ + + ps-am: + +-uninstall-am: uninstall-info-am ++uninstall-am: ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ +- install install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am install-man \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ +- pdf pdf-am ps ps-am tags uninstall uninstall-am \ +- uninstall-info-am ++ pdf pdf-am ps ps-am tags uninstall uninstall-am + + + test: encodingstest$(EXEEXT) cargstest$(EXEEXT) copyrecttest$(EXEEXT) +diff -Nur LibVNCServer-0.9.1.orig/vncterm/Makefile.in LibVNCServer-0.9.1/vncterm/Makefile.in +--- LibVNCServer-0.9.1.orig/vncterm/Makefile.in 2008-10-31 18:44:00.000000000 -0200 ++++ LibVNCServer-0.9.1/vncterm/Makefile.in 2008-10-31 18:46:27.000000000 -0200 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.9.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004, 2005 Free Software Foundation, Inc. ++# 2003, 2004, 2005, 2006 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. +@@ -15,17 +15,11 @@ + @SET_MAKE@ + + +-SOURCES = $(LinuxVNC_SOURCES) $(VNCommand_SOURCES) $(example_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -70,17 +64,18 @@ + example_OBJECTS = $(am_example_OBJECTS) + example_LDADD = $(LDADD) + example_DEPENDENCIES = ../libvncserver/libvncserver.la +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ + depcomp = $(SHELL) $(top_srcdir)/depcomp + am__depfiles_maybe = depfiles + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ +- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +- $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + CCLD = $(CC) +-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ + SOURCES = $(LinuxVNC_SOURCES) $(VNCommand_SOURCES) $(example_SOURCES) + DIST_SOURCES = $(am__LinuxVNC_SOURCES_DIST) $(VNCommand_SOURCES) \ + $(example_SOURCES) +@@ -89,8 +84,6 @@ + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -105,57 +98,38 @@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CRYPT_LIBS = @CRYPT_LIBS@ +-CXX = @CXX@ +-CXXCPP = @CXXCPP@ +-CXXDEPMODE = @CXXDEPMODE@ +-CXXFLAGS = @CXXFLAGS@ +-CYGIPC_FALSE = @CYGIPC_FALSE@ +-CYGIPC_TRUE = @CYGIPC_TRUE@ + CYGPATH_W = @CYGPATH_W@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-ECHO = @ECHO@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ +-F77 = @F77@ +-FFLAGS = @FFLAGS@ +-HAVE_LIBJPEG_FALSE = @HAVE_LIBJPEG_FALSE@ +-HAVE_LIBJPEG_TRUE = @HAVE_LIBJPEG_TRUE@ +-HAVE_LIBPTHREAD_FALSE = @HAVE_LIBPTHREAD_FALSE@ +-HAVE_LIBPTHREAD_TRUE = @HAVE_LIBPTHREAD_TRUE@ +-HAVE_LIBSDL_FALSE = @HAVE_LIBSDL_FALSE@ +-HAVE_LIBSDL_TRUE = @HAVE_LIBSDL_TRUE@ +-HAVE_LIBZ_FALSE = @HAVE_LIBZ_FALSE@ +-HAVE_LIBZ_TRUE = @HAVE_LIBZ_TRUE@ +-HAVE_MP3LAME_FALSE = @HAVE_MP3LAME_FALSE@ +-HAVE_MP3LAME_TRUE = @HAVE_MP3LAME_TRUE@ +-HAVE_RPM_FALSE = @HAVE_RPM_FALSE@ +-HAVE_RPM_TRUE = @HAVE_RPM_TRUE@ +-HAVE_SYSTEM_LIBVNCSERVER_FALSE = @HAVE_SYSTEM_LIBVNCSERVER_FALSE@ +-HAVE_SYSTEM_LIBVNCSERVER_TRUE = @HAVE_SYSTEM_LIBVNCSERVER_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++FGREP = @FGREP@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ +-LINUX_FALSE = @LINUX_FALSE@ +-LINUX_TRUE = @LINUX_TRUE@ ++LIPO = @LIPO@ + LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MINGW_FALSE = @MINGW_FALSE@ +-MINGW_TRUE = @MINGW_TRUE@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ + OBJEXT = @OBJEXT@ +-OSX_FALSE = @OSX_FALSE@ +-OSX_TRUE = @OSX_TRUE@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ +@@ -167,6 +141,7 @@ + RPMSOURCEDIR = @RPMSOURCEDIR@ + SDL_CFLAGS = @SDL_CFLAGS@ + SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + SSL_LIBS = @SSL_LIBS@ +@@ -174,25 +149,17 @@ + SYSTEM_LIBVNCSERVER_CFLAGS = @SYSTEM_LIBVNCSERVER_CFLAGS@ + SYSTEM_LIBVNCSERVER_LIBS = @SYSTEM_LIBVNCSERVER_LIBS@ + VERSION = @VERSION@ +-WITH_FFMPEG_FALSE = @WITH_FFMPEG_FALSE@ +-WITH_FFMPEG_TRUE = @WITH_FFMPEG_TRUE@ +-WITH_TIGHTVNC_FILETRANSFER_FALSE = @WITH_TIGHTVNC_FILETRANSFER_FALSE@ +-WITH_TIGHTVNC_FILETRANSFER_TRUE = @WITH_TIGHTVNC_FILETRANSFER_TRUE@ + WSOCKLIB = @WSOCKLIB@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_F77 = @ac_ct_F77@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ +@@ -204,28 +171,40 @@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + with_ffmpeg = @with_ffmpeg@ + AM_CFLAGS = -I $(top_srcdir) + CONSOLE_SRCS = VNConsole.c +@@ -249,9 +228,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu vncterm/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign vncterm/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu vncterm/Makefile ++ $(AUTOMAKE) --foreign vncterm/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -271,7 +250,7 @@ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) +- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" ++ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ +@@ -306,13 +285,13 @@ + done + LinuxVNC$(EXEEXT): $(LinuxVNC_OBJECTS) $(LinuxVNC_DEPENDENCIES) + @rm -f LinuxVNC$(EXEEXT) +- $(LINK) $(LinuxVNC_LDFLAGS) $(LinuxVNC_OBJECTS) $(LinuxVNC_LDADD) $(LIBS) ++ $(LINK) $(LinuxVNC_OBJECTS) $(LinuxVNC_LDADD) $(LIBS) + VNCommand$(EXEEXT): $(VNCommand_OBJECTS) $(VNCommand_DEPENDENCIES) + @rm -f VNCommand$(EXEEXT) +- $(LINK) $(VNCommand_LDFLAGS) $(VNCommand_OBJECTS) $(VNCommand_LDADD) $(LIBS) ++ $(LINK) $(VNCommand_OBJECTS) $(VNCommand_LDADD) $(LIBS) + example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES) + @rm -f example$(EXEEXT) +- $(LINK) $(example_LDFLAGS) $(example_OBJECTS) $(example_LDADD) $(LIBS) ++ $(LINK) $(example_OBJECTS) $(example_LDADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -326,22 +305,22 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example.Po@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@@ -352,10 +331,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -405,22 +380,21 @@ + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -436,7 +410,7 @@ + all-am: Makefile $(PROGRAMS) $(HEADERS) + installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done + install: install-am + install-exec: install-exec-am +@@ -471,7 +445,7 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + +@@ -485,12 +459,20 @@ + + install-data-am: + ++install-dvi: install-dvi-am ++ + install-exec-am: install-binPROGRAMS + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -511,20 +493,23 @@ + + ps-am: + +-uninstall-am: uninstall-binPROGRAMS uninstall-info-am ++uninstall-am: uninstall-binPROGRAMS ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool clean-noinstPROGRAMS ctags \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ +- install-data install-data-am install-exec install-exec-am \ +- install-info install-info-am install-man install-strip \ ++ install-data install-data-am install-dvi install-dvi-am \ ++ install-exec install-exec-am install-html install-html-am \ ++ install-info install-info-am install-man install-pdf \ ++ install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-binPROGRAMS \ +- uninstall-info-am ++ tags uninstall uninstall-am uninstall-binPROGRAMS + + # 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 --git a/packages/vnc/libvncserver_0.9.1.bb b/packages/vnc/libvncserver_0.9.1.bb index c7ea06f0af..488ed0d87f 100644 --- a/packages/vnc/libvncserver_0.9.1.bb +++ b/packages/vnc/libvncserver_0.9.1.bb @@ -11,7 +11,8 @@ DEFAULT_PREFERENCE = "-1" SRC_URI = "${SOURCEFORGE_MIRROR}/libvncserver/LibVNCServer-${PV}.tar.gz \ file://configure_ac.patch;patch=1 \ - file://clientlogger.patch;patch=1" + file://clientlogger.patch;patch=1 \ + file://autoreconf.patch;patch=1" S = "${WORKDIR}/LibVNCServer-${PV}" # => create libvncserver only -- cgit v1.2.3 From edbb2e054166f3414e8a604a2b4f2ef8d775c02a Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Mon, 3 Nov 2008 10:52:19 -0200 Subject: thunar: depends on gamin to use inotify --- packages/xfce/thunar_0.9.0.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/xfce/thunar_0.9.0.bb b/packages/xfce/thunar_0.9.0.bb index de85f23a9c..44afb06774 100644 --- a/packages/xfce/thunar_0.9.0.bb +++ b/packages/xfce/thunar_0.9.0.bb @@ -1,11 +1,11 @@ DESCRIPTION = "File manager for the Xfce Desktop Environment" -DEPENDS = "libxfcegui4 exo dbus-glib libexif xfce4-panel libice libsm" +DEPENDS = "libxfcegui4 exo dbus-glib libexif xfce4-panel libice libsm gamin" RRECOMMENDS = "shared-mime-info" inherit xfce pkgconfig SRC_URI = "http://www.us.xfce.org/archive/xfce-4.4.2/src/Thunar-${PV}.tar.bz2" -PR = 'r2' +PR = 'r3' S = "${WORKDIR}/Thunar-${PV}/" -- cgit v1.2.3 From 8156545fea7df858b61a98dd8cba2c1bd2d1754c Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Mon, 3 Nov 2008 03:39:55 +0100 Subject: task-cli-tools: ship utils that require python seperately (for system with low space requirements) --- packages/tasks/task-cli-tools.bb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/tasks/task-cli-tools.bb b/packages/tasks/task-cli-tools.bb index 8bc4b83211..e69c2924a2 100644 --- a/packages/tasks/task-cli-tools.bb +++ b/packages/tasks/task-cli-tools.bb @@ -2,17 +2,17 @@ DESCRIPTION = "A set of command line tools" SECTION = "console" LICENSE = "MIT" PV = "1.0" -PR = "r0" +PR = "r1" inherit task +PACKAGES += "${PN}-python" + RDEPENDS_${PN} = "\ dosfstools \ htop \ iptables \ lsof \ - mickeydbus \ - mickeyterm \ mtd-utils \ nano \ powertop \ @@ -27,3 +27,7 @@ RDEPENDS_${PN}_append_om-gta02 = "\ s3c24xx-gpio \ " +RDEPENDS_${PN}-python = "\ + mickeydbus \ + mickeyterm \ +" -- cgit v1.2.3 From 4037943fc2bcdbbadd523a892be17c5179636e77 Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Mon, 3 Nov 2008 04:07:09 +0100 Subject: fso-[console-]image: WIP towards using more tasks --- packages/images/fso-console-image.bb | 11 +++-- packages/images/fso-image.bb | 79 ++++++++++-------------------------- 2 files changed, 27 insertions(+), 63 deletions(-) diff --git a/packages/images/fso-console-image.bb b/packages/images/fso-console-image.bb index 2c168b7e19..04d9d23afc 100644 --- a/packages/images/fso-console-image.bb +++ b/packages/images/fso-console-image.bb @@ -1,13 +1,12 @@ #------------------------------------------------------ -# freesmartphone.org Console Image Recipe +# FSO compliant Console Image Recipe #------------------------------------------------------ require fso-image.bb IMAGE_INSTALL = "\ - ${BASE_INSTALL} \ - ${AUDIO_INSTALL} \ - ${TOOLS_INSTALL} \ - ${PYTHON_INSTALL} \ - frameworkd \ + task-base \ + task-fso-compliance \ + task-cli-tools \ + task-cli-tools-python \ " diff --git a/packages/images/fso-image.bb b/packages/images/fso-image.bb index d0ae4039d3..8a69b62644 100644 --- a/packages/images/fso-image.bb +++ b/packages/images/fso-image.bb @@ -2,70 +2,32 @@ # freesmartphone.org Image Recipe #------------------------------------------------------ +PV = "1.0" +PR = "r1" + +# no languages for now IMAGE_LINGUAS = "" -# getting the base system up BASE_INSTALL = "\ - ${MACHINE_TASK_PROVIDER} \ - netbase \ - sysfsutils \ - module-init-tools-depmod \ - rsync \ - screen \ - fbset \ - fbset-modes \ + task-base \ " -# Some machines don't set a *runtime* provider for X, so default to Xfbdev here -# virtual/xserver won't work, since the kdrive recipes will build multiple xserver packages -XSERVER ?= "xserver-kdrive-fbdev" +ILLUME_THEME = "illume-theme-fso" -# getting an X window system up X_INSTALL = "\ - e-wm \ - illume \ - illume-config-illume \ - illume-dicts-english-us \ - illume-keyboards-default \ - illume-keyboards-numbers \ - illume-keyboards-terminal \ - illume-theme-freesmartphone \ - ${XSERVER} \ - xserver-kdrive-common \ - xserver-nodm-init \ - xauth \ - xhost \ - xset \ - xrandr \ - \ - fontconfig-utils \ - \ - ttf-dejavu-common \ - ttf-dejavu-sans \ - ttf-dejavu-serif \ - \ + task-x11-illume \ + task-fonts-truetype-core \ " X_INSTALL_append_om-gta02 = "\ - ttf-arphic-uming \ - \ + task-fonts-truetype-chinese \ + task-fonts-truetype-japanese \ " -# useful command line tools +# tools TOOLS_INSTALL = "\ -# bash \ - dosfstools \ - htop \ - iptables \ - lsof \ - mickeydbus \ - mickeyterm \ - mtd-utils \ - nano \ - powertop \ - s3c24xx-gpio \ - sysstat \ - tcpdump \ + task-cli-tools \ + task-cli-tools-python \ " # audio @@ -75,7 +37,7 @@ AUDIO_INSTALL = "\ alsa-utils-aplay \ alsa-utils-amixer \ gst-meta-audio \ - gst-plugin-mad \ +# gst-plugin-mad \ gst-plugin-modplug \ gst-plugin-sid \ fso-sounds \ @@ -83,6 +45,7 @@ AUDIO_INSTALL = "\ GTK_INSTALL = "\ openmoko-calculator2 \ + xterm \ openmoko-terminal2 \ gpe-scap \ tangogps \ @@ -108,11 +71,9 @@ PYTHON_INSTALL = "\ python-gst \ " -# zhone +# fso+zhone ZHONE_INSTALL = "\ - gsm0710muxd \ - frameworkd \ - fso-gpsd \ + task-fso-compliance \ zhone \ " @@ -140,7 +101,7 @@ IMAGE_INSTALL = "\ inherit image -# perform some convenience tweaks to the rootfs +# perform some convenience tweaks to the rootfs to improve the out-of-the-box experience :M: fso_rootfs_postprocess() { curdir=$PWD cd ${IMAGE_ROOTFS} @@ -165,6 +126,10 @@ fso_rootfs_postprocess() { echo 'gtk-font-name = "Sans 5"' >> ./etc/gtk-2.0/gtkrc # fix strange iconv/gconf bug ln -s libc.so.6 ./lib/libc.so + # set sensible DNS entries + echo "nameserver 208.67.222.222" > ./etc/resolv.conf + echo "nameserver 208.67.220.220" >> ./etc/resolv.conf + # back on track cd $curdir } -- cgit v1.2.3 From f5d962579bbe4add4dad10664e73e7c43209a1c5 Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Mon, 3 Nov 2008 16:15:38 +0100 Subject: python-fugrep 0.50: new recipe; a python library for fuzzy pattern matching. * add to task-python-everything --- packages/python/python-fugrep_0.50.bb | 11 +++++++++++ packages/tasks/task-python-everything.bb | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 packages/python/python-fugrep_0.50.bb diff --git a/packages/python/python-fugrep_0.50.bb b/packages/python/python-fugrep_0.50.bb new file mode 100644 index 0000000000..150cb84130 --- /dev/null +++ b/packages/python/python-fugrep_0.50.bb @@ -0,0 +1,11 @@ +DESCRIPTION = "FuGrep is a Python library for fuzzy pattern matching." +HOMEPAGE = "http://www.j-raedler.de/pages/software/fugrep.php" +SECTION = "devel/python" +LICENSE = "${PN}" +SRCNAME = "FuGrep" +PR = "ml0" + +SRC_URI = "http://www.j-raedler.de/media/Software/FuGrep-${PV}.zip" +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit distutils diff --git a/packages/tasks/task-python-everything.bb b/packages/tasks/task-python-everything.bb index 5b0d4a1be6..02cecbf586 100644 --- a/packages/tasks/task-python-everything.bb +++ b/packages/tasks/task-python-everything.bb @@ -1,7 +1,7 @@ DESCRIPTION= "Everything Python" HOMEPAGE = "http://www.vanille.de/projects/python.spy" LICENSE = "MIT" -PR = "ml35" +PR = "ml36" RDEPENDS = "\ python-ao \ @@ -16,6 +16,7 @@ RDEPENDS = "\ python-fnorb \ python-formencode \ python-fpconst \ + python-fugrep \ python-fuse \ python-fusil \ python-gammu \ -- cgit v1.2.3 From 3ff5572d2b2702b8dc925e04ebd2c21d2ae8e8ce Mon Sep 17 00:00:00 2001 From: Chris Larson Date: Mon, 3 Nov 2008 12:29:26 -0700 Subject: base.bbclass: use 'git log' & 'git branch', not git-log & git-branch. --- classes/base.bbclass | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/base.bbclass b/classes/base.bbclass index 93a76aa30f..10648e9885 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -758,7 +758,7 @@ def base_get_metadata_svn_revision(d): def base_get_metadata_git_branch(d): import os - branch = os.popen('cd %s; git-branch | grep "^* " | tr -d "* "' % base_get_scmbasepath(d)).read() + branch = os.popen('cd %s; git branch | grep "^* " | tr -d "* "' % base_get_scmbasepath(d)).read() if len(branch) != 0: return branch @@ -766,7 +766,7 @@ def base_get_metadata_git_branch(d): def base_get_metadata_git_revision(d): import os - rev = os.popen("cd %s; git-log -n 1 --pretty=oneline --" % base_get_scmbasepath(d)).read().split(" ")[0] + rev = os.popen("cd %s; git log -n 1 --pretty=oneline --" % base_get_scmbasepath(d)).read().split(" ")[0] if len(rev) != 0: return rev return "" -- cgit v1.2.3 From a52a9c2799bf0b856d262a040e6133131883930a Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Tue, 4 Nov 2008 11:22:01 +0100 Subject: fso-illume-image: new recipe; An fso-compliant bare illume image as a starting point for X-based applications --- packages/images/fso-illume-image.bb | 82 +++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 packages/images/fso-illume-image.bb diff --git a/packages/images/fso-illume-image.bb b/packages/images/fso-illume-image.bb new file mode 100644 index 0000000000..979adf1855 --- /dev/null +++ b/packages/images/fso-illume-image.bb @@ -0,0 +1,82 @@ +#------------------------------------------------------ +# FSO compliant Illume Image Recipe +#------------------------------------------------------ + +require fso-image.bb + +PV = "1.0" +PR = "r1" + +# no languages for now +IMAGE_LINGUAS = "" + +BASE_INSTALL = "\ + task-base \ +" + +ILLUME_THEME = "illume-theme-fso" + +X_INSTALL = "\ + task-x11-illume \ + task-fonts-truetype-core \ +" + +X_INSTALL_append_om-gta02 = "\ + task-fonts-truetype-chinese \ + task-fonts-truetype-japanese \ +" + +# tools +TOOLS_INSTALL = "\ + task-cli-tools \ + task-cli-tools-python \ +" + +# audio +AUDIO_INSTALL = "\ + alsa-oss \ + alsa-state \ + alsa-utils-aplay \ + alsa-utils-amixer \ + gst-meta-audio \ + gst-plugin-modplug \ + gst-plugin-sid \ + fso-sounds \ +" + +GTK_INSTALL = "\ + xterm \ + gpe-scap \ +" + +# FIXME these should rather be part of alsa-state, +# once Om stabilizes them... +AUDIO_INSTALL_append_om-gta01 = "\ + openmoko-alsa-scenarios \ +" +AUDIO_INSTALL_append_om-gta02 = "\ + openmoko-alsa-scenarios \ +" + +# python +PYTHON_INSTALL = "\ + task-python-efl \ + python-codecs \ + python-gst \ +" + +# fso +FSO_INSTALL = "\ + task-fso-compliance \ +" + +IMAGE_INSTALL = "\ + ${BASE_INSTALL} \ + ${X_INSTALL} \ + ${GTK_INSTALL} \ + ${GAMES_INSTALL} \ + ${AUDIO_INSTALL} \ + ${TOOLS_INSTALL} \ + ${PYTHON_INSTALL} \ + ${FSO_INSTALL} \ +" -- cgit v1.2.3 From 44a09d14b3b5637c4f4f7ee20d3504b52a1b949a Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 4 Nov 2008 19:42:20 +0100 Subject: sysvinit: avoid u-a race condition by raising 'init' to 60 --- packages/sysvinit/sysvinit_2.86.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sysvinit/sysvinit_2.86.bb b/packages/sysvinit/sysvinit_2.86.bb index 64090bf80f..0922199c6f 100644 --- a/packages/sysvinit/sysvinit_2.86.bb +++ b/packages/sysvinit/sysvinit_2.86.bb @@ -2,7 +2,7 @@ DESCRIPTION = "System-V like init." SECTION = "base" LICENSE = "GPL" HOMEPAGE = "http://freshmeat.net/projects/sysvinit/" -PR = "r42" +PR = "r43" # USE_VT and SERIAL_CONSOLE are generally defined by the MACHINE .conf. # Set PACKAGE_ARCH appropriately. @@ -36,7 +36,7 @@ inherit update-alternatives ALTERNATIVE_NAME = "init" ALTERNATIVE_LINK = "${base_sbindir}/init" ALTERNATIVE_PATH = "${base_sbindir}/init.sysvinit" -ALTERNATIVE_PRIORITY = "50" +ALTERNATIVE_PRIORITY = "60" PACKAGES =+ "sysvinit-pidof sysvinit-sulogin" FILES_${PN} += "${base_sbindir}/* ${base_bindir}/*" -- cgit v1.2.3 From c1401f7b1857e4dc00be14ce7d1aafd712ff5750 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 4 Nov 2008 22:10:10 +0100 Subject: python-pygame: Blacklist smpeg and build pygame without smpeg We can not build smpeg when enterprise is on. Put it into the BBMASK to make sure it is not buildable. Use base_conditional to not add the dependency to the DEPENDS when building for the enterprise branch. Remove the movie support (the one actually requiring smpeg) and only echo it into the Setup file when are not building with the ENTERPRISE_DISTRO flag. It seems to work both ways. --- conf/enterprise.conf | 2 +- packages/python/python-pygame-1.8.1/Setup | 1 - packages/python/python-pygame_1.8.1.bb | 8 ++++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/conf/enterprise.conf b/conf/enterprise.conf index 79637661dd..5f89cb1c5e 100644 --- a/conf/enterprise.conf +++ b/conf/enterprise.conf @@ -1,2 +1,2 @@ # For the enterprise edition we want to avoid certain packages by default. -BBMASK = "${@base_conditional('ENTERPRISE_DISTRO', '1', '(gst-plugins-ugly|mp3blaster|mpg123|mpg321|liba52|lame|libmad|mpeg2dec|xmms-mad|madplay|libsidplay|sidplayer|python-mad|opie-mediaplayer1-libmadplugin)', '', d)}" +BBMASK = "${@base_conditional('ENTERPRISE_DISTRO', '1', '(gst-plugins-ugly|mp3blaster|mpg123|mpg321|smpeg|liba52|lame|libmad|mpeg2dec|xmms-mad|madplay|libsidplay|sidplayer|python-mad|opie-mediaplayer1-libmadplugin)', '', d)}" diff --git a/packages/python/python-pygame-1.8.1/Setup b/packages/python/python-pygame-1.8.1/Setup index cb8085530a..932e291ae2 100644 --- a/packages/python/python-pygame-1.8.1/Setup +++ b/packages/python/python-pygame-1.8.1/Setup @@ -28,7 +28,6 @@ mixer src/mixer.c $(SDL) $(MIXER) $(DEBUG) mixer_music src/music.c $(SDL) $(MIXER) $(DEBUG) _numericsurfarray src/_numericsurfarray.c $(SDL) $(DEBUG) _numericsndarray src/_numericsndarray.c $(SDL) $(MIXER) $(DEBUG) -movie src/movie.c $(SDL) $(SMPEG) $(DEBUG) scrap src/scrap.c $(SDL) $(SCRAP) $(DEBUG) #experimental new movie movie. requires libavcodec and libavformat. diff --git a/packages/python/python-pygame_1.8.1.bb b/packages/python/python-pygame_1.8.1.bb index 71eff50dfb..499f0c6ee3 100644 --- a/packages/python/python-pygame_1.8.1.bb +++ b/packages/python/python-pygame_1.8.1.bb @@ -3,9 +3,10 @@ SECTION = "devel/python" HOMEPAGE = "http://www.pygame.org" PRIORITY = "optional" LICENSE = "LGPL" -DEPENDS = "libsdl-x11 libsdl-image libsdl-mixer libsdl-net libsdl-ttf smpeg python-numeric" +DEPENDS = "libsdl-x11 libsdl-image libsdl-mixer libsdl-net libsdl-ttf python-numeric" +DEPENDS += "${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'smpeg', d)}" SRCNAME = "pygame" -PR = "ml1" +PR = "ml2" SRC_URI = "\ ftp://ftp.pygame.org/pub/pygame/${SRCNAME}-${PV}release.tar.gz \ @@ -17,6 +18,9 @@ inherit distutils do_configure_prepend() { cat ${WORKDIR}/Setup >Setup SDL="`sdl-config --cflags` `sdl-config --libs`"; echo "SDL=$SDL" >>Setup + if [ '${ENTERPRISE_DISTRO}' != '1' ]; then + echo "movie src/movie.c \$(SDL) \$(SMPEG) \$(DEBUG)" >>Setup + fi } do_stage() { -- cgit v1.2.3 From e90881203cfc9def8106a1c68f9a6f05fb4895b7 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Mon, 3 Nov 2008 19:59:24 -0200 Subject: tightvnc: provide vncviewer alternative to provide more flexibility --- packages/vnc/tightvnc_1.3.9.bb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/vnc/tightvnc_1.3.9.bb b/packages/vnc/tightvnc_1.3.9.bb index ec6a7057d9..3f11763fad 100644 --- a/packages/vnc/tightvnc_1.3.9.bb +++ b/packages/vnc/tightvnc_1.3.9.bb @@ -3,7 +3,7 @@ HOMEPAGE = "http://www.tightvnc.com/" DEPENDS = "virtual/libx11 zlib libxmu libxaw" LICENSE = "GPL" -PR = "r0" +PR = "r1" SRC_URI = "${SOURCEFORGE_MIRROR}/vnc-tight/${PN}-${PV}_unixsrc.tar.gz \ file://Makefile" @@ -23,3 +23,12 @@ do_install () { install -d ${D}${bindir} install ${PN}viewer ${D}${bindir} } + +pkg_postinst_${PN}-viewer () { + update-alternatives --install ${bindir}/vncviewer vncviewer tightvncviewer 100 +} + + +pkg_prerm_${PN}-viewer () { + update-alternatives --remove ${bindir}/vncviewer vncviewer tightvncviewer 100 +} -- cgit v1.2.3 From 301c02d1fe5b5b06061546b1a9e7314bdca73594 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Tue, 4 Nov 2008 10:57:50 -0200 Subject: tightvnc: add a default X resources file --- packages/vnc/tightvnc/Vncviewer | 66 +++++++++++++++++++++++++++++++++++++++++ packages/vnc/tightvnc_1.3.9.bb | 9 ++++-- 2 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 packages/vnc/tightvnc/Vncviewer diff --git a/packages/vnc/tightvnc/Vncviewer b/packages/vnc/tightvnc/Vncviewer new file mode 100644 index 0000000000..ed60ecdbaf --- /dev/null +++ b/packages/vnc/tightvnc/Vncviewer @@ -0,0 +1,66 @@ +Vncviewer.title: TightVNC: %s +Vncviewer.translations:\ + : SelectionToVNC()\n\ + : SelectionFromVNC() +*form.background: black +*viewport.allowHoriz: True +*viewport.allowVert: True +*viewport.useBottom: True +*viewport.useRight: True +*viewport*Scrollbar*thumb: None +*desktop.baseTranslations:\ + F8: ShowPopup()\n\ + : SendRFBEvent()\n\ + : SendRFBEvent()\n\ + : SendRFBEvent()\n\ + : SendRFBEvent()\n\ + : SendRFBEvent() +*serverDialog.dialog.label: VNC server: +*serverDialog.dialog.value: +*serverDialog.dialog.value.translations: #override\n\ + Return: ServerDialogDone() +*passwordDialog.dialog.label: Password: +*passwordDialog.dialog.value: +*passwordDialog.dialog.value.AsciiSink.echo: False +*passwordDialog.dialog.value.translations: #override\n\ + Return: PasswordDialogDone() +*popup.title: TightVNC popup +*popup*background: grey +*popup*font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1 +*popup.buttonForm.Command.borderWidth: 0 +*popup.buttonForm.Toggle.borderWidth: 0 +*popup.translations: #override WM_PROTOCOLS: HidePopup() +*popup.buttonForm.translations: #override\n\ + : SendRFBEvent() HidePopup() +*popupButtonCount: 8 +*popup*button1.label: Dismiss popup +*popup*button1.translations: #override\n\ + ,: HidePopup() +*popup*button2.label: Quit viewer +*popup*button2.translations: #override\n\ + ,: Quit() +*popup*button3.label: Full screen +*popup*button3.type: toggle +*popup*button3.translations: #override\n\ + : SetFullScreenState()\n\ + ,: toggle() HidePopup() ToggleFullScreen() +*popup*button4.label: Clipboard: local -> remote +*popup*button4.translations: #override\n\ + ,: SelectionToVNC(always) HidePopup() +*popup*button5.label: Clipboard: local <- remote +*popup*button5.translations: #override\n\ + ,: SelectionFromVNC(always) HidePopup() +*popup*button6.label: Request refresh +*popup*button6.translations: #override\n\ + ,: SendRFBEvent(fbupdate) HidePopup() +*popup*button7.label: Send ctrl-alt-del +*popup*button7.translations: #override\n\ + ,: SendRFBEvent(keydown,Control_L)\ + SendRFBEvent(keydown,Alt_L)\ + SendRFBEvent(key,Delete)\ + SendRFBEvent(keyup,Alt_L)\ + SendRFBEvent(keyup,Control_L)\ + HidePopup() +*popup*button8.label: Send F8 +*popup*button8.translations: #override\n\ + ,: SendRFBEvent(key,F8) HidePopup() diff --git a/packages/vnc/tightvnc_1.3.9.bb b/packages/vnc/tightvnc_1.3.9.bb index 3f11763fad..58ca15e1f7 100644 --- a/packages/vnc/tightvnc_1.3.9.bb +++ b/packages/vnc/tightvnc_1.3.9.bb @@ -3,16 +3,17 @@ HOMEPAGE = "http://www.tightvnc.com/" DEPENDS = "virtual/libx11 zlib libxmu libxaw" LICENSE = "GPL" -PR = "r1" +PR = "r2" SRC_URI = "${SOURCEFORGE_MIRROR}/vnc-tight/${PN}-${PV}_unixsrc.tar.gz \ - file://Makefile" + file://Makefile \ + file://Vncviewer" S = "${WORKDIR}/vnc_unixsrc/vncviewer/" PACKAGES = "${PN}-viewer-dbg ${PN}-viewer" FILES_${PN}-viewer-dbg = "${bindir}/.debug" -FILES_${PN}-viewer = "${bindir}/${PN}viewer" +FILES_${PN}-viewer = "${bindir}/${PN}viewer ${sysconfdir}" do_compile () { install ${WORKDIR}/Makefile ${S} @@ -22,6 +23,8 @@ do_compile () { do_install () { install -d ${D}${bindir} install ${PN}viewer ${D}${bindir} + install -d ${D}${sysconfdir}/X11/app-defaults + install -m 644 ${WORKDIR}/Vncviewer ${D}${sysconfdir}/X11/app-defaults/Vncviewer } pkg_postinst_${PN}-viewer () { -- cgit v1.2.3 From be356ca2083a751632c2ade2da2cdcf7c4d794fe Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Mon, 3 Nov 2008 18:25:25 -0200 Subject: ica-bin: add 10.6 recipe --- packages/ica/ica-bin_10.6.bb | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 packages/ica/ica-bin_10.6.bb diff --git a/packages/ica/ica-bin_10.6.bb b/packages/ica/ica-bin_10.6.bb new file mode 100644 index 0000000000..7bfebe3d31 --- /dev/null +++ b/packages/ica/ica-bin_10.6.bb @@ -0,0 +1,29 @@ +# ica-bin OE build file +# Copyright (C) 2004-2006, Advanced Micro Devices, Inc. All Rights Reserved +# Released under the MIT license (see packages/COPYING) + +DEPENDS = "virtual/libx11 libxaw rpm2cpio-native fakeroot-native" + +HOMEPAGE="www.citrix.com/download/" + +SRC_URI="ftp://download2.citrix.com/FILES/en/products/Linux10/ICAClient-10.6-1.i386.rpm" + +S="${WORKDIR}" +FILES_${PN} += "/" +FILES_${PN}-dbg += "/usr/lib/ICAClient/.debug" + +do_configure() { + rpm2cpio ${DL_DIR}/ICAClient-${PV}-1.i386.rpm | fakeroot cpio -i --make-directories +} + +DDIR="${D}/usr/lib/ICAClient" + +do_install () { + for file in `find usr/lib/ICAClient/ -type d`; do + install -d ${D}/$file + done + + for file in `find usr/lib/ICAClient/ -type f`; do + install $file ${D}/$file + done +} -- cgit v1.2.3 From e196c018e07075938b65813026e0119cebbdc139 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Mon, 3 Nov 2008 16:22:54 -0200 Subject: xfdesktop: fix segfault when removable icons are disabled --- .../fix-segfault-when-removable-icons-are-disabled.patch | 16 ++++++++++++++++ packages/xfce/xfdesktop_4.4.2.bb | 5 +++-- 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 packages/xfce/xfdesktop/fix-segfault-when-removable-icons-are-disabled.patch diff --git a/packages/xfce/xfdesktop/fix-segfault-when-removable-icons-are-disabled.patch b/packages/xfce/xfdesktop/fix-segfault-when-removable-icons-are-disabled.patch new file mode 100644 index 0000000000..af5bc4cd96 --- /dev/null +++ b/packages/xfce/xfdesktop/fix-segfault-when-removable-icons-are-disabled.patch @@ -0,0 +1,16 @@ +diff -Nur xfdesktop-4.4.2-BKP/src/xfdesktop-file-icon-manager.c xfdesktop-4.4.2/src/xfdesktop-file-icon-manager.c +--- xfdesktop-4.4.2-BKP/src/xfdesktop-file-icon-manager.c 2008-11-03 16:19:46.000000000 -0200 ++++ xfdesktop-4.4.2/src/xfdesktop-file-icon-manager.c 2008-11-03 16:20:45.000000000 -0200 +@@ -2046,8 +2046,10 @@ + + g_hash_table_foreach(fmanager->priv->icons, + file_icon_hash_write_icons, rcfile); +- g_hash_table_foreach(fmanager->priv->removable_icons, +- file_icon_hash_write_icons, rcfile); ++ if(fmanager->priv->show_removable_media) { ++ g_hash_table_foreach(fmanager->priv->removable_icons, ++ file_icon_hash_write_icons, rcfile); ++ } + g_hash_table_foreach(fmanager->priv->special_icons, + file_icon_hash_write_icons, rcfile); + diff --git a/packages/xfce/xfdesktop_4.4.2.bb b/packages/xfce/xfdesktop_4.4.2.bb index 2e6a9365f3..3129feba23 100644 --- a/packages/xfce/xfdesktop_4.4.2.bb +++ b/packages/xfce/xfdesktop_4.4.2.bb @@ -5,11 +5,12 @@ DESCRIPTION="xfce4 Desktop Background Manager" SECTION = "x11/base" DEPENDS = "virtual/libx11 libxfcegui4 libxfce4mcs libxml2 xfce4-panel thunar" -PR = "r1" +PR = "r2" inherit xfce -SRC_URI += " file://relocation-and-memleak.patch;patch=1 " +SRC_URI += " file://relocation-and-memleak.patch;patch=1 \ + file://fix-segfault-when-removable-icons-are-disabled.patch;patch=1" PACKAGES += "xfdesktop-backdrops ${PN}-mcs-plugins" -- cgit v1.2.3 From c51ce4a258c657dc646bfc01d77f1b71c0c3af4f Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Wed, 5 Nov 2008 13:43:58 +0100 Subject: checksums.ini: added some entries --- conf/checksums.ini | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 3981473961..5267d7afda 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -882,6 +882,10 @@ sha256=140828e8aa7d690d8f2a9a54faeac38bcbf40ea18c1f44a186af51bd6964cd13 md5=1ef201f29283179c8e5ab618529cac78 sha256=744d8f3a8206fbc45a5558d92163d5ef7e5e0cc0700283bb6a617fb1201629f9 +[http://archive.apache.org/dist/tomcat/tomcat-4/v4.1.37/src/apache-tomcat-4.1.37-src.tar.gz] +md5=fe50177a25a084ad1abf4a201d08c2a6 +sha256=65e4cc9d3ea4a7f30044bfd6c660c772adb75ac152d775342deb6049a0d19d74 + [ftp://ftp.buici.com/pub/apex/apex-1.4.11.tar.gz] md5=7259a49d93b1853b1b3435753893ab7c sha256=bce6638d95fa8d32b109176a7cef6aa71e40c130068fac71b0df369d1a36c82c @@ -1654,6 +1658,10 @@ sha256=ac6a5c3f4aa88f39e8f04fe43f00972f0235674ac3edb994c70ac802a1ed0219 md5=5a6228512bcce7d9fabe8fc2d66269bf sha256=5cd1a5aeace83a9305f7221e9ec95127b5a26870c619fd00ae48f1962d59f48b +[ftp://ftp.debian.org/debian/pool/main/b/blktool/blktool_4.orig.tar.gz] +md5=62edc09c9908107e69391c87f4f3fd40 +sha256=b1e6d5912546d2a4b704ec65c2b9664aa3b4663e7d800e06803330335a2cb764 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/b/blktool/blktool_4.orig.tar.gz] md5=62edc09c9908107e69391c87f4f3fd40 sha256=b1e6d5912546d2a4b704ec65c2b9664aa3b4663e7d800e06803330335a2cb764 @@ -2030,6 +2038,10 @@ sha256=f7bf5368309d76e5daf3a89d4d1bea688dac7780742e7a0ae1af19be9316fe22 md5=badb4563a02d4188b478df31fa1b657d sha256=5c4594f71eab62e24d12c67ae6a6aead306c537cf71e946c4e9fbebbe9786243 +[http://jalimo.evolvis.org/repository/sources/cacao-0.98+hg20071001.tar.bz2] +md5=9ff10c929bd0cbf15909107c1aff7518 +sha256=fdfdbdfdebefb89af560297796d4861ef4fc939e9dbe8500750909dea8662bee + [http://www.complang.tuwien.ac.at/cacaojvm/download/cacao-0.98/cacao-0.98.tar.bz2] md5=8b8907c8b925761c9410bcadb9705346 sha256=cb9363add825cedf77764fc49a223aaf43f0a9f485b711ba8c92f16b13fff188 @@ -3222,6 +3234,10 @@ sha256=2382f315fda4241a0043bac1dfc669f006d8e93e87fa382b263b1672972f4077 md5=412d8badd227807ef2f52608435240fb sha256=dfe24798ca067c75c84f01bf4ee3734fde3e32e4f270f7222025218d3baffbbb +[http://mirror.calvin.edu/eclipse/downloads/drops/S-3.3M5eh-200702220951/ecjsrc.zip] +md5=9e1fc1c86c85e72df5e141069b82041d +sha256=f41194a9580023afd11d18b82f6815b064af83c4f9ca407a40cd8d960bd112cc + [http://mirrors.ibiblio.org/pub/mirrors/eclipse/eclipse/downloads/drops/R-3.3-200706251500/ecjsrc.zip] md5=9e1fc1c86c85e72df5e141069b82041d sha256=f41194a9580023afd11d18b82f6815b064af83c4f9ca407a40cd8d960bd112cc @@ -16194,6 +16210,10 @@ sha256=41c091d05943817c0b667192dab8c8f3a3a59c04a66dd311a9573f48a7b70b3b md5=c0e88fc3483d90a7fea6a399298d90ea sha256=41c091d05943817c0b667192dab8c8f3a3a59c04a66dd311a9573f48a7b70b3b +[http://xorg.freedesktop.org/releases/individual/app/xeyes-1.0.1.tar.bz2] +md5=033f14f7c4e30d1f4edbb22d5ef86883 +sha256=530902e8732130e37d9b46e73eecff90d6dbc5d5628620fded74a4e054aa8029 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xeyes-X11R7.0-1.0.1.tar.bz2] md5=3ffafa7f222ea799bcd9fcd85c60ab98 sha256=e93bb322fe96ceabd0581bb70101aaa1001b0b8f894b3ae0e1fa2e4b38f41af2 -- cgit v1.2.3 From da9083a0941ef11ec535a657512da8d8ce71cb47 Mon Sep 17 00:00:00 2001 From: woglinde Date: Thu, 6 Nov 2008 01:06:19 +0100 Subject: glib-2.0: fix atomic-thumb.patch * is only in included in glib-2.0_2.16.4 * missed depenedcy on .la file * bump PR of glib-2.0_2.16.4 --- packages/glib-2.0/files/atomic-thumb.patch | 12 ++++++++---- packages/glib-2.0/glib-2.0_2.16.4.bb | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/glib-2.0/files/atomic-thumb.patch b/packages/glib-2.0/files/atomic-thumb.patch index d1e3d49a6b..ced49f4acd 100644 --- a/packages/glib-2.0/files/atomic-thumb.patch +++ b/packages/glib-2.0/files/atomic-thumb.patch @@ -1,8 +1,10 @@ # gatomic.c uses SWP, which doesn't work in Thumb mode. # Put that source file into a separate convenience library which is always built as ARM. ---- glib/glib/Makefile.am~ 2008-07-01 23:30:12.000000000 +0100 -+++ glib/glib/Makefile.am 2008-10-27 10:03:42.000000000 +0000 +Index: glib-2.16.4/glib/Makefile.am +=================================================================== +--- glib-2.16.4.orig/glib/Makefile.am 2008-11-06 00:53:11.253367291 +0100 ++++ glib-2.16.4/glib/Makefile.am 2008-11-06 00:54:13.453356583 +0100 @@ -80,6 +80,7 @@ galiasdef.c @@ -27,12 +29,14 @@ gbacktrace.c \ gbase64.c \ gbookmarkfile.c \ -@@ -285,7 +290,7 @@ +@@ -285,8 +290,8 @@ pcre_inc = endif -libglib_2_0_la_LIBADD = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ @ICONV_LIBS@ @G_LIBS_EXTRA@ $(pcre_lib) +-libglib_2_0_la_DEPENDENCIES = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ $(glib_win32_res) @GLIB_DEF@ +libglib_2_0_la_LIBADD = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ @ICONV_LIBS@ @G_LIBS_EXTRA@ $(pcre_lib) libgatomic.la - libglib_2_0_la_DEPENDENCIES = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ $(glib_win32_res) @GLIB_DEF@ ++libglib_2_0_la_DEPENDENCIES = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ $(glib_win32_res) @GLIB_DEF@ libgatomic.la libglib_2_0_la_LDFLAGS = \ + $(glib_win32_res_ldflag) \ diff --git a/packages/glib-2.0/glib-2.0_2.16.4.bb b/packages/glib-2.0/glib-2.0_2.16.4.bb index 1b817a9ee5..a1ce510c51 100644 --- a/packages/glib-2.0/glib-2.0_2.16.4.bb +++ b/packages/glib-2.0/glib-2.0_2.16.4.bb @@ -3,7 +3,7 @@ require glib.inc # This version requires a newer libtool that isn't default yet DEFAULT_PREFERENCE = "-1" -PR = "r0" +PR = "r1" SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glib/2.16/glib-${PV}.tar.bz2 \ file://glibconfig-sysdefs.h \ -- cgit v1.2.3 From 143a57890aabe89ee930ff5bd38e18ae76eab504 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 6 Nov 2008 09:06:34 +0100 Subject: totem: add missing patch for 2.24.2 --- packages/totem/totem-2.24.2/gst-detect.diff | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 packages/totem/totem-2.24.2/gst-detect.diff diff --git a/packages/totem/totem-2.24.2/gst-detect.diff b/packages/totem/totem-2.24.2/gst-detect.diff new file mode 100644 index 0000000000..57c2a3cedf --- /dev/null +++ b/packages/totem/totem-2.24.2/gst-detect.diff @@ -0,0 +1,28 @@ +--- /tmp/configure.in 2008-08-10 15:27:06.000000000 +0200 ++++ totem-2.23.4/configure.in 2008-08-10 20:37:08.743198000 +0200 +@@ -142,11 +142,7 @@ + if $gst010_inspect $base_element >/dev/null 2>/dev/null; then + AC_MSG_RESULT([yes]) + else +- AC_MSG_RESULT([no]) +- AC_MSG_ERROR([ +- Cannot find required GStreamer-0.10 plugin '$base_element'. +- It should be part of gst-plugins-base. Please install it. +- ]) ++ AC_MSG_RESULT([yes, we assume OE has already built them]) + fi + done + +@@ -157,11 +153,7 @@ + if $gst010_inspect $good_element >/dev/null 2>/dev/null; then + AC_MSG_RESULT([yes]) + else +- AC_MSG_RESULT([no]) +- AC_MSG_ERROR([ +- Cannot find required GStreamer-0.10 plugin '$good_element'. +- It should be part of gst-plugins-good. Please install it. +- ]) ++ AC_MSG_RESULT([yes, we assume OE has already built them]) + fi + done + -- cgit v1.2.3 From 00ea9a44ec8013f577e2d998db12c5ba1032669a Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 6 Nov 2008 10:46:16 +0100 Subject: xserver kdrive 1.4.0.90: bump PR --- packages/xorg-xserver/xserver-kdrive_1.4.0.90.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xorg-xserver/xserver-kdrive_1.4.0.90.bb b/packages/xorg-xserver/xserver-kdrive_1.4.0.90.bb index 48ff0ea6fa..5caec02a7b 100644 --- a/packages/xorg-xserver/xserver-kdrive_1.4.0.90.bb +++ b/packages/xorg-xserver/xserver-kdrive_1.4.0.90.bb @@ -3,7 +3,7 @@ require xserver-kdrive-common.inc DEPENDS += "hal libxkbfile libxcalibrate pixman" PE = "1" -PR = "r3" +PR = "r4" SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \ ${KDRIVE_COMMON_PATCHES} \ -- cgit v1.2.3 From 80cf7dcb3b02ae6d5f94818e0663aae58f989e2e Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Thu, 6 Nov 2008 23:36:12 +0000 Subject: shared-mime-info: Bring back db update in postint for 0.20 and 0.22 0.51 builds the mime db on the host and does not need these postint. --- packages/shared-mime-info/shared-mime-info_0.20.bb | 9 +++++++++ packages/shared-mime-info/shared-mime-info_0.22.bb | 10 +++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/shared-mime-info/shared-mime-info_0.20.bb b/packages/shared-mime-info/shared-mime-info_0.20.bb index f24008ec13..3d2a614bd1 100644 --- a/packages/shared-mime-info/shared-mime-info_0.20.bb +++ b/packages/shared-mime-info/shared-mime-info_0.20.bb @@ -1,2 +1,11 @@ require shared-mime-info.inc +PR = "r1" + +pkg_postinst () { +if [ "x$D" != "x" ]; then + exit 1 +fi + echo "Updating MIME database... this may take a while." + ${bindir}/update-mime-database ${datadir}/mime +} diff --git a/packages/shared-mime-info/shared-mime-info_0.22.bb b/packages/shared-mime-info/shared-mime-info_0.22.bb index 6d3b760390..f28dff2ca2 100644 --- a/packages/shared-mime-info/shared-mime-info_0.22.bb +++ b/packages/shared-mime-info/shared-mime-info_0.22.bb @@ -1,3 +1,11 @@ require shared-mime-info.inc -PR = "r1" +PR = "r2" + +pkg_postinst () { +if [ "x$D" != "x" ]; then + exit 1 +fi + echo "Updating MIME database... this may take a while." + ${bindir}/update-mime-database ${datadir}/mime +} -- cgit v1.2.3 From 3289090d83f8ef4d80130f8fdf0938164caac517 Mon Sep 17 00:00:00 2001 From: "M. Dietrich" Date: Fri, 7 Nov 2008 00:07:31 +0000 Subject: checksums.ini: Add various checksums --- conf/checksums.ini | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 5267d7afda..ba701a18e8 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -610,6 +610,10 @@ sha256=f97b3c0a36c7422d38af67dd68855e5c25581f7b6e79f8671e298e66b4d0026e md5=9716488c2d1cf2e5f97b165be4de18db sha256=3d92318dadef22b1d1b062925ef66bac2ad48a0fd4fc83b88dcabba38c182b7b +[http://www.stud.uni-karlsruhe.de/~uvaue/chaos/bins/Wolf4SDL-1.6-src.zip] +md5=61eed8ed819688663e399b5e79ed006f +sha256=6a19418a074a7dec6fd67f00df74f3335e85eb38d2d2a17bd0e91cf8010537e3 + [http://ring.asahi-net.or.jp/archives/XFree86/4.3.0/source/X430src-1.tgz] md5=4f241a4f867363f40efa2b00dca292af sha256=5276b045e154948fce7abba7d686406c65862d90b43b50f2546b33e38378f0d7 @@ -12986,6 +12990,10 @@ sha256=fad4e6ca8e9e2a9e4bcddc96194db69827164f65b8a35cb326d0c8cd3a870238 md5=d2aa74615aa9cf23413975a68613ffc1 sha256=12527f130dd695184c44c6197deb619c26c9b5b31ce7699a5dd97e0ad2dd7bd1 +[http://downloads.sourceforge.net/pyopenssl/pyOpenSSL-0.6.tar.gz] +md5=af67fda6d2125cae9c56ee50430a40c7 +sha256=58ee9dd10fbd97d65347626f60a38aafdcb05d19ad90c883c4284266ba7ec959 + [http://www.andrewchatham.com/pyogg/download/pyao-0.82.tar.gz] md5=8e00f5154401a6f6d99efd20606e2819 sha256=9a444518252f6d747e76a219e5efbc05b4e1742260a7419da9ddf93a519b30c5 @@ -13018,6 +13026,10 @@ sha256=2a9fbef7d953e1fc1eec837a4087cd518e465226b060b5cb3ea67bcef1760269 md5=cdcebdfd63e74754f57b9e9b0db4ea20 sha256=a6d7db68c87699e283a1f58b637a7e730c350899fd7b35b88e63caa0e85a9ab9 +[http://www.amk.ca/files/python/crypto/pycrypto-2.0.1.tar.gz] +md5=4d5674f3898a573691ffb335e8d749cd +sha256=b08d4ed54c9403c77778a3803e53a4f33f359b42d94f6f3e14abb1bf4941e6ea + [http://pycurl.sourceforge.net/download/pycurl-7.14.0.tar.gz] md5=6f73d518fb520af14634a06ee1b7ddce sha256=a60e08b01fc3355ec18ec0e447349b6f8bff3f9628eb42891cff1eb51b9618b1 @@ -13186,6 +13198,10 @@ sha256=1481afca7dfed9bcecfa6f4c8909a70bb0b90428e9b535b0bb40bc337bc62578 md5=86a5441285fc908145414b63348d11a3 sha256=c2adf20955cb62af5c94622d0dd47fb82ee63da33c03d5a1f82337ba83044bb7 +[http://www.freedesktop.org/~lanius/pyxdg-0.16.tar.gz] +md5=55b71ec0df9509e05e562ac402b119f7 +sha256=b7f91cec9b42404a680c780c40d37c825701d7e533c1043bbabf6a0551e86635 + [http://downloads.sourceforge.net/pyzeroconf/pyzeroconf-0.12.tgz] md5=e7180e9440d961c6aba5056fdd7997f0 sha256=00689fa56dd87eb47b30565ab7561c94d2cde58372e267116889d2531d880b98 @@ -14974,6 +14990,10 @@ sha256=8475bb2ff42f5f162de6825c8c700fd61bae7b629de3e0aaf95cb54a224220ba md5=2d5f7efafa5d04598b21f1889e981207 sha256=bbc3bdbdefc81f7b186f1c5697f6939b5fc77d4569112edd1a6b3aceae177228 +[http://trevp.net/tlslite/tlslite-0.3.8.tar.gz] +md5=5e1c19500e30fc7580939c18b435f937 +sha256=3d79170d8c3a662fa717b6401e8004208df113aaf3b18689bbeb704a23bf5b9f + [ftp://ftp.trolltech.com/pub/freebies/tmake/tmake-1.11.tar.gz] md5=b007a86a83483ff9bd6795f45780ddce sha256=6d828029e276f42fee507f58ed0bd6890ef75f0e54f45f2b1129a2426c817c61 -- cgit v1.2.3 From 8d6cf7d596222b11e9f3a85910feb989b180f39b Mon Sep 17 00:00:00 2001 From: Philip Balister Date: Thu, 6 Nov 2008 20:08:07 -0500 Subject: gnuradio : Fix stupid typo. --- packages/gnuradio/gnuradio.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/gnuradio/gnuradio.inc b/packages/gnuradio/gnuradio.inc index f44c18583b..26005e653b 100644 --- a/packages/gnuradio/gnuradio.inc +++ b/packages/gnuradio/gnuradio.inc @@ -2,7 +2,7 @@ DESCRIPTION = "GNU Radio" SECTION = "apps" PRIORITY = "optional" LICENSE = "GPL" -DEPENDS = " guile-native fftwf python virtual/libsdl alsa-lib jack boost cppunit sdcc-native swig-nativei python-numpy" +DEPENDS = " guile-native fftwf python virtual/libsdl alsa-lib jack boost cppunit sdcc-native swig-native python-numpy" RDEPENDS_${PN} = "python-core python-audio python-threading python-codecs python-lang python-textutils \ python-shell python-pickle python-compiler python-pkgutil python-pydoc python-mmap \ -- cgit v1.2.3 From 0f1aa27588234f2ecce8d52af478c44fa2c0d9a3 Mon Sep 17 00:00:00 2001 From: Denys Dmytriyenko Date: Thu, 6 Nov 2008 21:51:50 -0800 Subject: glibc: Add support for compiling glibc with march=i686 --- packages/glibc/files/march-i686.patch | 38 +++++++++++++++++++++++++++++++++++ packages/glibc/glibc_2.6.1.bb | 1 + 2 files changed, 39 insertions(+) create mode 100644 packages/glibc/files/march-i686.patch diff --git a/packages/glibc/files/march-i686.patch b/packages/glibc/files/march-i686.patch new file mode 100644 index 0000000000..04616032ad --- /dev/null +++ b/packages/glibc/files/march-i686.patch @@ -0,0 +1,38 @@ +2007-02-15 Khem Raj + + * sysdeps/unix/sysv/linux/i386/sysdep.h: Re-define __i686. + * nptl/sysdeps/pthread/pt-initfini.c: Ditto. + + + +Index: sysdeps/unix/sysv/linux/i386/sysdep.h +=================================================================== +--- sysdeps/unix/sysv/linux/i386/sysdep.h (revision 1469) ++++ sysdeps/unix/sysv/linux/i386/sysdep.h (working copy) +@@ -29,6 +29,10 @@ + #include + #include + ++#if defined __i686 && defined __ASSEMBLER__ ++#undef __i686 ++#define __i686 __i686 ++#endif + + /* For Linux we can use the system call table in the header file + /usr/include/asm/unistd.h +Index: nptl/sysdeps/pthread/pt-initfini.c +=================================================================== +--- nptl/sysdeps/pthread/pt-initfini.c (revision 1469) ++++ nptl/sysdeps/pthread/pt-initfini.c (working copy) +@@ -45,6 +45,11 @@ + /* Embed an #include to pull in the alignment and .end directives. */ + asm ("\n#include \"defs.h\""); + ++asm ("\n#if defined __i686 && defined __ASSEMBLER__"); ++asm ("\n#undef __i686"); ++asm ("\n#define __i686 __i686"); ++asm ("\n#endif"); ++ + /* The initial common code ends here. */ + asm ("\n/*@HEADER_ENDS*/"); + diff --git a/packages/glibc/glibc_2.6.1.bb b/packages/glibc/glibc_2.6.1.bb index 17050174b3..ab343ea0a6 100644 --- a/packages/glibc/glibc_2.6.1.bb +++ b/packages/glibc/glibc_2.6.1.bb @@ -58,6 +58,7 @@ SRC_URI = "\ file://glibc-use-isystem-include-fixed.patch;patch=1 \ file://glibc-arm-no-asm-page.patch;patch=1 \ file://armv4t-interworking.patch;patch=1 \ + file://march-i686.patch;patch=1;pnum=0 \ " # Build fails on sh3 and sh4 without additional patches -- cgit v1.2.3 From c70445331f91cb7f02503e7567927b9b6e40e6bb Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 7 Nov 2008 09:29:04 +0100 Subject: webkit gtk: x96 and ppc default to dolt, which doesn't understand ${TARGET_PREFIX}, so create libtool from ${TARGET_PREFIX}libtool --- packages/webkit/webkit-gtk_svn.bb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/webkit/webkit-gtk_svn.bb b/packages/webkit/webkit-gtk_svn.bb index bed1a180b0..92df2d0f94 100644 --- a/packages/webkit/webkit-gtk_svn.bb +++ b/packages/webkit/webkit-gtk_svn.bb @@ -5,7 +5,7 @@ SRCREV_FORMAT = "webcore-rwebkit" # Yes, this is wrong... PV = "0.1+svnr${SRCREV}" -PR = "r6" +PR = "r7" SRC_URI = "\ svn://svn.webkit.org/repository/webkit/trunk/;module=JavaScriptCore;proto=http \ @@ -35,6 +35,11 @@ EXTRA_OECONF = "\ --with-http-backend=curl \ " +# Dolt gets used on x86 and ppc and hardcodes 'libtool' +do_configure_append() { + cp ${TARGET_PREFIX}libtool libtool || true +} + do_compile_prepend() { mkdir -p ${S}/WebKitBuilds/Debug/JavaScriptCore/pcre/tmp/ mkdir -p ${S}/Programs/ -- cgit v1.2.3 From 9496af0dcf095230250f84c9154ccfe88940b1f1 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 7 Nov 2008 10:04:41 +0100 Subject: angstrom feed builder: add more recipes to build --- contrib/angstrom/build-feeds.sh | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/contrib/angstrom/build-feeds.sh b/contrib/angstrom/build-feeds.sh index 60fe1bf7ee..623f685ecd 100755 --- a/contrib/angstrom/build-feeds.sh +++ b/contrib/angstrom/build-feeds.sh @@ -81,7 +81,8 @@ do cherokee \ claws-mail \ ctorrent \ - distcc \ + cvs \ + distcc \ dsniff \ duke3d \ e-wm \ @@ -125,7 +126,8 @@ do gpe-mini-browser2 \ gpe-scap \ gpe-sketchbook \ - gperf \ + git \ + gperf \ gphoto2 \ gpsdrive \ gqview \ @@ -151,7 +153,8 @@ do lighttpd \ links-x11 \ m4 \ - mahjongg \ + madplay \ + mahjongg \ make \ maki \ mc \ @@ -161,7 +164,8 @@ do mono \ mousepad \ mpfr \ - mplayer \ + mpg123 \ + mplayer \ mtd-utils \ mutt \ mythtv \ @@ -209,7 +213,8 @@ do sliderulez \ sokoban \ strace \ - sugar \ + subversion \ + sugar \ sylpheed \ task-gpe-pim \ task-openmoko-feed \ -- cgit v1.2.3 From f9c6ab0d6501585894ef64784f8c9770daeb7521 Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Fri, 7 Nov 2008 10:49:41 +0100 Subject: sane-srcrevs.inc: bump freesmartphone.org and openmoko recipes to prepare for FSO ms4 --- conf/distro/include/sane-srcrevs.inc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc index 3e0af7eb2f..924810e396 100644 --- a/conf/distro/include/sane-srcrevs.inc +++ b/conf/distro/include/sane-srcrevs.inc @@ -46,7 +46,7 @@ SRCREV_pn-elf2flt ?= "1786" SRCREV_pn-epiphany ?= "7837" SRCREV_pn-fbgrab-viewer-native ?= "1943" SRCREV_pn-flashrom ?= "3682" -SRCREV_pn-frameworkd ?= "a816e0412c687bf8e59e3505cce877f02e51f84d" +SRCREV_pn-frameworkd ?= "69ac1421799f966baaf904a6790ed1a87c066798" SRCREV_pn-frameworkd-devel ?= "e8ad25f2e36e31e0a8afe08fbe11e54b9305aa8f" SRCREV_pn-fso-gpsd ?= "8f82d35ae83fdc00f2c4786257e98551b9dea995" SRCREV_pn-fso-sounds ?= "b24d3c2e66fee10a5e288101cd1b6f5bbd3da7e2" @@ -86,7 +86,7 @@ SRCREV_pn-lightmediascanner ?= "68" SRCREV_pn-linux-bfin ?= "3758" SRCREV_pn-linux-hackndev-2.6 ?= "1308" SRCREV_pn-linux-ixp4xx ?= "1066" -SRCREV_pn-linux-openmoko ?= "f5b973489beb1a1239dfad53e3ad6e36ff7ee958" +SRCREV_pn-linux-openmoko ?= "9706327002caebe6633c93e605882ea37172ec57" SRCREV_pn-linux-openmoko-devel ?= "04f54c7001fb609e11ff4b2b4575c04188dbefef" SRCREV_pn-llvm-gcc4 ?= "374" SRCREV_pn-llvm-gcc4-cross ?= "374" @@ -98,8 +98,8 @@ SRCREV_pn-matchbox-keyboard ?= "1910" SRCREV_pn-matchbox-keyboard-inputmethod ?= "1910" SRCREV_pn-matchbox-panel-2 ?= "1626" SRCREV_pn-matchbox-stroke ?= "1820" -SRCREV_pn-mickeydbus ?= "a63379b41241e6529e027e7ae812628a8f1f9f0b" -SRCREV_pn-mickeyterm ?= "19de58bbe1c80a547be35f86d315ac78a75cea2a" +SRCREV_pn-mickeydbus ?= "e2698d54e2bec9a61ac858f9773d9ca1b78cc9a5" +SRCREV_pn-mickeyterm ?= "e2698d54e2bec9a61ac858f9773d9ca1b78cc9a5" SRCREV_pn-moko-gtk-engine ?= "3612" SRCREV_pn-mpd-alsa ?= "6952" SRCREV_pn-mplayer ?= "27659" @@ -206,8 +206,8 @@ SRCREV_pn-wesnoth ?= "22021" SRCREV_pn-wlan-ng-modules ?= "1859" SRCREV_pn-wlan-ng-utils ?= "1859" SRCREV_pn-xoo ?= "1971" -SRCREV_pn-xserver-kdrive-glamo ?= "4067470ea4d569bae7b4161ca998645a0c9b96e7" -SRCREV_pn-zhone ?= "28e01227063ab76b9144e7a443319add6b195864" +SRCREV_pn-xserver-kdrive-glamo ?= "7fa46527131177dfba7e711d1530205a9efc5e79" +SRCREV_pn-zhone ?= "4a630de01b4ac9ec62540439eee94c12a55c0c71" # Enlightenment Foundation Libraries # Caution: This is not alphabetically, but (roughly) dependency-sorted. -- cgit v1.2.3 From eca5576b3ddefb530a077d459fe3adc8b104d343 Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Fri, 7 Nov 2008 11:01:04 +0100 Subject: u-boot-openmoko: bump stable version, remove unstable version since u-boot-openmoko has been deprecated. Further development will went into the Qi bootloader. --- conf/distro/include/sane-srcrevs.inc | 3 +-- packages/u-boot/u-boot-openmoko-devel_git.bb | 8 -------- packages/u-boot/u-boot-openmoko.inc | 4 +--- 3 files changed, 2 insertions(+), 13 deletions(-) delete mode 100644 packages/u-boot/u-boot-openmoko-devel_git.bb diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc index 924810e396..c081e0d450 100644 --- a/conf/distro/include/sane-srcrevs.inc +++ b/conf/distro/include/sane-srcrevs.inc @@ -195,8 +195,7 @@ SRCREV_pn-sphyrna-python ?= "45" SRCREV_pn-starling ?= "9574" SRCREV_pn-tichy ?= "168" SRCREV_pn-tmut ?= "60" -SRCREV_pn-u-boot-openmoko ?= "414367bf5b65942947dd5d569c27d2a8e8e5e562" -SRCREV_pn-u-boot-openmoko-devel ?= "ba029a1426bfca169572bf80d50a8b190a6b0e19" +SRCREV_pn-u-boot-openmoko ?= "2b78a9413619902aa4ff55a986b12ece3021fbe3" SRCREV_pn-usbpath ?= "3172" SRCREV_pn-usbpath-native ?= "3172" SRCREV_pn-webkit-gtk ?= "36540" diff --git a/packages/u-boot/u-boot-openmoko-devel_git.bb b/packages/u-boot/u-boot-openmoko-devel_git.bb deleted file mode 100644 index 3659241dfa..0000000000 --- a/packages/u-boot/u-boot-openmoko-devel_git.bb +++ /dev/null @@ -1,8 +0,0 @@ -require u-boot-openmoko.inc - -SRC_URI = "\ - git://git.openmoko.org/git/u-boot.git;protocol=git;branch=andy \ - file://makefile-no-dirafter.patch;patch=1 \ -" -S = "${WORKDIR}/git" - diff --git a/packages/u-boot/u-boot-openmoko.inc b/packages/u-boot/u-boot-openmoko.inc index c25afd38f6..2238d3662a 100644 --- a/packages/u-boot/u-boot-openmoko.inc +++ b/packages/u-boot/u-boot-openmoko.inc @@ -6,12 +6,10 @@ PRIORITY = "optional" PROVIDES = "virtual/bootloader" LOCALVERSION = "+gitr${SRCREV}" PV = "1.3.1${LOCALVERSION}" -PR = "r0" +PR = "r1" UBOOT_MACHINES = "gta01bv2 gta01bv3 gta01bv4 gta02v2 gta02v4 gta02v5" -DEFAULT_PREFERENCE = "-1" - EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}" TARGET_LDFLAGS = "" -- cgit v1.2.3 From f1905259f95aadaaac08409eb75ac12aac93e1b7 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 7 Nov 2008 14:37:17 +0100 Subject: xf86 video omapfb: bump SRCREV to fix segfault during fb probe --- packages/xorg-driver/xf86-video-omapfb_git.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/xorg-driver/xf86-video-omapfb_git.bb b/packages/xorg-driver/xf86-video-omapfb_git.bb index c6b03061ef..9e43ad6466 100644 --- a/packages/xorg-driver/xf86-video-omapfb_git.bb +++ b/packages/xorg-driver/xf86-video-omapfb_git.bb @@ -2,9 +2,9 @@ require xorg-driver-video.inc DESCRIPTION = "X.Org X server -- OMAP display driver" -PR ="r11" +PR ="r12" -SRCREV = "da20e7edbff31ac0a5a496af947424b0991a36be" +SRCREV = "c1d44a1b11bb4e60331dd39f2deb9b3df9149e37" PV = "0.0.1+${PR}+git${SRCREV}" SRC_URI = "git://git.pingu.fi/xf86-video-omapfb.git;protocol=http" -- cgit v1.2.3 From 461b28671d10c4fd8c1967e00ef152d055815895 Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Fri, 7 Nov 2008 16:37:40 +0100 Subject: openjdk-langtools-native: New recipe. --- .../files/0.0+jdk7-b31-build-fix.patch | 114 +++++++++++++++++++++ .../openjdk-langtools-native_0.0+jdk7-b31.bb | 25 +++++ 2 files changed, 139 insertions(+) create mode 100644 packages/openjdk-langtools/files/0.0+jdk7-b31-build-fix.patch create mode 100644 packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb diff --git a/packages/openjdk-langtools/files/0.0+jdk7-b31-build-fix.patch b/packages/openjdk-langtools/files/0.0+jdk7-b31-build-fix.patch new file mode 100644 index 0000000000..147dab520e --- /dev/null +++ b/packages/openjdk-langtools/files/0.0+jdk7-b31-build-fix.patch @@ -0,0 +1,114 @@ +Index: icepick-0.0+hg20080118/Makefile.am +=================================================================== +--- icepick-0.0+hg20080118.orig/Makefile.am ++++ icepick-0.0+hg20080118/Makefile.am +@@ -19,55 +19,61 @@ else + JCOMPILER = echo "No compiler found" 1>&2; exit 1 + endif + +-# All our example java source files ++# Go into $(LANGTOOLS_SRC_DIR)/src/share/classes and set ++# TOOLS_JAVA_FILES to the output of ++# find . -mindepth 2 -type d -and -not -wholename "*resources" -printf \$\(OPENJDK_CLASSES\)/%P/\*.java' \\'\\n ++# (btw: xclip is your friend) + OPENJDK_CLASSES = $(LANGTOOLS_SRC_DIR)/src/share/classes +-TOOLS_JAVA_FILES = $(OPENJDK_CLASSES)/com/sun/tools/apt/Main.java \ +- $(OPENJDK_CLASSES)/com/sun/javadoc/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/apt/comp/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/apt/main/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/apt/util/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/apt/mirror/apt/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/apt/mirror/type/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/apt/mirror/util/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/apt/mirror/declaration/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/apt/mirror/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javac/api/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javac/jvm/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javac/sym/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javac/code/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javac/comp/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javac/main/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javac/tree/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javac/util/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javac/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javac/model/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javac/parser/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javac/processing/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javac/zip/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javah/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/javadoc/*.java \ +- $(OPENJDK_CLASSES)/com/sun/mirror/apt/*.java \ +- $(OPENJDK_CLASSES)/com/sun/mirror/type/*.java \ +- $(OPENJDK_CLASSES)/com/sun/mirror/util/*.java \ +- $(OPENJDK_CLASSES)/com/sun/mirror/declaration/*.java \ +- $(OPENJDK_CLASSES)/com/sun/source/tree/*.java \ +- $(OPENJDK_CLASSES)/com/sun/source/util/*.java \ +- $(OPENJDK_CLASSES)/javax/lang/model/type/*.java \ +- $(OPENJDK_CLASSES)/javax/lang/model/util/*.java \ +- $(OPENJDK_CLASSES)/javax/lang/model/*.java \ +- $(OPENJDK_CLASSES)/javax/lang/model/element/*.java \ +- $(OPENJDK_CLASSES)/javax/tools/*.java \ +- $(OPENJDK_CLASSES)/javax/annotation/processing/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/doclets/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/doclets/formats/html/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/doclets/formats/html/markup/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/doclets/internal/toolkit/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/doclets/internal/toolkit/builders/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/doclets/internal/toolkit/taglets/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/doclets/internal/toolkit/util/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/doclets/internal/toolkit/util/links/*.java \ +- $(OPENJDK_CLASSES)/com/sun/tools/doclets/standard/*.java \ +- $(OPENJDK_CLASSES)/sun/tools/javap/*.java ++TOOLS_JAVA_FILES = \ ++ $(OPENJDK_CLASSES)/sun/tools/javap/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javap/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javadoc/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/apt/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/apt/comp/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/apt/util/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/apt/main/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/apt/mirror/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/apt/mirror/declaration/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/apt/mirror/apt/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/apt/mirror/util/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/apt/mirror/type/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javah/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javac/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javac/comp/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javac/file/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javac/model/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javac/code/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javac/tree/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javac/api/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javac/util/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javac/jvm/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javac/processing/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javac/parser/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javac/sym/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/javac/main/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/classfile/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/doclets/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/doclets/standard/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/doclets/internal/toolkit/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/doclets/internal/toolkit/builders/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/doclets/internal/toolkit/util/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/doclets/internal/toolkit/util/links/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/doclets/internal/toolkit/taglets/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/doclets/formats/html/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/tools/doclets/formats/html/markup/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/javadoc/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/source/tree/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/source/util/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/mirror/declaration/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/mirror/apt/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/mirror/util/*.java \ ++ $(OPENJDK_CLASSES)/com/sun/mirror/type/*.java \ ++ $(OPENJDK_CLASSES)/javax/tools/*.java \ ++ $(OPENJDK_CLASSES)/javax/annotation/processing/*.java \ ++ $(OPENJDK_CLASSES)/javax/lang/model/*.java \ ++ $(OPENJDK_CLASSES)/javax/lang/model/element/*.java \ ++ $(OPENJDK_CLASSES)/javax/lang/model/util/*.java \ ++ $(OPENJDK_CLASSES)/javax/lang/model/type/*.java + + # The zip files with classes we want to produce. + TOOLS_ZIP = tools.jar diff --git a/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb b/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb new file mode 100644 index 0000000000..3f90e4a7dd --- /dev/null +++ b/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb @@ -0,0 +1,25 @@ +DESCRIPTION = "Java Language tools (javac, javah, javap, javadoc and apt) from OpenJDK" +HOMEPAGE = "http://http://openjdk.java.net/groups/compiler" +LICENSE = "GPL" + +DEPENDS = "classpath-native fastjar-native ecj-initial" + +S = "${WORKDIR}/icepick-0.0+hg20080118" + +SRC_URI = "\ + http://jalimo.evolvis.org/repository/sources/icepick-0.0+hg20080118.tar.bz2;md5sum=ce7b1827e6f4cbe73b9ffa90b0d45a6a \ + http://jalimo.evolvis.org/repository/sources/openjdk-langtools-jdk7-b31.tar.bz2;md5sum=670931f67b2e4ac46c6e0cd15418f2fa \ + file://${PV}-build-fix.patch;patch=1 \ + " + +inherit java autotools native + +EXTRA_OECONF = "\ + --with-javac=${STAGING_BINDIR}/ecj-initial \ + --with-vm=${STAGING_BINDIR}/java \ + --with-fastjar=${STAGING_BINDIR}/fastjar \ + --with-classpath=${STAGING_DATADIR}/classpath/glibj.zip \ + --with-langtools-src-dir=${WORKDIR}/openjdk-langtools-jdk7-b31 \ + " + +export JAVAC_OPTS="-bootclasspath ${STAGING_DATADIR_JAVA}/share/classpath/glibj.zip -source 5.0" -- cgit v1.2.3 From 58d7c9bc2b4207541858ed725f23cb0bf035d99e Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Fri, 7 Nov 2008 16:40:01 +0100 Subject: checksums.ini: Added entries from SRC_URI of openjdk-langtools-native. --- conf/checksums.ini | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index ba701a18e8..15eb7669fb 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -6926,6 +6926,10 @@ sha256=ef6b1c8def236f16ea914eccbb050c84ee314c0028b03c560ed20ff96776f74c md5=641ec45fe377529c7fd914f77b11b44f sha256=9ff8360375432a7a5c476cc6d55b3fdea9d6f3edc080d295a60421d8f47b1834 +[http://jalimo.evolvis.org/repository/sources/icepick-0.0+hg20080118.tar.bz2] +md5=ce7b1827e6f4cbe73b9ffa90b0d45a6a +sha256=63170836095f8451498c813a1f93a9ec70a1164d82aa30650c0f2216ca4377ab + [http://ftp.de.debian.org/debian/pool/main/i/iceweasel/iceweasel_3.0.1-1.diff.gz] md5=7124ea3c13369ff27bcff0080aca678f sha256=1d70e21e1c20e8d88bf3d2590de75c3e65b12da335097716adc58712cea41dad @@ -11674,6 +11678,10 @@ sha256=3a6ee888e4dd4ab7f2bc80d046688c099c6a95d1267af554b7c8f1543b66f21e md5=7df692e3186109cc00db6825b777201e sha256=1d2d7996cc94f9b87d0c51cf0e028070ac177c4123ecbfd7ac1cb8d0b7d322d1 +[http://jalimo.evolvis.org/repository/sources/openjdk-langtools-jdk7-b31.tar.bz2] +md5=670931f67b2e4ac46c6e0cd15418f2fa +sha256=f8b8820e410c137d279d14dec7e7a93217cc371acdfe1b3343b2278d1728932e + [ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.2.29.tgz] md5=6c4c72a1336aa45b463e738034c078d6 sha256=82ed5a27d2b340826b2e10625e687627ccefc883a426314952e4a253d5a6af29 -- cgit v1.2.3 From 88e8d542526aa7bc5d6dde719b05ae1e6a529f90 Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Sat, 8 Nov 2008 01:35:22 +0100 Subject: fso-image: Use the correct name for the fso illume theme --- packages/images/fso-image.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/images/fso-image.bb b/packages/images/fso-image.bb index d67bd620d3..8d75782286 100644 --- a/packages/images/fso-image.bb +++ b/packages/images/fso-image.bb @@ -3,7 +3,7 @@ #------------------------------------------------------ PV = "1.0" -PR = "r1" +PR = "r2" # no languages for now IMAGE_LINGUAS = "" @@ -12,7 +12,7 @@ BASE_INSTALL = "\ task-base \ " -ILLUME_THEME = "illume-theme-fso" +ILLUME_THEME = "illume-theme-freesmartphone" X_INSTALL = "\ task-x11-illume \ -- cgit v1.2.3 From c636a602e0974752a25b38bf982b602064d64b65 Mon Sep 17 00:00:00 2001 From: Mike Westerhof Date: Fri, 7 Nov 2008 21:41:42 -0600 Subject: fso-image-nox: a small no-x11 fso image for the GTA01 and GTA02 (suitable for use as a rootfs for Qtopia or Qt Extended) --- packages/images/fso-image-nox.bb | 113 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 packages/images/fso-image-nox.bb diff --git a/packages/images/fso-image-nox.bb b/packages/images/fso-image-nox.bb new file mode 100644 index 0000000000..056982e1b0 --- /dev/null +++ b/packages/images/fso-image-nox.bb @@ -0,0 +1,113 @@ +#------------------------------------------------------ +# freesmartphone.org Image Recipe, No-x11 Edition +#------------------------------------------------------ + +PR = "r1.0" + +require fso-image.bb + +export IMAGE_BASENAME = "fso-image-nox" + +# The packages below should ideally be a subset of the +# full fso-image. But unfortunately, the granularity +# and some of the assumptions of the fso image do not +# yet permit that. The gating factor is that this +# particular image needs to include the necessary stuff +# so that Qt Extended can run, but not so much that +# it can no longer fit in the small flash available on +# the GTA01. So, in practice this means that we will +# need some X libs (for dbus at a minimum), but we need +# to ensure that we limit that as much as possible. +# +# (There is little doubt that as the software stacks +# mature, the GTA01 will need to become SD-card based. +# Never-the-less, it is desirable to keep this as small +# as possible for as long as possible.) +# +# Note: if packages are _added_ to this image, it is +# important to also add the -dev versions of that +# package to the toolchain, if applicable. In general, +# _adding_ packages to this file is a bad idea; this +# image should be a proper subset of the full fso image. +# + +AUDIO_NOX_INSTALL = "\ + alsa-oss \ + alsa-state \ + alsa-utils-aplay \ + alsa-utils-amixer \ + openmoko-alsa-scenarios \ +" + +# python - just pull in some basics for now. Ideally we would like +# to be able to run parts of the framework, but that's a future, and +# would almost certainly require an SD card on the GTA01. So just +# add the basics so that we at least have a scripting language. +## +# (I'm really of two minds on this; removing python is a big +# win in terms of flash space, and I'm not sure how useful this +# small set is. Need comments from others. --- MJW) + +PYTHON_NOX_INSTALL = "\ + python-dbus \ + python-pygobject \ +" + +# Tools - carefully picked so that we don't pull in too much. +# This list should be edited -- in particular, s3c24xx-gpio is large +# and statically linked. If not needed, we can save some flash on the +# GTA01 by getting rid of it in the base image. Other candidates +# might include nano, mickeydbus, powertop, sysstat, and tcpdump. + +TOOLS_NOX_INSTALL = "\ + dosfstools \ + htop \ + iptables \ + lsof \ + mickeydbus \ + mtd-utils \ + nano \ + powertop \ + s3c24xx-gpio \ + sysstat \ + tcpdump \ +" + +# This block is intended to pull in stuff that is normally pulled +# in as dependencies in the full fso image. At this moment, +# libpng12 is an exception - it slipped into the toolchain, hence +# it needs to be here as well. It should be added to the full +# fso image at some point. + +EXTRA_NOX_INSTALL = "\ + libstdc++ \ + tslib \ + pointercal \ + tzdata \ + libpng12 \ +" + +IMAGE_INSTALL = "\ + ${BASE_INSTALL} \ + ${EXTRA_NOX_INSTALL} \ + ${AUDIO_NOX_INSTALL} \ + ${PYTHON_NOX_INSTALL} \ + ${TOOLS_NOX_INSTALL} \ +" + +# The post-processing step for this image is where we can do some +# cleanup to get some space back if necessary, or do other touch-up +# work specific to this image. It is currently empty, and should +# continue to be empty -- but it appears here because that's probably +# unrealistic, so we might as put the placeholder here right now. + +fso_nox_rootfs_postprocess() { + curdir=$PWD + cd ${IMAGE_ROOTFS} + # Execute commands to tweak the rootfs here + + # End commands + cd ${curdir} +} + +ROOTFS_POSTPROCESS_COMMAND += "fso_nox_rootfs_postprocess" -- cgit v1.2.3 From 081088f32f4421ea947e89a7823bca0db3901f3b Mon Sep 17 00:00:00 2001 From: Mike Westerhof Date: Fri, 7 Nov 2008 21:43:17 -0600 Subject: meta-toolchain-fso: bitbake recipes for a toolchain and SDK for fso. --- packages/meta/meta-toolchain-fso.bb | 7 +++ packages/tasks/task-fso-toolchain-host.bb | 9 ++++ packages/tasks/task-fso-toolchain-target.bb | 69 +++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 packages/meta/meta-toolchain-fso.bb create mode 100644 packages/tasks/task-fso-toolchain-host.bb create mode 100644 packages/tasks/task-fso-toolchain-target.bb diff --git a/packages/meta/meta-toolchain-fso.bb b/packages/meta/meta-toolchain-fso.bb new file mode 100644 index 0000000000..fbfbb0a2cd --- /dev/null +++ b/packages/meta/meta-toolchain-fso.bb @@ -0,0 +1,7 @@ +PR = "r0" + +TOOLCHAIN_TARGET_TASK = "task-fso-toolchain-target" +TOOLCHAIN_HOST_TASK = "task-fso-toolchain-host" + +require meta-toolchain.bb +SDK_SUFFIX = "toolchain-fso" diff --git a/packages/tasks/task-fso-toolchain-host.bb b/packages/tasks/task-fso-toolchain-host.bb new file mode 100644 index 0000000000..afb1ce830b --- /dev/null +++ b/packages/tasks/task-fso-toolchain-host.bb @@ -0,0 +1,9 @@ +require task-sdk-host.bb + +DESCRIPTION = "Packages for a standalone FSO SDK or external toolchain" +LICENSE = "MIT" +ALLOW_EMPTY = "1" + +PR = "r0" + +PACKAGES = "${PN}" diff --git a/packages/tasks/task-fso-toolchain-target.bb b/packages/tasks/task-fso-toolchain-target.bb new file mode 100644 index 0000000000..d042849bed --- /dev/null +++ b/packages/tasks/task-fso-toolchain-target.bb @@ -0,0 +1,69 @@ +DESCRIPTION = "Packages for a standalone SDK or external toolchain" +LICENSE = "MIT" +ALLOW_EMPTY = "1" + +PR = "r1" + +PACKAGES = "${PN}" + +# Stuff contained in this SDK is largely taken from task-sdk-base.bb. +# This is a starting point, and nothing more at present -- please fill +# this out with a reasonable set of development tools for an FSO image. +# Also feel free to remove stuff that's silly. And someone should +# review the glibc-gconv list to see if that makes sense. + +RDEPENDS_${PN} = "\ + glibc \ + glibc-dbg \ + glibc-dev \ + glibc-utils \ + libsegfault \ + glibc-thread-db \ + glibc-localedata-i18n \ + glibc-gconv-ibm850 \ + glibc-gconv-cp1252 \ + glibc-gconv-iso8859-1 \ + glibc-gconv-iso8859-15 \ + locale-base-en-gb \ + libgcc \ + libstdc++ \ + linux-libc-headers-dev \ + \ + libssl \ + libcrypto \ + openssl-dev \ + libts-dev \ + ncurses-dev \ + readline-dev \ + gnutls-dev \ + libgcrypt-dev \ + libapm-dev \ + alsa-dev \ + alsa-lib-dev \ + libgpg-error-dev \ + libx11-dev \ + util-macros-dev \ + bigreqsproto-dev \ + xproto-dev \ + xextproto-dev \ + xtrans-dev \ + xcmiscproto-dev \ + xf86bigfontproto-dev \ + kbproto-dev \ + inputproto-dev \ + glib-2.0-dev \ + expat-dev \ + libice-dev \ + libsm-dev \ + dbus-dev \ + bluez-libs-dev \ + jpeg-dev \ + libpng-dev \ + " + +# This one needs further investigation; seems to be some +# sort of naming problem that breaks the SDK when it is +# added directly. +ODDLY_BROKEN_PACKAGES ="\ + libz-dev \ +" -- cgit v1.2.3 From 1303e1f35b2b86487542b700f5ed8cd0ef8d974e Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Sat, 8 Nov 2008 02:06:37 -0200 Subject: xkeyboard-config: update to 1.4 --- conf/checksums.ini | 6 +++--- packages/xkeyboard-config/xkeyboard-config_1.3.bb | 20 -------------------- packages/xkeyboard-config/xkeyboard-config_1.4.bb | 20 ++++++++++++++++++++ 3 files changed, 23 insertions(+), 23 deletions(-) delete mode 100644 packages/xkeyboard-config/xkeyboard-config_1.3.bb create mode 100644 packages/xkeyboard-config/xkeyboard-config_1.4.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 15eb7669fb..2da6a9fa57 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -17354,9 +17354,9 @@ sha256=d2e9c3c28e23010441ce40c48bda7adabd338a256cb9b99848be6ed937fc10e7 md5=798502eca0c6c3e8c02d76fabb910532 sha256=8178a1c45af6e844ca0adcfe72fbddcbaebf3f305452a83e39768373981be92f -[http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-1.3.tar.bz2] -md5=d9e9f69f9c6ef5c5a8255cfbe6a57d51 -sha256=49f02ed7b0b246a640fb129fcb3d24d7560305bb6f04e69b09739554857f79f5 +[http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-1.4.tar.bz2] +md5=a9fe7efbc67a6966c4d4501f0cf88073 +sha256=921a857dcf90a59df7feb26da5aabcf0bbfb749c46e2a46c3bc7a0280b83b0e1 [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xkill-X11R7.0-1.0.1.tar.bz2] md5=35f47fd58d75c1ea5f414b21a10bdbf3 diff --git a/packages/xkeyboard-config/xkeyboard-config_1.3.bb b/packages/xkeyboard-config/xkeyboard-config_1.3.bb deleted file mode 100644 index cb448be243..0000000000 --- a/packages/xkeyboard-config/xkeyboard-config_1.3.bb +++ /dev/null @@ -1,20 +0,0 @@ -DESCRIPTION = "Common X11 Keyboard layouts" -LICENSE = "MIT" -DEPENDS = "intltool xkbcomp-native" -RDEPENDS = "xkbcomp" -PR = "r2" - -SRC_URI = "http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-${PV}.tar.bz2" - -inherit autotools - -do_stage() { - autotools_stage_all -} - -do_install_append () { - install -d ${D}/usr/share/X11/xkb/compiled - cd ${D}${datadir}/X11/xkb/rules && ln -sf base xorg -} - -FILES_${PN} += "${datadir}/X11/xkb" diff --git a/packages/xkeyboard-config/xkeyboard-config_1.4.bb b/packages/xkeyboard-config/xkeyboard-config_1.4.bb new file mode 100644 index 0000000000..cb448be243 --- /dev/null +++ b/packages/xkeyboard-config/xkeyboard-config_1.4.bb @@ -0,0 +1,20 @@ +DESCRIPTION = "Common X11 Keyboard layouts" +LICENSE = "MIT" +DEPENDS = "intltool xkbcomp-native" +RDEPENDS = "xkbcomp" +PR = "r2" + +SRC_URI = "http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-${PV}.tar.bz2" + +inherit autotools + +do_stage() { + autotools_stage_all +} + +do_install_append () { + install -d ${D}/usr/share/X11/xkb/compiled + cd ${D}${datadir}/X11/xkb/rules && ln -sf base xorg +} + +FILES_${PN} += "${datadir}/X11/xkb" -- cgit v1.2.3 From 78c51f10837517f20ff06026141edc73c69e5db1 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 8 Nov 2008 09:45:37 +0100 Subject: linux-omap git: add patches for new DSS (the nokia version, not the TI one), update beagle defconfig and bump to 2.6.28rc3 --- ...cumentation-for-OMAP2-3-display-subsystem.patch | 259 ++ ...-New-display-subsystem-driver-for-OMAP2-3.patch | 4333 ++++++++++++++++++++ .../0005-DSS-RFBI-support-for-OMAP2-3-DSS.patch | 1254 ++++++ .../0006-DSS-TV-out-support-for-OMAP2-3-DSS.patch | 519 +++ .../0007-DSS-DSI-support-for-OMAP2-3-DSS.patch | 3047 ++++++++++++++ ...MAPFB-fb-driver-for-new-display-subsystem.patch | 2821 +++++++++++++ .../0009-DSS-Add-generic-DVI-panel.patch | 189 + .../0010-DSS-support-for-Beagle-Board.patch | 182 + .../0011-DSS-support-for-OMAP3-SDP-board.patch | 441 ++ packages/linux/linux-omap/beagleboard/defconfig | 232 +- .../linux/linux-omap/fix-clkrate-programming.diff | 57 + .../linux/linux-omap/mru-add-clk-get-parent.diff | 32 +- .../mru-make-dpll4-m4-ck-programmable.diff | 19 +- packages/linux/linux-omap_git.bb | 18 +- 14 files changed, 13308 insertions(+), 95 deletions(-) create mode 100644 packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch create mode 100644 packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch create mode 100644 packages/linux/linux-omap/0005-DSS-RFBI-support-for-OMAP2-3-DSS.patch create mode 100644 packages/linux/linux-omap/0006-DSS-TV-out-support-for-OMAP2-3-DSS.patch create mode 100644 packages/linux/linux-omap/0007-DSS-DSI-support-for-OMAP2-3-DSS.patch create mode 100644 packages/linux/linux-omap/0008-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch create mode 100644 packages/linux/linux-omap/0009-DSS-Add-generic-DVI-panel.patch create mode 100644 packages/linux/linux-omap/0010-DSS-support-for-Beagle-Board.patch create mode 100644 packages/linux/linux-omap/0011-DSS-support-for-OMAP3-SDP-board.patch create mode 100644 packages/linux/linux-omap/fix-clkrate-programming.diff diff --git a/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch b/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch new file mode 100644 index 0000000000..59c15cee7d --- /dev/null +++ b/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch @@ -0,0 +1,259 @@ +From 7a7fe8f7530bf5c7f3714acbe9a5ec8cf80c3d0c Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Tue, 4 Nov 2008 15:08:07 +0200 +Subject: [PATCH] DSS: Documentation for OMAP2/3 display subsystem + +Signed-off-by: Tomi Valkeinen +--- + Documentation/arm/OMAP/DSS | 239 ++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 239 insertions(+), 0 deletions(-) + create mode 100644 Documentation/arm/OMAP/DSS + +diff --git a/Documentation/arm/OMAP/DSS b/Documentation/arm/OMAP/DSS +new file mode 100644 +index 0000000..b0cc980 +--- /dev/null ++++ b/Documentation/arm/OMAP/DSS +@@ -0,0 +1,239 @@ ++OMAP2/3 Display Subsystem ++------------------------- ++ ++This is an almost total rewrite of the OMAP FB driver in drivers/video/omap ++(let's call it DSS1). The main differences between DSS1 and DSS2 are DSI, ++TV-out and multiple display support. ++ ++The DSS2 driver (omap-dss module) is in arch/arm/plat-omap/dss/, and the FB, ++panel and controller drivers are in drivers/video/omap2/. DSS1 and DSS2 live ++currently side by side, you can choose which one to use. ++ ++Features ++-------- ++ ++Working and tested features include: ++ ++- MIPI DPI (parallel) output ++- MIPI DSI output in command mode ++- MIPI DBI (RFBI) output (not tested for a while, might've gotten broken) ++- SDI output ++- TV output ++- All pieces can be compiled as a module or inside kernel ++- Use DISPC to update any of the outputs ++- Use CPU to update RFBI or DSI output ++- OMAP DISPC planes ++- RGB16, RGB24 packed, RGB24 unpacked ++- YUV2, UYVY ++- Scaling ++- Adjusting DSS FCK to find a good pixel clock ++- Use DSI DPLL to create DSS FCK ++ ++omap-dss driver ++------------ ++ ++The DSS driver does not itself have any support for Linux framebuffer, V4L or ++such like the current ones, but it has an internal kernel API that upper level ++drivers can use. ++ ++The DSS driver models OMAP's overlays, overlay managers and displays in a ++flexible way to enable non-common multi-display configuration. In addition to ++modelling the hardware overlays, omap-dss supports virtual overlays and overlay ++managers. These can be used when updating a display with CPU or system DMA. ++ ++Panel and controller drivers ++---------------------------- ++ ++The drivers implement panel or controller specific functionality and are not ++visible to users except through omapfb driver. They register themselves to the ++DSS driver. ++ ++omapfb driver ++------------- ++ ++The omapfb driver implements arbitrary number of standard linux framebuffers. ++These framebuffers can be routed flexibly to any overlays, thus allowing very ++dynamic display architecture. ++ ++The driver exports some omapfb specific ioctls, which are compatible with the ++ioctls in the old driver. ++ ++The rest of the non standard features are exported via sysfs. Whether the final ++implementation will use sysfs, or ioctls, is still open. ++ ++V4L2 drivers ++------------ ++ ++Currently there are no V4L2 display drivers planned, but it is possible to ++implement such either to omapfb driver, or as a separate one. From omap-dss ++point of view the V4L2 drivers should be similar to framebuffer driver. ++ ++Architecture ++-------------------- ++ ++Some clarification what the different components do: ++ ++ - Framebuffer is a memory area inside OMAP's SDRAM that contains the pixel ++ data for the image. Framebuffer has width and height and color depth. ++ - Overlay defines where the pixels are read from and where they go on the ++ screen. The overlay may be smaller than framebuffer, thus displaying only ++ part of the framebuffer. The position of the overlay may be changed if ++ the overlay is smaller than the display. ++ - Overlay manager combines the overlays in to one image and feeds them to ++ display. ++ - Display is the actual physical display device. ++ ++A framebuffer can be connected to multiple overlays to show the same pixel data ++on all of the overlays. Note that in this case the overlay input sizes must be ++the same, but, in case of video overlays, the output size can be different. Any ++framebuffer can be connected to any overlay. ++ ++An overlay can be connected to one overlay manager. Also DISPC overlays can be ++connected only to DISPC overlay managers, and virtual overlays can be only ++connected to virtual overlays. ++ ++An overlay manager can be connected to one display. There are certain ++restrictions which kinds of displays an overlay manager can be connected: ++ ++ - DISPC TV overlay manager can be only connected to TV display. ++ - Virtual overlay managers can only be connected to DBI or DSI displays. ++ - DISPC LCD overlay manager can be connected to all displays, except TV ++ display. ++ ++Sysfs ++----- ++The sysfs interface is a hack, but works for testing. I don't think sysfs ++interface is the best for this in the final version, but I don't quite know ++what would be the best interfaces for these things. ++ ++In /sys/devices/platform/omapfb we have four files: framebuffers, ++overlays, managers and displays. You can read them so see the current ++setup, and change them by writing to it in the form of ++" : :..." ++ ++"framebuffers" lists all framebuffers. Its format is: ++ ++ t: ++ ++"overlays" lists all overlays. Its format is: ++ ++ t: ++ x: ++ y: ++ iw: ++ ih: ++ w: ++ h: ++ e: ++ ++"managers" lists all overlay managers. Its format is: ++ ++ t: ++ ++"displays" lists all displays. Its format is: ++ ++ w: ++ h: ++ e: ++ u: ++ t: ++ ++There is also a debug sysfs file at /sys/devices/platform/omap-dss/clk which ++shows how DSS has configured the clocks. ++ ++Examples ++-------- ++ ++In the example scripts "omapfb" is a symlink to /sys/devices/platform/omapfb/. ++ ++Default setup on OMAP3 SDP ++-------------------------- ++ ++Here's the default setup on OMAP3 SDP board. All planes go to LCD. DVI ++and TV-out are not in use. The columns from left to right are: ++framebuffers, overlays, overlay managers, displays. Framebuffers are ++handled by omapfb, and the rest by the DSS. ++ ++FB0 --- GFX -\ DVI ++FB1 --- VID1 --+- LCD ---- LCD ++FB2 --- VID2 -/ TV ----- TV ++ ++Switch from LCD to DVI ++---------------------- ++ ++dviline=`cat omapfb/displays |grep dvi` ++w=`echo $dviline | cut -d " " -f 2 | cut -d ":" -f 2` ++h=`echo $dviline | cut -d " " -f 3 | cut -d ":" -f 2` ++ ++echo "lcd e:0" > omapfb/displays ++echo "lcd t:none" > omapfb/managers ++fbset -fb /dev/fb0 -xres $w -yres $h ++# at this point you have to switch the dvi/lcd dip-switch from the omap board ++echo "lcd t:dvi" > omapfb/managers ++echo "dvi e:1" > omapfb/displays ++ ++After this the configuration looks like: ++ ++FB0 --- GFX -\ -- DVI ++FB1 --- VID1 --+- LCD -/ LCD ++FB2 --- VID2 -/ TV ----- TV ++ ++Clone GFX overlay to LCD and TV ++------------------------------- ++ ++tvline=`cat /sys/devices/platform/omapfb/displays |grep tv` ++w=`echo $tvline | cut -d " " -f 2 | cut -d ":" -f 2` ++h=`echo $tvline | cut -d " " -f 3 | cut -d ":" -f 2` ++ ++echo "1 t:none" > omapfb/framebuffers ++echo "0 t:gfx,vid1" > omapfb/framebuffers ++echo "gfx e:1" > omapfb/overlays ++echo "vid1 t:tv w:$w h:$h e:1" > omapfb/overlays ++echo "tv e:1" > omapfb/displays ++ ++After this the configuration looks like (only relevant parts shown): ++ ++FB0 +-- GFX ---- LCD ---- LCD ++ \- VID1 ---- TV ---- TV ++ ++Misc notes ++---------- ++ ++OMAP FB allocates the framebuffer memory when it starts using ++dma_alloc_writecombine(). This requires large continuous physical memory areas ++and you can pre-reserve that area with "Consistent DMA memory size" Kconfig ++option. ++ ++Using DSI DPLL to generate pixel clock it is possible produce the pixel clock ++of 86.5MHz (max possible), and with that you get 1280x1024@57 output from DVI. ++ ++TODO ++---- ++ ++OMAP2 not tested for some time ++- DSS2 did work on OMAP2, but I haven't been able to test it for some time. ++ ++DSS locking ++ ++Error checking ++- Lots of checks are missing or implemented just as BUG() ++ ++Rotate (external FB) ++Rotate (VRFB) ++Rotate (SMS) ++ ++System DMA update for DSI ++- Can be used for RGB16 and RGB24P modes. Probably not for RGB24U (how ++ to skip the empty byte?) ++ ++Power management ++- Context saving ++ ++Resolution change ++- The x/y res of the framebuffer are not display resolutions, but the size ++ of the overlay. ++- The display resolution affects all planes on the display. ++ ++OMAP1 support ++- Not sure if needed ++ +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch b/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch new file mode 100644 index 0000000000..febfc48c4d --- /dev/null +++ b/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch @@ -0,0 +1,4333 @@ +From 0cd726d12358cfe8d80fc0a309bb0c0732c716f0 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Tue, 4 Nov 2008 16:52:12 +0200 +Subject: [PATCH] DSS: New display subsystem driver for OMAP2/3 + +DSI, RFBI and VENC are separate patches + +Signed-off-by: Tomi Valkeinen +--- + arch/arm/plat-omap/Kconfig | 2 + + arch/arm/plat-omap/Makefile | 2 + + arch/arm/plat-omap/dss/Kconfig | 66 ++ + arch/arm/plat-omap/dss/Makefile | 6 + + arch/arm/plat-omap/dss/dispc.c | 1667 +++++++++++++++++++++++++++++ + arch/arm/plat-omap/dss/display.c | 781 ++++++++++++++ + arch/arm/plat-omap/dss/dpi.c | 303 ++++++ + arch/arm/plat-omap/dss/dss.c | 547 ++++++++++ + arch/arm/plat-omap/dss/dss.h | 240 +++++ + arch/arm/plat-omap/dss/sdi.c | 154 +++ + arch/arm/plat-omap/include/mach/display.h | 458 ++++++++ + 11 files changed, 4226 insertions(+), 0 deletions(-) + create mode 100644 arch/arm/plat-omap/dss/Kconfig + create mode 100644 arch/arm/plat-omap/dss/Makefile + create mode 100644 arch/arm/plat-omap/dss/dispc.c + create mode 100644 arch/arm/plat-omap/dss/display.c + create mode 100644 arch/arm/plat-omap/dss/dpi.c + create mode 100644 arch/arm/plat-omap/dss/dss.c + create mode 100644 arch/arm/plat-omap/dss/dss.h + create mode 100644 arch/arm/plat-omap/dss/sdi.c + create mode 100644 arch/arm/plat-omap/include/mach/display.h + +diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig +index 960c13f..4e90667 100644 +--- a/arch/arm/plat-omap/Kconfig ++++ b/arch/arm/plat-omap/Kconfig +@@ -245,6 +245,8 @@ config OMAP_SERIAL_WAKE + to data on the serial RX line. This allows you to wake the + system from serial console. + ++source "arch/arm/plat-omap/dss/Kconfig" ++ + endmenu + + endif +diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile +index 1259846..2740497 100644 +--- a/arch/arm/plat-omap/Makefile ++++ b/arch/arm/plat-omap/Makefile +@@ -29,3 +29,5 @@ obj-$(CONFIG_OMAP_MMU_FWK) += mmu.o + # OMAP mailbox framework + obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o + ++# OMAP2/3 Display Subsystem ++obj-y += dss/ +diff --git a/arch/arm/plat-omap/dss/Kconfig b/arch/arm/plat-omap/dss/Kconfig +new file mode 100644 +index 0000000..150cd24 +--- /dev/null ++++ b/arch/arm/plat-omap/dss/Kconfig +@@ -0,0 +1,66 @@ ++config OMAP2_DSS ++ tristate "OMAP2/3 Display Subsystem support (EXPERIMENTAL)" ++ depends on ARCH_OMAP2 || ARCH_OMAP3 ++ help ++ OMAP2/3 Display Subsystem support. ++ ++if OMAP2_DSS ++ ++config OMAP2_DSS_DEBUG ++ bool "Debug output" ++ default n ++ ++config OMAP2_DSS_RFBI ++ bool "RFBI support" ++ default y ++ ++config OMAP2_DSS_VENC ++ bool "VENC support" ++ default y ++ ++if ARCH_OMAP3 ++ ++config OMAP2_DSS_SDI ++ bool "SDI support" ++ default y ++ ++config OMAP2_DSS_DSI ++ bool "DSI support" ++ default y ++ ++endif ++ ++config OMAP2_DSS_USE_DSI_PLL ++ bool "Use DSI PLL for PCLK (EXPERIMENTAL)" ++ default n ++ depends on OMAP2_DSS_DSI ++ help ++ Use DSI PLL to generate pixel clock. ++ Currently only for DPI output. ++ ++config OMAP2_DSS_FAKE_VSYNC ++ bool "Fake VSYNC irq from manual update displays" ++ default n ++ help ++ If this is selected, DSI will fake a DISPC VSYNC interrupt ++ when DSI has sent a frame. ++ ++config OMAP2_DSS_MIN_FCK_PER_PCK ++ int "Minimum FCK/PCK ratio (for scaling)" ++ range 1 32 ++ default 4 ++ help ++ This can be used to adjust the minimum FCK/PCK ratio. ++ ++ With this you can make sure that DISPC FCK is at least ++ n x PCK. Video plane scaling requires higher FCK than ++ normally. ++ ++ If this is set to 1, there's no extra constraint on the ++ DISPC FCK. However, the FCK will at minimum be ++ 2xPCK (if active matrix) or 3xPCK (if passive matrix). ++ ++ Max FCK is 173MHz, so this doesn't work if your PCK ++ is very high. ++ ++endif +diff --git a/arch/arm/plat-omap/dss/Makefile b/arch/arm/plat-omap/dss/Makefile +new file mode 100644 +index 0000000..e98c6c1 +--- /dev/null ++++ b/arch/arm/plat-omap/dss/Makefile +@@ -0,0 +1,6 @@ ++obj-$(CONFIG_OMAP2_DSS) += omap-dss.o ++omap-dss-y := dss.o display.o dispc.o dpi.o ++omap-dss-$(CONFIG_OMAP2_DSS_RFBI) += rfbi.o ++omap-dss-$(CONFIG_OMAP2_DSS_VENC) += venc.o ++omap-dss-$(CONFIG_OMAP2_DSS_SDI) += sdi.o ++omap-dss-$(CONFIG_OMAP2_DSS_DSI) += dsi.o +diff --git a/arch/arm/plat-omap/dss/dispc.c b/arch/arm/plat-omap/dss/dispc.c +new file mode 100644 +index 0000000..8f5da2d +--- /dev/null ++++ b/arch/arm/plat-omap/dss/dispc.c +@@ -0,0 +1,1667 @@ ++/* ++ * linux/arch/arm/plat-omap/dss/dispc.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#define DSS_SUBSYS_NAME "DISPC" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include ++ ++#include "dss.h" ++ ++/* DISPC */ ++#define DISPC_BASE 0x48050400 ++ ++struct dispc_reg { u16 idx; }; ++ ++#define DISPC_REG(idx) ((const struct dispc_reg) { idx }) ++ ++/* DISPC common */ ++#define DISPC_REVISION DISPC_REG(0x0000) ++#define DISPC_SYSCONFIG DISPC_REG(0x0010) ++#define DISPC_SYSSTATUS DISPC_REG(0x0014) ++#define DISPC_IRQSTATUS DISPC_REG(0x0018) ++#define DISPC_IRQENABLE DISPC_REG(0x001C) ++#define DISPC_CONTROL DISPC_REG(0x0040) ++#define DISPC_CONFIG DISPC_REG(0x0044) ++#define DISPC_CAPABLE DISPC_REG(0x0048) ++#define DISPC_DEFAULT_COLOR0 DISPC_REG(0x004C) ++#define DISPC_DEFAULT_COLOR1 DISPC_REG(0x0050) ++#define DISPC_TRANS_COLOR0 DISPC_REG(0x0054) ++#define DISPC_TRANS_COLOR1 DISPC_REG(0x0058) ++#define DISPC_LINE_STATUS DISPC_REG(0x005C) ++#define DISPC_LINE_NUMBER DISPC_REG(0x0060) ++#define DISPC_TIMING_H DISPC_REG(0x0064) ++#define DISPC_TIMING_V DISPC_REG(0x0068) ++#define DISPC_POL_FREQ DISPC_REG(0x006C) ++#define DISPC_DIVISOR DISPC_REG(0x0070) ++#define DISPC_SIZE_DIG DISPC_REG(0x0078) ++#define DISPC_SIZE_LCD DISPC_REG(0x007C) ++ ++#define DISPC_DATA_CYCLE1 DISPC_REG(0x01D4) ++#define DISPC_DATA_CYCLE2 DISPC_REG(0x01D8) ++#define DISPC_DATA_CYCLE3 DISPC_REG(0x01DC) ++ ++/* DISPC GFX plane */ ++#define DISPC_GFX_BA0 DISPC_REG(0x0080) ++#define DISPC_GFX_BA1 DISPC_REG(0x0084) ++#define DISPC_GFX_POSITION DISPC_REG(0x0088) ++#define DISPC_GFX_SIZE DISPC_REG(0x008C) ++#define DISPC_GFX_ATTRIBUTES DISPC_REG(0x00A0) ++#define DISPC_GFX_FIFO_THRESHOLD DISPC_REG(0x00A4) ++#define DISPC_GFX_FIFO_SIZE_STATUS DISPC_REG(0x00A8) ++#define DISPC_GFX_ROW_INC DISPC_REG(0x00AC) ++#define DISPC_GFX_PIXEL_INC DISPC_REG(0x00B0) ++#define DISPC_GFX_WINDOW_SKIP DISPC_REG(0x00B4) ++#define DISPC_GFX_TABLE_BA DISPC_REG(0x00B8) ++ ++/* DISPC Video plane, n = 0 for VID1 and n = 1 for VID2 */ ++#define DISPC_VID_REG(n, idx) DISPC_REG(0x00BC + (n)*0x90 + idx) ++ ++#define DISPC_VID_BA0(n) DISPC_VID_REG(n, 0x0000) ++#define DISPC_VID_BA1(n) DISPC_VID_REG(n, 0x0004) ++#define DISPC_VID_POSITION(n) DISPC_VID_REG(n, 0x0008) ++#define DISPC_VID_SIZE(n) DISPC_VID_REG(n, 0x000C) ++#define DISPC_VID_ATTRIBUTES(n) DISPC_VID_REG(n, 0x0010) ++#define DISPC_VID_FIFO_THRESHOLD(n) DISPC_VID_REG(n, 0x0014) ++#define DISPC_VID_FIFO_SIZE_STATUS(n) DISPC_VID_REG(n, 0x0018) ++#define DISPC_VID_ROW_INC(n) DISPC_VID_REG(n, 0x001C) ++#define DISPC_VID_PIXEL_INC(n) DISPC_VID_REG(n, 0x0020) ++#define DISPC_VID_FIR(n) DISPC_VID_REG(n, 0x0024) ++#define DISPC_VID_PICTURE_SIZE(n) DISPC_VID_REG(n, 0x0028) ++#define DISPC_VID_ACCU0(n) DISPC_VID_REG(n, 0x002C) ++#define DISPC_VID_ACCU1(n) DISPC_VID_REG(n, 0x0030) ++ ++/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */ ++#define DISPC_VID_FIR_COEF_H(n, i) DISPC_REG(0x00F0 + (n)*0x90 + (i)*0x8) ++/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */ ++#define DISPC_VID_FIR_COEF_HV(n, i) DISPC_REG(0x00F4 + (n)*0x90 + (i)*0x8) ++/* coef index i = {0, 1, 2, 3, 4} */ ++#define DISPC_VID_CONV_COEF(n, i) DISPC_REG(0x0130 + (n)*0x90 + (i)*0x4) ++ ++#define DISPC_IRQ_MASK_ERROR (DISPC_IRQ_GFX_FIFO_UNDERFLOW | \ ++ DISPC_IRQ_OCP_ERR | \ ++ DISPC_IRQ_VID1_FIFO_UNDERFLOW | \ ++ DISPC_IRQ_VID2_FIFO_UNDERFLOW | \ ++ DISPC_IRQ_SYNC_LOST) ++/*DISPC_IRQ_SYNC_LOST_DIGIT*/ ++ ++#define DISPC_MAX_NR_ISRS 8 ++ ++static struct { ++ omap_dispc_isr_t isr; ++ void *arg; ++ u32 mask; ++} registered_isr[DISPC_MAX_NR_ISRS]; ++ ++#define REG_GET(idx, start, end) \ ++ FLD_GET(dispc_read_reg(idx), start, end) ++ ++#define REG_FLD_MOD(idx, val, start, end) \ ++ dispc_write_reg(idx, FLD_MOD(dispc_read_reg(idx), val, start, end)) ++ ++static const struct dispc_reg dispc_reg_att[] = { DISPC_GFX_ATTRIBUTES, ++ DISPC_VID_ATTRIBUTES(0), ++ DISPC_VID_ATTRIBUTES(1) }; ++ ++static struct { ++ void __iomem *base; ++ ++ struct clk *dss_ick; ++ struct clk *dss1_fck; ++ struct clk *dss_54m_fck; ++ struct clk *dpll4_m4_ck; ++} dispc; ++ ++static spinlock_t dss_lock; ++ ++static inline void enable_clocks(int enable) ++{ ++ if (enable) { ++ clk_enable(dispc.dss_ick); ++ clk_enable(dispc.dss1_fck); ++ } else { ++ clk_disable(dispc.dss1_fck); ++ clk_disable(dispc.dss_ick); ++ } ++} ++ ++static inline void dispc_write_reg(const struct dispc_reg idx, u32 val) ++{ ++ __raw_writel(val, dispc.base + idx.idx); ++} ++ ++static inline u32 dispc_read_reg(const struct dispc_reg idx) ++{ ++ return __raw_readl(dispc.base + idx.idx); ++} ++ ++void dispc_go(enum omap_channel channel) ++{ ++ int bit; ++ unsigned long tmo; ++ ++ enable_clocks(1); ++ ++ if (channel == OMAP_DSS_CHANNEL_LCD) ++ bit = 0; /* LCDENABLE */ ++ else ++ bit = 1; /* DIGITALENABLE */ ++ ++ /* if the channel is not enabled, we don't need GO */ ++ if (REG_GET(DISPC_CONTROL, bit, bit) == 0) ++ goto end; ++ ++ if (channel == OMAP_DSS_CHANNEL_LCD) ++ bit = 5; /* GOLCD */ ++ else ++ bit = 6; /* GODIGIT */ ++ ++ tmo = jiffies + msecs_to_jiffies(200); ++ while (REG_GET(DISPC_CONTROL, bit, bit) == 1) { ++ if (time_after(jiffies, tmo)) { ++ DSSERR("timeout waiting GO flag\n"); ++ goto end; ++ } ++ cpu_relax(); ++ } ++ ++ DSSDBG("GO %s\n", channel == OMAP_DSS_CHANNEL_LCD ? "LCD" : "DIGIT"); ++ ++ REG_FLD_MOD(DISPC_CONTROL, 1, bit, bit); ++end: ++ enable_clocks(0); ++} ++ ++static void _dispc_write_firh_reg(enum omap_plane plane, int reg, u32 value) ++{ ++ BUG_ON(plane == OMAP_DSS_GFX); ++ ++ dispc_write_reg(DISPC_VID_FIR_COEF_H(plane-1, reg), value); ++} ++ ++static void _dispc_write_firhv_reg(enum omap_plane plane, int reg, u32 value) ++{ ++ BUG_ON(plane == OMAP_DSS_GFX); ++ ++ dispc_write_reg(DISPC_VID_FIR_COEF_HV(plane-1, reg), value); ++} ++ ++ ++static void _dispc_set_scale_coef(enum omap_plane plane, int hscaleup, ++ int vscaleup) ++{ ++ /* Coefficients for horizontal up-sampling */ ++ const u32 coef_hup[8] = { ++ 0x00800000, ++ 0x0D7CF800, ++ 0x1E70F5FF, ++ 0x335FF5FE, ++ 0xF74949F7, ++ 0xF55F33FB, ++ 0xF5701EFE, ++ 0xF87C0DFF, ++ }; ++ ++ /* Coefficients for horizontal down-sampling */ ++ const u32 coef_hdown[8] = { ++ 0x24382400, ++ 0x28371FFE, ++ 0x2C361BFB, ++ 0x303516F9, ++ 0x11343311, ++ 0x1635300C, ++ 0x1B362C08, ++ 0x1F372804, ++ }; ++ ++ /* Coefficients for horizontal and vertical up-sampling */ ++ const u32 coef_hvup[8] = { ++ 0x00800000, ++ 0x037B02FF, ++ 0x0C6F05FE, ++ 0x205907FB, ++ 0x00404000, ++ 0x075920FE, ++ 0x056F0CFF, ++ 0x027B0300, ++ }; ++ ++ /* Coefficients for horizontal and vertical down-sampling */ ++ const u32 coef_hvdown[8] = { ++ 0x24382400, ++ 0x28391F04, ++ 0x2D381B08, ++ 0x3237170C, ++ 0x123737F7, ++ 0x173732F9, ++ 0x1B382DFB, ++ 0x1F3928FE, ++ }; ++ ++ const u32 *h_coef; ++ const u32 *hv_coef; ++ const u32 *hv_coef_mod; ++ int i; ++ ++ if (hscaleup) ++ h_coef = coef_hup; ++ else ++ h_coef = coef_hdown; ++ ++ if (vscaleup) { ++ hv_coef = coef_hvup; ++ ++ if (hscaleup) ++ hv_coef_mod = NULL; ++ else ++ hv_coef_mod = coef_hvdown; ++ } else { ++ hv_coef = coef_hvdown; ++ ++ if (hscaleup) ++ hv_coef_mod = coef_hvup; ++ else ++ hv_coef_mod = NULL; ++ } ++ ++ for (i = 0; i < 8; i++) { ++ u32 h, hv; ++ ++ h = h_coef[i]; ++ ++ hv = hv_coef[i]; ++ ++ if (hv_coef_mod) { ++ hv &= 0xffffff00; ++ hv |= (hv_coef_mod[i] & 0xff); ++ } ++ ++ _dispc_write_firh_reg(plane, i, h); ++ _dispc_write_firhv_reg(plane, i, hv); ++ } ++} ++ ++static void _dispc_setup_color_conv_coef(void) ++{ ++ const struct color_conv_coef { ++ int ry, rcr, rcb, gy, gcr, gcb, by, bcr, bcb; ++ int full_range; ++ } ctbl_bt601_5 = { ++ 298, 409, 0, 298, -208, -100, 298, 0, 517, 0, ++ }; ++ ++ const struct color_conv_coef *ct; ++ ++#define CVAL(x, y) (FLD_VAL(x, 26, 16) | FLD_VAL(y, 10, 0)) ++ ++ ct = &ctbl_bt601_5; ++ ++ dispc_write_reg(DISPC_VID_CONV_COEF(0, 0), CVAL(ct->rcr, ct->ry)); ++ dispc_write_reg(DISPC_VID_CONV_COEF(0, 1), CVAL(ct->gy, ct->rcb)); ++ dispc_write_reg(DISPC_VID_CONV_COEF(0, 2), CVAL(ct->gcb, ct->gcr)); ++ dispc_write_reg(DISPC_VID_CONV_COEF(0, 3), CVAL(ct->bcr, ct->by)); ++ dispc_write_reg(DISPC_VID_CONV_COEF(0, 4), CVAL(0, ct->bcb)); ++ ++ dispc_write_reg(DISPC_VID_CONV_COEF(1, 0), CVAL(ct->rcr, ct->ry)); ++ dispc_write_reg(DISPC_VID_CONV_COEF(1, 1), CVAL(ct->gy, ct->rcb)); ++ dispc_write_reg(DISPC_VID_CONV_COEF(1, 2), CVAL(ct->gcb, ct->gcr)); ++ dispc_write_reg(DISPC_VID_CONV_COEF(1, 3), CVAL(ct->bcr, ct->by)); ++ dispc_write_reg(DISPC_VID_CONV_COEF(1, 4), CVAL(0, ct->bcb)); ++ ++#undef CVAL ++ ++ REG_FLD_MOD(DISPC_VID_ATTRIBUTES(0), ct->full_range, 11, 11); ++ REG_FLD_MOD(DISPC_VID_ATTRIBUTES(1), ct->full_range, 11, 11); ++} ++ ++ ++static void _dispc_set_plane_ba0(enum omap_plane plane, u32 paddr) ++{ ++ const struct dispc_reg ba0_reg[] = { DISPC_GFX_BA0, ++ DISPC_VID_BA0(0), ++ DISPC_VID_BA0(1) }; ++ ++ dispc_write_reg(ba0_reg[plane], paddr); ++} ++ ++static void _dispc_set_plane_ba1(enum omap_plane plane, u32 paddr) ++{ ++ const struct dispc_reg ba1_reg[] = { DISPC_GFX_BA1, ++ DISPC_VID_BA1(0), ++ DISPC_VID_BA1(1) }; ++ ++ dispc_write_reg(ba1_reg[plane], paddr); ++} ++ ++static void _dispc_set_plane_pos(enum omap_plane plane, int x, int y) ++{ ++ const struct dispc_reg pos_reg[] = { DISPC_GFX_POSITION, ++ DISPC_VID_POSITION(0), ++ DISPC_VID_POSITION(1) }; ++ ++ u32 val = FLD_VAL(y, 26, 16) | FLD_VAL(x, 10, 0); ++ dispc_write_reg(pos_reg[plane], val); ++} ++ ++static void _dispc_set_pic_size(enum omap_plane plane, int width, int height) ++{ ++ const struct dispc_reg siz_reg[] = { DISPC_GFX_SIZE, ++ DISPC_VID_PICTURE_SIZE(0), ++ DISPC_VID_PICTURE_SIZE(1) }; ++ u32 val = FLD_VAL(height - 1, 26, 16) | FLD_VAL(width - 1, 10, 0); ++ dispc_write_reg(siz_reg[plane], val); ++} ++ ++static void _dispc_set_vid_size(enum omap_plane plane, int width, int height) ++{ ++ u32 val; ++ const struct dispc_reg vsi_reg[] = { DISPC_VID_SIZE(0), ++ DISPC_VID_SIZE(1) }; ++ ++ BUG_ON(plane == OMAP_DSS_GFX); ++ ++ val = FLD_VAL(height - 1, 26, 16) | FLD_VAL(width - 1, 10, 0); ++ dispc_write_reg(vsi_reg[plane-1], val); ++} ++ ++static void _dispc_set_row_inc(enum omap_plane plane, int inc) ++{ ++ const struct dispc_reg ri_reg[] = { DISPC_GFX_ROW_INC, ++ DISPC_VID_ROW_INC(0), ++ DISPC_VID_ROW_INC(1) }; ++ ++ dispc_write_reg(ri_reg[plane], inc); ++} ++ ++static void _dispc_set_color_mode(enum omap_plane plane, ++ enum omap_color_mode color_mode) ++{ ++ u32 m = 0; ++ ++ switch (color_mode) { ++ case OMAP_DSS_COLOR_CLUT1: ++ m = 0x0; break; ++ case OMAP_DSS_COLOR_CLUT2: ++ m = 0x1; break; ++ case OMAP_DSS_COLOR_CLUT4: ++ m = 0x2; break; ++ case OMAP_DSS_COLOR_CLUT8: ++ m = 0x3; break; ++ case OMAP_DSS_COLOR_RGB12U: ++ m = 0x4; break; ++ case OMAP_DSS_COLOR_ARGB16: ++ m = 0x5; break; ++ case OMAP_DSS_COLOR_RGB16: ++ m = 0x6; break; ++ case OMAP_DSS_COLOR_RGB24U: ++ m = 0x8; break; ++ case OMAP_DSS_COLOR_RGB24P: ++ m = 0x9; break; ++ case OMAP_DSS_COLOR_YUV2: ++ m = 0xa; break; ++ case OMAP_DSS_COLOR_UYVY: ++ m = 0xb; break; ++ case OMAP_DSS_COLOR_ARGB32: ++ m = 0xc; break; ++ case OMAP_DSS_COLOR_RGBA32: ++ m = 0xd; break; ++ case OMAP_DSS_COLOR_RGBX32: ++ m = 0xe; break; ++ default: ++ BUG(); break; ++ } ++ ++ REG_FLD_MOD(dispc_reg_att[plane], m, 4, 1); ++} ++ ++static void _dispc_set_channel_out(enum omap_plane plane, ++ enum omap_channel channel) ++{ ++ int shift; ++ u32 val; ++ ++ switch (plane) { ++ case OMAP_DSS_GFX: ++ shift = 8; ++ break; ++ case OMAP_DSS_VIDEO1: ++ case OMAP_DSS_VIDEO2: ++ shift = 16; ++ break; ++ default: ++ BUG(); ++ return; ++ } ++ ++ val = dispc_read_reg(dispc_reg_att[plane]); ++ val = FLD_MOD(val, channel, shift, shift); ++ dispc_write_reg(dispc_reg_att[plane], val); ++} ++ ++static void _dispc_set_burst_size(enum omap_plane plane, ++ enum omap_burst_size burst_size) ++{ ++ int shift; ++ u32 val; ++ ++ switch (plane) { ++ case OMAP_DSS_GFX: ++ shift = 6; ++ break; ++ case OMAP_DSS_VIDEO1: ++ case OMAP_DSS_VIDEO2: ++ shift = 14; ++ break; ++ default: ++ BUG(); ++ return; ++ } ++ ++ val = dispc_read_reg(dispc_reg_att[plane]); ++ val = FLD_MOD(val, burst_size, shift+1, shift); ++ dispc_write_reg(dispc_reg_att[plane], val); ++} ++ ++static void _dispc_set_vid_color_conv(enum omap_plane plane, int enable) ++{ ++ u32 val; ++ ++ BUG_ON(plane == OMAP_DSS_GFX); ++ ++ val = dispc_read_reg(dispc_reg_att[plane]); ++ val = FLD_MOD(val, enable, 9, 9); ++ dispc_write_reg(dispc_reg_att[plane], val); ++} ++ ++void dispc_set_lcd_size(int width, int height) ++{ ++ u32 val; ++ BUG_ON((width > (1 << 11)) || (height > (1 << 11))); ++ val = FLD_VAL(height - 1, 26, 16) | FLD_VAL(width - 1, 10, 0); ++ enable_clocks(1); ++ dispc_write_reg(DISPC_SIZE_LCD, val); ++ enable_clocks(0); ++} ++ ++void dispc_set_digit_size(int width, int height) ++{ ++ u32 val; ++ BUG_ON((width > (1 << 11)) || (height > (1 << 11))); ++ val = FLD_VAL(height - 1, 26, 16) | FLD_VAL(width - 1, 10, 0); ++ enable_clocks(1); ++ dispc_write_reg(DISPC_SIZE_DIG, val); ++ enable_clocks(0); ++} ++ ++void dispc_setup_plane_fifo(enum omap_plane plane, int ext_mode) ++{ ++ const struct dispc_reg ftrs_reg[] = { DISPC_GFX_FIFO_THRESHOLD, ++ DISPC_VID_FIFO_THRESHOLD(0), ++ DISPC_VID_FIFO_THRESHOLD(1) }; ++ const struct dispc_reg fsz_reg[] = { DISPC_GFX_FIFO_SIZE_STATUS, ++ DISPC_VID_FIFO_SIZE_STATUS(0), ++ DISPC_VID_FIFO_SIZE_STATUS(1) }; ++ int low, high; ++ u32 size; ++ ++ enable_clocks(1); ++ ++ if (cpu_is_omap24xx()) ++ size = FLD_GET(dispc_read_reg(fsz_reg[plane]), 8, 0); ++ else if (cpu_is_omap34xx()) ++ size = FLD_GET(dispc_read_reg(fsz_reg[plane]), 10, 0); ++ else ++ BUG(); ++ ++ if (ext_mode) { ++ low = size * 3 / 4; ++ high = size; ++ } else { ++ low = size / 4; ++ high = size * 3 / 4; ++ } ++ ++ if (cpu_is_omap24xx()) ++ dispc_write_reg(ftrs_reg[plane], ++ FLD_VAL(high, 24, 16) | FLD_VAL(low, 8, 0)); ++ else ++ dispc_write_reg(ftrs_reg[plane], ++ FLD_VAL(high, 27, 16) | FLD_VAL(low, 11, 0)); ++ ++ enable_clocks(0); ++} ++ ++static void _dispc_set_fir(enum omap_plane plane, int hinc, int vinc) ++{ ++ u32 val; ++ const struct dispc_reg fir_reg[] = { DISPC_VID_FIR(0), ++ DISPC_VID_FIR(1) }; ++ ++ BUG_ON(plane == OMAP_DSS_GFX); ++ ++ val = FLD_VAL(vinc, 27, 16) | FLD_VAL(hinc, 11, 0); ++ dispc_write_reg(fir_reg[plane-1], val); ++} ++ ++static void _dispc_set_vid_accu0(enum omap_plane plane, int haccu, int vaccu) ++{ ++ u32 val; ++ const struct dispc_reg ac0_reg[] = { DISPC_VID_ACCU0(0), ++ DISPC_VID_ACCU0(1) }; ++ ++ BUG_ON(plane == OMAP_DSS_GFX); ++ ++ val = FLD_VAL(vaccu, 25, 16) | FLD_VAL(haccu, 9, 0); ++ dispc_write_reg(ac0_reg[plane-1], val); ++} ++ ++static void _dispc_set_vid_accu1(enum omap_plane plane, int haccu, int vaccu) ++{ ++ u32 val; ++ const struct dispc_reg ac1_reg[] = { DISPC_VID_ACCU1(0), ++ DISPC_VID_ACCU1(1) }; ++ ++ BUG_ON(plane == OMAP_DSS_GFX); ++ ++ val = FLD_VAL(vaccu, 25, 16) | FLD_VAL(haccu, 9, 0); ++ dispc_write_reg(ac1_reg[plane-1], val); ++} ++ ++ ++static void _dispc_set_scaling(enum omap_plane plane, ++ int orig_width, int orig_height, ++ int out_width, int out_height, ++ int ilace) ++{ ++ int fir_hinc; ++ int fir_vinc; ++ int hscaleup, vscaleup; ++ int fieldmode = 0; ++ int accu0 = 0; ++ int accu1 = 0; ++ u32 l; ++ ++ BUG_ON(plane == OMAP_DSS_GFX); ++ ++ hscaleup = orig_width <= out_width; ++ vscaleup = orig_height <= out_height; ++ ++ _dispc_set_scale_coef(plane, hscaleup, vscaleup); ++ ++ if (!orig_width || orig_width == out_width) ++ fir_hinc = 0; ++ else ++ fir_hinc = 1024 * orig_width / out_width; ++ ++ if (!orig_height || orig_height == out_height) ++ fir_vinc = 0; ++ else ++ fir_vinc = 1024 * orig_height / out_height; ++ ++ _dispc_set_fir(plane, fir_hinc, fir_vinc); ++ ++ l = dispc_read_reg(dispc_reg_att[plane]); ++ l &= ~(0x0f << 5); ++ ++ l |= fir_hinc ? (1 << 5) : 0; ++ l |= fir_vinc ? (1 << 6) : 0; ++ ++ l |= hscaleup ? 0 : (1 << 7); ++ l |= vscaleup ? 0 : (1 << 8); ++ ++ dispc_write_reg(dispc_reg_att[plane], l); ++ ++ if (ilace) { ++ if (fieldmode) { ++ accu0 = fir_vinc / 2; ++ accu1 = 0; ++ } else { ++ accu0 = 0; ++ accu1 = fir_vinc / 2; ++ if (accu1 >= 1024/2) { ++ accu0 = 1024/2; ++ accu1 -= accu0; ++ } ++ } ++ } ++ ++ _dispc_set_vid_accu0(plane, 0, accu0); ++ _dispc_set_vid_accu1(plane, 0, accu1); ++} ++ ++static int _dispc_setup_plane(enum omap_plane plane, ++ enum omap_channel channel_out, ++ u32 paddr, int screen_width, ++ int pos_x, int pos_y, ++ int width, int height, ++ int out_width, int out_height, ++ enum omap_color_mode color_mode, ++ int ilace) ++{ ++ int fieldmode = 0; ++ int bpp; ++ int cconv; ++ int scaling = 0; ++ ++ if (plane == OMAP_DSS_GFX) { ++ if (width != out_width || height != out_height) ++ return -EINVAL; ++ } else { ++ /* video plane */ ++ if (width != out_width || height != out_height) ++ scaling = 1; ++ ++ if (out_width < width/2 || ++ out_width > width*8) ++ return -EINVAL; ++ ++ if (out_height < height/2 || ++ out_height > height*8) ++ return -EINVAL; ++ } ++ ++ ++ switch (color_mode) { ++ case OMAP_DSS_COLOR_RGB16: ++ bpp = 16; ++ cconv = 0; ++ break; ++ ++ case OMAP_DSS_COLOR_RGB24P: ++ bpp = 24; ++ cconv = 0; ++ break; ++ ++ case OMAP_DSS_COLOR_RGB24U: ++ bpp = 32; ++ cconv = 0; ++ break; ++ ++ case OMAP_DSS_COLOR_YUV2: ++ case OMAP_DSS_COLOR_UYVY: ++ BUG_ON(plane == OMAP_DSS_GFX); ++ bpp = 16; ++ cconv = 1; ++ break; ++ ++ default: ++ BUG(); ++ return 1; ++ } ++ ++ if (ilace) { ++ if (height == out_height || height > out_height) ++ fieldmode = 1; ++ } ++ ++ if (fieldmode) ++ height /= 2; ++ ++ if (ilace) ++ out_height /= 2; ++ ++ if (plane != OMAP_DSS_GFX) ++ _dispc_set_scaling(plane, width, height, ++ out_width, out_height, ++ ilace); ++ ++ /* attributes */ ++ _dispc_set_channel_out(plane, channel_out); ++ _dispc_set_color_mode(plane, color_mode); ++ if (plane != OMAP_DSS_GFX) ++ _dispc_set_vid_color_conv(plane, cconv); ++ ++ /* */ ++ ++ _dispc_set_plane_ba0(plane, paddr); ++ ++ if (fieldmode) ++ _dispc_set_plane_ba1(plane, paddr + screen_width * bpp/8); ++ else ++ _dispc_set_plane_ba1(plane, paddr); ++ ++ ++ _dispc_set_plane_pos(plane, pos_x, pos_y); ++ ++ _dispc_set_pic_size(plane, width, height); ++ ++ if (plane != OMAP_DSS_GFX) ++ _dispc_set_vid_size(plane, out_width, out_height); ++ ++ _dispc_set_row_inc(plane, ++ (screen_width - width) * bpp / 8 + ++ (fieldmode ? screen_width * bpp / 8 : 0) + ++ 1); ++ ++ return 0; ++} ++ ++static void _dispc_enable_plane(enum omap_plane plane, int enable) ++{ ++ REG_FLD_MOD(dispc_reg_att[plane], enable ? 1 : 0, 0, 0); ++} ++ ++ ++void dispc_enable_lcd_out(int enable) ++{ ++ enable_clocks(1); ++ REG_FLD_MOD(DISPC_CONTROL, enable ? 1 : 0, 0, 0); ++ enable_clocks(0); ++} ++ ++void dispc_enable_digit_out(int enable) ++{ ++ enable_clocks(1); ++ REG_FLD_MOD(DISPC_CONTROL, enable ? 1 : 0, 1, 1); ++ enable_clocks(0); ++} ++ ++void dispc_lcd_enable_signal_polarity(int act_high) ++{ ++ enable_clocks(1); ++ REG_FLD_MOD(DISPC_CONTROL, act_high ? 1 : 0, 29, 29); ++ enable_clocks(0); ++} ++ ++void dispc_lcd_enable_signal(int enable) ++{ ++ enable_clocks(1); ++ REG_FLD_MOD(DISPC_CONTROL, enable ? 1 : 0, 28, 28); ++ enable_clocks(0); ++} ++ ++void dispc_pck_free_enable(int enable) ++{ ++ enable_clocks(1); ++ REG_FLD_MOD(DISPC_CONTROL, enable ? 1 : 0, 27, 27); ++ enable_clocks(0); ++} ++ ++void dispc_enable_fifohandcheck(int enable) ++{ ++ enable_clocks(1); ++ REG_FLD_MOD(DISPC_CONFIG, enable ? 1 : 0, 16, 16); ++ enable_clocks(0); ++} ++ ++ ++static inline void get_dss_clocks(void) ++{ ++ dispc.dss_ick = get_dss_ick(); ++ dispc.dss1_fck = get_dss1_fck(); ++ dispc.dss_54m_fck = get_tv_fck(); ++} ++ ++void dispc_set_lcd_display_type(enum omap_lcd_display_type type) ++{ ++ int mode; ++ ++ switch (type) { ++ case OMAP_DSS_LCD_DISPLAY_STN: ++ mode = 0; ++ break; ++ ++ case OMAP_DSS_LCD_DISPLAY_TFT: ++ mode = 1; ++ break; ++ ++ default: ++ BUG(); ++ return; ++ } ++ ++ enable_clocks(1); ++ REG_FLD_MOD(DISPC_CONTROL, mode, 3, 3); ++ enable_clocks(0); ++} ++ ++void dispc_set_loadmode(enum omap_dss_load_mode mode) ++{ ++ enable_clocks(1); ++ REG_FLD_MOD(DISPC_CONFIG, mode, 2, 1); ++ enable_clocks(0); ++} ++ ++ ++void omap_dispc_set_default_color(enum omap_channel channel, u32 color) ++{ ++ const struct dispc_reg def_reg[] = { DISPC_DEFAULT_COLOR0, ++ DISPC_DEFAULT_COLOR1 }; ++ ++ enable_clocks(1); ++ dispc_write_reg(def_reg[channel], color); ++ enable_clocks(0); ++} ++ ++void omap_dispc_set_trans_key(enum omap_channel ch, ++ enum omap_dss_color_key_type type, ++ u32 trans_key) ++{ ++ const struct dispc_reg tr_reg[] = { ++ DISPC_TRANS_COLOR0, DISPC_TRANS_COLOR1 }; ++ ++ enable_clocks(1); ++ if (ch == OMAP_DSS_CHANNEL_LCD) ++ REG_FLD_MOD(DISPC_CONFIG, type, 11, 11); ++ else /* OMAP_DSS_CHANNEL_DIGIT */ ++ REG_FLD_MOD(DISPC_CONFIG, type, 13, 13); ++ ++ dispc_write_reg(tr_reg[ch], trans_key); ++ enable_clocks(0); ++} ++ ++void omap_dispc_enable_trans_key(enum omap_channel ch, int enable) ++{ ++ enable_clocks(1); ++ if (ch == OMAP_DSS_CHANNEL_LCD) ++ REG_FLD_MOD(DISPC_CONFIG, enable, 10, 10); ++ else /* OMAP_DSS_CHANNEL_DIGIT */ ++ REG_FLD_MOD(DISPC_CONFIG, enable, 12, 12); ++ enable_clocks(0); ++} ++ ++void dispc_set_tft_data_lines(int data_lines) ++{ ++ int code; ++ ++ switch (data_lines) { ++ case 12: ++ code = 0; ++ break; ++ case 16: ++ code = 1; ++ break; ++ case 18: ++ code = 2; ++ break; ++ case 24: ++ code = 3; ++ break; ++ default: ++ BUG(); ++ return; ++ } ++ ++ enable_clocks(1); ++ REG_FLD_MOD(DISPC_CONTROL, code, 9, 8); ++ enable_clocks(0); ++} ++ ++void dispc_set_parallel_interface_mode(enum omap_parallel_interface_mode mode) ++{ ++ u32 l; ++ int stallmode; ++ int gpout0 = 1; ++ int gpout1; ++ ++ switch (mode) { ++ case OMAP_DSS_PARALLELMODE_BYPASS: ++ stallmode = 0; ++ gpout1 = 1; ++ break; ++ ++ case OMAP_DSS_PARALLELMODE_RFBI: ++ stallmode = 1; ++ gpout1 = 0; ++ break; ++ ++ case OMAP_DSS_PARALLELMODE_DSI: ++ stallmode = 1; ++ gpout1 = 1; ++ break; ++ ++ default: ++ BUG(); ++ return; ++ } ++ ++ enable_clocks(1); ++ ++ l = dispc_read_reg(DISPC_CONTROL); ++ ++ l = FLD_MOD(l, stallmode, 11, 11); ++ l = FLD_MOD(l, gpout0, 15, 15); ++ l = FLD_MOD(l, gpout1, 16, 16); ++ ++ dispc_write_reg(DISPC_CONTROL, l); ++ ++ enable_clocks(0); ++} ++ ++static void _dispc_set_lcd_timings(int hsw, int hfp, int hbp, ++ int vsw, int vfp, int vbp) ++{ ++ u32 timing_h, timing_v; ++ ++ BUG_ON(hsw < 1 || hsw > 64); ++ BUG_ON(hfp < 1 || hfp > 256); ++ BUG_ON(hbp < 1 || hbp > 256); ++ ++ BUG_ON(vsw < 1 || vsw > 64); ++ BUG_ON(vfp < 0 || vfp > 255); ++ BUG_ON(vbp < 0 || vbp > 255); ++ ++ timing_h = FLD_VAL(hsw-1, 5, 0) | FLD_VAL(hfp-1, 15, 8) | ++ FLD_VAL(hbp-1, 27, 20); ++ ++ timing_v = FLD_VAL(vsw-1, 5, 0) | FLD_VAL(vfp, 15, 8) | ++ FLD_VAL(vbp, 27, 20); ++ ++ enable_clocks(1); ++ dispc_write_reg(DISPC_TIMING_H, timing_h); ++ dispc_write_reg(DISPC_TIMING_V, timing_v); ++ enable_clocks(0); ++} ++ ++void dispc_set_lcd_timings(struct omap_video_timings *timings) ++{ ++ _dispc_set_lcd_timings(timings->hsw, timings->hfp, timings->hbp, ++ timings->vsw, timings->vfp, timings->vbp); ++} ++ ++void dispc_set_lcd_divisor(int lck_div, int pck_div) ++{ ++ BUG_ON(lck_div < 1); ++ BUG_ON(pck_div < 2); ++ ++ enable_clocks(1); ++ dispc_write_reg(DISPC_DIVISOR, ++ FLD_VAL(lck_div, 23, 16) | FLD_VAL(pck_div, 7, 0)); ++ enable_clocks(0); ++} ++ ++static void dispc_get_lcd_divisor(int *lck_div, int *pck_div) ++{ ++ u32 l; ++ l = dispc_read_reg(DISPC_DIVISOR); ++ *lck_div = FLD_GET(l, 23, 16); ++ *pck_div = FLD_GET(l, 7, 0); ++} ++ ++unsigned long dispc_fclk_rate(void) ++{ ++ unsigned long r = 0; ++ ++ if (dss_get_dispc_clk_source() == 0) ++ r = clk_get_rate(dispc.dss1_fck); ++ else ++#ifdef CONFIG_OMAP2_DSS_DSI ++ r = dsi_get_dsi1_pll_rate(); ++#else ++ BUG(); ++#endif ++ return r; ++} ++ ++unsigned long dispc_pclk_rate(void) ++{ ++ int lcd, pcd; ++ unsigned long r; ++ u32 l; ++ ++ l = dispc_read_reg(DISPC_DIVISOR); ++ ++ lcd = FLD_GET(l, 23, 16); ++ pcd = FLD_GET(l, 7, 0); ++ ++ r = dispc_fclk_rate(); ++ ++ return r / lcd / pcd; ++} ++ ++ssize_t dispc_print_clocks(char *buf, ssize_t size) ++{ ++ ssize_t l = 0; ++ int lcd, pcd; ++ ++ enable_clocks(1); ++ ++ dispc_get_lcd_divisor(&lcd, &pcd); ++ ++ l += snprintf(buf + l, size - l, "- dispc -\n"); ++ ++ l += snprintf(buf + l, size - l, "dispc fclk source = %s\n", ++ dss_get_dispc_clk_source() == 0 ? ++ "dss1_alwon_fclk" : "dsi1_pll_fclk"); ++ ++ l += snprintf(buf + l, size - l, ++ "pixel clk = %lu / %d / %d = %lu\n", ++ dispc_fclk_rate(), ++ lcd, pcd, ++ dispc_pclk_rate()); ++ ++ enable_clocks(0); ++ ++ return l; ++} ++ ++static void _dispc_set_pol_freq(int onoff, int rf, int ieo, int ipc, ++ int ihs, int ivs, int acbi, int acb) ++{ ++ u32 l = 0; ++ ++ DSSDBG("polfreq ihs %d, ivs %d, acb %d\n", ihs, ivs, acb); ++ ++ l |= FLD_VAL(onoff, 17, 17); ++ l |= FLD_VAL(rf, 16, 16); ++ l |= FLD_VAL(ieo, 15, 15); ++ l |= FLD_VAL(ipc, 14, 14); ++ l |= FLD_VAL(ihs, 13, 13); ++ l |= FLD_VAL(ivs, 12, 12); ++ l |= FLD_VAL(acbi, 11, 8); ++ l |= FLD_VAL(acb, 7, 0); ++ ++ enable_clocks(1); ++ dispc_write_reg(DISPC_POL_FREQ, l); ++ enable_clocks(0); ++} ++ ++void dispc_set_pol_freq(struct omap_panel *panel) ++{ ++ _dispc_set_pol_freq((panel->config & OMAP_DSS_LCD_ONOFF) != 0, ++ (panel->config & OMAP_DSS_LCD_RF) != 0, ++ (panel->config & OMAP_DSS_LCD_IEO) != 0, ++ (panel->config & OMAP_DSS_LCD_IPC) != 0, ++ (panel->config & OMAP_DSS_LCD_IHS) != 0, ++ (panel->config & OMAP_DSS_LCD_IVS) != 0, ++ panel->acbi, panel->acb); ++} ++ ++unsigned long dispc_calc_clock_div(int is_tft, int pck, int *fck_div, ++ int *lck_div, int *pck_div) ++{ ++ unsigned long prate = clk_get_rate(clk_get_parent(dispc.dpll4_m4_ck)); ++ unsigned long pcd_min = is_tft ? 2 : 3; ++ unsigned long best_pck = 0; ++ int best_fd = 9, best_ld = 1, best_pd = 2; ++ int fd, ld, pd; ++ ++ for (fd = 16; fd > 0; --fd) { ++ unsigned long fck = prate / fd * 2; ++ ++ if (fck > DISPC_MAX_FCK) ++ continue; ++ ++#ifdef CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK ++ if (fck < pck * CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK) ++ continue; ++#endif ++ for (ld = 1; ld <= 255; ++ld) { ++ unsigned long lck = fck / ld; ++ ++ for (pd = pcd_min; pd <= 255; ++pd) { ++ int p = lck / pd; ++ ++ if (abs(p - pck) < abs(best_pck - pck)) { ++ best_pck = p; ++ best_fd = fd; ++ best_ld = ld; ++ best_pd = pd; ++ } ++ ++ if (p == pck) ++ goto found; ++ ++ if (p < pck) ++ break; ++ } ++ ++ if (lck / pcd_min < pck) ++ break; ++ } ++ } ++ ++found: ++ *fck_div = best_fd; ++ *lck_div = best_ld; ++ *pck_div = best_pd; ++ ++ return prate / best_fd * 2; ++} ++ ++void dispc_set_clock_div(int fck_div, int lck_div, int pck_div) ++{ ++ unsigned long prate; ++ ++ prate = clk_get_rate(clk_get_parent(dispc.dpll4_m4_ck)); ++ ++ clk_set_rate(dispc.dpll4_m4_ck, prate / fck_div); ++ dispc_set_lcd_divisor(lck_div, pck_div); ++ ++#ifdef DEBUG ++ { ++ unsigned long fck, lck, pck; ++ fck = prate / fck_div * 2; ++ lck = fck / lck_div; ++ pck = lck / pck_div; ++ ++ DSSDBG("dpll4_m4 = %ld\n", prate); ++ DSSDBG("fck = %ld (%d)\n", fck, fck_div); ++ DSSDBG("lck = %ld (%d)\n", lck, lck_div); ++ DSSDBG("pck = %ld (%d)\n", pck, pck_div); ++ } ++#endif ++} ++ ++int dispc_pixel_clock_valid(int pixel_clock) ++{ ++ int fck_div, lck_div, pck_div; ++ unsigned long fck; ++ ++ fck = dispc_calc_clock_div(1, pixel_clock * 1000, ++ &fck_div, &lck_div, &pck_div); ++ ++ return fck > 0; ++} ++ ++int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask) ++{ ++ int i; ++ int ret = -EBUSY; ++ unsigned long flags; ++ u32 new_mask = 0; ++ ++ if (isr == NULL) ++ return -EINVAL; ++ ++ spin_lock_irqsave(&dss_lock, flags); ++ ++ for (i = 0; i < DISPC_MAX_NR_ISRS; i++) { ++ if (registered_isr[i].isr == isr) { ++ ret = -EINVAL; ++ break; ++ } ++ ++ if (registered_isr[i].isr != NULL) ++ continue; ++ ++ registered_isr[i].isr = isr; ++ registered_isr[i].arg = arg; ++ registered_isr[i].mask = mask; ++ ++ enable_clocks(1); ++ new_mask = dispc_read_reg(DISPC_IRQENABLE); ++ new_mask |= mask; ++ dispc_write_reg(DISPC_IRQENABLE, new_mask); ++ enable_clocks(0); ++ ++ ret = 0; ++ break; ++ } ++ ++ spin_unlock_irqrestore(&dss_lock, flags); ++ ++ return ret; ++} ++EXPORT_SYMBOL(omap_dispc_register_isr); ++ ++int omap_dispc_unregister_isr(omap_dispc_isr_t isr) ++{ ++ int i, j; ++ unsigned long flags; ++ u32 new_mask = DISPC_IRQ_MASK_ERROR; ++ int ret = -EINVAL; ++ ++ spin_lock_irqsave(&dss_lock, flags); ++ ++ for (i = 0; i < DISPC_MAX_NR_ISRS; i++) { ++ if (registered_isr[i].isr != isr) ++ continue; ++ ++ registered_isr[i].isr = NULL; ++ registered_isr[i].arg = NULL; ++ registered_isr[i].mask = 0; ++ ++ for (j = 0; j < DISPC_MAX_NR_ISRS; j++) ++ new_mask |= registered_isr[j].mask; ++ ++ enable_clocks(1); ++ dispc_write_reg(DISPC_IRQENABLE, new_mask); ++ enable_clocks(0); ++ ++ ret = 0; ++ break; ++ } ++ ++ spin_unlock_irqrestore(&dss_lock, flags); ++ ++ return ret; ++} ++EXPORT_SYMBOL(omap_dispc_unregister_isr); ++ ++#ifdef DEBUG ++static void print_irq_status(u32 status) ++{ ++ if ((status & DISPC_IRQ_MASK_ERROR) == 0) ++ return; ++ ++ printk(KERN_DEBUG "DISPC IRQ: 0x%x: ", status); ++ ++#define PIS(x) \ ++ if (status & DISPC_IRQ_##x) \ ++ printk(#x " "); ++ PIS(GFX_FIFO_UNDERFLOW); ++ PIS(OCP_ERR); ++ PIS(VID1_FIFO_UNDERFLOW); ++ PIS(VID2_FIFO_UNDERFLOW); ++ PIS(SYNC_LOST); ++ PIS(SYNC_LOST_DIGIT); ++#undef PIS ++ ++ printk("\n"); ++} ++#endif ++ ++/* called from dss */ ++void dispc_irq_handler(void) ++{ ++ int i; ++ u32 irqstatus = dispc_read_reg(DISPC_IRQSTATUS); ++ static int errors; ++ ++ if (irqstatus & DISPC_IRQ_MASK_ERROR) { ++ if (printk_ratelimit()) { ++ DSSERR("dispc irq error status %04x\n", ++ irqstatus); ++ } ++ if (errors++ > 100) { ++ DSSERR("Excessive DISPC errors\n" ++ "Turning off lcd and digit\n"); ++ dispc_enable_lcd_out(0); ++ dispc_enable_digit_out(0); ++ } ++ } ++#ifdef DEBUG ++ print_irq_status(irqstatus); ++#endif ++ ++ for (i = 0; i < DISPC_MAX_NR_ISRS; i++) { ++ if (!registered_isr[i].isr) ++ continue; ++ if (registered_isr[i].mask & irqstatus) ++ registered_isr[i].isr(registered_isr[i].arg, ++ irqstatus); ++ } ++ ++ /* ack the interrupt */ ++ dispc_write_reg(DISPC_IRQSTATUS, irqstatus); ++} ++ ++#ifdef CONFIG_OMAP2_DSS_FAKE_VSYNC ++void dispc_fake_vsync_irq(void) ++{ ++ u32 irqstatus = DISPC_IRQ_VSYNC; ++ int i; ++ ++ for (i = 0; i < DISPC_MAX_NR_ISRS; i++) { ++ if (!registered_isr[i].isr) ++ continue; ++ if (registered_isr[i].mask & irqstatus) ++ registered_isr[i].isr(registered_isr[i].arg, ++ irqstatus); ++ } ++} ++#endif ++ ++static void _omap_dispc_initialize_irq(void) ++{ ++ memset(registered_isr, 0, sizeof(registered_isr)); ++ ++ /* We'll handle these always */ ++ dispc_write_reg(DISPC_IRQENABLE, DISPC_IRQ_MASK_ERROR); ++} ++ ++static void _omap_dispc_initial_config(void) ++{ ++ u32 l; ++ ++ l = dispc_read_reg(DISPC_SYSCONFIG); ++ l = FLD_MOD(l, 2, 13, 12); /* MIDLEMODE: smart standby */ ++ l = FLD_MOD(l, 2, 4, 3); /* SIDLEMODE: smart idle */ ++ l = FLD_MOD(l, 1, 2, 2); /* ENWAKEUP */ ++ l = FLD_MOD(l, 1, 1, 1); /* AUTOIDLE */ ++ dispc_write_reg(DISPC_SYSCONFIG, l); ++ ++ /* FUNCGATED */ ++ REG_FLD_MOD(DISPC_CONFIG, 1, 9, 9); ++ ++ /* L3 firewall setting: enable access to OCM RAM */ ++ __raw_writel(0x402000b0, IO_ADDRESS(0x680050a0)); ++ ++ _dispc_set_burst_size(OMAP_DSS_GFX, OMAP_DSS_BURST_16x32); ++ _dispc_set_burst_size(OMAP_DSS_VIDEO1, OMAP_DSS_BURST_16x32); ++ _dispc_set_burst_size(OMAP_DSS_VIDEO2, OMAP_DSS_BURST_16x32); ++ ++ _dispc_setup_color_conv_coef(); ++ ++ dispc_set_loadmode(OMAP_DSS_LOAD_FRAME_ONLY); ++ ++ /* Set logic clock to fck, pixel clock to fck/2 for now */ ++ dispc_set_lcd_divisor(1, 2); ++} ++ ++int dispc_init(void) ++{ ++ u32 rev; ++ ++ spin_lock_init(&dss_lock); ++ ++ dispc.base = ioremap(DISPC_BASE, SZ_1K); ++ if (!dispc.base) { ++ DSSERR("can't ioremap DISPC\n"); ++ return -ENOMEM; ++ } ++ ++ get_dss_clocks(); ++ dispc.dpll4_m4_ck = clk_get(NULL, "dpll4_m4_ck"); ++ if (IS_ERR(dispc.dpll4_m4_ck)) ++ DSSERR("Failed to get dpll4_m4_ck\n"); ++ ++ enable_clocks(1); ++ ++ _omap_dispc_initial_config(); ++ ++ _omap_dispc_initialize_irq(); ++ ++ rev = dispc_read_reg(DISPC_REVISION); ++ printk(KERN_INFO "OMAP DISPC rev %d.%d\n", ++ FLD_GET(rev, 7, 4), FLD_GET(rev, 3, 0)); ++ ++ enable_clocks(0); ++ ++ return 0; ++} ++ ++void dispc_exit(void) ++{ ++ clk_put(dispc.dpll4_m4_ck); ++ iounmap(dispc.base); ++} ++ ++int dispc_enable_plane(enum omap_plane plane, int enable) ++{ ++ DSSDBG("dispc_enable_plane %d, %d\n", plane, enable); ++ ++ enable_clocks(1); ++ _dispc_enable_plane(plane, enable); ++ enable_clocks(0); ++ ++ return 0; ++} ++ ++int dispc_setup_plane(enum omap_plane plane, enum omap_channel channel_out, ++ u32 paddr, int screen_width, ++ int pos_x, int pos_y, ++ int width, int height, ++ int out_width, int out_height, ++ enum omap_color_mode color_mode, ++ int ilace) ++{ ++ int r = 0; ++ ++ DSSDBG("dispc_setup_plane %d, %x, sw %d, %d,%d, %dx%d -> " ++ "%dx%d, (ilace %d)\n", ++ plane, paddr, screen_width, pos_x, pos_y, ++ width, height, ++ out_width, out_height, ++ ilace); ++ ++ enable_clocks(1); ++ ++ r = _dispc_setup_plane(plane, channel_out, ++ paddr, screen_width, ++ pos_x, pos_y, ++ width, height, ++ out_width, out_height, ++ color_mode, ilace); ++ ++ enable_clocks(0); ++ ++ return r; ++} ++ ++static int dispc_is_intersecting(int x1, int y1, int w1, int h1, ++ int x2, int y2, int w2, int h2) ++{ ++ if (x1 >= (x2+w2)) ++ return 0; ++ ++ if ((x1+w1) <= x2) ++ return 0; ++ ++ if (y1 >= (y2+h2)) ++ return 0; ++ ++ if ((y1+h1) <= y2) ++ return 0; ++ ++ return 1; ++} ++ ++static int dispc_is_overlay_scaled(struct omap_overlay_info *pi) ++{ ++ if (pi->width != pi->out_width) ++ return 1; ++ ++ if (pi->height != pi->out_height) ++ return 1; ++ ++ return 0; ++} ++ ++/* returns the area that needs updating */ ++void dispc_setup_partial_planes(struct omap_display *display, ++ int *xi, int *yi, int *wi, int *hi) ++{ ++ struct omap_overlay_manager *mgr; ++ int i; ++ ++ int x, y, w, h; ++ ++ x = *xi; ++ y = *yi; ++ w = *wi; ++ h = *hi; ++ ++ DSSDBG("dispc_setup_partial_planes %d,%d %dx%d\n", ++ *xi, *yi, *wi, *hi); ++ ++ ++ mgr = display->manager; ++ ++ if (!mgr) { ++ DSSDBG("no manager\n"); ++ return; ++ } ++ ++ for (i = 0; i < mgr->num_overlays; i++) { ++ struct omap_overlay *ovl; ++ struct omap_overlay_info *pi; ++ ovl = &mgr->overlays[i]; ++ ++ if (ovl->manager != mgr) ++ continue; ++ ++ if ((ovl->caps & OMAP_DSS_OVL_CAP_SCALE) == 0) ++ continue; ++ ++ pi = &ovl->info; ++ ++ if (!pi->enabled) ++ continue; ++ /* ++ * If the plane is intersecting and scaled, we ++ * enlarge the update region to accomodate the ++ * whole area ++ */ ++ ++ if (dispc_is_intersecting(x, y, w, h, ++ pi->pos_x, pi->pos_y, ++ pi->out_width, pi->out_height)) { ++ if (dispc_is_overlay_scaled(pi)) { ++ ++ int x1, y1, x2, y2; ++ ++ if (x > pi->pos_x) ++ x1 = pi->pos_x; ++ else ++ x1 = x; ++ ++ if (y > pi->pos_y) ++ y1 = pi->pos_y; ++ else ++ y1 = y; ++ ++ if ((x + w) < (pi->pos_x + pi->out_width)) ++ x2 = pi->pos_x + pi->out_width; ++ else ++ x2 = x + w; ++ ++ if ((y + h) < (pi->pos_y + pi->out_height)) ++ y2 = pi->pos_y + pi->out_height; ++ else ++ y2 = y + h; ++ ++ x = x1; ++ y = y1; ++ w = x2 - x1; ++ h = y2 - y1; ++ ++ DSSDBG("Update area after enlarge due to " ++ "scaling %d, %d %dx%d\n", ++ x, y, w, h); ++ } ++ } ++ } ++ ++ for (i = 0; i < mgr->num_overlays; i++) { ++ struct omap_overlay *ovl = &mgr->overlays[i]; ++ struct omap_overlay_info *pi = &ovl->info; ++ ++ int px = pi->pos_x; ++ int py = pi->pos_y; ++ int pw = pi->width; ++ int ph = pi->height; ++ int pow = pi->out_width; ++ int poh = pi->out_height; ++ u32 pa = pi->paddr; ++ int psw = pi->screen_width; ++ int bpp; ++ ++ if (ovl->manager != mgr) ++ continue; ++ ++ /* ++ * If plane is not enabled or the update region ++ * does not intersect with the plane in question, ++ * we really disable the plane from hardware ++ */ ++ ++ if (!pi->enabled || ++ !dispc_is_intersecting(x, y, w, h, ++ px, py, pow, poh)) { ++ dispc_enable_plane(ovl->id, 0); ++ continue; ++ } ++ ++ switch (pi->color_mode) { ++ case OMAP_DSS_COLOR_RGB16: ++ bpp = 16; ++ break; ++ ++ case OMAP_DSS_COLOR_RGB24P: ++ bpp = 24; ++ break; ++ ++ case OMAP_DSS_COLOR_RGB24U: ++ bpp = 32; ++ break; ++ ++ case OMAP_DSS_COLOR_YUV2: ++ case OMAP_DSS_COLOR_UYVY: ++ bpp = 16; ++ break; ++ ++ default: ++ BUG(); ++ return; ++ } ++ ++ if (x > pi->pos_x) { ++ px = 0; ++ pw -= (x - pi->pos_x); ++ pa += (x - pi->pos_x) * bpp / 8; ++ } else { ++ px = pi->pos_x - x; ++ } ++ ++ if (y > pi->pos_y) { ++ py = 0; ++ ph -= (y - pi->pos_y); ++ pa += (y - pi->pos_y) * psw * bpp / 8; ++ } else { ++ py = pi->pos_y - y; ++ } ++ ++ if (w < (px+pw)) ++ pw -= (px+pw) - (w); ++ ++ if (h < (py+ph)) ++ ph -= (py+ph) - (h); ++ ++ /* Can't scale the GFX plane */ ++ if ((ovl->caps & OMAP_DSS_OVL_CAP_SCALE) == 0 || ++ dispc_is_overlay_scaled(pi) == 0) { ++ pow = pw; ++ poh = ph; ++ } ++ ++ DSSDBG("calc plane %d, %x, sw %d, %d,%d, %dx%d -> %dx%d\n", ++ ovl->id, pa, psw, px, py, pw, ph, pow, poh); ++ ++ dispc_setup_plane(ovl->id, mgr->id, ++ pa, psw, ++ px, py, ++ pw, ph, ++ pow, poh, ++ pi->color_mode, 0); ++ ++ dispc_enable_plane(ovl->id, 1); ++ } ++ ++ *xi = x; ++ *yi = y; ++ *wi = w; ++ *hi = h; ++ ++} ++ +diff --git a/arch/arm/plat-omap/dss/display.c b/arch/arm/plat-omap/dss/display.c +new file mode 100644 +index 0000000..86f7d39 +--- /dev/null ++++ b/arch/arm/plat-omap/dss/display.c +@@ -0,0 +1,781 @@ ++/* ++ * linux/arch/arm/plat-omap/dss/display.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#define DSS_SUBSYS_NAME "DISPLAY" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include "dss.h" ++ ++#define DSS_MAX_DISPLAYS 8 ++ ++static int num_displays; ++static struct omap_display displays[DSS_MAX_DISPLAYS]; ++ ++static ssize_t show_clk(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ struct clk *clocks[5]; ++ int i; ++ ssize_t l, size = PAGE_SIZE; ++ ++ clocks[0] = get_dss_ick(); ++ clocks[1] = get_dss1_fck(); ++ clocks[2] = get_dss2_fck(); ++ clocks[3] = get_tv_fck(); ++ clocks[4] = get_96m_fck(); ++ ++ l = 0; ++ ++ l += snprintf(buf + l, size - l, "- dss -\n"); ++ ++ for (i = 0; i < 5; i++) { ++ l += snprintf(buf + l, size - l, "%-15s\t%lu\t%d\n", ++ clocks[i]->name, ++ clk_get_rate(clocks[i]), ++ clk_get_usecount(clocks[i])); ++ } ++ ++ l += dispc_print_clocks(buf + l, size - l); ++#ifdef CONFIG_OMAP2_DSS_DSI ++ l += dsi_print_clocks(buf + l, size - l); ++#endif ++ return l; ++} ++ ++static DEVICE_ATTR(clk, S_IRUGO, show_clk, NULL); ++ ++int initialize_sysfs(struct device *dev) ++{ ++ int r; ++ ++ r = device_create_file(dev, &dev_attr_clk); ++ if (r) ++ DSSERR("failed to create sysfs clk file\n"); ++ ++ return r; ++} ++ ++void uninitialize_sysfs(struct device *dev) ++{ ++ device_remove_file(dev, &dev_attr_clk); ++} ++ ++void initialize_displays(struct omap_dss_platform_data *pdata) ++{ ++ int i; ++ ++ num_displays = 0; ++ ++ BUG_ON(pdata->num_displays > DSS_MAX_DISPLAYS); ++ ++ for (i = 0; i < pdata->num_displays; ++i) { ++ struct omap_display *display = &displays[i]; ++ ++ /*atomic_set(&display->ref_count, 0);*/ ++ display->ref_count = 0; ++ ++ display->hw_config = *pdata->displays[i]; ++ display->type = pdata->displays[i]->type; ++ display->name = pdata->displays[i]->name; ++ ++ switch (display->type) { ++ ++ case OMAP_DISPLAY_TYPE_DPI: ++ dpi_init_display(display); ++ break; ++#ifdef CONFIG_OMAP2_DSS_RFBI ++ case OMAP_DISPLAY_TYPE_DBI: ++ rfbi_init_display(display); ++ break; ++#endif ++#ifdef CONFIG_OMAP2_DSS_VENC ++ case OMAP_DISPLAY_TYPE_VENC: ++ venc_init_display(display); ++ break; ++#endif ++#ifdef CONFIG_OMAP2_DSS_SDI ++ case OMAP_DISPLAY_TYPE_SDI: ++ sdi_init_display(display); ++ break; ++#endif ++#ifdef CONFIG_OMAP2_DSS_DSI ++ case OMAP_DISPLAY_TYPE_DSI: ++ dsi_init_display(display); ++ break; ++#endif ++ ++ default: ++ DSSERR("Support for display '%s' not compiled in.\n", ++ display->name); ++ continue; ++ } ++ ++ num_displays++; ++ } ++} ++ ++static int check_overlay(struct omap_overlay *ovl, ++ struct omap_display *display) ++{ ++ struct omap_overlay_info *info; ++ int outw, outh; ++ ++ if (!display) ++ return 0; ++ ++ if (!ovl->info.enabled) ++ return 0; ++ ++ info = &ovl->info; ++ ++ if ((ovl->caps & OMAP_DSS_OVL_CAP_SCALE) == 0) { ++ outw = info->width; ++ outh = info->height; ++ } else { ++ if (info->out_width == 0) ++ outw = info->width; ++ else ++ outw = info->out_width; ++ ++ if (info->out_height == 0) ++ outh = info->height; ++ else ++ outh = info->out_height; ++ } ++ ++ if (display->x_res < info->pos_x + outw) ++ return -EINVAL; ++ ++ if (display->y_res < info->pos_y + outh) ++ return -EINVAL; ++ ++ return 0; ++} ++ ++ ++static int omap_dss_set_manager(struct omap_overlay *ovl, ++ struct omap_overlay_manager *mgr) ++{ ++ int r; ++ ++ if (ovl->manager) { ++ DSSERR("overlay '%s' already has a manager '%s'\n", ++ ovl->name, ovl->manager->name); ++ } ++ ++ r = check_overlay(ovl, mgr->display); ++ if (r) ++ return r; ++ ++ ovl->manager = mgr; ++ ++ return 0; ++} ++ ++static int omap_dss_unset_manager(struct omap_overlay *ovl) ++{ ++ if (!ovl->manager) { ++ DSSERR("failed to detach overlay: manager not set\n"); ++ return -EINVAL; ++ } ++ ++ ovl->manager = NULL; ++ ++ return 0; ++} ++ ++static int omap_dss_set_display(struct omap_overlay_manager *mgr, ++ struct omap_display *display) ++{ ++ int i; ++ int r; ++ ++ if (display->manager) { ++ DSSERR("display '%s' already has a manager '%s'\n", ++ display->name, display->manager->name); ++ return -EINVAL; ++ } ++ ++ if ((mgr->supported_displays & display->type) == 0) { ++ DSSERR("display '%s' does not support manager '%s'\n", ++ display->name, mgr->name); ++ return -EINVAL; ++ } ++ ++ for (i = 0; i < mgr->num_overlays; i++) { ++ struct omap_overlay *ovl = &mgr->overlays[i]; ++ ++ if (ovl->manager != mgr || !ovl->info.enabled) ++ continue; ++ ++ r = check_overlay(ovl, display); ++ if (r) ++ return r; ++ } ++ ++ display->manager = mgr; ++ mgr->display = display; ++ ++ return 0; ++} ++ ++static int omap_dss_unset_display(struct omap_overlay_manager *mgr) ++{ ++ if (!mgr->display) { ++ DSSERR("failed to unset display, display not set.\n"); ++ return -EINVAL; ++ } ++ ++ mgr->display->manager = NULL; ++ mgr->display = NULL; ++ ++ return 0; ++} ++ ++static int omap_dss_setup_overlay_input(struct omap_overlay *ovl, ++ u32 paddr, void *vaddr, int screen_width, ++ int width, int height, ++ enum omap_color_mode color_mode) ++{ ++ int r; ++ struct omap_overlay_info old_info; ++ ++ if ((ovl->supported_modes & color_mode) == 0) { ++ DSSERR("overlay doesn't support mode %d\n", color_mode); ++ return -EINVAL; ++ } ++ ++ old_info = ovl->info; ++ ++ ovl->info.paddr = paddr; ++ ovl->info.vaddr = vaddr; ++ ovl->info.screen_width = screen_width; ++ ++ ovl->info.width = width; ++ ovl->info.height = height; ++ ovl->info.color_mode = color_mode; ++ ++ if (ovl->manager) { ++ r = check_overlay(ovl, ovl->manager->display); ++ if (r) { ++ ovl->info = old_info; ++ return r; ++ } ++ } ++ ++ return 0; ++} ++ ++static int omap_dss_setup_overlay_output(struct omap_overlay *ovl, ++ int pos_x, int pos_y, ++ int out_width, int out_height) ++{ ++ int r; ++ struct omap_overlay_info old_info; ++ ++ old_info = ovl->info; ++ ++ ovl->info.pos_x = pos_x; ++ ovl->info.pos_y = pos_y; ++ ovl->info.out_width = out_width; ++ ovl->info.out_height = out_height; ++ ++ if (ovl->manager) { ++ r = check_overlay(ovl, ovl->manager->display); ++ if (r) { ++ ovl->info = old_info; ++ return r; ++ } ++ } ++ ++ return 0; ++} ++ ++static int omap_dss_enable_overlay(struct omap_overlay *ovl, int enable) ++{ ++ struct omap_overlay_info old_info; ++ int r; ++ ++ old_info = ovl->info; ++ ++ ovl->info.enabled = enable ? 1 : 0; ++ ++ if (ovl->manager) { ++ r = check_overlay(ovl, ovl->manager->display); ++ if (r) { ++ ovl->info = old_info; ++ return r; ++ } ++ } ++ ++ return 0; ++} ++ ++ ++static int omap_dss_mgr_apply(struct omap_overlay_manager *mgr) ++{ ++ int i; ++ int r; ++ ++ DSSDBG("omap_dss_mgr_apply(%s)\n", mgr->name); ++ ++ if (!mgr->display) { ++ DSSDBG("no display, aborting apply\n"); ++ return 0; ++ } ++ ++ /* on a manual update display update() handles configuring ++ * planes */ ++ if (mgr->display->get_update_mode) { ++ enum omap_dss_update_mode mode; ++ mode = mgr->display->get_update_mode(mgr->display); ++ if (mode == OMAP_DSS_UPDATE_MANUAL) ++ return 0; ++ } ++ ++ for (i = 0; i < mgr->num_overlays; i++) { ++ int ilace = 0; ++ int outw, outh; ++ ++ struct omap_overlay *ovl = &mgr->overlays[i]; ++ ++ if (!ovl->manager) { ++ dispc_enable_plane(ovl->id, 0); ++ continue; ++ } ++ ++ if (ovl->manager != mgr) ++ continue; ++ ++ if (!ovl->info.enabled) { ++ dispc_enable_plane(ovl->id, 0); ++ continue; ++ } ++ ++ if (mgr->display->type == OMAP_DISPLAY_TYPE_VENC) ++ ilace = 1; ++ ++ if (ovl->info.out_width == 0) ++ outw = ovl->info.width; ++ else ++ outw = ovl->info.out_width; ++ ++ if (ovl->info.out_height == 0) ++ outh = ovl->info.height; ++ else ++ outh = ovl->info.out_height; ++ ++ r = dispc_setup_plane(ovl->id, ovl->manager->id, ++ ovl->info.paddr, ++ ovl->info.screen_width, ++ ovl->info.pos_x, ++ ovl->info.pos_y, ++ ovl->info.width, ++ ovl->info.height, ++ outw, ++ outh, ++ ovl->info.color_mode, ++ ilace); ++ ++ if (r) { ++ DSSERR("dispc_setup_plane failed\n"); ++ return r; ++ } ++ ++ dispc_enable_plane(ovl->id, 1); ++ } ++ ++ /* XXX if autoidle is enabled, we have to wait here a bit. ++ * Otherwise if we issue GOLCD too soon after lcd enable, ++ * we get sync lost. Why? */ ++ mdelay(100); ++ ++ dispc_go(mgr->id); ++ ++ return 0; ++} ++ ++static struct omap_overlay dispc_overlays[] = { ++ { ++ .name = "gfx", ++ .id = OMAP_DSS_GFX, ++ .set_manager = &omap_dss_set_manager, ++ .unset_manager = &omap_dss_unset_manager, ++ .setup_input = &omap_dss_setup_overlay_input, ++ .setup_output = &omap_dss_setup_overlay_output, ++ .enable = &omap_dss_enable_overlay, ++ .supported_modes = OMAP_DSS_COLOR_GFX_OMAP3, ++ }, ++ { ++ .name = "vid1", ++ .id = OMAP_DSS_VIDEO1, ++ .set_manager = &omap_dss_set_manager, ++ .unset_manager = &omap_dss_unset_manager, ++ .setup_input = &omap_dss_setup_overlay_input, ++ .setup_output = &omap_dss_setup_overlay_output, ++ .enable = &omap_dss_enable_overlay, ++ .supported_modes = OMAP_DSS_COLOR_VID_OMAP3, ++ .caps = OMAP_DSS_OVL_CAP_SCALE, ++ }, ++ { ++ .name = "vid2", ++ .id = OMAP_DSS_VIDEO2, ++ .set_manager = &omap_dss_set_manager, ++ .unset_manager = &omap_dss_unset_manager, ++ .setup_input = &omap_dss_setup_overlay_input, ++ .setup_output = &omap_dss_setup_overlay_output, ++ .enable = &omap_dss_enable_overlay, ++ .supported_modes = OMAP_DSS_COLOR_VID_OMAP3, ++ .caps = OMAP_DSS_OVL_CAP_SCALE, ++ }, ++}; ++ ++static struct omap_overlay_manager dispc_overlay_managers[] = ++{ ++ [OMAP_DSS_OVL_MGR_LCD] = { ++ .name = "lcd", ++ .id = OMAP_DSS_CHANNEL_LCD, ++ .num_overlays = 3, ++ .overlays = dispc_overlays, ++ .set_display = &omap_dss_set_display, ++ .unset_display = &omap_dss_unset_display, ++ .apply = &omap_dss_mgr_apply, ++ .caps = OMAP_DSS_OVL_MGR_CAP_DISPC, ++ .supported_displays = ++ OMAP_DISPLAY_TYPE_DPI | OMAP_DISPLAY_TYPE_DBI | ++ OMAP_DISPLAY_TYPE_SDI | OMAP_DISPLAY_TYPE_DSI, ++ }, ++ [OMAP_DSS_OVL_MGR_TV] = { ++ .name = "tv", ++ .id = OMAP_DSS_CHANNEL_DIGIT, ++ .num_overlays = 3, ++ .overlays = dispc_overlays, ++ .set_display = &omap_dss_set_display, ++ .unset_display = &omap_dss_unset_display, ++ .apply = &omap_dss_mgr_apply, ++ .caps = OMAP_DSS_OVL_MGR_CAP_DISPC, ++ .supported_displays = OMAP_DISPLAY_TYPE_VENC, ++ }, ++}; ++ ++static int num_overlays = 3; ++ ++static struct omap_overlay *omap_dss_overlays[10] = { ++ &dispc_overlays[0], ++ &dispc_overlays[1], ++ &dispc_overlays[2], ++}; ++ ++static int num_overlay_managers = 2; ++ ++static struct omap_overlay_manager *omap_dss_overlay_managers[10] = { ++ &dispc_overlay_managers[0], ++ &dispc_overlay_managers[1], ++}; ++ ++ ++static void omap_dss_add_overlay(struct omap_overlay *overlay) ++{ ++ int i = num_overlays++; ++ ++ omap_dss_overlays[i] = overlay; ++} ++ ++static void omap_dss_add_overlay_manager(struct omap_overlay_manager *manager) ++{ ++ int i = num_overlay_managers++; ++ omap_dss_overlay_managers[i] = manager; ++} ++ ++int omap_dss_get_num_overlays(void) ++{ ++ return num_overlays; ++} ++EXPORT_SYMBOL(omap_dss_get_num_overlays); ++ ++struct omap_overlay *omap_dss_get_overlay(int num) ++{ ++ BUG_ON(num >= num_overlays); ++ return omap_dss_overlays[num]; ++} ++EXPORT_SYMBOL(omap_dss_get_overlay); ++ ++int omap_dss_get_num_overlay_managers(void) ++{ ++ return num_overlay_managers; ++} ++EXPORT_SYMBOL(omap_dss_get_num_overlay_managers); ++ ++struct omap_overlay_manager *omap_dss_get_overlay_manager(int num) ++{ ++ BUG_ON(num >= num_overlay_managers); ++ return omap_dss_overlay_managers[num]; ++} ++EXPORT_SYMBOL(omap_dss_get_overlay_manager); ++ ++static int ovl_mgr_apply_l4(struct omap_overlay_manager *mgr) ++{ ++ DSSDBG("omap_dss_mgr_apply_l4(%s)\n", mgr->name); ++ ++ return 0; ++} ++ ++void initialize_overlays(void) ++{ ++ int i; ++ struct omap_overlay_manager *lcd_mgr; ++ struct omap_overlay_manager *tv_mgr; ++ struct omap_overlay_manager *def_mgr = NULL; ++ ++ lcd_mgr = omap_dss_get_overlay_manager(OMAP_DSS_OVL_MGR_LCD); ++ tv_mgr = omap_dss_get_overlay_manager(OMAP_DSS_OVL_MGR_TV); ++ ++ /* connect lcd manager to first non-VENC display found */ ++ for (i = 0; i < num_displays; i++) { ++ if (displays[i].type != OMAP_DISPLAY_TYPE_VENC) { ++ struct omap_display *display = &displays[i]; ++ omap_dss_set_display(lcd_mgr, display); ++ ++ def_mgr = lcd_mgr; ++ ++ break; ++ } ++ } ++ ++ /* connect tv manager to first VENC display found */ ++ for (i = 0; i < num_displays; i++) { ++ if (displays[i].type == OMAP_DISPLAY_TYPE_VENC) { ++ struct omap_display *display = &displays[i]; ++ omap_dss_set_display(tv_mgr, display); ++ ++ if (!def_mgr) ++ def_mgr = tv_mgr; ++ ++ break; ++ } ++ } ++ ++ /* connect all dispc overlays to def_mgr */ ++ if (def_mgr) { ++ for (i = 0; i < 3; i++) { ++ struct omap_overlay *ovl; ++ ovl = omap_dss_get_overlay(i); ++ omap_dss_set_manager(ovl, def_mgr); ++ } ++ } ++ ++ /* setup L4 overlay as an example */ ++ { ++ static struct omap_overlay ovl = { ++ .name = "l4-ovl", ++ .supported_modes = OMAP_DSS_COLOR_RGB24U, ++ .set_manager = &omap_dss_set_manager, ++ .unset_manager = &omap_dss_unset_manager, ++ .setup_input = &omap_dss_setup_overlay_input, ++ .setup_output = &omap_dss_setup_overlay_output, ++ .enable = &omap_dss_enable_overlay, ++ }; ++ ++ static struct omap_overlay_manager mgr = { ++ .name = "l4", ++ .num_overlays = 1, ++ .overlays = &ovl, ++ .set_display = &omap_dss_set_display, ++ .unset_display = &omap_dss_unset_display, ++ .apply = &ovl_mgr_apply_l4, ++ .supported_displays = ++ OMAP_DISPLAY_TYPE_DBI | OMAP_DISPLAY_TYPE_DSI, ++ }; ++ ++ omap_dss_add_overlay(&ovl); ++ omap_dss_add_overlay_manager(&mgr); ++ omap_dss_set_manager(&ovl, &mgr); ++ } ++ ++} ++ ++ ++int omap_dss_get_num_displays(void) ++{ ++ return num_displays; ++} ++EXPORT_SYMBOL(omap_dss_get_num_displays); ++ ++struct omap_display *omap_dss_get_display(int no) ++{ ++ struct omap_display *display; ++ ++ if (no >= num_displays) ++ return NULL; ++ ++ display = &displays[no]; ++ ++ switch (display->type) { ++ case OMAP_DISPLAY_TYPE_VENC: ++ break; ++ ++ case OMAP_DISPLAY_TYPE_DPI: ++ case OMAP_DISPLAY_TYPE_SDI: ++ if (display->panel == NULL) ++ return NULL; ++ break; ++ ++ case OMAP_DISPLAY_TYPE_DBI: ++ case OMAP_DISPLAY_TYPE_DSI: ++ if (display->panel == NULL || display->ctrl == NULL) ++ return NULL; ++ break; ++ ++ default: ++ return NULL; ++ } ++ ++ if (display->panel) { ++ if (!try_module_get(display->panel->owner)) ++ goto err0; ++ ++ if (display->panel->init) ++ if (display->panel->init(display) != 0) ++ goto err1; ++ } ++ ++ if (display->ctrl) { ++ if (!try_module_get(display->ctrl->owner)) ++ goto err2; ++ ++ if (display->ctrl->init) ++ if (display->ctrl->init(display) != 0) ++ goto err3; ++ } ++ ++ display->ref_count++; ++ /* ++ if (atomic_cmpxchg(&display->ref_count, 0, 1) != 0) ++ return 0; ++*/ ++ if (display->panel) { ++ display->x_res = display->panel->x_res; ++ display->y_res = display->panel->y_res; ++ display->bpp = display->panel->bpp; ++ } ++ ++ return display; ++err3: ++ if (display->ctrl) ++ module_put(display->ctrl->owner); ++err2: ++ if (display->panel && display->panel->init) ++ display->panel->cleanup(display); ++err1: ++ if (display->panel) ++ module_put(display->panel->owner); ++err0: ++ return NULL; ++} ++EXPORT_SYMBOL(omap_dss_get_display); ++ ++void omap_dss_put_display(struct omap_display *display) ++{ ++ if (--display->ref_count > 0) ++ return; ++/* ++ if (atomic_cmpxchg(&display->ref_count, 1, 0) != 1) ++ return; ++*/ ++ if (display->ctrl) { ++ if (display->ctrl->cleanup) ++ display->ctrl->cleanup(display); ++ module_put(display->ctrl->owner); ++ } ++ ++ if (display->panel) { ++ if (display->panel->cleanup) ++ display->panel->cleanup(display); ++ module_put(display->panel->owner); ++ } ++} ++EXPORT_SYMBOL(omap_dss_put_display); ++ ++void omap_dss_register_ctrl(struct omap_ctrl *ctrl) ++{ ++ int i; ++ ++ for (i = 0; i < num_displays; i++) { ++ struct omap_display *display = &displays[i]; ++ if (display->hw_config.ctrl_name && ++ strcmp(display->hw_config.ctrl_name, ctrl->name) == 0) { ++ display->ctrl = ctrl; ++ DSSDBG("ctrl '%s' registered\n", ctrl->name); ++ } ++ } ++} ++EXPORT_SYMBOL(omap_dss_register_ctrl); ++ ++void omap_dss_register_panel(struct omap_panel *panel) ++{ ++ int i; ++ ++ for (i = 0; i < num_displays; i++) { ++ struct omap_display *display = &displays[i]; ++ if (display->hw_config.panel_name && ++ strcmp(display->hw_config.panel_name, panel->name) == 0) { ++ display->panel = panel; ++ DSSDBG("panel '%s' registered\n", panel->name); ++ } ++ } ++} ++EXPORT_SYMBOL(omap_dss_register_panel); ++ ++void omap_dss_unregister_ctrl(struct omap_ctrl *ctrl) ++{ ++ int i; ++ ++ for (i = 0; i < num_displays; i++) { ++ struct omap_display *display = &displays[i]; ++ if (display->hw_config.ctrl_name && ++ strcmp(display->hw_config.ctrl_name, ctrl->name) == 0) ++ display->ctrl = NULL; ++ } ++} ++EXPORT_SYMBOL(omap_dss_unregister_ctrl); ++ ++void omap_dss_unregister_panel(struct omap_panel *panel) ++{ ++ int i; ++ ++ for (i = 0; i < num_displays; i++) { ++ struct omap_display *display = &displays[i]; ++ if (display->hw_config.panel_name && ++ strcmp(display->hw_config.panel_name, panel->name) == 0) ++ display->panel = NULL; ++ } ++} ++EXPORT_SYMBOL(omap_dss_unregister_panel); +diff --git a/arch/arm/plat-omap/dss/dpi.c b/arch/arm/plat-omap/dss/dpi.c +new file mode 100644 +index 0000000..d121b52 +--- /dev/null ++++ b/arch/arm/plat-omap/dss/dpi.c +@@ -0,0 +1,303 @@ ++/* ++ * linux/arch/arm/plat-omap/dss/dpi.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include "dss.h" ++ ++ ++static struct { ++ struct clk *dss_ick; ++ struct clk *dss1_fck; ++ int update_enabled; ++} dpi; ++ ++static void dpi_set_mode(struct omap_display *display) ++{ ++ struct omap_panel *panel = display->panel; ++ int lck_div, pck_div; ++ unsigned long fck; ++ unsigned long pck; ++ int is_tft; ++ ++ dispc_set_lcd_size(display->x_res, display->y_res); ++ ++ dispc_set_lcd_timings(&panel->timings); ++ dispc_set_pol_freq(panel); ++ ++ is_tft = (display->panel->config & OMAP_DSS_LCD_TFT) != 0; ++ ++#ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL ++ { ++ struct dsi_clock_info cinfo; ++ dsi_pll_calc_pck(is_tft, ++ display->panel->timings.pixel_clock*1000, ++ &cinfo); ++ ++ dsi_pll_program(&cinfo); ++ ++ dss_select_clk_source(0, 1); ++ ++ dispc_set_lcd_divisor(cinfo.lck_div, cinfo.pck_div); ++ ++ fck = cinfo.dispc_fck; ++ lck_div = cinfo.lck_div; ++ pck_div = cinfo.pck_div; ++ } ++#else ++ { ++ int fck_div; ++ fck = dispc_calc_clock_div(is_tft, ++ panel->timings.pixel_clock*1000, ++ &fck_div, &lck_div, &pck_div); ++ ++ if (fck == 0) { ++ DSSERR("Requested pixel clock is not possible\n"); ++ return; ++ } ++ ++ dispc_set_clock_div(fck_div, lck_div, pck_div); ++ } ++#endif ++ ++ pck = fck / lck_div / pck_div / 1000; ++ ++ panel->timings.pixel_clock = pck; ++ DSSDBG("fck %lu, lck_div %d, pck_div %d\n", fck, lck_div, pck_div); ++#ifdef DEBUG ++ { ++ struct omap_video_timings *t; ++ int xtot, ytot; ++ unsigned long ht, vt; ++ ++ t = &display->panel->timings; ++ xtot = display->panel->x_res + t->hfp + t->hsw + t->hbp; ++ ytot = display->panel->y_res + t->vfp + t->vsw + t->vbp; ++ ++ ht = (pck * 1000) / xtot; ++ vt = (pck * 1000) / xtot / ytot; ++ ++ DSSDBG("hsync %ldHz, vsync %ldHz\n", ht, vt); ++ ++ } ++#endif ++ DSSDBG("pixel clock changed to %d\n", panel->timings.pixel_clock); ++} ++ ++ ++static int dpi_display_enable(struct omap_display *display) ++{ ++ struct omap_panel *panel = display->panel; ++ int r; ++ int is_tft; ++ ++ if (display->state != OMAP_DSS_DISPLAY_DISABLED) { ++ DSSERR("display already enabled\n"); ++ return -EINVAL; ++ } ++ ++ r = panel->enable(display); ++ if (r) ++ return r; ++ ++ clk_enable(dpi.dss_ick); ++ clk_enable(dpi.dss1_fck); ++ ++#ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL ++ dsi_pll_init(0, 1); ++#endif ++ is_tft = (display->panel->config & OMAP_DSS_LCD_TFT) != 0; ++ ++ dispc_set_parallel_interface_mode(OMAP_DSS_PARALLELMODE_BYPASS); ++ dispc_set_lcd_display_type(is_tft ? OMAP_DSS_LCD_DISPLAY_TFT : ++ OMAP_DSS_LCD_DISPLAY_STN); ++ dispc_set_tft_data_lines(display->hw_config.u.dpi.data_lines); ++ ++ dpi_set_mode(display); ++ ++ mdelay(2); ++ ++ dispc_enable_lcd_out(1); ++ ++ display->state = OMAP_DSS_DISPLAY_ACTIVE; ++ ++ return 0; ++} ++ ++static int dpi_display_resume(struct omap_display *display); ++ ++static void dpi_display_disable(struct omap_display *display) ++{ ++ if (display->state == OMAP_DSS_DISPLAY_DISABLED) ++ return; ++ ++ if (display->state == OMAP_DSS_DISPLAY_SUSPENDED) ++ dpi_display_resume(display); ++ ++ display->panel->disable(display); ++ dispc_enable_lcd_out(0); ++ ++#ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL ++ dss_select_clk_source(0, 0); ++ dsi_pll_uninit(); ++#endif ++ ++ clk_disable(dpi.dss_ick); ++ clk_disable(dpi.dss1_fck); ++ ++ display->state = OMAP_DSS_DISPLAY_DISABLED; ++} ++ ++static int dpi_display_suspend(struct omap_display *display) ++{ ++ if (display->state != OMAP_DSS_DISPLAY_ACTIVE) ++ return -EINVAL; ++ ++ if (display->panel->suspend) ++ display->panel->suspend(display); ++ ++ dispc_enable_lcd_out(0); ++ ++ clk_disable(dpi.dss_ick); ++ clk_disable(dpi.dss1_fck); ++ ++ display->state = OMAP_DSS_DISPLAY_SUSPENDED; ++ ++ return 0; ++} ++ ++static int dpi_display_resume(struct omap_display *display) ++{ ++ if (display->state != OMAP_DSS_DISPLAY_SUSPENDED) ++ return -EINVAL; ++ ++ dispc_enable_lcd_out(1); ++ ++ clk_enable(dpi.dss_ick); ++ clk_enable(dpi.dss1_fck); ++ ++ if (display->panel->resume) ++ display->panel->resume(display); ++ ++ display->state = OMAP_DSS_DISPLAY_ACTIVE; ++ ++ return 0; ++} ++ ++static void dpi_display_set_mode(struct omap_display *display, ++ int x_res, int y_res, int bpp) ++{ ++ if (display->panel && display->panel->set_mode) ++ display->panel->set_mode(display, x_res, y_res, bpp); ++} ++ ++static void dpi_set_timings(struct omap_display *display, ++ struct omap_video_timings *timings) ++{ ++ DSSDBG("dpi_set_timings\n"); ++ display->panel->timings = *timings; ++ dpi_set_mode(display); ++} ++ ++static int dpi_check_timings(struct omap_display *display, ++ struct omap_video_timings *timings) ++{ ++ if (timings->hsw < 1 || timings->hsw > 64 || ++ timings->hfp < 1 || timings->hfp > 256 || ++ timings->hbp < 1 || timings->hbp > 256) { ++ return -EINVAL; ++ } ++ ++ if (timings->vsw < 1 || timings->vsw > 64 || ++ timings->vfp > 256 || timings->vbp > 256) { ++ return -EINVAL; ++ } ++ ++ if (!dispc_pixel_clock_valid(timings->pixel_clock)) ++ return -EINVAL; ++ ++ return 0; ++} ++ ++static void dpi_get_timings(struct omap_display *display, ++ struct omap_video_timings *timings) ++{ ++ *timings = display->panel->timings; ++} ++ ++static int dpi_display_set_update_mode(struct omap_display *display, ++ enum omap_dss_update_mode mode) ++{ ++ if (mode == OMAP_DSS_UPDATE_MANUAL) ++ return -EINVAL; ++ ++ if (mode == OMAP_DSS_UPDATE_DISABLED) { ++ dispc_enable_lcd_out(0); ++ dpi.update_enabled = 0; ++ } else { ++ dispc_enable_lcd_out(1); ++ dpi.update_enabled = 1; ++ } ++ ++ return 0; ++} ++ ++static enum omap_dss_update_mode dpi_display_get_update_mode( ++ struct omap_display *display) ++{ ++ return dpi.update_enabled ? OMAP_DSS_UPDATE_AUTO : ++ OMAP_DSS_UPDATE_DISABLED; ++} ++ ++void dpi_init_display(struct omap_display *display) ++{ ++ DSSDBG("DPI init_display\n"); ++ ++ display->enable = dpi_display_enable; ++ display->disable = dpi_display_disable; ++ display->suspend = dpi_display_suspend; ++ display->resume = dpi_display_resume; ++ display->set_mode = dpi_display_set_mode; ++ display->set_timings = dpi_set_timings; ++ display->check_timings = dpi_check_timings; ++ display->get_timings = dpi_get_timings; ++ display->set_update_mode = dpi_display_set_update_mode; ++ display->get_update_mode = dpi_display_get_update_mode; ++} ++ ++int dpi_init(void) ++{ ++ dpi.dss_ick = get_dss_ick(); ++ dpi.dss1_fck = get_dss1_fck(); ++ ++ return 0; ++} ++ ++void dpi_exit(void) ++{ ++} ++ +diff --git a/arch/arm/plat-omap/dss/dss.c b/arch/arm/plat-omap/dss/dss.c +new file mode 100644 +index 0000000..da0364b +--- /dev/null ++++ b/arch/arm/plat-omap/dss/dss.c +@@ -0,0 +1,547 @@ ++/* ++ * linux/arch/arm/plat-omap/dss/dss.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#define DSS_SUBSYS_NAME "DSS" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include "dss.h" ++ ++#define DSS_BASE 0x48050000 ++ ++struct dss_reg { ++ u16 idx; ++}; ++ ++#define DSS_REG(idx) ((const struct dss_reg) { idx }) ++ ++#define DSS_REVISION DSS_REG(0x0000) ++#define DSS_SYSCONFIG DSS_REG(0x0010) ++#define DSS_SYSSTATUS DSS_REG(0x0014) ++#define DSS_IRQSTATUS DSS_REG(0x0018) ++#define DSS_CONTROL DSS_REG(0x0040) ++#define DSS_SDI_CONTROL DSS_REG(0x0044) ++#define DSS_PLL_CONTROL DSS_REG(0x0048) ++#define DSS_SDI_STATUS DSS_REG(0x005C) ++ ++#define REG_FLD_MOD(idx, val, start, end) \ ++ dss_write_reg(idx, FLD_MOD(dss_read_reg(idx), val, start, end)) ++ ++static struct { ++ void __iomem *base; ++ ++ struct clk *dss_ick; ++ struct clk *dss1_fck; ++ struct clk *dss2_fck; ++ struct clk *dss_54m_fck; ++ struct clk *dss_96m_fck; ++} dss; ++ ++static inline void dss_write_reg(const struct dss_reg idx, u32 val) ++{ ++ __raw_writel(val, dss.base + idx.idx); ++} ++ ++static inline u32 dss_read_reg(const struct dss_reg idx) ++{ ++ return __raw_readl(dss.base + idx.idx); ++} ++ ++void dss_sdi_init(int datapairs) ++{ ++ u32 l; ++ ++ BUG_ON(datapairs > 3 || datapairs < 1); ++ ++ l = dss_read_reg(DSS_SDI_CONTROL); ++ l = FLD_MOD(l, 0xf, 19, 15); /* SDI_PDIV */ ++ l = FLD_MOD(l, datapairs-1, 3, 2); /* SDI_PRSEL */ ++ l = FLD_MOD(l, 2, 1, 0); /* SDI_BWSEL */ ++ dss_write_reg(DSS_SDI_CONTROL, l); ++ ++ l = dss_read_reg(DSS_PLL_CONTROL); ++ l = FLD_MOD(l, 0x7, 25, 22); /* SDI_PLL_FREQSEL */ ++ l = FLD_MOD(l, 0xb, 16, 11); /* SDI_PLL_REGN */ ++ l = FLD_MOD(l, 0xb4, 10, 1); /* SDI_PLL_REGM */ ++ dss_write_reg(DSS_PLL_CONTROL, l); ++ ++ /* Reset SDI PLL */ ++ REG_FLD_MOD(DSS_PLL_CONTROL, 1, 18, 18); /* SDI_PLL_SYSRESET */ ++ udelay(1); /* wait 2x PCLK */ ++ ++ /* Lock SDI PLL */ ++ REG_FLD_MOD(DSS_PLL_CONTROL, 1, 28, 28); /* SDI_PLL_GOBIT */ ++ ++ /* Waiting for PLL lock request to complete */ ++ while (dss_read_reg(DSS_SDI_STATUS) & (1 << 6)) ++ ; ++ ++ /* Clearing PLL_GO bit */ ++ REG_FLD_MOD(DSS_PLL_CONTROL, 0, 28, 28); ++ ++ /* Waiting for PLL to lock */ ++ while (!(dss_read_reg(DSS_SDI_STATUS) & (1 << 5))) ++ ; ++ ++ dispc_lcd_enable_signal(1); ++ ++ /* Waiting for SDI reset to complete */ ++ while (!(dss_read_reg(DSS_SDI_STATUS) & (1 << 5))) ++ ; ++} ++ ++static int get_dss_clocks(void) ++{ ++ const struct { ++ struct clk **clock; ++ char *omap2_name; ++ char *omap3_name; ++ } clocks[5] = { ++ { &dss.dss_ick, "dss_ick", "dss_ick" }, /* L3 & L4 ick */ ++ { &dss.dss1_fck, "dss1_fck", "dss1_alwon_fck" }, ++ { &dss.dss2_fck, "dss2_fck", "dss2_alwon_fck" }, ++ { &dss.dss_54m_fck, "dss_54m_fck", "dss_tv_fck" }, ++ { &dss.dss_96m_fck, NULL, "dss_96m_fck" }, ++ }; ++ ++ int r = 0; ++ int i; ++ const int num_clocks = 5; ++ ++ for (i = 0; i < num_clocks; i++) ++ *clocks[i].clock = NULL; ++ ++ for (i = 0; i < num_clocks; i++) { ++ struct clk *clk; ++ const char *clk_name; ++ ++ clk_name = cpu_is_omap34xx() ? clocks[i].omap3_name ++ : clocks[i].omap2_name; ++ ++ if (!clk_name) ++ continue; ++ ++ clk = clk_get(NULL, clk_name); ++ ++ if (IS_ERR(clk)) { ++ DSSERR("can't get clock %s", clk_name); ++ r = PTR_ERR(clk); ++ goto err; ++ } ++ ++ DSSDBG("clk %s, rate %ld\n", ++ clk_name, clk_get_rate(clk)); ++ ++ *clocks[i].clock = clk; ++ } ++ ++ return 0; ++ ++err: ++ for (i = 0; i < num_clocks; i++) { ++ if (!IS_ERR(*clocks[i].clock)) ++ clk_put(*clocks[i].clock); ++ } ++ ++ return r; ++} ++ ++static void put_dss_clocks(void) ++{ ++ if (dss.dss_96m_fck) ++ clk_put(dss.dss_96m_fck); ++ clk_put(dss.dss_54m_fck); ++ clk_put(dss.dss1_fck); ++ clk_put(dss.dss2_fck); ++ clk_put(dss.dss_ick); ++} ++ ++struct clk *get_dss_ick(void) ++{ ++ return dss.dss_ick; ++} ++ ++struct clk *get_dss1_fck(void) ++{ ++ return dss.dss1_fck; ++} ++ ++struct clk *get_dss2_fck(void) ++{ ++ return dss.dss2_fck; ++} ++ ++struct clk *get_tv_fck(void) ++{ ++ return dss.dss_54m_fck; ++} ++ ++struct clk *get_96m_fck(void) ++{ ++ return dss.dss_96m_fck; ++} ++ ++static void enable_dss_clocks(void) ++{ ++ clk_enable(dss.dss_ick); ++ clk_enable(dss.dss1_fck); ++ clk_enable(dss.dss2_fck); ++ clk_enable(dss.dss_54m_fck); ++ if (dss.dss_96m_fck) ++ clk_enable(dss.dss_96m_fck); ++} ++ ++static void disable_dss_clocks(void) ++{ ++ clk_disable(dss.dss_ick); ++ clk_disable(dss.dss1_fck); ++ clk_disable(dss.dss2_fck); ++ clk_disable(dss.dss_54m_fck); ++ if (dss.dss_96m_fck) ++ clk_disable(dss.dss_96m_fck); ++} ++ ++void dss_select_clk_source(int dsi, int dispc) ++{ ++ u32 r; ++ r = dss_read_reg(DSS_CONTROL); ++ r = FLD_MOD(r, dsi, 1, 1); /* DSI_CLK_SWITCH */ ++ r = FLD_MOD(r, dispc, 0, 0); /* DISPC_CLK_SWITCH */ ++ dss_write_reg(DSS_CONTROL, r); ++} ++ ++int dss_get_dsi_clk_source(void) ++{ ++ return FLD_GET(dss_read_reg(DSS_CONTROL), 1, 1); ++} ++ ++int dss_get_dispc_clk_source(void) ++{ ++ return FLD_GET(dss_read_reg(DSS_CONTROL), 0, 0); ++} ++ ++static irqreturn_t dss_irq_handler(int irq, void *arg) ++{ ++#ifdef CONFIG_ARCH_OMAP3 ++ u32 irqstatus; ++ ++ clk_enable(dss.dss_ick); ++ clk_enable(dss.dss1_fck); ++ ++ irqstatus = dss_read_reg(DSS_IRQSTATUS); ++ ++ if (irqstatus & (1<<0)) /* DISPC_IRQ */ ++ dispc_irq_handler(); ++#ifdef CONFIG_OMAP2_DSS_DSI ++ if (irqstatus & (1<<1)) /* DSI_IRQ */ ++ dsi_irq_handler(); ++#endif ++#else /* OMAP2 */ ++ dispc_irq_handler(); ++#endif ++ ++ clk_disable(dss.dss1_fck); ++ clk_disable(dss.dss_ick); ++ ++ return IRQ_HANDLED; ++} ++ ++ ++static int _omap_dss_reset(void) ++{ ++ int timeout = 10000; ++ int r = 0; ++ ++ /* Soft reset */ ++ REG_FLD_MOD(DSS_SYSCONFIG, 1, 1, 1); ++ ++ while (!(dss_read_reg(DSS_SYSSTATUS) & 1)) { ++ if (!--timeout) { ++ DSSERR("soft reset failed\n"); ++ r = -ENODEV; ++ break; ++ } ++ } ++ ++ return r; ++} ++ ++void dss_set_venc_output(enum omap_dss_venc_type type) ++{ ++ int l = 0; ++ ++ if (type == OMAP_DSS_VENC_TYPE_COMPOSITE) ++ l = 0; ++ else if (type == OMAP_DSS_VENC_TYPE_SVIDEO) ++ l = 1; ++ else ++ BUG(); ++ ++ /* venc out selection. 0 = comp, 1 = svideo */ ++ REG_FLD_MOD(DSS_CONTROL, l, 6, 6); ++} ++ ++void dss_set_dac_pwrdn_bgz(int enable) ++{ ++ REG_FLD_MOD(DSS_CONTROL, enable, 5, 5); /* DAC Power-Down Control */ ++} ++ ++int dss_init(void) ++{ ++ int r; ++ u32 rev; ++ ++ dss.base = ioremap(DSS_BASE, SZ_512); ++ if (!dss.base) { ++ DSSERR("can't ioremap DSS\n"); ++ r = -ENOMEM; ++ goto fail0; ++ } ++ ++ r = get_dss_clocks(); ++ if (r) ++ goto fail1; ++ ++ enable_dss_clocks(); ++ ++ _omap_dss_reset(); ++ ++ /* autoidle */ ++ REG_FLD_MOD(DSS_SYSCONFIG, 1, 0, 0); ++ ++ /* Select DPLL */ ++ REG_FLD_MOD(DSS_CONTROL, 0, 0, 0); ++ ++#ifdef CONFIG_OMAP2_DSS_VENC ++ REG_FLD_MOD(DSS_CONTROL, 1, 4, 4); /* venc dac demen */ ++ REG_FLD_MOD(DSS_CONTROL, 1, 3, 3); /* venc clock 4x enable */ ++ REG_FLD_MOD(DSS_CONTROL, 0, 2, 2); /* venc clock mode = normal */ ++#endif ++ ++ r = request_irq(INT_24XX_DSS_IRQ, dss_irq_handler, ++ 0, "OMAP DSS", NULL); ++ ++ if (r < 0) { ++ DSSERR("omap2 dss: request_irq failed\n"); ++ goto fail2; ++ } ++ ++ rev = dss_read_reg(DSS_REVISION); ++ printk(KERN_INFO "OMAP DSS rev %d.%d\n", ++ FLD_GET(rev, 7, 4), FLD_GET(rev, 3, 0)); ++ ++ disable_dss_clocks(); ++ return 0; ++ ++fail2: ++ disable_dss_clocks(); ++ put_dss_clocks(); ++fail1: ++ iounmap(dss.base); ++fail0: ++ return r; ++} ++ ++void dss_exit(void) ++{ ++ int c; ++ ++ free_irq(INT_24XX_DSS_IRQ, NULL); ++ ++ /* these should be removed at some point */ ++ c = clk_get_usecount(dss.dss_ick); ++ if (c > 0) { ++ DSSERR("warning: dss_ick usecount %d, disabling\n", c); ++ while (c-- > 0) ++ clk_disable(dss.dss_ick); ++ } ++ ++ c = clk_get_usecount(dss.dss1_fck); ++ if (c > 0) { ++ DSSERR("warning: dss1_fck usecount %d, disabling\n", c); ++ while (c-- > 0) ++ clk_disable(dss.dss1_fck); ++ } ++ ++ c = clk_get_usecount(dss.dss2_fck); ++ if (c > 0) { ++ DSSERR("warning: dss2_fck usecount %d, disabling\n", c); ++ while (c-- > 0) ++ clk_disable(dss.dss2_fck); ++ } ++ ++ c = clk_get_usecount(dss.dss_54m_fck); ++ if (c > 0) { ++ DSSERR("warning: dss_54m_fck usecount %d, disabling\n", c); ++ while (c-- > 0) ++ clk_disable(dss.dss_54m_fck); ++ } ++ ++ if (dss.dss_96m_fck) { ++ c = clk_get_usecount(dss.dss_96m_fck); ++ if (c > 0) { ++ DSSERR("warning: dss_96m_fck usecount %d, disabling\n", ++ c); ++ while (c-- > 0) ++ clk_disable(dss.dss_96m_fck); ++ } ++ } ++ ++ put_dss_clocks(); ++ ++ iounmap(dss.base); ++} ++ ++ ++ ++static int omap_dss_probe(struct platform_device *pdev) ++{ ++ struct omap_dss_platform_data *pdata = pdev->dev.platform_data; ++ ++ int r; ++ ++ r = dss_init(); ++ if (r) { ++ DSSERR("Failed to initialize DSS\n"); ++ goto fail0; ++ } ++ ++#ifdef CONFIG_OMAP2_DSS_RFBI ++ r = rfbi_init(); ++ if (r) { ++ DSSERR("Failed to initialize rfbi\n"); ++ goto fail0; ++ } ++#endif ++ ++ r = dpi_init(); ++ if (r) { ++ DSSERR("Failed to initialize dpi\n"); ++ goto fail0; ++ } ++ ++ r = dispc_init(); ++ if (r) { ++ DSSERR("Failed to initialize dispc\n"); ++ goto fail0; ++ } ++#ifdef CONFIG_OMAP2_DSS_VENC ++ r = venc_init(); ++ if (r) { ++ DSSERR("Failed to initialize venc\n"); ++ goto fail0; ++ } ++#endif ++ if (cpu_is_omap34xx()) { ++#ifdef CONFIG_OMAP2_DSS_SDI ++ r = sdi_init(); ++ if (r) { ++ DSSERR("Failed to initialize SDI\n"); ++ goto fail0; ++ } ++#endif ++#ifdef CONFIG_OMAP2_DSS_DSI ++ r = dsi_init(); ++ if (r) { ++ DSSERR("Failed to initialize DSI\n"); ++ goto fail0; ++ } ++#endif ++ } ++ ++ initialize_displays(pdata); ++ ++ r = initialize_sysfs(&pdev->dev); ++ if (r) ++ goto fail0; ++ ++ initialize_overlays(); ++ ++ return 0; ++ ++fail0: ++ return r; ++} ++ ++static int omap_dss_remove(struct platform_device *pdev) ++{ ++ uninitialize_sysfs(&pdev->dev); ++ ++#ifdef CONFIG_OMAP2_DSS_VENC ++ venc_exit(); ++#endif ++ dispc_exit(); ++ dpi_exit(); ++#ifdef CONFIG_OMAP2_DSS_RFBI ++ rfbi_exit(); ++#endif ++ if (cpu_is_omap34xx()) { ++#ifdef CONFIG_OMAP2_DSS_DSI ++ dsi_exit(); ++#endif ++#ifdef CONFIG_OMAP2_DSS_SDI ++ sdi_exit(); ++#endif ++ } ++ ++ dss_exit(); ++ ++ return 0; ++} ++ ++ ++static struct platform_driver omap_dss_driver = { ++ .probe = omap_dss_probe, ++ .remove = omap_dss_remove, ++ .driver = { ++ .name = "omap-dss", ++ .owner = THIS_MODULE, ++ }, ++}; ++ ++static int __init omap_dss_init(void) ++{ ++ return platform_driver_register(&omap_dss_driver); ++} ++ ++static void __exit omap_dss_exit(void) ++{ ++ platform_driver_unregister(&omap_dss_driver); ++} ++ ++subsys_initcall(omap_dss_init); ++module_exit(omap_dss_exit); ++ ++ ++MODULE_AUTHOR("Tomi Valkeinen "); ++MODULE_DESCRIPTION("OMAP2/3 Display Subsystem"); ++MODULE_LICENSE("GPL v2"); ++ +diff --git a/arch/arm/plat-omap/dss/dss.h b/arch/arm/plat-omap/dss/dss.h +new file mode 100644 +index 0000000..4df7f67 +--- /dev/null ++++ b/arch/arm/plat-omap/dss/dss.h +@@ -0,0 +1,240 @@ ++/* ++ * linux/arch/arm/plat-omap/dss/dss.h ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#ifndef __OMAP2_DSS_H ++#define __OMAP2_DSS_H ++ ++#ifdef CONFIG_OMAP2_DSS_DEBUG ++#define DEBUG ++#endif ++ ++#ifdef DEBUG ++#ifdef DSS_SUBSYS_NAME ++#define DSSDBG(format, ...) \ ++ printk(KERN_DEBUG "omap-dss " DSS_SUBSYS_NAME ": " format, \ ++ ## __VA_ARGS__) ++#else ++#define DSSDBG(format, ...) \ ++ printk(KERN_DEBUG "omap-dss: " format, ## __VA_ARGS__) ++#endif ++#else ++#define DSSDBG(format, ...) ++#endif ++ ++#ifdef DSS_SUBSYS_NAME ++#define DSSERR(format, ...) \ ++ printk(KERN_ERR "omap-dss " DSS_SUBSYS_NAME " error: " format, \ ++ ## __VA_ARGS__) ++#else ++#define DSSERR(format, ...) \ ++ printk(KERN_ERR "omap-dss error: " format, ## __VA_ARGS__) ++#endif ++ ++#ifdef DSS_SUBSYS_NAME ++#define DSSINFO(format, ...) \ ++ printk(KERN_INFO "omap-dss " DSS_SUBSYS_NAME ": " format, \ ++ ## __VA_ARGS__) ++#else ++#define DSSINFO(format, ...) \ ++ printk(KERN_INFO "omap-dss: " format, ## __VA_ARGS__) ++#endif ++ ++#ifdef DSS_SUBSYS_NAME ++#define DSSWARN(format, ...) \ ++ printk(KERN_WARNING "omap-dss " DSS_SUBSYS_NAME ": " format, \ ++ ## __VA_ARGS__) ++#else ++#define DSSWARN(format, ...) \ ++ printk(KERN_WARNING "omap-dss: " format, ## __VA_ARGS__) ++#endif ++ ++/* OMAP TRM gives bitfields as start:end, where start is the higher bit ++ number. For example 7:0 */ ++#define FLD_MASK(start, end) (((1 << (start - end + 1)) - 1) << (end)) ++#define FLD_VAL(val, start, end) (((val) << end) & FLD_MASK(start, end)) ++#define FLD_GET(val, start, end) (((val) & FLD_MASK(start, end)) >> (end)) ++#define FLD_MOD(orig, val, start, end) \ ++ (((orig) & ~FLD_MASK(start, end)) | FLD_VAL(val, start, end)) ++ ++#define DISPC_MAX_FCK 173000000 ++ ++enum omap_burst_size { ++ OMAP_DSS_BURST_4x32 = 0, ++ OMAP_DSS_BURST_8x32 = 1, ++ OMAP_DSS_BURST_16x32 = 2, ++}; ++ ++enum omap_parallel_interface_mode { ++ OMAP_DSS_PARALLELMODE_BYPASS, /* MIPI DPI */ ++ OMAP_DSS_PARALLELMODE_RFBI, /* MIPI DBI */ ++ OMAP_DSS_PARALLELMODE_DSI, ++}; ++ ++int initialize_sysfs(struct device *dev); ++void uninitialize_sysfs(struct device *dev); ++void initialize_displays(struct omap_dss_platform_data *pdata); ++void initialize_overlays(void); ++ ++/* DSS */ ++int dss_init(void); ++void dss_exit(void); ++ ++void dss_sdi_init(int datapairs); ++void dss_select_clk_source(int dsi, int dispc); ++int dss_get_dsi_clk_source(void); ++int dss_get_dispc_clk_source(void); ++void dss_set_venc_output(enum omap_dss_venc_type type); ++void dss_set_dac_pwrdn_bgz(int enable); ++ ++struct clk *get_dss_ick(void); ++struct clk *get_dss1_fck(void); ++struct clk *get_dss2_fck(void); ++struct clk *get_tv_fck(void); ++struct clk *get_96m_fck(void); ++ ++/* SDI */ ++int sdi_init(void); ++void sdi_exit(void); ++void sdi_init_display(struct omap_display *display); ++ ++ ++/* DSI */ ++struct dsi_clock_info { ++ /* rates that we get with dividers below */ ++ unsigned long fint; ++ unsigned long dsiphy; ++ unsigned long clkin; /* input clk for DSI PLL */ ++ unsigned long dispc_fck; /* output clk, DSI1_PLL_FCLK */ ++ unsigned long dsi_fck; /* output clk, DSI2_PLL_FCLK */ ++ unsigned long pck; /* dispc pixel clock */ ++ ++ /* dividers */ ++ int regn; ++ int regm; ++ int regm3; ++ int regm4; ++ ++ int lck_div; ++ int pck_div; ++ ++ int highfreq; ++ int use_dss2_fck; ++}; ++ ++int dsi_init(void); ++void dsi_exit(void); ++void dsi_init_display(struct omap_display *display); ++void dsi_irq_handler(void); ++unsigned long dsi_get_dsi1_pll_rate(void); ++unsigned long dsi_get_dsi2_pll_rate(void); ++int dsi_pll_calc_pck(int is_tft, unsigned long pck, ++ struct dsi_clock_info *cinfo); ++int dsi_pll_program(struct dsi_clock_info *cinfo); ++int dsi_pll_init(int enable_hsclk, int enable_hsdiv); ++void dsi_pll_uninit(void); ++ssize_t dsi_print_clocks(char *buf, ssize_t size); ++ ++/* DPI */ ++int dpi_init(void); ++void dpi_exit(void); ++void dpi_init_display(struct omap_display *display); ++ ++/* DISPC */ ++int dispc_init(void); ++void dispc_exit(void); ++void dispc_irq_handler(void); ++void dispc_fake_vsync_irq(void); ++ ++void dispc_lcd_enable_signal_polarity(int act_high); ++void dispc_lcd_enable_signal(int enable); ++void dispc_pck_free_enable(int enable); ++void dispc_enable_fifohandcheck(int enable); ++ ++void dispc_set_lcd_size(int width, int height); ++void dispc_set_digit_size(int width, int height); ++void dispc_setup_plane_fifo(enum omap_plane plane, int ext_mode); ++ ++void dispc_set_plane_ba0(enum omap_plane plane, u32 paddr); ++void dispc_set_plane_ba1(enum omap_plane plane, u32 paddr); ++void dispc_set_plane_pos(enum omap_plane plane, int x, int y); ++void dispc_set_plane_size(enum omap_plane plane, int width, int height); ++void dispc_set_row_inc(enum omap_plane plane, int inc); ++ ++int dispc_setup_plane(enum omap_plane plane, enum omap_channel channel_out, ++ u32 paddr, int screen_width, ++ int pos_x, int pos_y, ++ int width, int height, ++ int out_width, int out_height, ++ enum omap_color_mode color_mode, ++ int ilace); ++ ++void dispc_go(enum omap_channel channel); ++void dispc_enable_lcd_out(int enable); ++void dispc_enable_digit_out(int enable); ++int dispc_enable_plane(enum omap_plane plane, int enable); ++ ++void dispc_set_parallel_interface_mode(enum omap_parallel_interface_mode mode); ++void dispc_set_tft_data_lines(int data_lines); ++void dispc_set_lcd_display_type(enum omap_lcd_display_type type); ++void dispc_set_loadmode(enum omap_dss_load_mode mode); ++ ++void dispc_set_default_color(enum omap_channel channel, u32 color); ++void dispc_set_trans_key(enum omap_channel ch, ++ enum omap_dss_color_key_type type, ++ u32 trans_key); ++void dispc_enable_trans_key(enum omap_channel ch, int enable); ++ ++void dispc_set_lcd_timings(struct omap_video_timings *timings); ++unsigned long dispc_fclk_rate(void); ++unsigned long dispc_pclk_rate(void); ++void dispc_set_pol_freq(struct omap_panel *panel); ++unsigned long dispc_calc_clock_div(int is_tft, int pck, int *fck_div, ++ int *lck_div, int *pck_div); ++void dispc_set_clock_div(int fck_div, int lck_div, int pck_div); ++void dispc_set_lcd_divisor(int lck_div, int pck_div); ++int dispc_pixel_clock_valid(int pixel_clock); ++ ++void dispc_setup_partial_planes(struct omap_display *display, ++ int *x, int *y, int *w, int *h); ++void dispc_draw_partial_planes(struct omap_display *display); ++ ++ ++ssize_t dispc_print_clocks(char *buf, ssize_t size); ++ ++/* VENC */ ++int venc_init(void); ++void venc_exit(void); ++void venc_init_display(struct omap_display *display); ++ ++/* RFBI */ ++int rfbi_init(void); ++void rfbi_exit(void); ++ ++int rfbi_configure(int rfbi_module, int bpp, int lines); ++void rfbi_enable_rfbi(int enable); ++void rfbi_transfer_area(int width, int height, ++ void (callback)(void *data), void *data); ++void rfbi_set_timings(int rfbi_module, struct rfbi_timings *t); ++unsigned long rfbi_get_max_tx_rate(void); ++void rfbi_init_display(struct omap_display *display); ++ ++#endif +diff --git a/arch/arm/plat-omap/dss/sdi.c b/arch/arm/plat-omap/dss/sdi.c +new file mode 100644 +index 0000000..3f114f2 +--- /dev/null ++++ b/arch/arm/plat-omap/dss/sdi.c +@@ -0,0 +1,154 @@ ++/* ++ * linux/arch/arm/plat-omap/dss/sdi.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#define DSS_SUBSYS_NAME "SDI" ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include "dss.h" ++ ++ ++static struct { ++ struct clk *dss_ick; ++ struct clk *dss1_fck; ++ int update_enabled; ++} sdi; ++ ++static int sdi_display_enable(struct omap_display *display) ++{ ++ int fck_div, lck_div, pck_div; ++ unsigned long fck; ++ ++ struct omap_panel *panel = display->panel; ++ ++ ++ panel->enable(display); ++ ++ clk_enable(sdi.dss_ick); ++ clk_enable(sdi.dss1_fck); ++ ++ dispc_set_parallel_interface_mode(OMAP_DSS_PARALLELMODE_BYPASS); ++ dispc_set_lcd_size(display->x_res, display->y_res); ++ ++ /* 15.5.9.1.2 */ ++ panel->config |= OMAP_DSS_LCD_RF | OMAP_DSS_LCD_ONOFF; ++ ++ dispc_set_lcd_timings(&panel->timings); ++ dispc_set_pol_freq(panel); ++ ++ fck = dispc_calc_clock_div(1, panel->timings.pixel_clock*1000, ++ &fck_div, &lck_div, &pck_div); ++ ++ if (fck == 0) { ++ DSSERR("Requested pixel clock is not possible\n"); ++ return -EINVAL; ++ } ++ ++ dispc_set_clock_div(fck_div, lck_div, pck_div); ++ ++ panel->timings.pixel_clock = fck / lck_div / pck_div / 1000; ++ ++ DSSDBG("fck %lu, lck_div %d, pck_div %d\n", fck, lck_div, pck_div); ++ DSSDBG("pixel clock changed to %d\n", panel->timings.pixel_clock); ++ ++ ++ dispc_set_lcd_display_type(OMAP_DSS_LCD_DISPLAY_TFT); ++ dispc_set_tft_data_lines(24); ++ dispc_lcd_enable_signal_polarity(1); ++ dispc_pck_free_enable(1); ++ ++ dss_sdi_init(display->hw_config.u.sdi.datapairs); ++ ++ mdelay(2); ++ ++ dispc_enable_lcd_out(1); ++ ++ return 0; ++} ++ ++static void sdi_display_disable(struct omap_display *display) ++{ ++ display->panel->disable(display); ++ dispc_enable_lcd_out(0); ++ ++ clk_disable(sdi.dss_ick); ++ clk_disable(sdi.dss1_fck); ++} ++ ++static void sdi_display_set_mode(struct omap_display *display, ++ int x_res, int y_res, int bpp) ++{ ++ if (display->ctrl && display->ctrl->set_mode) ++ display->ctrl->set_mode(display, x_res, y_res, bpp); ++ if (display->panel && display->panel->set_mode) ++ display->panel->set_mode(display, x_res, y_res, bpp); ++} ++ ++static int sdi_display_set_update_mode(struct omap_display *display, ++ enum omap_dss_update_mode mode) ++{ ++ if (mode == OMAP_DSS_UPDATE_MANUAL) ++ return -EINVAL; ++ ++ if (mode == OMAP_DSS_UPDATE_DISABLED) { ++ dispc_enable_lcd_out(0); ++ sdi.update_enabled = 0; ++ } else { ++ dispc_enable_lcd_out(1); ++ sdi.update_enabled = 1; ++ } ++ ++ return 0; ++} ++ ++static enum omap_dss_update_mode sdi_display_get_update_mode( ++ struct omap_display *display) ++{ ++ return sdi.update_enabled ? OMAP_DSS_UPDATE_AUTO : ++ OMAP_DSS_UPDATE_DISABLED; ++} ++ ++ ++void sdi_init_display(struct omap_display *display) ++{ ++ DSSDBG("SDI init\n"); ++ ++ display->enable = sdi_display_enable; ++ display->disable = sdi_display_disable; ++ display->set_mode = sdi_display_set_mode; ++ display->set_update_mode = sdi_display_set_update_mode; ++ display->get_update_mode = sdi_display_get_update_mode; ++} ++ ++int sdi_init(void) ++{ ++ sdi.dss_ick = get_dss_ick(); ++ sdi.dss1_fck = get_dss1_fck(); ++ ++ return 0; ++} ++ ++void sdi_exit(void) ++{ ++} +diff --git a/arch/arm/plat-omap/include/mach/display.h b/arch/arm/plat-omap/include/mach/display.h +new file mode 100644 +index 0000000..05e78de +--- /dev/null ++++ b/arch/arm/plat-omap/include/mach/display.h +@@ -0,0 +1,458 @@ ++/* ++ * linux/include/asm-arm/arch-omap/display.h ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#ifndef __ASM_ARCH_OMAP_DISPLAY_H ++#define __ASM_ARCH_OMAP_DISPLAY_H ++ ++#include ++ ++#define DISPC_IRQ_FRAMEDONE (1 << 0) ++#define DISPC_IRQ_VSYNC (1 << 1) ++#define DISPC_IRQ_EVSYNC_EVEN (1 << 2) ++#define DISPC_IRQ_EVSYNC_ODD (1 << 3) ++#define DISPC_IRQ_ACBIAS_COUNT_STAT (1 << 4) ++#define DISPC_IRQ_PROG_LINE_NUM (1 << 5) ++#define DISPC_IRQ_GFX_FIFO_UNDERFLOW (1 << 6) ++#define DISPC_IRQ_GFX_END_WIN (1 << 7) ++#define DISPC_IRQ_PAL_GAMMA_MASK (1 << 8) ++#define DISPC_IRQ_OCP_ERR (1 << 9) ++#define DISPC_IRQ_VID1_FIFO_UNDERFLOW (1 << 10) ++#define DISPC_IRQ_VID1_END_WIN (1 << 11) ++#define DISPC_IRQ_VID2_FIFO_UNDERFLOW (1 << 12) ++#define DISPC_IRQ_VID2_END_WIN (1 << 13) ++#define DISPC_IRQ_SYNC_LOST (1 << 14) ++#define DISPC_IRQ_SYNC_LOST_DIGIT (1 << 15) ++ ++enum omap_display_type { ++ OMAP_DISPLAY_TYPE_NONE = 0, ++ OMAP_DISPLAY_TYPE_DPI = 1 << 0, ++ OMAP_DISPLAY_TYPE_DBI = 1 << 1, ++ OMAP_DISPLAY_TYPE_SDI = 1 << 2, ++ OMAP_DISPLAY_TYPE_DSI = 1 << 3, ++ OMAP_DISPLAY_TYPE_VENC = 1 << 4, ++}; ++ ++enum omap_plane { ++ OMAP_DSS_GFX = 0, ++ OMAP_DSS_VIDEO1 = 1, ++ OMAP_DSS_VIDEO2 = 2 ++}; ++ ++enum omap_channel { ++ OMAP_DSS_CHANNEL_LCD = 0, ++ OMAP_DSS_CHANNEL_DIGIT = 1, ++}; ++ ++enum omap_color_mode { ++ OMAP_DSS_COLOR_CLUT1 = 1 << 0, /* BITMAP 1 */ ++ OMAP_DSS_COLOR_CLUT2 = 1 << 1, /* BITMAP 2 */ ++ OMAP_DSS_COLOR_CLUT4 = 1 << 2, /* BITMAP 4 */ ++ OMAP_DSS_COLOR_CLUT8 = 1 << 3, /* BITMAP 8 */ ++ OMAP_DSS_COLOR_RGB12U = 1 << 4, /* RGB12, 16-bit container */ ++ OMAP_DSS_COLOR_ARGB16 = 1 << 5, /* ARGB16 */ ++ OMAP_DSS_COLOR_RGB16 = 1 << 6, /* RGB16 */ ++ OMAP_DSS_COLOR_RGB24U = 1 << 7, /* RGB24, 32-bit container */ ++ OMAP_DSS_COLOR_RGB24P = 1 << 8, /* RGB24, 24-bit container */ ++ OMAP_DSS_COLOR_YUV2 = 1 << 9, /* YUV2 4:2:2 co-sited */ ++ OMAP_DSS_COLOR_UYVY = 1 << 10, /* UYVY 4:2:2 co-sited */ ++ OMAP_DSS_COLOR_ARGB32 = 1 << 11, /* ARGB32 */ ++ OMAP_DSS_COLOR_RGBA32 = 1 << 12, /* RGBA32 */ ++ OMAP_DSS_COLOR_RGBX32 = 1 << 13, /* RGBx32 */ ++ ++ OMAP_DSS_COLOR_GFX_OMAP3 = ++ OMAP_DSS_COLOR_CLUT1 | OMAP_DSS_COLOR_CLUT2 | ++ OMAP_DSS_COLOR_CLUT4 | OMAP_DSS_COLOR_CLUT8 | ++ OMAP_DSS_COLOR_RGB12U | OMAP_DSS_COLOR_ARGB16 | ++ OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB24U | ++ OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_ARGB32 | ++ OMAP_DSS_COLOR_RGBA32 | OMAP_DSS_COLOR_RGBX32, ++ ++ OMAP_DSS_COLOR_VID_OMAP3 = ++ OMAP_DSS_COLOR_RGB12U | OMAP_DSS_COLOR_ARGB16 | ++ OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB24U | ++ OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_ARGB32 | ++ OMAP_DSS_COLOR_RGBA32 | OMAP_DSS_COLOR_RGBX32 | ++ OMAP_DSS_COLOR_YUV2 | OMAP_DSS_COLOR_UYVY, ++}; ++ ++enum omap_lcd_display_type { ++ OMAP_DSS_LCD_DISPLAY_STN, ++ OMAP_DSS_LCD_DISPLAY_TFT, ++}; ++ ++enum omap_dss_load_mode { ++ OMAP_DSS_LOAD_CLUT_AND_FRAME = 0, ++ OMAP_DSS_LOAD_CLUT_ONLY = 1, ++ OMAP_DSS_LOAD_FRAME_ONLY = 2, ++ OMAP_DSS_LOAD_CLUT_ONCE_FRAME = 3, ++}; ++ ++enum omap_dss_color_key_type { ++ OMAP_DSS_COLOR_KEY_GFX_DST = 0, ++ OMAP_DSS_COLOR_KEY_VID_SRC = 1, ++}; ++ ++enum omap_rfbi_te_mode { ++ OMAP_DSS_RFBI_TE_MODE_1 = 1, ++ OMAP_DSS_RFBI_TE_MODE_2 = 2, ++}; ++ ++enum omap_panel_config { ++ OMAP_DSS_LCD_IVS = 1<<0, ++ OMAP_DSS_LCD_IHS = 1<<1, ++ OMAP_DSS_LCD_IPC = 1<<2, ++ OMAP_DSS_LCD_IEO = 1<<3, ++ OMAP_DSS_LCD_RF = 1<<4, ++ OMAP_DSS_LCD_ONOFF = 1<<5, ++ ++ OMAP_DSS_LCD_TFT = 1<<20, ++}; ++ ++enum omap_dss_venc_type { ++ OMAP_DSS_VENC_TYPE_COMPOSITE, ++ OMAP_DSS_VENC_TYPE_SVIDEO, ++}; ++ ++struct omap_display; ++struct omap_panel; ++struct omap_ctrl; ++ ++/* RFBI */ ++ ++struct rfbi_timings { ++ int cs_on_time; ++ int cs_off_time; ++ int we_on_time; ++ int we_off_time; ++ int re_on_time; ++ int re_off_time; ++ int we_cycle_time; ++ int re_cycle_time; ++ int cs_pulse_width; ++ int access_time; ++ ++ int clk_div; ++ ++ u32 tim[5]; /* set by rfbi_convert_timings() */ ++ ++ int converted; ++}; ++ ++void omap_rfbi_write_command(const void *buf, u32 len); ++void omap_rfbi_read_data(void *buf, u32 len); ++void omap_rfbi_write_data(const void *buf, u32 len); ++void omap_rfbi_write_pixels(const void *buf, int scr_width, int x, int y, ++ int w, int h); ++int omap_rfbi_enable_te(int enable, unsigned line); ++int omap_rfbi_setup_te(enum omap_rfbi_te_mode mode, ++ unsigned hs_pulse_time, unsigned vs_pulse_time, ++ int hs_pol_inv, int vs_pol_inv, int extif_div); ++ ++/* DSI */ ++int dsi_vc_dcs_write(int channel, u8 *data, int len); ++int dsi_vc_dcs_write_nosync(int channel, u8 *data, int len); ++int dsi_vc_dcs_read(int channel, u8 dcs_cmd, u8 *buf, int buflen); ++int dsi_vc_set_max_rx_packet_size(int channel, u16 len); ++int dsi_vc_send_null(int channel); ++ ++/* Board specific data */ ++struct omap_display_data { ++ enum omap_display_type type; ++ ++ union { ++ struct { ++ int data_lines; ++ } dpi; ++ ++ struct { ++ int channel; ++ int data_lines; ++ } rfbi; ++ ++ struct { ++ int datapairs; ++ } sdi; ++ ++ struct { ++ int clk_lane; ++ int clk_pol; ++ int data1_lane; ++ int data1_pol; ++ int data2_lane; ++ int data2_pol; ++ } dsi; ++ ++ struct { ++ enum omap_dss_venc_type type; ++ } venc; ++ } u; ++ ++ int panel_reset_gpio; ++ int ctrl_reset_gpio; ++ ++ const char *name; /* for debug */ ++ const char *ctrl_name; ++ const char *panel_name; ++ ++ void *priv; ++ ++ /* platform specific enable/disable */ ++ int (*panel_enable)(struct omap_display *display); ++ void (*panel_disable)(struct omap_display *display); ++ int (*ctrl_enable)(struct omap_display *display); ++ void (*ctrl_disable)(struct omap_display *display); ++}; ++ ++/* Board specific data */ ++struct omap_dss_platform_data { ++ int num_displays; ++ struct omap_display_data *displays[]; ++}; ++ ++struct omap_ctrl { ++ struct module *owner; ++ ++ const char *name; ++ ++ int (*init)(struct omap_display *display); ++ void (*cleanup)(struct omap_display *display); ++ int (*enable)(struct omap_display *display); ++ void (*disable)(struct omap_display *display); ++ int (*suspend)(struct omap_display *display); ++ int (*resume)(struct omap_display *display); ++ void (*setup_update)(struct omap_display *display, ++ int x, int y, int w, int h); ++ void (*set_mode)(struct omap_display *display, ++ int x_res, int y_res, int bpp); ++ ++ int (*enable_te)(struct omap_display *display, int enable); ++ ++ int (*run_test)(struct omap_display *display, int test); ++ ++ int bpp; ++ ++ struct rfbi_timings timings; ++ ++ void *priv; ++}; ++ ++struct omap_video_timings { ++ /* Unit: KHz */ ++ u32 pixel_clock; ++ /* Unit: pixel clocks */ ++ u16 hsw; /* Horizontal synchronization pulse width */ ++ /* Unit: pixel clocks */ ++ u16 hfp; /* Horizontal front porch */ ++ /* Unit: pixel clocks */ ++ u16 hbp; /* Horizontal back porch */ ++ /* Unit: line clocks */ ++ u16 vsw; /* Vertical synchronization pulse width */ ++ /* Unit: line clocks */ ++ u16 vfp; /* Vertical front porch */ ++ /* Unit: line clocks */ ++ u16 vbp; /* Vertical back porch */ ++}; ++ ++struct omap_panel { ++ struct module *owner; ++ ++ const char *name; ++ ++ int (*init)(struct omap_display *display); ++ void (*cleanup)(struct omap_display *display); ++ int (*remove)(struct omap_display *display); ++ int (*enable)(struct omap_display *display); ++ void (*disable)(struct omap_display *display); ++ int (*suspend)(struct omap_display *display); ++ int (*resume)(struct omap_display *display); ++ void (*set_mode)(struct omap_display *display, ++ int x_res, int y_res, int bpp); ++ int (*run_test)(struct omap_display *display, int test); ++ ++ struct omap_video_timings timings; ++ ++ int acbi; /* ac-bias pin transitions per interrupt */ ++ /* Unit: line clocks */ ++ int acb; /* ac-bias pin frequency */ ++ ++ enum omap_panel_config config; ++ ++ int x_res, y_res; ++ int bpp; ++ ++ void *priv; ++}; ++ ++/* XXX perhaps this should be removed */ ++enum omap_dss_overlay_managers { ++ OMAP_DSS_OVL_MGR_LCD, ++ OMAP_DSS_OVL_MGR_TV, ++}; ++ ++struct omap_overlay_manager; ++ ++struct omap_overlay_info { ++ int enabled; ++ u32 paddr; ++ void *vaddr; ++ int screen_width; ++ int pos_x; ++ int pos_y; ++ int width; ++ int height; ++ int out_width; /* if 0, out_width == width */ ++ int out_height; /* if 0, out_height == height */ ++ enum omap_color_mode color_mode; ++}; ++ ++enum omap_overlay_caps { ++ OMAP_DSS_OVL_CAP_SCALE = 1 << 0, ++}; ++ ++struct omap_overlay { ++ ++ const char *name; ++ int id; ++ struct omap_overlay_manager *manager; ++ enum omap_color_mode supported_modes; ++ struct omap_overlay_info info; ++ enum omap_overlay_caps caps; ++ ++ int (*set_manager)(struct omap_overlay *ovl, ++ struct omap_overlay_manager *mgr); ++ int (*unset_manager)(struct omap_overlay *ovl); ++ ++ int (*setup_input)(struct omap_overlay *ovl, ++ u32 paddr, void *vaddr, ++ int screen_width, ++ int width, int height, ++ enum omap_color_mode color_mode); ++ int (*setup_output)(struct omap_overlay *ovl, ++ int pos_x, int pos_y, ++ int out_width, int out_height); ++ int (*enable)(struct omap_overlay *ovl, int enable); ++}; ++ ++enum omap_overlay_manager_caps { ++ OMAP_DSS_OVL_MGR_CAP_DISPC = 1 << 0, ++}; ++ ++struct omap_overlay_manager { ++ ++ const char *name; ++ int id; ++ enum omap_overlay_manager_caps caps; ++ struct omap_display *display; ++ int num_overlays; ++ struct omap_overlay *overlays; ++ enum omap_display_type supported_displays; ++ ++ int (*set_display)(struct omap_overlay_manager *mgr, ++ struct omap_display *display); ++ int (*unset_display)(struct omap_overlay_manager *mgr); ++ ++ int (*apply)(struct omap_overlay_manager *mgr); ++}; ++ ++enum omap_display_caps { ++ OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE = 1 << 0, ++}; ++ ++enum omap_dss_update_mode { ++ OMAP_DSS_UPDATE_DISABLED = 0, ++ OMAP_DSS_UPDATE_AUTO, ++ OMAP_DSS_UPDATE_MANUAL, ++}; ++ ++enum omap_dss_display_state { ++ OMAP_DSS_DISPLAY_DISABLED = 0, ++ OMAP_DSS_DISPLAY_ACTIVE, ++ OMAP_DSS_DISPLAY_SUSPENDED, ++}; ++ ++struct omap_display { ++ //atomic_t ref_count; ++ int ref_count; ++ ++ enum omap_display_type type; ++ const char *name; ++ ++ enum omap_display_caps caps; ++ ++ struct omap_overlay_manager *manager; ++ ++ int x_res, y_res; ++ int bpp; ++ ++ enum omap_dss_display_state state; ++ ++ struct omap_display_data hw_config; /* board specific data */ ++ struct omap_ctrl *ctrl; /* static common data */ ++ struct omap_panel *panel; /* static common data */ ++ ++ int (*enable)(struct omap_display *display); ++ void (*disable)(struct omap_display *display); ++ ++ int (*suspend)(struct omap_display *display); ++ int (*resume)(struct omap_display *display); ++ ++ void (*set_mode)(struct omap_display *display, ++ int x_res, int y_res, int bpp); ++ int (*check_timings)(struct omap_display *display, ++ struct omap_video_timings *timings); ++ void (*set_timings)(struct omap_display *display, ++ struct omap_video_timings *timings); ++ void (*get_timings)(struct omap_display *display, ++ struct omap_video_timings *timings); ++ int (*update)(struct omap_display *display, ++ int x, int y, int w, int h); ++ int (*sync)(struct omap_display *display); ++ ++ int (*set_update_mode)(struct omap_display *display, ++ enum omap_dss_update_mode); ++ enum omap_dss_update_mode (*get_update_mode) ++ (struct omap_display *display); ++ ++ int (*enable_te)(struct omap_display *display, int enable); ++ int (*get_te)(struct omap_display *display); ++ ++ int (*run_test)(struct omap_display *display, int test); ++}; ++ ++int omap_dss_get_num_displays(void); ++struct omap_display *omap_dss_get_display(int no); ++void omap_dss_put_display(struct omap_display *display); ++ ++void omap_dss_register_ctrl(struct omap_ctrl *ctrl); ++void omap_dss_unregister_ctrl(struct omap_ctrl *ctrl); ++ ++void omap_dss_register_panel(struct omap_panel *panel); ++void omap_dss_unregister_panel(struct omap_panel *panel); ++ ++int omap_dss_get_num_overlay_managers(void); ++struct omap_overlay_manager *omap_dss_get_overlay_manager(int num); ++ ++int omap_dss_get_num_overlays(void); ++struct omap_overlay *omap_dss_get_overlay(int num); ++ ++typedef void (*omap_dispc_isr_t) (void *arg, u32 mask); ++int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask); ++int omap_dispc_unregister_isr(omap_dispc_isr_t isr); ++ ++#endif +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0005-DSS-RFBI-support-for-OMAP2-3-DSS.patch b/packages/linux/linux-omap/0005-DSS-RFBI-support-for-OMAP2-3-DSS.patch new file mode 100644 index 0000000000..de376e6bd8 --- /dev/null +++ b/packages/linux/linux-omap/0005-DSS-RFBI-support-for-OMAP2-3-DSS.patch @@ -0,0 +1,1254 @@ +From 029f985ead9e1ea4f5d26c5ee1a234c144d2b418 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Tue, 4 Nov 2008 16:53:02 +0200 +Subject: [PATCH] DSS: RFBI support for OMAP2/3 DSS + +Signed-off-by: Tomi Valkeinen +--- + arch/arm/plat-omap/dss/rfbi.c | 1234 +++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 1234 insertions(+), 0 deletions(-) + create mode 100644 arch/arm/plat-omap/dss/rfbi.c + +diff --git a/arch/arm/plat-omap/dss/rfbi.c b/arch/arm/plat-omap/dss/rfbi.c +new file mode 100644 +index 0000000..31ddd24 +--- /dev/null ++++ b/arch/arm/plat-omap/dss/rfbi.c +@@ -0,0 +1,1234 @@ ++/* ++ * linux/arch/arm/plat-omap/dss/rfbi.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#define DSS_SUBSYS_NAME "RFBI" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include "dss.h" ++ ++/*#define MEASURE_PERF*/ ++ ++#define RFBI_BASE 0x48050800 ++ ++struct rfbi_reg { u16 idx; }; ++ ++#define RFBI_REG(idx) ((const struct rfbi_reg) { idx }) ++ ++#define RFBI_REVISION RFBI_REG(0x0000) ++#define RFBI_SYSCONFIG RFBI_REG(0x0010) ++#define RFBI_SYSSTATUS RFBI_REG(0x0014) ++#define RFBI_CONTROL RFBI_REG(0x0040) ++#define RFBI_PIXEL_CNT RFBI_REG(0x0044) ++#define RFBI_LINE_NUMBER RFBI_REG(0x0048) ++#define RFBI_CMD RFBI_REG(0x004c) ++#define RFBI_PARAM RFBI_REG(0x0050) ++#define RFBI_DATA RFBI_REG(0x0054) ++#define RFBI_READ RFBI_REG(0x0058) ++#define RFBI_STATUS RFBI_REG(0x005c) ++ ++#define RFBI_CONFIG(n) RFBI_REG(0x0060 + (n)*0x18) ++#define RFBI_ONOFF_TIME(n) RFBI_REG(0x0064 + (n)*0x18) ++#define RFBI_CYCLE_TIME(n) RFBI_REG(0x0068 + (n)*0x18) ++#define RFBI_DATA_CYCLE1(n) RFBI_REG(0x006c + (n)*0x18) ++#define RFBI_DATA_CYCLE2(n) RFBI_REG(0x0070 + (n)*0x18) ++#define RFBI_DATA_CYCLE3(n) RFBI_REG(0x0074 + (n)*0x18) ++ ++#define RFBI_VSYNC_WIDTH RFBI_REG(0x0090) ++#define RFBI_HSYNC_WIDTH RFBI_REG(0x0094) ++ ++#define RFBI_CMD_FIFO_LEN_BYTES (16 * sizeof(struct update_param)) ++ ++#define REG_FLD_MOD(idx, val, start, end) \ ++ rfbi_write_reg(idx, FLD_MOD(rfbi_read_reg(idx), val, start, end)) ++ ++/* To work around an RFBI transfer rate limitation */ ++#define OMAP_RFBI_RATE_LIMIT 1 ++ ++enum omap_rfbi_cycleformat { ++ OMAP_DSS_RFBI_CYCLEFORMAT_1_1 = 0, ++ OMAP_DSS_RFBI_CYCLEFORMAT_2_1 = 1, ++ OMAP_DSS_RFBI_CYCLEFORMAT_3_1 = 2, ++ OMAP_DSS_RFBI_CYCLEFORMAT_3_2 = 3, ++}; ++ ++enum omap_rfbi_datatype { ++ OMAP_DSS_RFBI_DATATYPE_12 = 0, ++ OMAP_DSS_RFBI_DATATYPE_16 = 1, ++ OMAP_DSS_RFBI_DATATYPE_18 = 2, ++ OMAP_DSS_RFBI_DATATYPE_24 = 3, ++}; ++ ++enum omap_rfbi_parallelmode { ++ OMAP_DSS_RFBI_PARALLELMODE_8 = 0, ++ OMAP_DSS_RFBI_PARALLELMODE_9 = 1, ++ OMAP_DSS_RFBI_PARALLELMODE_12 = 2, ++ OMAP_DSS_RFBI_PARALLELMODE_16 = 3, ++}; ++ ++enum update_cmd { ++ RFBI_CMD_UPDATE = 0, ++ RFBI_CMD_SYNC = 1, ++}; ++ ++static int rfbi_convert_timings(struct rfbi_timings *t); ++static void rfbi_get_clk_info(u32 *clk_period, u32 *max_clk_div); ++static void process_cmd_fifo(void); ++ ++static struct { ++ void __iomem *base; ++ ++ struct clk *dss_ick; ++ struct clk *dss1_fck; ++ ++ unsigned long l4_khz; ++ ++ enum omap_rfbi_datatype datatype; ++ enum omap_rfbi_parallelmode parallelmode; ++ ++ enum omap_rfbi_te_mode te_mode; ++ int te_enabled; ++ ++ void (*framedone_callback)(void *data); ++ void *framedone_callback_data; ++ ++ struct omap_display *display[2]; ++ ++ struct kfifo *cmd_fifo; ++ spinlock_t cmd_lock; ++ struct completion cmd_done; ++ atomic_t cmd_fifo_full; ++ atomic_t cmd_pending; ++#ifdef MEASURE_PERF ++ ktime_t perf_time; ++#endif ++} rfbi; ++ ++struct update_region { ++ u16 x; ++ u16 y; ++ u16 w; ++ u16 h; ++}; ++ ++struct update_param { ++ u8 rfbi_module; ++ u8 cmd; ++ ++ union { ++ struct update_region r; ++ struct completion *sync; ++ } par; ++}; ++ ++static inline void rfbi_write_reg(const struct rfbi_reg idx, u32 val) ++{ ++ __raw_writel(val, rfbi.base + idx.idx); ++} ++ ++static inline u32 rfbi_read_reg(const struct rfbi_reg idx) ++{ ++ return __raw_readl(rfbi.base + idx.idx); ++} ++ ++static void rfbi_enable_clocks(int enable) ++{ ++ if (enable) { ++ clk_enable(rfbi.dss_ick); ++ clk_enable(rfbi.dss1_fck); ++ } else { ++ clk_disable(rfbi.dss1_fck); ++ clk_disable(rfbi.dss_ick); ++ } ++} ++ ++void omap_rfbi_write_command(const void *buf, u32 len) ++{ ++ rfbi_enable_clocks(1); ++ switch (rfbi.parallelmode) { ++ case OMAP_DSS_RFBI_PARALLELMODE_8: ++ { ++ const u8 *b = buf; ++ for (; len; len--) ++ rfbi_write_reg(RFBI_CMD, *b++); ++ break; ++ } ++ ++ case OMAP_DSS_RFBI_PARALLELMODE_16: ++ { ++ const u16 *w = buf; ++ BUG_ON(len & 1); ++ for (; len; len -= 2) ++ rfbi_write_reg(RFBI_CMD, *w++); ++ break; ++ } ++ ++ case OMAP_DSS_RFBI_PARALLELMODE_9: ++ case OMAP_DSS_RFBI_PARALLELMODE_12: ++ default: ++ BUG(); ++ } ++ rfbi_enable_clocks(0); ++} ++EXPORT_SYMBOL(omap_rfbi_write_command); ++ ++void omap_rfbi_read_data(void *buf, u32 len) ++{ ++ rfbi_enable_clocks(1); ++ switch (rfbi.parallelmode) { ++ case OMAP_DSS_RFBI_PARALLELMODE_8: ++ { ++ u8 *b = buf; ++ for (; len; len--) { ++ rfbi_write_reg(RFBI_READ, 0); ++ *b++ = rfbi_read_reg(RFBI_READ); ++ } ++ break; ++ } ++ ++ case OMAP_DSS_RFBI_PARALLELMODE_16: ++ { ++ u16 *w = buf; ++ BUG_ON(len & ~1); ++ for (; len; len -= 2) { ++ rfbi_write_reg(RFBI_READ, 0); ++ *w++ = rfbi_read_reg(RFBI_READ); ++ } ++ break; ++ } ++ ++ case OMAP_DSS_RFBI_PARALLELMODE_9: ++ case OMAP_DSS_RFBI_PARALLELMODE_12: ++ default: ++ BUG(); ++ } ++ rfbi_enable_clocks(0); ++} ++EXPORT_SYMBOL(omap_rfbi_read_data); ++ ++void omap_rfbi_write_data(const void *buf, u32 len) ++{ ++ rfbi_enable_clocks(1); ++ switch (rfbi.parallelmode) { ++ case OMAP_DSS_RFBI_PARALLELMODE_8: ++ { ++ const u8 *b = buf; ++ for (; len; len--) ++ rfbi_write_reg(RFBI_PARAM, *b++); ++ break; ++ } ++ ++ case OMAP_DSS_RFBI_PARALLELMODE_16: ++ { ++ const u16 *w = buf; ++ BUG_ON(len & 1); ++ for (; len; len -= 2) ++ rfbi_write_reg(RFBI_PARAM, *w++); ++ break; ++ } ++ ++ case OMAP_DSS_RFBI_PARALLELMODE_9: ++ case OMAP_DSS_RFBI_PARALLELMODE_12: ++ default: ++ BUG(); ++ ++ } ++ rfbi_enable_clocks(0); ++} ++EXPORT_SYMBOL(omap_rfbi_write_data); ++ ++void omap_rfbi_write_pixels(const void *buf, int scr_width, int x, int y, ++ int w, int h) ++{ ++ int start_offset = scr_width * y + x; ++ int horiz_offset = scr_width - w; ++ int i; ++ ++ rfbi_enable_clocks(1); ++ ++ if (rfbi.datatype == OMAP_DSS_RFBI_DATATYPE_16 && ++ rfbi.parallelmode == OMAP_DSS_RFBI_PARALLELMODE_8) { ++ const u16 *pd = buf; ++ pd += start_offset; ++ ++ for (; h; --h) { ++ for (i = 0; i < w; ++i) { ++ const u8 *b = (const u8 *)pd; ++ rfbi_write_reg(RFBI_PARAM, *(b+1)); ++ rfbi_write_reg(RFBI_PARAM, *(b+0)); ++ ++pd; ++ } ++ pd += horiz_offset; ++ } ++ } else if (rfbi.datatype == OMAP_DSS_RFBI_DATATYPE_24 && ++ rfbi.parallelmode == OMAP_DSS_RFBI_PARALLELMODE_8) { ++ const u32 *pd = buf; ++ pd += start_offset; ++ ++ for (; h; --h) { ++ for (i = 0; i < w; ++i) { ++ const u8 *b = (const u8 *)pd; ++ rfbi_write_reg(RFBI_PARAM, *(b+2)); ++ rfbi_write_reg(RFBI_PARAM, *(b+1)); ++ rfbi_write_reg(RFBI_PARAM, *(b+0)); ++ ++pd; ++ } ++ pd += horiz_offset; ++ } ++ } else if (rfbi.datatype == OMAP_DSS_RFBI_DATATYPE_16 && ++ rfbi.parallelmode == OMAP_DSS_RFBI_PARALLELMODE_16) { ++ const u16 *pd = buf; ++ pd += start_offset; ++ ++ for (; h; --h) { ++ for (i = 0; i < w; ++i) { ++ rfbi_write_reg(RFBI_PARAM, *pd); ++ ++pd; ++ } ++ pd += horiz_offset; ++ } ++ } else { ++ BUG(); ++ } ++ ++ rfbi_enable_clocks(0); ++} ++EXPORT_SYMBOL(omap_rfbi_write_pixels); ++ ++void rfbi_transfer_area(int width, int height, ++ void (callback)(void *data), void *data) ++{ ++ u32 l; ++ ++ /*BUG_ON(callback == 0);*/ ++ BUG_ON(rfbi.framedone_callback != NULL); ++ ++ DSSDBG("rfbi_transfer_area %dx%d\n", width, height); ++ ++ dispc_set_lcd_size(width, height); ++ ++ dispc_enable_lcd_out(1); ++ ++ rfbi.framedone_callback = callback; ++ rfbi.framedone_callback_data = data; ++ ++ rfbi_enable_clocks(1); ++ ++#ifdef MEASURE_PERF ++ rfbi.perf_time = ktime_get(); ++#endif ++ rfbi_write_reg(RFBI_PIXEL_CNT, width * height); ++ ++ l = rfbi_read_reg(RFBI_CONTROL); ++ l = FLD_MOD(l, 1, 0, 0); /* enable */ ++ if (!rfbi.te_enabled) ++ l = FLD_MOD(l, 1, 4, 4); /* ITE */ ++ ++ rfbi_write_reg(RFBI_CONTROL, l); ++} ++ ++static void framedone_callback(void *data, u32 mask) ++{ ++ void (*callback)(void *data); ++ ++#ifdef MEASURE_PERF ++ { ++ ktime_t t = ktime_get(); ++ t = ktime_sub(t, rfbi.perf_time); ++ DSSDBG("FRAMEDONE in %lld ns\n", ktime_to_ns(t)); ++ } ++#else ++ DSSDBG("FRAMEDONE\n"); ++#endif ++ ++ REG_FLD_MOD(RFBI_CONTROL, 0, 0, 0); ++ ++ rfbi_enable_clocks(0); ++ ++ callback = rfbi.framedone_callback; ++ rfbi.framedone_callback = NULL; ++ ++ /*callback(rfbi.framedone_callback_data);*/ ++ ++ atomic_set(&rfbi.cmd_pending, 0); ++ ++ process_cmd_fifo(); ++} ++ ++#if 1 /* VERBOSE */ ++static void rfbi_print_timings(void) ++{ ++ u32 l; ++ u32 time; ++ ++ l = rfbi_read_reg(RFBI_CONFIG(0)); ++ time = 1000000000 / rfbi.l4_khz; ++ if (l & (1 << 4)) ++ time *= 2; ++ ++ DSSDBG("Tick time %u ps\n", time); ++ l = rfbi_read_reg(RFBI_ONOFF_TIME(0)); ++ DSSDBG("CSONTIME %d, CSOFFTIME %d, WEONTIME %d, WEOFFTIME %d, " ++ "REONTIME %d, REOFFTIME %d\n", ++ l & 0x0f, (l >> 4) & 0x3f, (l >> 10) & 0x0f, (l >> 14) & 0x3f, ++ (l >> 20) & 0x0f, (l >> 24) & 0x3f); ++ ++ l = rfbi_read_reg(RFBI_CYCLE_TIME(0)); ++ DSSDBG("WECYCLETIME %d, RECYCLETIME %d, CSPULSEWIDTH %d, " ++ "ACCESSTIME %d\n", ++ (l & 0x3f), (l >> 6) & 0x3f, (l >> 12) & 0x3f, ++ (l >> 22) & 0x3f); ++} ++#else ++static void rfbi_print_timings(void) {} ++#endif ++ ++ ++ ++ ++static u32 extif_clk_period; ++ ++static inline unsigned long round_to_extif_ticks(unsigned long ps, int div) ++{ ++ int bus_tick = extif_clk_period * div; ++ return (ps + bus_tick - 1) / bus_tick * bus_tick; ++} ++ ++static int calc_reg_timing(struct rfbi_timings *t, int div) ++{ ++ t->clk_div = div; ++ ++ t->cs_on_time = round_to_extif_ticks(t->cs_on_time, div); ++ ++ t->we_on_time = round_to_extif_ticks(t->we_on_time, div); ++ t->we_off_time = round_to_extif_ticks(t->we_off_time, div); ++ t->we_cycle_time = round_to_extif_ticks(t->we_cycle_time, div); ++ ++ t->re_on_time = round_to_extif_ticks(t->re_on_time, div); ++ t->re_off_time = round_to_extif_ticks(t->re_off_time, div); ++ t->re_cycle_time = round_to_extif_ticks(t->re_cycle_time, div); ++ ++ t->access_time = round_to_extif_ticks(t->access_time, div); ++ t->cs_off_time = round_to_extif_ticks(t->cs_off_time, div); ++ t->cs_pulse_width = round_to_extif_ticks(t->cs_pulse_width, div); ++ ++ DSSDBG("[reg]cson %d csoff %d reon %d reoff %d\n", ++ t->cs_on_time, t->cs_off_time, t->re_on_time, t->re_off_time); ++ DSSDBG("[reg]weon %d weoff %d recyc %d wecyc %d\n", ++ t->we_on_time, t->we_off_time, t->re_cycle_time, ++ t->we_cycle_time); ++ DSSDBG("[reg]rdaccess %d cspulse %d\n", ++ t->access_time, t->cs_pulse_width); ++ ++ return rfbi_convert_timings(t); ++} ++ ++static int calc_extif_timings(struct rfbi_timings *t) ++{ ++ u32 max_clk_div; ++ int div; ++ ++ rfbi_get_clk_info(&extif_clk_period, &max_clk_div); ++ for (div = 1; div <= max_clk_div; div++) { ++ if (calc_reg_timing(t, div) == 0) ++ break; ++ } ++ ++ if (div <= max_clk_div) ++ return 0; ++ ++ DSSERR("can't setup timings\n"); ++ return -1; ++} ++ ++ ++void rfbi_set_timings(int rfbi_module, struct rfbi_timings *t) ++{ ++ int r; ++ ++ if (!t->converted) { ++ r = calc_extif_timings(t); ++ if (r < 0) ++ DSSERR("Failed to calc timings\n"); ++ } ++ ++ BUG_ON(!t->converted); ++ ++ rfbi_enable_clocks(1); ++ rfbi_write_reg(RFBI_ONOFF_TIME(rfbi_module), t->tim[0]); ++ rfbi_write_reg(RFBI_CYCLE_TIME(rfbi_module), t->tim[1]); ++ ++ /* TIMEGRANULARITY */ ++ REG_FLD_MOD(RFBI_CONFIG(rfbi_module), ++ (t->tim[2] ? 1 : 0), 4, 4); ++ ++ rfbi_print_timings(); ++ rfbi_enable_clocks(0); ++} ++ ++static int ps_to_rfbi_ticks(int time, int div) ++{ ++ unsigned long tick_ps; ++ int ret; ++ ++ /* Calculate in picosecs to yield more exact results */ ++ tick_ps = 1000000000 / (rfbi.l4_khz) * div; ++ ++ ret = (time + tick_ps - 1) / tick_ps; ++ ++ return ret; ++} ++ ++#ifdef OMAP_RFBI_RATE_LIMIT ++unsigned long rfbi_get_max_tx_rate(void) ++{ ++ unsigned long l4_rate, dss1_rate; ++ int min_l4_ticks = 0; ++ int i; ++ ++ /* According to TI this can't be calculated so make the ++ * adjustments for a couple of known frequencies and warn for ++ * others. ++ */ ++ static const struct { ++ unsigned long l4_clk; /* HZ */ ++ unsigned long dss1_clk; /* HZ */ ++ unsigned long min_l4_ticks; ++ } ftab[] = { ++ { 55, 132, 7, }, /* 7.86 MPix/s */ ++ { 110, 110, 12, }, /* 9.16 MPix/s */ ++ { 110, 132, 10, }, /* 11 Mpix/s */ ++ { 120, 120, 10, }, /* 12 Mpix/s */ ++ { 133, 133, 10, }, /* 13.3 Mpix/s */ ++ }; ++ ++ l4_rate = rfbi.l4_khz / 1000; ++ dss1_rate = clk_get_rate(rfbi.dss1_fck) / 1000000; ++ ++ for (i = 0; i < ARRAY_SIZE(ftab); i++) { ++ /* Use a window instead of an exact match, to account ++ * for different DPLL multiplier / divider pairs. ++ */ ++ if (abs(ftab[i].l4_clk - l4_rate) < 3 && ++ abs(ftab[i].dss1_clk - dss1_rate) < 3) { ++ min_l4_ticks = ftab[i].min_l4_ticks; ++ break; ++ } ++ } ++ if (i == ARRAY_SIZE(ftab)) { ++ /* Can't be sure, return anyway the maximum not ++ * rate-limited. This might cause a problem only for the ++ * tearing synchronisation. ++ */ ++ DSSERR("can't determine maximum RFBI transfer rate\n"); ++ return rfbi.l4_khz * 1000; ++ } ++ return rfbi.l4_khz * 1000 / min_l4_ticks; ++} ++#else ++int rfbi_get_max_tx_rate(void) ++{ ++ return rfbi.l4_khz * 1000; ++} ++#endif ++ ++static void rfbi_get_clk_info(u32 *clk_period, u32 *max_clk_div) ++{ ++ *clk_period = 1000000000 / rfbi.l4_khz; ++ *max_clk_div = 2; ++} ++ ++static int rfbi_convert_timings(struct rfbi_timings *t) ++{ ++ u32 l; ++ int reon, reoff, weon, weoff, cson, csoff, cs_pulse; ++ int actim, recyc, wecyc; ++ int div = t->clk_div; ++ ++ if (div <= 0 || div > 2) ++ return -1; ++ ++ /* Make sure that after conversion it still holds that: ++ * weoff > weon, reoff > reon, recyc >= reoff, wecyc >= weoff, ++ * csoff > cson, csoff >= max(weoff, reoff), actim > reon ++ */ ++ weon = ps_to_rfbi_ticks(t->we_on_time, div); ++ weoff = ps_to_rfbi_ticks(t->we_off_time, div); ++ if (weoff <= weon) ++ weoff = weon + 1; ++ if (weon > 0x0f) ++ return -1; ++ if (weoff > 0x3f) ++ return -1; ++ ++ reon = ps_to_rfbi_ticks(t->re_on_time, div); ++ reoff = ps_to_rfbi_ticks(t->re_off_time, div); ++ if (reoff <= reon) ++ reoff = reon + 1; ++ if (reon > 0x0f) ++ return -1; ++ if (reoff > 0x3f) ++ return -1; ++ ++ cson = ps_to_rfbi_ticks(t->cs_on_time, div); ++ csoff = ps_to_rfbi_ticks(t->cs_off_time, div); ++ if (csoff <= cson) ++ csoff = cson + 1; ++ if (csoff < max(weoff, reoff)) ++ csoff = max(weoff, reoff); ++ if (cson > 0x0f) ++ return -1; ++ if (csoff > 0x3f) ++ return -1; ++ ++ l = cson; ++ l |= csoff << 4; ++ l |= weon << 10; ++ l |= weoff << 14; ++ l |= reon << 20; ++ l |= reoff << 24; ++ ++ t->tim[0] = l; ++ ++ actim = ps_to_rfbi_ticks(t->access_time, div); ++ if (actim <= reon) ++ actim = reon + 1; ++ if (actim > 0x3f) ++ return -1; ++ ++ wecyc = ps_to_rfbi_ticks(t->we_cycle_time, div); ++ if (wecyc < weoff) ++ wecyc = weoff; ++ if (wecyc > 0x3f) ++ return -1; ++ ++ recyc = ps_to_rfbi_ticks(t->re_cycle_time, div); ++ if (recyc < reoff) ++ recyc = reoff; ++ if (recyc > 0x3f) ++ return -1; ++ ++ cs_pulse = ps_to_rfbi_ticks(t->cs_pulse_width, div); ++ if (cs_pulse > 0x3f) ++ return -1; ++ ++ l = wecyc; ++ l |= recyc << 6; ++ l |= cs_pulse << 12; ++ l |= actim << 22; ++ ++ t->tim[1] = l; ++ ++ t->tim[2] = div - 1; ++ ++ t->converted = 1; ++ ++ return 0; ++} ++ ++/* xxx FIX module selection missing */ ++int omap_rfbi_setup_te(enum omap_rfbi_te_mode mode, ++ unsigned hs_pulse_time, unsigned vs_pulse_time, ++ int hs_pol_inv, int vs_pol_inv, int extif_div) ++{ ++ int hs, vs; ++ int min; ++ u32 l; ++ ++ hs = ps_to_rfbi_ticks(hs_pulse_time, 1); ++ vs = ps_to_rfbi_ticks(vs_pulse_time, 1); ++ if (hs < 2) ++ return -EDOM; ++ if (mode == OMAP_DSS_RFBI_TE_MODE_2) ++ min = 2; ++ else /* OMAP_DSS_RFBI_TE_MODE_1 */ ++ min = 4; ++ if (vs < min) ++ return -EDOM; ++ if (vs == hs) ++ return -EINVAL; ++ rfbi.te_mode = mode; ++ DSSDBG("setup_te: mode %d hs %d vs %d hs_inv %d vs_inv %d\n", ++ mode, hs, vs, hs_pol_inv, vs_pol_inv); ++ ++ rfbi_enable_clocks(1); ++ rfbi_write_reg(RFBI_HSYNC_WIDTH, hs); ++ rfbi_write_reg(RFBI_VSYNC_WIDTH, vs); ++ ++ l = rfbi_read_reg(RFBI_CONFIG(0)); ++ if (hs_pol_inv) ++ l &= ~(1 << 21); ++ else ++ l |= 1 << 21; ++ if (vs_pol_inv) ++ l &= ~(1 << 20); ++ else ++ l |= 1 << 20; ++ rfbi_enable_clocks(0); ++ ++ return 0; ++} ++EXPORT_SYMBOL(omap_rfbi_setup_te); ++ ++/* xxx FIX module selection missing */ ++int omap_rfbi_enable_te(int enable, unsigned line) ++{ ++ u32 l; ++ ++ DSSDBG("te %d line %d mode %d\n", enable, line, rfbi.te_mode); ++ if (line > (1 << 11) - 1) ++ return -EINVAL; ++ ++ rfbi_enable_clocks(1); ++ l = rfbi_read_reg(RFBI_CONFIG(0)); ++ l &= ~(0x3 << 2); ++ if (enable) { ++ rfbi.te_enabled = 1; ++ l |= rfbi.te_mode << 2; ++ } else ++ rfbi.te_enabled = 0; ++ rfbi_write_reg(RFBI_CONFIG(0), l); ++ rfbi_write_reg(RFBI_LINE_NUMBER, line); ++ rfbi_enable_clocks(0); ++ ++ return 0; ++} ++EXPORT_SYMBOL(omap_rfbi_enable_te); ++ ++#if 0 ++static void rfbi_enable_config(int enable1, int enable2) ++{ ++ u32 l; ++ int cs = 0; ++ ++ if (enable1) ++ cs |= 1<<0; ++ if (enable2) ++ cs |= 1<<1; ++ ++ rfbi_enable_clocks(1); ++ ++ l = rfbi_read_reg(RFBI_CONTROL); ++ ++ l = FLD_MOD(l, cs, 3, 2); ++ l = FLD_MOD(l, 0, 1, 1); ++ ++ rfbi_write_reg(RFBI_CONTROL, l); ++ ++ ++ l = rfbi_read_reg(RFBI_CONFIG(0)); ++ l = FLD_MOD(l, 0, 3, 2); /* TRIGGERMODE: ITE */ ++ /*l |= FLD_VAL(2, 8, 7); */ /* L4FORMAT, 2pix/L4 */ ++ /*l |= FLD_VAL(0, 8, 7); */ /* L4FORMAT, 1pix/L4 */ ++ ++ l = FLD_MOD(l, 0, 16, 16); /* A0POLARITY */ ++ l = FLD_MOD(l, 1, 20, 20); /* TE_VSYNC_POLARITY */ ++ l = FLD_MOD(l, 1, 21, 21); /* HSYNCPOLARITY */ ++ ++ l = FLD_MOD(l, OMAP_DSS_RFBI_PARALLELMODE_8, 1, 0); ++ rfbi_write_reg(RFBI_CONFIG(0), l); ++ ++ rfbi_enable_clocks(0); ++} ++#endif ++ ++int rfbi_configure(int rfbi_module, int bpp, int lines) ++{ ++ u32 l; ++ int cycle1 = 0, cycle2 = 0, cycle3 = 0; ++ enum omap_rfbi_cycleformat cycleformat; ++ enum omap_rfbi_datatype datatype; ++ enum omap_rfbi_parallelmode parallelmode; ++ ++ switch (bpp) { ++ case 12: ++ datatype = OMAP_DSS_RFBI_DATATYPE_12; ++ break; ++ case 16: ++ datatype = OMAP_DSS_RFBI_DATATYPE_16; ++ break; ++ case 18: ++ datatype = OMAP_DSS_RFBI_DATATYPE_18; ++ break; ++ case 24: ++ datatype = OMAP_DSS_RFBI_DATATYPE_24; ++ break; ++ default: ++ BUG(); ++ return 1; ++ } ++ rfbi.datatype = datatype; ++ ++ switch (lines) { ++ case 8: ++ parallelmode = OMAP_DSS_RFBI_PARALLELMODE_8; ++ break; ++ case 9: ++ parallelmode = OMAP_DSS_RFBI_PARALLELMODE_9; ++ break; ++ case 12: ++ parallelmode = OMAP_DSS_RFBI_PARALLELMODE_12; ++ break; ++ case 16: ++ parallelmode = OMAP_DSS_RFBI_PARALLELMODE_16; ++ break; ++ default: ++ BUG(); ++ return 1; ++ } ++ rfbi.parallelmode = parallelmode; ++ ++ if ((bpp % lines) == 0) { ++ switch (bpp / lines) { ++ case 1: ++ cycleformat = OMAP_DSS_RFBI_CYCLEFORMAT_1_1; ++ break; ++ case 2: ++ cycleformat = OMAP_DSS_RFBI_CYCLEFORMAT_2_1; ++ break; ++ case 3: ++ cycleformat = OMAP_DSS_RFBI_CYCLEFORMAT_3_1; ++ break; ++ default: ++ BUG(); ++ return 1; ++ } ++ } else if ((2 * bpp % lines) == 0) { ++ if ((2 * bpp / lines) == 3) ++ cycleformat = OMAP_DSS_RFBI_CYCLEFORMAT_3_2; ++ else { ++ BUG(); ++ return 1; ++ } ++ } else { ++ BUG(); ++ return 1; ++ } ++ ++ switch (cycleformat) { ++ case OMAP_DSS_RFBI_CYCLEFORMAT_1_1: ++ cycle1 = lines; ++ break; ++ ++ case OMAP_DSS_RFBI_CYCLEFORMAT_2_1: ++ cycle1 = lines; ++ cycle2 = lines; ++ break; ++ ++ case OMAP_DSS_RFBI_CYCLEFORMAT_3_1: ++ cycle1 = lines; ++ cycle2 = lines; ++ cycle3 = lines; ++ break; ++ ++ case OMAP_DSS_RFBI_CYCLEFORMAT_3_2: ++ cycle1 = lines; ++ cycle2 = (lines / 2) | ((lines / 2) << 16); ++ cycle3 = (lines << 16); ++ break; ++ } ++ ++ rfbi_enable_clocks(1); ++ ++ REG_FLD_MOD(RFBI_CONTROL, 0, 3, 2); /* clear CS */ ++ ++ l = 0; ++ l |= FLD_VAL(parallelmode, 1, 0); ++ l |= FLD_VAL(0, 3, 2); /* TRIGGERMODE: ITE */ ++ l |= FLD_VAL(0, 4, 4); /* TIMEGRANULARITY */ ++ l |= FLD_VAL(datatype, 6, 5); ++ /* l |= FLD_VAL(2, 8, 7); */ /* L4FORMAT, 2pix/L4 */ ++ l |= FLD_VAL(0, 8, 7); /* L4FORMAT, 1pix/L4 */ ++ l |= FLD_VAL(cycleformat, 10, 9); ++ l |= FLD_VAL(0, 12, 11); /* UNUSEDBITS */ ++ l |= FLD_VAL(0, 16, 16); /* A0POLARITY */ ++ l |= FLD_VAL(0, 17, 17); /* REPOLARITY */ ++ l |= FLD_VAL(0, 18, 18); /* WEPOLARITY */ ++ l |= FLD_VAL(0, 19, 19); /* CSPOLARITY */ ++ l |= FLD_VAL(1, 20, 20); /* TE_VSYNC_POLARITY */ ++ l |= FLD_VAL(1, 21, 21); /* HSYNCPOLARITY */ ++ rfbi_write_reg(RFBI_CONFIG(rfbi_module), l); ++ ++ rfbi_write_reg(RFBI_DATA_CYCLE1(rfbi_module), cycle1); ++ rfbi_write_reg(RFBI_DATA_CYCLE2(rfbi_module), cycle2); ++ rfbi_write_reg(RFBI_DATA_CYCLE3(rfbi_module), cycle3); ++ ++ ++ l = rfbi_read_reg(RFBI_CONTROL); ++ l = FLD_MOD(l, rfbi_module+1, 3, 2); /* Select CSx */ ++ l = FLD_MOD(l, 0, 1, 1); /* clear bypass */ ++ rfbi_write_reg(RFBI_CONTROL, l); ++ ++ ++ DSSDBG("RFBI config: bpp %d, lines %d, cycles: 0x%x 0x%x 0x%x\n", ++ bpp, lines, cycle1, cycle2, cycle3); ++ ++ rfbi_enable_clocks(0); ++ ++ return 0; ++} ++ ++static int rfbi_find_display(struct omap_display *disp) ++{ ++ if (disp == rfbi.display[0]) ++ return 0; ++ ++ if (disp == rfbi.display[1]) ++ return 1; ++ ++ BUG(); ++ return -1; ++} ++ ++ ++static void signal_fifo_waiters(void) ++{ ++ if (atomic_read(&rfbi.cmd_fifo_full) > 0) { ++ /* DSSDBG("SIGNALING: Fifo not full for waiter!\n"); */ ++ complete(&rfbi.cmd_done); ++ atomic_dec(&rfbi.cmd_fifo_full); ++ } ++} ++ ++/* returns 1 for async op, and 0 for sync op */ ++static int do_update(struct omap_display *display, struct update_region *upd) ++{ ++ int x = upd->x; ++ int y = upd->y; ++ int w = upd->w; ++ int h = upd->h; ++ ++ if (display->manager->caps & OMAP_DSS_OVL_MGR_CAP_DISPC) { ++ /*display->ctrl->enable_te(display, 1); */ ++ ++ dispc_setup_partial_planes(display, &x, &y, &w, &h); ++ ++ display->ctrl->setup_update(display, x, y, w, h); ++ ++ rfbi_transfer_area(w, h, NULL, NULL); ++ ++ return 1; ++ } else { ++ struct omap_overlay *ovl; ++ void *addr; ++ int scr_width; ++#ifdef MEASURE_PERF ++ ktime_t t1, t2; ++#endif ++ ovl = &display->manager->overlays[0]; ++ scr_width = ovl->info.screen_width; ++ addr = ovl->info.vaddr; ++ ++ display->ctrl->setup_update(display, x, y, w, h); ++ ++#ifdef MEASURE_PERF ++ t1 = ktime_get(); ++#endif ++ omap_rfbi_write_pixels(addr, scr_width, ++ x, y, w, h); ++#ifdef MEASURE_PERF ++ t2 = ktime_get(); ++ t1 = ktime_sub(t2, t1); ++ DSSDBG("L4 FRAMEDONE in %lld ns\n", ++ ktime_to_ns(t1)); ++#endif ++ return 0; ++ } ++} ++ ++static void process_cmd_fifo(void) ++{ ++ int len; ++ struct update_param p; ++ struct omap_display *display; ++ unsigned long flags; ++ ++ if (atomic_inc_return(&rfbi.cmd_pending) != 1) ++ return; ++ ++ while (true) { ++ spin_lock_irqsave(rfbi.cmd_fifo->lock, flags); ++ ++ len = __kfifo_get(rfbi.cmd_fifo, (unsigned char *)&p, ++ sizeof(struct update_param)); ++ if (len == 0) { ++ DSSDBG("nothing more in fifo\n"); ++ atomic_set(&rfbi.cmd_pending, 0); ++ spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); ++ break; ++ } ++ ++ /* DSSDBG("fifo full %d\n", rfbi.cmd_fifo_full.counter);*/ ++ ++ spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); ++ ++ BUG_ON(len != sizeof(struct update_param)); ++ BUG_ON(p.rfbi_module > 1); ++ ++ display = rfbi.display[p.rfbi_module]; ++ ++ if (p.cmd == RFBI_CMD_UPDATE) { ++ if (do_update(display, &p.par.r)) ++ break; /* async op */ ++ } else if (p.cmd == RFBI_CMD_SYNC) { ++ DSSDBG("Signaling SYNC done!\n"); ++ complete(p.par.sync); ++ } else ++ BUG(); ++ } ++ ++ signal_fifo_waiters(); ++} ++ ++static void rfbi_push_cmd(struct update_param *p) ++{ ++ int ret; ++ ++ while (1) { ++ unsigned long flags; ++ int available; ++ ++ spin_lock_irqsave(rfbi.cmd_fifo->lock, flags); ++ available = RFBI_CMD_FIFO_LEN_BYTES - ++ __kfifo_len(rfbi.cmd_fifo); ++ ++/* DSSDBG("%d bytes left in fifo\n", available); */ ++ if (available < sizeof(struct update_param)) { ++ DSSDBG("Going to wait because FIFO FULL..\n"); ++ spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); ++ atomic_inc(&rfbi.cmd_fifo_full); ++ wait_for_completion(&rfbi.cmd_done); ++ /*DSSDBG("Woke up because fifo not full anymore\n");*/ ++ continue; ++ } ++ ++ ret = __kfifo_put(rfbi.cmd_fifo, (unsigned char *)p, ++ sizeof(struct update_param)); ++/* DSSDBG("pushed %d bytes\n", ret);*/ ++ ++ spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); ++ ++ BUG_ON(ret != sizeof(struct update_param)); ++ ++ break; ++ } ++} ++ ++static void rfbi_push_update(int rfbi_module, int x, int y, int w, int h) ++{ ++ struct update_param p; ++ ++ p.rfbi_module = rfbi_module; ++ p.cmd = RFBI_CMD_UPDATE; ++ ++ p.par.r.x = x; ++ p.par.r.y = y; ++ p.par.r.w = w; ++ p.par.r.h = h; ++ ++ DSSDBG("RFBI pushed %d,%d %dx%d\n", x, y, w, h); ++ ++ rfbi_push_cmd(&p); ++ ++ process_cmd_fifo(); ++} ++ ++static void rfbi_push_sync(int rfbi_module, struct completion *sync_comp) ++{ ++ struct update_param p; ++ ++ p.rfbi_module = rfbi_module; ++ p.cmd = RFBI_CMD_SYNC; ++ p.par.sync = sync_comp; ++ ++ rfbi_push_cmd(&p); ++ ++ DSSDBG("RFBI sync pushed to cmd fifo\n"); ++ ++ process_cmd_fifo(); ++} ++ ++int rfbi_init(void) ++{ ++ u32 rev; ++ u32 l; ++ ++ spin_lock_init(&rfbi.cmd_lock); ++ rfbi.cmd_fifo = kfifo_alloc(RFBI_CMD_FIFO_LEN_BYTES, GFP_KERNEL, ++ &rfbi.cmd_lock); ++ if (IS_ERR(rfbi.cmd_fifo)) ++ return -ENOMEM; ++ ++ init_completion(&rfbi.cmd_done); ++ atomic_set(&rfbi.cmd_fifo_full, 0); ++ atomic_set(&rfbi.cmd_pending, 0); ++ ++ rfbi.base = ioremap(RFBI_BASE, SZ_256); ++ if (!rfbi.base) { ++ DSSERR("can't ioremap RFBI\n"); ++ return -ENOMEM; ++ } ++ ++ rfbi.dss_ick = get_dss_ick(); ++ rfbi.dss1_fck = get_dss1_fck(); ++ ++ rfbi_enable_clocks(1); ++ ++ msleep(10); ++ ++ rfbi.l4_khz = clk_get_rate(rfbi.dss_ick) / 1000; ++ ++ /* Enable autoidle and smart-idle */ ++ l = rfbi_read_reg(RFBI_SYSCONFIG); ++ l |= (1 << 0) | (2 << 3); ++ rfbi_write_reg(RFBI_SYSCONFIG, l); ++ ++ rev = rfbi_read_reg(RFBI_REVISION); ++ printk(KERN_INFO "OMAP RFBI rev %d.%d\n", ++ FLD_GET(rev, 7, 4), FLD_GET(rev, 3, 0)); ++ ++ rfbi_enable_clocks(0); ++ ++ return 0; ++} ++ ++void rfbi_exit(void) ++{ ++ DSSDBG("rfbi_exit\n"); ++ ++ kfifo_free(rfbi.cmd_fifo); ++ ++ iounmap(rfbi.base); ++} ++ ++/* struct omap_display support */ ++static void rfbi_display_set_mode(struct omap_display *display, ++ int x_res, int y_res, int bpp) ++{ ++ display->bpp = bpp; ++ ++ dispc_set_tft_data_lines(display->bpp); ++ ++ if (rfbi_configure(display->hw_config.u.rfbi.channel, ++ display->bpp, ++ display->hw_config.u.rfbi.data_lines) != 0) { ++ DSSERR("can't configure rfbi\n"); ++ } ++ ++ display->ctrl->set_mode(display, x_res, y_res, bpp); ++} ++ ++ ++static int rfbi_display_update(struct omap_display *display, ++ int x, int y, int w, int h) ++{ ++ int rfbi_module; ++ ++ if (w == 0 || h == 0) ++ return 0; ++ ++ rfbi_module = rfbi_find_display(display); ++ ++ rfbi_push_update(rfbi_module, x, y, w, h); ++ ++ return 0; ++} ++ ++static int rfbi_display_sync(struct omap_display *display) ++{ ++ struct completion sync_comp; ++ int rfbi_module; ++ ++ rfbi_module = rfbi_find_display(display); ++ ++ init_completion(&sync_comp); ++ rfbi_push_sync(rfbi_module, &sync_comp); ++ DSSDBG("Waiting for SYNC to happen...\n"); ++ wait_for_completion(&sync_comp); ++ DSSDBG("Released from SYNC\n"); ++ return 0; ++} ++ ++static int rfbi_display_enable_te(struct omap_display *display, int enable) ++{ ++ display->ctrl->enable_te(display, enable); ++ return 0; ++} ++ ++static int rfbi_display_enable(struct omap_display *display) ++{ ++ int r; ++ ++ BUG_ON(display->panel == NULL || display->ctrl == NULL); ++ ++ r = omap_dispc_register_isr(framedone_callback, NULL, ++ DISPC_IRQ_FRAMEDONE); ++ if (r) { ++ DSSERR("can't get FRAMEDONE irq\n"); ++ return r; ++ } ++ ++ dispc_set_lcd_display_type(OMAP_DSS_LCD_DISPLAY_TFT); ++ ++ dispc_set_parallel_interface_mode(OMAP_DSS_PARALLELMODE_RFBI); ++ ++ /* FIX select 16bpp as default */ ++ rfbi_configure(display->hw_config.u.rfbi.channel, ++ 16, ++ display->hw_config.u.rfbi.data_lines); ++ ++ rfbi_set_timings(display->hw_config.u.rfbi.channel, ++ &display->ctrl->timings); ++ ++ display->ctrl->enable(display); ++ ++ return 0; ++} ++ ++static void rfbi_display_disable(struct omap_display *display) ++{ ++ display->ctrl->disable(display); ++ omap_dispc_unregister_isr(framedone_callback); ++} ++ ++void rfbi_init_display(struct omap_display *display) ++{ ++ display->enable = rfbi_display_enable; ++ display->disable = rfbi_display_disable; ++ display->set_mode = rfbi_display_set_mode; ++ display->update = rfbi_display_update; ++ display->sync = rfbi_display_sync; ++ display->enable_te = rfbi_display_enable_te; ++ ++ rfbi.display[display->hw_config.u.rfbi.channel] = display; ++ ++ display->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE; ++} +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0006-DSS-TV-out-support-for-OMAP2-3-DSS.patch b/packages/linux/linux-omap/0006-DSS-TV-out-support-for-OMAP2-3-DSS.patch new file mode 100644 index 0000000000..0a28867e98 --- /dev/null +++ b/packages/linux/linux-omap/0006-DSS-TV-out-support-for-OMAP2-3-DSS.patch @@ -0,0 +1,519 @@ +From fc7030b395c21d051de16719751efc75e954c590 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Tue, 4 Nov 2008 16:53:54 +0200 +Subject: [PATCH] DSS: TV-out support for OMAP2/3 DSS + +Signed-off-by: Tomi Valkeinen +--- + arch/arm/plat-omap/dss/venc.c | 499 +++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 499 insertions(+), 0 deletions(-) + create mode 100644 arch/arm/plat-omap/dss/venc.c + +diff --git a/arch/arm/plat-omap/dss/venc.c b/arch/arm/plat-omap/dss/venc.c +new file mode 100644 +index 0000000..a9739ad +--- /dev/null ++++ b/arch/arm/plat-omap/dss/venc.c +@@ -0,0 +1,499 @@ ++/* ++ * linux/arch/arm/plat-omap/dss/venc.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * VENC settings from TI's DSS driver ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#define DSS_SUBSYS_NAME "VENC" ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "dss.h" ++ ++#define VENC_BASE 0x48050C00 ++ ++/* Venc registers */ ++#define VENC_REV_ID 0x00 ++#define VENC_STATUS 0x04 ++#define VENC_F_CONTROL 0x08 ++#define VENC_VIDOUT_CTRL 0x10 ++#define VENC_SYNC_CTRL 0x14 ++#define VENC_LLEN 0x1C ++#define VENC_FLENS 0x20 ++#define VENC_HFLTR_CTRL 0x24 ++#define VENC_CC_CARR_WSS_CARR 0x28 ++#define VENC_C_PHASE 0x2C ++#define VENC_GAIN_U 0x30 ++#define VENC_GAIN_V 0x34 ++#define VENC_GAIN_Y 0x38 ++#define VENC_BLACK_LEVEL 0x3C ++#define VENC_BLANK_LEVEL 0x40 ++#define VENC_X_COLOR 0x44 ++#define VENC_M_CONTROL 0x48 ++#define VENC_BSTAMP_WSS_DATA 0x4C ++#define VENC_S_CARR 0x50 ++#define VENC_LINE21 0x54 ++#define VENC_LN_SEL 0x58 ++#define VENC_L21__WC_CTL 0x5C ++#define VENC_HTRIGGER_VTRIGGER 0x60 ++#define VENC_SAVID__EAVID 0x64 ++#define VENC_FLEN__FAL 0x68 ++#define VENC_LAL__PHASE_RESET 0x6C ++#define VENC_HS_INT_START_STOP_X 0x70 ++#define VENC_HS_EXT_START_STOP_X 0x74 ++#define VENC_VS_INT_START_X 0x78 ++#define VENC_VS_INT_STOP_X__VS_INT_START_Y 0x7C ++#define VENC_VS_INT_STOP_Y__VS_EXT_START_X 0x80 ++#define VENC_VS_EXT_STOP_X__VS_EXT_START_Y 0x84 ++#define VENC_VS_EXT_STOP_Y 0x88 ++#define VENC_AVID_START_STOP_X 0x90 ++#define VENC_AVID_START_STOP_Y 0x94 ++#define VENC_FID_INT_START_X__FID_INT_START_Y 0xA0 ++#define VENC_FID_INT_OFFSET_Y__FID_EXT_START_X 0xA4 ++#define VENC_FID_EXT_START_Y__FID_EXT_OFFSET_Y 0xA8 ++#define VENC_TVDETGP_INT_START_STOP_X 0xB0 ++#define VENC_TVDETGP_INT_START_STOP_Y 0xB4 ++#define VENC_GEN_CTRL 0xB8 ++#define VENC_OUTPUT_CONTROL 0xC4 ++#define VENC_DAC_B__DAC_C 0xC8 ++ ++static DECLARE_MUTEX(venc_lock); ++ ++struct venc_config { ++ u32 f_control; ++ u32 vidout_ctrl; ++ u32 sync_ctrl; ++ u32 llen; ++ u32 flens; ++ u32 hfltr_ctrl; ++ u32 cc_carr_wss_carr; ++ u32 c_phase; ++ u32 gain_u; ++ u32 gain_v; ++ u32 gain_y; ++ u32 black_level; ++ u32 blank_level; ++ u32 x_color; ++ u32 m_control; ++ u32 bstamp_wss_data; ++ u32 s_carr; ++ u32 line21; ++ u32 ln_sel; ++ u32 l21__wc_ctl; ++ u32 htrigger_vtrigger; ++ u32 savid__eavid; ++ u32 flen__fal; ++ u32 lal__phase_reset; ++ u32 hs_int_start_stop_x; ++ u32 hs_ext_start_stop_x; ++ u32 vs_int_start_x; ++ u32 vs_int_stop_x__vs_int_start_y; ++ u32 vs_int_stop_y__vs_ext_start_x; ++ u32 vs_ext_stop_x__vs_ext_start_y; ++ u32 vs_ext_stop_y; ++ u32 avid_start_stop_x; ++ u32 avid_start_stop_y; ++ u32 fid_int_start_x__fid_int_start_y; ++ u32 fid_int_offset_y__fid_ext_start_x; ++ u32 fid_ext_start_y__fid_ext_offset_y; ++ u32 tvdetgp_int_start_stop_x; ++ u32 tvdetgp_int_start_stop_y; ++ u32 gen_ctrl; ++ ++ int width; ++ int height; ++}; ++ ++/* from TRM */ ++static const struct venc_config venc_config_pal_trm = { ++ .f_control = 0, ++ .vidout_ctrl = 1, ++ .sync_ctrl = 0x40, ++ .llen = 0x35F, /* 863 */ ++ .flens = 0x270, /* 624 */ ++ .hfltr_ctrl = 0, ++ .cc_carr_wss_carr = 0x2F7225ED, ++ .c_phase = 0, ++ .gain_u = 0x111, ++ .gain_v = 0x181, ++ .gain_y = 0x140, ++ .black_level = 0x3B, ++ .blank_level = 0x3B, ++ .x_color = 0x7, ++ .m_control = 0x2, ++ .bstamp_wss_data = 0x3F, ++ .s_carr = 0x2A098ACB, ++ .line21 = 0, ++ .ln_sel = 0x01290015, ++ .l21__wc_ctl = 0x0000F603, ++ .htrigger_vtrigger = 0, ++ ++ .savid__eavid = 0x06A70108, ++ .flen__fal = 0x00180270, ++ .lal__phase_reset = 0x00180270, ++ .hs_int_start_stop_x = 0x00880358, ++ .hs_ext_start_stop_x = 0x000F035F, ++ .vs_int_start_x = 0x01A70000, ++ .vs_int_stop_x__vs_int_start_y = 0x000001A7, ++ .vs_int_stop_y__vs_ext_start_x = 0x01AF0000, ++ .vs_ext_stop_x__vs_ext_start_y = 0x000101AF, ++ .vs_ext_stop_y = 0x00000025, ++ .avid_start_stop_x = 0x03530083, ++ .avid_start_stop_y = 0x026C002E, ++ .fid_int_start_x__fid_int_start_y = 0x0001008A, ++ .fid_int_offset_y__fid_ext_start_x = 0x002E0138, ++ .fid_ext_start_y__fid_ext_offset_y = 0x01380001, ++ ++ .tvdetgp_int_start_stop_x = 0x00140001, ++ .tvdetgp_int_start_stop_y = 0x00010001, ++ .gen_ctrl = 0x00FF0000, ++ ++ .width = 720, ++ .height = 574, /* for some reason, this isn't 576 */ ++}; ++ ++/* from TRM */ ++static const struct venc_config venc_config_ntsc_trm = { ++ .f_control = 0, ++ .vidout_ctrl = 1, ++ .sync_ctrl = 0x8040, ++ .llen = 0x359, ++ .flens = 0x20C, ++ .hfltr_ctrl = 0, ++ .cc_carr_wss_carr = 0x043F2631, ++ .c_phase = 0, ++ .gain_u = 0x102, ++ .gain_v = 0x16C, ++ .gain_y = 0x12F, ++ .black_level = 0x43, ++ .blank_level = 0x38, ++ .x_color = 0x7, ++ .m_control = 0x1, ++ .bstamp_wss_data = 0x38, ++ .s_carr = 0x21F07C1F, ++ .line21 = 0, ++ .ln_sel = 0x01310011, ++ .l21__wc_ctl = 0x0000F003, ++ .htrigger_vtrigger = 0, ++ ++ .savid__eavid = 0x069300F4, ++ .flen__fal = 0x0016020C, ++ .lal__phase_reset = 0x00060107, ++ .hs_int_start_stop_x = 0x008E0350, ++ .hs_ext_start_stop_x = 0x000F0359, ++ .vs_int_start_x = 0x01A00000, ++ .vs_int_stop_x__vs_int_start_y = 0x020701A0, ++ .vs_int_stop_y__vs_ext_start_x = 0x01AC0024, ++ .vs_ext_stop_x__vs_ext_start_y = 0x020D01AC, ++ .vs_ext_stop_y = 0x00000006, ++ .avid_start_stop_x = 0x03480078, ++ .avid_start_stop_y = 0x02060024, ++ .fid_int_start_x__fid_int_start_y = 0x0001008A, ++ .fid_int_offset_y__fid_ext_start_x = 0x01AC0106, ++ .fid_ext_start_y__fid_ext_offset_y = 0x01060006, ++ ++ .tvdetgp_int_start_stop_x = 0x00140001, ++ .tvdetgp_int_start_stop_y = 0x00010001, ++ .gen_ctrl = 0x00F90000, ++ ++ .width = 720, ++ .height = 482, ++}; ++ ++static const struct venc_config venc_config_pal_bdghi = { ++ .f_control = 0, ++ .vidout_ctrl = 0, ++ .sync_ctrl = 0, ++ .hfltr_ctrl = 0, ++ .x_color = 0, ++ .line21 = 0, ++ .ln_sel = 21, ++ .htrigger_vtrigger = 0, ++ .tvdetgp_int_start_stop_x = 0x00140001, ++ .tvdetgp_int_start_stop_y = 0x00010001, ++ .gen_ctrl = 0x00FB0000, ++ ++ .llen = 864-1, ++ .flens = 625-1, ++ .cc_carr_wss_carr = 0x2F7625ED, ++ .c_phase = 0xDF, ++ .gain_u = 0x111, ++ .gain_v = 0x181, ++ .gain_y = 0x140, ++ .black_level = 0x3e, ++ .blank_level = 0x3e, ++ .m_control = 0<<2 | 1<<1, ++ .bstamp_wss_data = 0x42, ++ .s_carr = 0x2a098acb, ++ .l21__wc_ctl = 0<<13 | 0x16<<8 | 0<<0, ++ .savid__eavid = 0x06A70108, ++ .flen__fal = 23<<16 | 624<<0, ++ .lal__phase_reset = 2<<17 | 310<<0, ++ .hs_int_start_stop_x = 0x00920358, ++ .hs_ext_start_stop_x = 0x000F035F, ++ .vs_int_start_x = 0x1a7<<16, ++ .vs_int_stop_x__vs_int_start_y = 0x000601A7, ++ .vs_int_stop_y__vs_ext_start_x = 0x01AF0036, ++ .vs_ext_stop_x__vs_ext_start_y = 0x27101af, ++ .vs_ext_stop_y = 0x05, ++ .avid_start_stop_x = 0x03530082, ++ .avid_start_stop_y = 0x0270002E, ++ .fid_int_start_x__fid_int_start_y = 0x0005008A, ++ .fid_int_offset_y__fid_ext_start_x = 0x002E0138, ++ .fid_ext_start_y__fid_ext_offset_y = 0x01380005, ++ ++ .width = 720, ++ .height = 576, ++}; ++ ++static struct { ++ void __iomem *base; ++ struct clk *dss_54m_fck; ++ struct clk *dss_96m_fck; ++ struct clk *dss_ick; ++ struct clk *dss1_fck; ++ const struct venc_config *config; ++} venc; ++ ++static struct omap_panel venc_panel = { ++ .name = "tv-out", ++ .x_res = 0, ++ .y_res = 0, ++ .bpp = 24, ++}; ++ ++static inline void venc_write_reg(int idx, u32 val) ++{ ++ __raw_writel(val, venc.base + idx); ++} ++ ++static inline u32 venc_read_reg(int idx) ++{ ++ u32 l = __raw_readl(venc.base + idx); ++ return l; ++} ++ ++static void venc_write_config(const struct venc_config *config) ++{ ++ DSSDBG("write venc conf\n"); ++ ++ venc_write_reg(VENC_LLEN, config->llen); ++ venc_write_reg(VENC_FLENS, config->flens); ++ venc_write_reg(VENC_CC_CARR_WSS_CARR, config->cc_carr_wss_carr); ++ venc_write_reg(VENC_C_PHASE, config->c_phase); ++ venc_write_reg(VENC_GAIN_U, config->gain_u); ++ venc_write_reg(VENC_GAIN_V, config->gain_v); ++ venc_write_reg(VENC_GAIN_Y, config->gain_y); ++ venc_write_reg(VENC_BLACK_LEVEL, config->black_level); ++ venc_write_reg(VENC_BLANK_LEVEL, config->blank_level); ++ venc_write_reg(VENC_M_CONTROL, config->m_control); ++ venc_write_reg(VENC_BSTAMP_WSS_DATA, config->bstamp_wss_data); ++ venc_write_reg(VENC_S_CARR, config->s_carr); ++ venc_write_reg(VENC_L21__WC_CTL, config->l21__wc_ctl); ++ venc_write_reg(VENC_SAVID__EAVID, config->savid__eavid); ++ venc_write_reg(VENC_FLEN__FAL, config->flen__fal); ++ venc_write_reg(VENC_LAL__PHASE_RESET, config->lal__phase_reset); ++ venc_write_reg(VENC_HS_INT_START_STOP_X, config->hs_int_start_stop_x); ++ venc_write_reg(VENC_HS_EXT_START_STOP_X, config->hs_ext_start_stop_x); ++ venc_write_reg(VENC_VS_INT_START_X, config->vs_int_start_x); ++ venc_write_reg(VENC_VS_INT_STOP_X__VS_INT_START_Y, ++ config->vs_int_stop_x__vs_int_start_y); ++ venc_write_reg(VENC_VS_INT_STOP_Y__VS_EXT_START_X, ++ config->vs_int_stop_y__vs_ext_start_x); ++ venc_write_reg(VENC_VS_EXT_STOP_X__VS_EXT_START_Y, ++ config->vs_ext_stop_x__vs_ext_start_y); ++ venc_write_reg(VENC_VS_EXT_STOP_Y, config->vs_ext_stop_y); ++ venc_write_reg(VENC_AVID_START_STOP_X, config->avid_start_stop_x); ++ venc_write_reg(VENC_AVID_START_STOP_Y, config->avid_start_stop_y); ++ venc_write_reg(VENC_FID_INT_START_X__FID_INT_START_Y, ++ config->fid_int_start_x__fid_int_start_y); ++ venc_write_reg(VENC_FID_INT_OFFSET_Y__FID_EXT_START_X, ++ config->fid_int_offset_y__fid_ext_start_x); ++ venc_write_reg(VENC_FID_EXT_START_Y__FID_EXT_OFFSET_Y, ++ config->fid_ext_start_y__fid_ext_offset_y); ++ ++ venc_write_reg(VENC_DAC_B__DAC_C, venc_read_reg(VENC_DAC_B__DAC_C)); ++ venc_write_reg(VENC_VIDOUT_CTRL, config->vidout_ctrl); ++ venc_write_reg(VENC_HFLTR_CTRL, config->hfltr_ctrl); ++ venc_write_reg(VENC_X_COLOR, config->x_color); ++ venc_write_reg(VENC_LINE21, config->line21); ++ venc_write_reg(VENC_LN_SEL, config->ln_sel); ++ venc_write_reg(VENC_HTRIGGER_VTRIGGER, config->htrigger_vtrigger); ++ venc_write_reg(VENC_TVDETGP_INT_START_STOP_X, ++ config->tvdetgp_int_start_stop_x); ++ venc_write_reg(VENC_TVDETGP_INT_START_STOP_Y, ++ config->tvdetgp_int_start_stop_y); ++ venc_write_reg(VENC_GEN_CTRL, config->gen_ctrl); ++ venc_write_reg(VENC_F_CONTROL, config->f_control); ++ venc_write_reg(VENC_SYNC_CTRL, config->sync_ctrl); ++} ++ ++static void venc_reset(void) ++{ ++ int t = 1000; ++ ++ venc_write_reg(VENC_F_CONTROL, venc_read_reg(VENC_F_CONTROL) | (1<<8)); ++ while (venc_read_reg(VENC_F_CONTROL) & (1<<8)) { ++ if (--t == 0) { ++ DSSERR("Failed to reset venc\n"); ++ return; ++ } ++ } ++} ++ ++static void venc_enable_clocks(int enable) ++{ ++ if (enable) { ++ clk_enable(venc.dss_ick); ++ clk_enable(venc.dss1_fck); ++ clk_enable(venc.dss_54m_fck); ++ clk_enable(venc.dss_96m_fck); ++ } else { ++ clk_disable(venc.dss_96m_fck); ++ clk_disable(venc.dss_54m_fck); ++ clk_disable(venc.dss1_fck); ++ clk_disable(venc.dss_ick); ++ } ++} ++ ++int venc_init(void) ++{ ++ u8 rev_id; ++ int use_pal = 1; /* XXX */ ++ ++ if (use_pal) ++ venc.config = &venc_config_pal_trm; ++ else ++ venc.config = &venc_config_ntsc_trm; ++ ++ venc_panel.x_res = venc.config->width; ++ venc_panel.y_res = venc.config->height; ++ ++ venc.base = ioremap(VENC_BASE, SZ_1K); ++ if (!venc.base) { ++ DSSERR("can't ioremap VENC\n"); ++ return -ENOMEM; ++ } ++ ++ venc.dss_ick = get_dss_ick(); ++ venc.dss1_fck = get_dss1_fck(); ++ venc.dss_54m_fck = get_tv_fck(); ++ venc.dss_96m_fck = get_96m_fck(); ++ ++ /* enable clocks */ ++ venc_enable_clocks(1); ++ ++ /* configure venc */ ++ venc_reset(); ++ venc_write_config(venc.config); ++ ++ rev_id = (u8)(venc_read_reg(VENC_REV_ID) & 0xff); ++ printk(KERN_INFO "OMAP VENC rev %d\n", rev_id); ++ ++ venc_enable_clocks(0); ++ ++ return 0; ++} ++ ++void venc_exit(void) ++{ ++ iounmap(venc.base); ++} ++ ++static int venc_enable_display(struct omap_display *display) ++{ ++ DSSDBG("venc_enable_display\n"); ++ ++ down(&venc_lock); ++ ++ if (display->state != OMAP_DSS_DISPLAY_DISABLED) { ++ up(&venc_lock); ++ return -EINVAL; ++ } ++ ++ venc_enable_clocks(1); ++ ++ dss_set_venc_output(display->hw_config.u.venc.type); ++ dss_set_dac_pwrdn_bgz(1); ++ ++ venc_write_config(venc.config); ++ ++ if (display->hw_config.u.venc.type == OMAP_DSS_VENC_TYPE_COMPOSITE) { ++ if (cpu_is_omap24xx()) ++ venc_write_reg(VENC_OUTPUT_CONTROL, 0x2); ++ else ++ venc_write_reg(VENC_OUTPUT_CONTROL, 0xa); ++ } else { /* S-Video */ ++ venc_write_reg(VENC_OUTPUT_CONTROL, 0xd); ++ } ++ ++ dispc_set_digit_size(venc.config->width, venc.config->height/2); ++ ++ if (display->hw_config.panel_enable) ++ display->hw_config.panel_enable(display); ++ ++ dispc_enable_digit_out(1); ++ ++ display->state = OMAP_DSS_DISPLAY_ACTIVE; ++ ++ up(&venc_lock); ++ ++ return 0; ++} ++ ++static void venc_disable_display(struct omap_display *display) ++{ ++ DSSDBG("venc_disable_display\n"); ++ ++ down(&venc_lock); ++ ++ if (display->state == OMAP_DSS_DISPLAY_DISABLED) { ++ up(&venc_lock); ++ return; ++ } ++ ++ venc_write_reg(VENC_OUTPUT_CONTROL, 0); ++ dss_set_dac_pwrdn_bgz(0); ++ ++ dispc_enable_digit_out(0); ++ ++ if (display->hw_config.panel_disable) ++ display->hw_config.panel_disable(display); ++ ++ venc_enable_clocks(0); ++ ++ display->state = OMAP_DSS_DISPLAY_DISABLED; ++ ++ up(&venc_lock); ++} ++ ++void venc_init_display(struct omap_display *display) ++{ ++ display->panel = &venc_panel; ++ display->enable = venc_enable_display; ++ display->disable = venc_disable_display; ++} +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0007-DSS-DSI-support-for-OMAP2-3-DSS.patch b/packages/linux/linux-omap/0007-DSS-DSI-support-for-OMAP2-3-DSS.patch new file mode 100644 index 0000000000..e1c92b289a --- /dev/null +++ b/packages/linux/linux-omap/0007-DSS-DSI-support-for-OMAP2-3-DSS.patch @@ -0,0 +1,3047 @@ +From 421c7dc28a0b9b2ee0c8514045a8ee1af7b002de Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Tue, 4 Nov 2008 15:18:25 +0200 +Subject: [PATCH] DSS: DSI support for OMAP2/3 DSS + +Signed-off-by: Tomi Valkeinen +--- + arch/arm/plat-omap/dss/dsi.c | 3027 ++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 3027 insertions(+), 0 deletions(-) + create mode 100644 arch/arm/plat-omap/dss/dsi.c + +diff --git a/arch/arm/plat-omap/dss/dsi.c b/arch/arm/plat-omap/dss/dsi.c +new file mode 100644 +index 0000000..47e5628 +--- /dev/null ++++ b/arch/arm/plat-omap/dss/dsi.c +@@ -0,0 +1,3027 @@ ++/* ++ * linux/arch/arm/plat-omap/dss/dsi.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#define DSS_SUBSYS_NAME "DSI" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "dss.h" ++ ++/*#define VERBOSE*/ ++/*#define VERBOSE_IRQ*/ ++/*#define MEASURE_PERF*/ ++ ++#define DSI_BASE 0x4804FC00 ++ ++struct dsi_reg { u16 idx; }; ++ ++#define DSI_REG(idx) ((const struct dsi_reg) { idx }) ++ ++/* DSI Protocol Engine */ ++ ++#define DSI_REVISION DSI_REG(0x0000) ++#define DSI_SYSCONFIG DSI_REG(0x0010) ++#define DSI_SYSSTATUS DSI_REG(0x0014) ++#define DSI_IRQSTATUS DSI_REG(0x0018) ++#define DSI_IRQENABLE DSI_REG(0x001C) ++#define DSI_CTRL DSI_REG(0x0040) ++#define DSI_COMPLEXIO_CFG1 DSI_REG(0x0048) ++#define DSI_COMPLEXIO_IRQ_STATUS DSI_REG(0x004C) ++#define DSI_COMPLEXIO_IRQ_ENABLE DSI_REG(0x0050) ++#define DSI_CLK_CTRL DSI_REG(0x0054) ++#define DSI_TIMING1 DSI_REG(0x0058) ++#define DSI_TIMING2 DSI_REG(0x005C) ++#define DSI_VM_TIMING1 DSI_REG(0x0060) ++#define DSI_VM_TIMING2 DSI_REG(0x0064) ++#define DSI_VM_TIMING3 DSI_REG(0x0068) ++#define DSI_CLK_TIMING DSI_REG(0x006C) ++#define DSI_TX_FIFO_VC_SIZE DSI_REG(0x0070) ++#define DSI_RX_FIFO_VC_SIZE DSI_REG(0x0074) ++#define DSI_COMPLEXIO_CFG2 DSI_REG(0x0078) ++#define DSI_RX_FIFO_VC_FULLNESS DSI_REG(0x007C) ++#define DSI_VM_TIMING4 DSI_REG(0x0080) ++#define DSI_TX_FIFO_VC_EMPTINESS DSI_REG(0x0084) ++#define DSI_VM_TIMING5 DSI_REG(0x0088) ++#define DSI_VM_TIMING6 DSI_REG(0x008C) ++#define DSI_VM_TIMING7 DSI_REG(0x0090) ++#define DSI_STOPCLK_TIMING DSI_REG(0x0094) ++#define DSI_VC_CTRL(n) DSI_REG(0x0100 + (n * 0x20)) ++#define DSI_VC_TE(n) DSI_REG(0x0104 + (n * 0x20)) ++#define DSI_VC_LONG_PACKET_HEADER(n) DSI_REG(0x0108 + (n * 0x20)) ++#define DSI_VC_LONG_PACKET_PAYLOAD(n) DSI_REG(0x010C + (n * 0x20)) ++#define DSI_VC_SHORT_PACKET_HEADER(n) DSI_REG(0x0110 + (n * 0x20)) ++#define DSI_VC_IRQSTATUS(n) DSI_REG(0x0118 + (n * 0x20)) ++#define DSI_VC_IRQENABLE(n) DSI_REG(0x011C + (n * 0x20)) ++ ++/* DSIPHY_SCP */ ++ ++#define DSIPHY_CFG0 DSI_REG(0x200 + 0x0000) ++#define DSIPHY_CFG1 DSI_REG(0x200 + 0x0004) ++#define DSIPHY_CFG2 DSI_REG(0x200 + 0x0008) ++#define DSIPHY_CFG5 DSI_REG(0x200 + 0x0014) ++ ++/* DSI_PLL_CTRL_SCP */ ++ ++#define DSI_PLL_CONTROL DSI_REG(0x300 + 0x0000) ++#define DSI_PLL_STATUS DSI_REG(0x300 + 0x0004) ++#define DSI_PLL_GO DSI_REG(0x300 + 0x0008) ++#define DSI_PLL_CONFIGURATION1 DSI_REG(0x300 + 0x000C) ++#define DSI_PLL_CONFIGURATION2 DSI_REG(0x300 + 0x0010) ++ ++#define REG_GET(idx, start, end) \ ++ FLD_GET(dsi_read_reg(idx), start, end) ++ ++#define REG_FLD_MOD(idx, val, start, end) \ ++ dsi_write_reg(idx, FLD_MOD(dsi_read_reg(idx), val, start, end)) ++ ++/* Global interrupts */ ++#define DSI_IRQ_VC0 (1 << 0) ++#define DSI_IRQ_VC1 (1 << 1) ++#define DSI_IRQ_VC2 (1 << 2) ++#define DSI_IRQ_VC3 (1 << 3) ++#define DSI_IRQ_WAKEUP (1 << 4) ++#define DSI_IRQ_RESYNC (1 << 5) ++#define DSI_IRQ_PLL_LOCK (1 << 7) ++#define DSI_IRQ_PLL_UNLOCK (1 << 8) ++#define DSI_IRQ_PLL_RECALL (1 << 9) ++#define DSI_IRQ_COMPLEXIO_ERR (1 << 10) ++#define DSI_IRQ_HS_TX_TIMEOUT (1 << 14) ++#define DSI_IRQ_LP_RX_TIMEOUT (1 << 15) ++#define DSI_IRQ_TE_TRIGGER (1 << 16) ++#define DSI_IRQ_ACK_TRIGGER (1 << 17) ++#define DSI_IRQ_SYNC_LOST (1 << 18) ++#define DSI_IRQ_LDO_POWER_GOOD (1 << 19) ++#define DSI_IRQ_TA_TIMEOUT (1 << 20) ++#define DSI_IRQ_ERROR_MASK \ ++ (DSI_IRQ_HS_TX_TIMEOUT | DSI_IRQ_LP_RX_TIMEOUT | DSI_IRQ_SYNC_LOST | \ ++ DSI_IRQ_TA_TIMEOUT) ++#define DSI_IRQ_CHANNEL_MASK 0xf ++ ++/* Virtual channel interrupts */ ++#define DSI_VC_IRQ_CS (1 << 0) ++#define DSI_VC_IRQ_ECC_CORR (1 << 1) ++#define DSI_VC_IRQ_PACKET_SENT (1 << 2) ++#define DSI_VC_IRQ_FIFO_TX_OVF (1 << 3) ++#define DSI_VC_IRQ_FIFO_RX_OVF (1 << 4) ++#define DSI_VC_IRQ_BTA (1 << 5) ++#define DSI_VC_IRQ_ECC_NO_CORR (1 << 6) ++#define DSI_VC_IRQ_FIFO_TX_UDF (1 << 7) ++#define DSI_VC_IRQ_PP_BUSY_CHANGE (1 << 8) ++#define DSI_VC_IRQ_ERROR_MASK \ ++ (DSI_VC_IRQ_CS | DSI_VC_IRQ_ECC_CORR | DSI_VC_IRQ_FIFO_TX_OVF | \ ++ DSI_VC_IRQ_FIFO_RX_OVF | DSI_VC_IRQ_ECC_NO_CORR | \ ++ DSI_VC_IRQ_FIFO_TX_UDF) ++ ++/* ComplexIO interrupts */ ++#define DSI_CIO_IRQ_ERRSYNCESC1 (1 << 0) ++#define DSI_CIO_IRQ_ERRSYNCESC2 (1 << 1) ++#define DSI_CIO_IRQ_ERRSYNCESC3 (1 << 2) ++#define DSI_CIO_IRQ_ERRESC1 (1 << 5) ++#define DSI_CIO_IRQ_ERRESC2 (1 << 6) ++#define DSI_CIO_IRQ_ERRESC3 (1 << 7) ++#define DSI_CIO_IRQ_ERRCONTROL1 (1 << 10) ++#define DSI_CIO_IRQ_ERRCONTROL2 (1 << 11) ++#define DSI_CIO_IRQ_ERRCONTROL3 (1 << 12) ++#define DSI_CIO_IRQ_STATEULPS1 (1 << 15) ++#define DSI_CIO_IRQ_STATEULPS2 (1 << 16) ++#define DSI_CIO_IRQ_STATEULPS3 (1 << 17) ++#define DSI_CIO_IRQ_ERRCONTENTIONLP0_1 (1 << 20) ++#define DSI_CIO_IRQ_ERRCONTENTIONLP1_1 (1 << 21) ++#define DSI_CIO_IRQ_ERRCONTENTIONLP0_2 (1 << 22) ++#define DSI_CIO_IRQ_ERRCONTENTIONLP1_2 (1 << 23) ++#define DSI_CIO_IRQ_ERRCONTENTIONLP0_3 (1 << 24) ++#define DSI_CIO_IRQ_ERRCONTENTIONLP1_3 (1 << 25) ++#define DSI_CIO_IRQ_ULPSACTIVENOT_ALL0 (1 << 30) ++#define DSI_CIO_IRQ_ULPSACTIVENOT_ALL1 (1 << 31) ++ ++#define DSI_DT_DCS_SHORT_WRITE_0 0x05 ++#define DSI_DT_DCS_SHORT_WRITE_1 0x15 ++#define DSI_DT_DCS_READ 0x06 ++#define DSI_DT_SET_MAX_RET_PKG_SIZE 0x37 ++#define DSI_DT_NULL_PACKET 0x09 ++#define DSI_DT_DCS_LONG_WRITE 0x39 ++ ++#define DSI_DT_RX_ACK_WITH_ERR 0x02 ++#define DSI_DT_RX_DCS_LONG_READ 0x1c ++#define DSI_DT_RX_SHORT_READ_1 0x21 ++#define DSI_DT_RX_SHORT_READ_2 0x22 ++ ++#define FINT_MAX 2100000 ++#define FINT_MIN 750000 ++#define REGN_MAX (1 << 7) ++#define REGM_MAX ((1 << 11) - 1) ++#define REGM3_MAX (1 << 4) ++#define REGM4_MAX (1 << 4) ++ ++enum fifo_size { ++ DSI_FIFO_SIZE_0 = 0, ++ DSI_FIFO_SIZE_32 = 1, ++ DSI_FIFO_SIZE_64 = 2, ++ DSI_FIFO_SIZE_96 = 3, ++ DSI_FIFO_SIZE_128 = 4, ++}; ++ ++static struct ++{ ++ void __iomem *base; ++ ++ struct clk *dss_ick; ++ struct clk *dss1_fck; ++ struct clk *dss2_fck; ++ ++ unsigned long dsi1_pll_fclk; /* Hz */ ++ unsigned long dsi2_pll_fclk; /* Hz */ ++ unsigned long dsiphy; /* Hz */ ++ unsigned long ddr_clk; /* Hz */ ++ ++ struct { ++ enum fifo_size fifo_size; ++ int dest_per; /* destination peripheral 0-3 */ ++ } vc[4]; ++ ++ struct mutex lock; ++ ++ struct completion bta_completion; ++ ++ spinlock_t update_lock; ++ int update_ongoing; ++ int update_syncers; ++ struct completion update_completion; ++ struct work_struct framedone_work; ++ ++ enum omap_dss_update_mode update_mode; ++ int use_te; ++ int framedone_scheduled; /* helps to catch strange framedone bugs */ ++ ++ struct { ++ struct omap_display *display; ++ int x, y, w, h; ++ int bytespp; ++ } update_region; ++ ++#ifdef MEASURE_PERF ++ ktime_t measure_time; ++ int measure_frames; ++#endif ++} dsi; ++ ++ ++static inline void dsi_write_reg(const struct dsi_reg idx, u32 val) ++{ ++ __raw_writel(val, dsi.base + idx.idx); ++} ++ ++static inline u32 dsi_read_reg(const struct dsi_reg idx) ++{ ++ return __raw_readl(dsi.base + idx.idx); ++} ++ ++static inline int wait_for_bit_change(const struct dsi_reg idx, int bitnum, ++ int value) ++{ ++ int t = 1000; ++ ++ while (REG_GET(idx, bitnum, bitnum) != value) { ++ if (--t == 0) ++ return !value; ++ } ++ ++ return value; ++} ++ ++ ++#ifdef MEASURE_PERF ++static void start_measuring(void) ++{ ++ dsi.measure_time = ktime_get(); ++} ++ ++static void end_measuring(const char *name) ++{ ++ ktime_t t; ++ u32 total_bytes; ++ u32 us; ++ const int numframes = 100; ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_DISABLED) ++ return; ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) { ++ dsi.measure_frames++; ++ if (dsi.measure_frames < numframes) ++ return; ++ dsi.measure_frames = 0; ++ } ++ ++ t = ktime_get(); ++ t = ktime_sub(t, dsi.measure_time); ++ us = (u32)ktime_to_us(t); ++ if (us == 0) ++ us = 1; ++ ++ total_bytes = dsi.update_region.w * ++ dsi.update_region.h * ++ dsi.update_region.bytespp; ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) { ++ DSSINFO("%s update: %d frames in %u us, %u frames/sec\n", ++ name, numframes, ++ us, ++ 1000*1000 / us); ++ } else { ++ DSSINFO("%s update in %u us (%u Hz), %u bytes, %u kbytes/sec\n", ++ name, ++ us, ++ 1000*1000 / us, ++ total_bytes, ++ total_bytes * 1000 / us); ++ } ++} ++#else ++#define start_measuring() ++#define end_measuring(x) ++#endif ++ ++ ++ ++ ++static void print_irq_status(u32 status) ++{ ++#ifndef VERBOSE_IRQ ++ if ((status & ~DSI_IRQ_CHANNEL_MASK) == 0) ++ return; ++#endif ++ printk(KERN_DEBUG "DSI IRQ: 0x%x: ", status); ++ ++#define PIS(x) \ ++ if (status & DSI_IRQ_##x) \ ++ printk(#x " "); ++#ifdef VERBOSE_IRQ ++ PIS(VC0); ++ PIS(VC1); ++ PIS(VC2); ++ PIS(VC3); ++#endif ++ PIS(WAKEUP); ++ PIS(RESYNC); ++ PIS(PLL_LOCK); ++ PIS(PLL_UNLOCK); ++ PIS(PLL_RECALL); ++ PIS(COMPLEXIO_ERR); ++ PIS(HS_TX_TIMEOUT); ++ PIS(LP_RX_TIMEOUT); ++ PIS(TE_TRIGGER); ++ PIS(ACK_TRIGGER); ++ PIS(SYNC_LOST); ++ PIS(LDO_POWER_GOOD); ++ PIS(TA_TIMEOUT); ++#undef PIS ++ ++ printk("\n"); ++} ++ ++static void print_irq_status_vc(int channel, u32 status) ++{ ++#ifndef VERBOSE_IRQ ++ if ((status & ~DSI_VC_IRQ_PACKET_SENT) == 0) ++ return; ++#endif ++ printk(KERN_DEBUG "DSI VC(%d) IRQ 0x%x: ", channel, status); ++ ++#define PIS(x) \ ++ if (status & DSI_VC_IRQ_##x) \ ++ printk(#x " "); ++ PIS(CS); ++ PIS(ECC_CORR); ++#ifdef VERBOSE_IRQ ++ PIS(PACKET_SENT); ++#endif ++ PIS(FIFO_TX_OVF); ++ PIS(FIFO_RX_OVF); ++ PIS(BTA); ++ PIS(ECC_NO_CORR); ++ PIS(FIFO_TX_UDF); ++ PIS(PP_BUSY_CHANGE); ++#undef PIS ++ printk("\n"); ++} ++ ++static void print_irq_status_cio(u32 status) ++{ ++ printk(KERN_DEBUG "DSI CIO IRQ 0x%x: ", status); ++ ++#define PIS(x) \ ++ if (status & DSI_CIO_IRQ_##x) \ ++ printk(#x " "); ++ PIS(ERRSYNCESC1); ++ PIS(ERRSYNCESC2); ++ PIS(ERRSYNCESC3); ++ PIS(ERRESC1); ++ PIS(ERRESC2); ++ PIS(ERRESC3); ++ PIS(ERRCONTROL1); ++ PIS(ERRCONTROL2); ++ PIS(ERRCONTROL3); ++ PIS(STATEULPS1); ++ PIS(STATEULPS2); ++ PIS(STATEULPS3); ++ PIS(ERRCONTENTIONLP0_1); ++ PIS(ERRCONTENTIONLP1_1); ++ PIS(ERRCONTENTIONLP0_2); ++ PIS(ERRCONTENTIONLP1_2); ++ PIS(ERRCONTENTIONLP0_3); ++ PIS(ERRCONTENTIONLP1_3); ++ PIS(ULPSACTIVENOT_ALL0); ++ PIS(ULPSACTIVENOT_ALL1); ++#undef PIS ++ ++ printk("\n"); ++} ++ ++static int debug_irq; ++ ++/* called from dss */ ++void dsi_irq_handler(void) ++{ ++ u32 irqstatus, vcstatus, ciostatus; ++ int i; ++ ++ irqstatus = dsi_read_reg(DSI_IRQSTATUS); ++ ++ if (irqstatus & DSI_IRQ_ERROR_MASK) { ++ DSSERR("DSI error, irqstatus %x\n", irqstatus); ++ print_irq_status(irqstatus); ++ } else if (debug_irq) { ++ print_irq_status(irqstatus); ++ } ++ ++ for (i = 0; i < 4; ++i) { ++ if ((irqstatus & (1< 30*1000*1000) ++ REG_FLD_MOD(DSI_CLK_CTRL, 1, 21, 21); /* LP_RX_SYNCHRO_ENABLE */ ++ ++ return 0; ++} ++ ++ ++enum dsi_pll_power_state { ++ DSI_PLL_POWER_OFF = 0x0, ++ DSI_PLL_POWER_ON_HSCLK = 0x1, ++ DSI_PLL_POWER_ON_ALL = 0x2, ++ DSI_PLL_POWER_ON_DIV = 0x3, ++}; ++ ++static int dsi_pll_power(enum dsi_pll_power_state state) ++{ ++ int t = 0; ++ ++ REG_FLD_MOD(DSI_CLK_CTRL, state, 31, 30); /* PLL_PWR_CMD */ ++ ++ /* PLL_PWR_STATUS */ ++ while (FLD_GET(dsi_read_reg(DSI_CLK_CTRL), 29, 28) != state) { ++ udelay(1); ++ if (t++ > 1000) { ++ DSSERR("DSI: Failed to set DSI PLL power mode to %d\n", ++ state); ++ return -ENODEV; ++ } ++ } ++ ++ return 0; ++} ++ ++/* return 1 for exact match */ ++static int iterate_dispc_divs(int is_tft, unsigned long pck, ++ struct dsi_clock_info *cur, struct dsi_clock_info *best) ++{ ++ int pcd_min = is_tft ? 2 : 3; ++ ++ for (cur->lck_div = 1; cur->lck_div <= 255; ++cur->lck_div) { ++ unsigned long lck = cur->dispc_fck / cur->lck_div; ++ ++ for (cur->pck_div = pcd_min; cur->pck_div <= 255; ++ ++cur->pck_div) { ++ ++ cur->pck = lck / cur->pck_div; ++ ++ if (abs(cur->pck - pck) < abs(best->pck - pck)) { ++ *best = *cur; ++ /* ++ DSSDBG("best match fck %ld, pck %ld, regn %d, " ++ "regm %d, regm3 %d, ld %d, pd %d\n", ++ best->dispc_fck, ++ best->pck, ++ best->regn, best->regm, ++ best->regm3, ++ best->lck_div, best->pck_div); ++ */ ++ } ++ ++ if (cur->pck == pck) ++ return 1; ++ ++ if (cur->pck < pck) ++ break; ++ } ++ ++ if (lck / pcd_min < cur->pck) ++ break; ++ } ++ ++ return 0; ++} ++ ++int dsi_pll_calc_pck(int is_tft, unsigned long pck, ++ struct dsi_clock_info *cinfo) ++{ ++ struct dsi_clock_info cur, best; ++ ++ DSSDBG("dsi_pll_calc\n"); ++ ++ memset(&best, 0, sizeof(best)); ++ ++ memset(&cur, 0, sizeof(cur)); ++ cur.clkin = clk_get_rate(dsi.dss2_fck); ++ cur.use_dss2_fck = 1; ++ cur.highfreq = 0; ++ ++ /* no highfreq: 0.75MHz < Fint = clkin / regn < 2.1MHz */ ++ /* highfreq: 0.75MHz < Fint = clkin / (2*regn) < 2.1MHz */ ++ /* To reduce PLL lock time, keep Fint high (around 2 MHz) */ ++ for (cur.regn = 1; cur.regn < REGN_MAX; ++cur.regn) { ++ if (cur.highfreq == 0) ++ cur.fint = cur.clkin / cur.regn; ++ else ++ cur.fint = cur.clkin / (2 * cur.regn); ++ ++ if (cur.fint > FINT_MAX || cur.fint < FINT_MIN) ++ continue; ++ ++ /* DSIPHY(MHz) = (2 * regm / regn) * (clkin / (highfreq + 1)) */ ++ for (cur.regm = 1; cur.regm < REGM_MAX; ++cur.regm) { ++ unsigned long a, b; ++ ++ a = 2 * cur.regm * (cur.clkin/1000); ++ b = cur.regn * (cur.highfreq + 1); ++ cur.dsiphy = a / b * 1000; ++ ++ if (cur.dsiphy > 1800 * 1000 * 1000) ++ break; ++ ++ /* DSI1_PLL_FCLK(MHz) = DSIPHY(MHz) / regm3 < 173MHz */ ++ for (cur.regm3 = 1; cur.regm3 < REGM3_MAX; ++ ++cur.regm3) { ++ int r; ++ ++ cur.dispc_fck = cur.dsiphy / cur.regm3; ++ ++ /* this will narrow down the search a bit, ++ * but still give pixclocks below what was ++ * requested */ ++ if (cur.dispc_fck < pck) ++ break; ++ ++ if (cur.dispc_fck > DISPC_MAX_FCK) ++ continue; ++ ++#ifdef CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK ++ if (cur.dispc_fck < ++ pck * CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK) ++ continue; ++#endif ++ r = iterate_dispc_divs(is_tft, pck, ++ &cur, &best); ++ if (r == 1) ++ goto found; ++ ++ } ++ } ++ } ++found: ++ ++ /* DSI2_PLL_FCLK(MHz) = DSIPHY(MHz) / regm4 < 173MHz */ ++ /* hardcoded 48MHz for now. what should it be? */ ++ best.regm4 = best.dsiphy / (48000000); ++ if (best.regm4 > REGM4_MAX) ++ best.regm4 = REGM4_MAX; ++ best.dsi_fck = best.dsiphy / best.regm4; ++ ++ *cinfo = best; ++ ++ return 0; ++} ++ ++static int dsi_pll_calc_datafreq(unsigned long datafreq, ++ struct dsi_clock_info *cinfo) ++{ ++ struct dsi_clock_info cur, best; ++ const int use_dss2_fck = 1; ++ ++ DSSDBG("dsi_pll_calc_datarate\n"); ++ ++ memset(&best, 0, sizeof(best)); ++ ++ memset(&cur, 0, sizeof(cur)); ++ cur.use_dss2_fck = use_dss2_fck; ++ if (use_dss2_fck) { ++ cur.clkin = clk_get_rate(dsi.dss2_fck); ++ cur.highfreq = 0; ++ } else { ++ cur.clkin = dispc_pclk_rate(); ++ if (cur.clkin < 32000000) ++ cur.highfreq = 0; ++ else ++ cur.highfreq = 1; ++ } ++ ++ /* no highfreq: 0.75MHz < Fint = clkin / regn < 2.1MHz */ ++ /* highfreq: 0.75MHz < Fint = clkin / (2*regn) < 2.1MHz */ ++ /* To reduce PLL lock time, keep Fint high (around 2 MHz) */ ++ for (cur.regn = 1; cur.regn < REGN_MAX; ++cur.regn) { ++ if (cur.highfreq == 0) ++ cur.fint = cur.clkin / cur.regn; ++ else ++ cur.fint = cur.clkin / (2 * cur.regn); ++ ++ if (cur.fint > FINT_MAX || cur.fint < FINT_MIN) ++ continue; ++ ++ /* DSIPHY(MHz) = (2 * regm / regn) * (clkin / (highfreq + 1)) */ ++ for (cur.regm = 1; cur.regm < REGM_MAX; ++cur.regm) { ++ unsigned long a, b; ++ ++ a = 2 * cur.regm * (cur.clkin/1000); ++ b = cur.regn * (cur.highfreq + 1); ++ cur.dsiphy = a / b * 1000; ++ ++ if (cur.dsiphy > 1800 * 1000 * 1000) ++ break; ++ ++ if (abs(cur.dsiphy - datafreq) < ++ abs(best.dsiphy - datafreq)) { ++ best = cur; ++ /* DSSDBG("best %ld\n", best.dsiphy); */ ++ } ++ ++ if (cur.dsiphy == datafreq) ++ goto found; ++ } ++ } ++found: ++ /* DSI1_PLL_FCLK(MHz) = DSIPHY(MHz) / regm3 < 173MHz */ ++ /* hardcoded 48MHz for now. what should it be? */ ++ best.regm3 = best.dsiphy / (48000000); ++ if (best.regm3 > REGM3_MAX) ++ best.regm3 = REGM3_MAX; ++ best.dispc_fck = best.dsiphy / best.regm3; ++ ++ /* DSI2_PLL_FCLK(MHz) = DSIPHY(MHz) / regm4 < 173MHz */ ++ /* hardcoded 48MHz for now. what should it be? */ ++ best.regm4 = best.dsiphy / (48000000); ++ if (best.regm4 > REGM4_MAX) ++ best.regm4 = REGM4_MAX; ++ best.dsi_fck = best.dsiphy / best.regm4; ++ ++ *cinfo = best; ++ ++ return 0; ++} ++ ++int dsi_pll_program(struct dsi_clock_info *cinfo) ++{ ++ int r = 0; ++ u32 l; ++ ++ DSSDBG("dsi_pll_program\n"); ++ ++ enable_clocks(1); ++ ++ dsi.dsiphy = cinfo->dsiphy; ++ dsi.ddr_clk = dsi.dsiphy / 4; ++ dsi.dsi1_pll_fclk = cinfo->dispc_fck; ++ dsi.dsi2_pll_fclk = cinfo->dsi_fck; ++ ++ DSSDBG("DSI Fint %ld\n", cinfo->fint); ++ ++ DSSDBG("clkin (%s) rate %ld, highfreq %d\n", ++ cinfo->use_dss2_fck ? "dss2_fck" : "pclkfree", ++ cinfo->clkin, ++ cinfo->highfreq); ++ ++ /* DSIPHY == CLKIN4DDR */ ++ DSSDBG("DSIPHY = 2 * %d / %d * %lu / %d = %lu\n", ++ cinfo->regm, ++ cinfo->regn, ++ cinfo->clkin, ++ cinfo->highfreq + 1, ++ cinfo->dsiphy); ++ ++ DSSDBG("Data rate on 1 DSI lane %ld Mbps\n", ++ dsi.dsiphy / 1000 / 1000 / 2); ++ ++ DSSDBG("Clock lane freq %ld Hz\n", dsi.ddr_clk); ++ ++ DSSDBG("regm3 = %d, dsi1_pll_fclk = %lu\n", ++ cinfo->regm3, cinfo->dispc_fck); ++ DSSDBG("regm4 = %d, dsi2_pll_fclk = %lu\n", ++ cinfo->regm4, cinfo->dsi_fck); ++ ++ REG_FLD_MOD(DSI_PLL_CONTROL, 0, 0, 0); /* DSI_PLL_AUTOMODE = manual */ ++ ++ l = dsi_read_reg(DSI_PLL_CONFIGURATION1); ++ l = FLD_MOD(l, 1, 0, 0); /* DSI_PLL_STOPMODE */ ++ l = FLD_MOD(l, cinfo->regn - 1, 7, 1); /* DSI_PLL_REGN */ ++ l = FLD_MOD(l, cinfo->regm, 18, 8); /* DSI_PLL_REGM */ ++ l = FLD_MOD(l, cinfo->regm3 - 1, 22, 19); /* DSI_CLOCK_DIV */ ++ l = FLD_MOD(l, cinfo->regm4 - 1, 26, 23); /* DSIPROTO_CLOCK_DIV */ ++ dsi_write_reg(DSI_PLL_CONFIGURATION1, l); ++ ++ l = dsi_read_reg(DSI_PLL_CONFIGURATION2); ++ l = FLD_MOD(l, 7, 4, 1); /* DSI_PLL_FREQSEL */ ++ /* DSI_PLL_CLKSEL */ ++ l = FLD_MOD(l, cinfo->use_dss2_fck ? 0 : 1, 11, 11); ++ l = FLD_MOD(l, cinfo->highfreq, 12, 12); /* DSI_PLL_HIGHFREQ */ ++ l = FLD_MOD(l, 1, 13, 13); /* DSI_PLL_REFEN */ ++ l = FLD_MOD(l, 0, 14, 14); /* DSIPHY_CLKINEN */ ++ l = FLD_MOD(l, 1, 20, 20); /* DSI_HSDIVBYPASS */ ++ dsi_write_reg(DSI_PLL_CONFIGURATION2, l); ++ ++ REG_FLD_MOD(DSI_PLL_GO, 1, 0, 0); /* DSI_PLL_GO */ ++ ++ if (wait_for_bit_change(DSI_PLL_GO, 0, 0) != 0) { ++ DSSERR("dsi pll go bit not going down.\n"); ++ r = -EIO; ++ goto err; ++ } ++ ++ if (wait_for_bit_change(DSI_PLL_STATUS, 1, 1) != 1) { ++ DSSERR("DSI: cannot lock PLL\n"); ++ r = -EIO; ++ goto err; ++ } ++ ++ l = dsi_read_reg(DSI_PLL_CONFIGURATION2); ++ l = FLD_MOD(l, 0, 0, 0); /* DSI_PLL_IDLE */ ++ l = FLD_MOD(l, 0, 5, 5); /* DSI_PLL_PLLLPMODE */ ++ l = FLD_MOD(l, 0, 6, 6); /* DSI_PLL_LOWCURRSTBY */ ++ l = FLD_MOD(l, 0, 7, 7); /* DSI_PLL_TIGHTPHASELOCK */ ++ l = FLD_MOD(l, 0, 8, 8); /* DSI_PLL_DRIFTGUARDEN */ ++ l = FLD_MOD(l, 0, 10, 9); /* DSI_PLL_LOCKSEL */ ++ l = FLD_MOD(l, 1, 13, 13); /* DSI_PLL_REFEN */ ++ l = FLD_MOD(l, 1, 14, 14); /* DSIPHY_CLKINEN */ ++ l = FLD_MOD(l, 0, 15, 15); /* DSI_BYPASSEN */ ++ l = FLD_MOD(l, 1, 16, 16); /* DSS_CLOCK_EN */ ++ l = FLD_MOD(l, 0, 17, 17); /* DSS_CLOCK_PWDN */ ++ l = FLD_MOD(l, 1, 18, 18); /* DSI_PROTO_CLOCK_EN */ ++ l = FLD_MOD(l, 0, 19, 19); /* DSI_PROTO_CLOCK_PWDN */ ++ l = FLD_MOD(l, 0, 20, 20); /* DSI_HSDIVBYPASS */ ++ dsi_write_reg(DSI_PLL_CONFIGURATION2, l); ++ ++ DSSDBG("PLL config done\n"); ++err: ++ enable_clocks(0); ++ ++ return r; ++} ++ ++int dsi_pll_init(int enable_hsclk, int enable_hsdiv) ++{ ++ int r = 0; ++ int fck_div, lck_div, pck_div; ++ unsigned long fck; ++ enum dsi_pll_power_state pwstate; ++ ++ DSSDBG("PLL init\n"); ++ ++ enable_clocks(1); ++ dsi_enable_pll_clock(1); ++ ++ /* configure dispc fck and pixel clock to something sane */ ++ fck = dispc_calc_clock_div(1, 48 * 1000 * 1000, ++ &fck_div, &lck_div, &pck_div); ++ if (fck == 0) ++ return -EINVAL; ++ ++ dispc_set_clock_div(fck_div, lck_div, pck_div); ++ ++ /* PLL does not come out of reset without this... */ ++ dispc_pck_free_enable(1); ++ ++ if (wait_for_bit_change(DSI_PLL_STATUS, 0, 1) != 1) { ++ DSSERR("DSI: PLL not coming out of reset.\n"); ++ r = -ENODEV; ++ goto err; ++ } ++ ++ /* ... but if left on, we get problems when planes do not ++ * fill the whole display. No idea about this XXX */ ++ dispc_pck_free_enable(0); ++ ++ if (enable_hsclk && enable_hsdiv) ++ pwstate = DSI_PLL_POWER_ON_ALL; ++ else if (enable_hsclk) ++ pwstate = DSI_PLL_POWER_ON_HSCLK; ++ else if (enable_hsdiv) ++ pwstate = DSI_PLL_POWER_ON_DIV; ++ else ++ pwstate = DSI_PLL_POWER_OFF; ++ ++ r = dsi_pll_power(pwstate); ++ ++ if (r) ++ goto err; ++ ++ enable_clocks(0); ++ ++ DSSDBG("PLL init done\n"); ++ ++ return 0; ++err: ++ enable_clocks(0); ++ dsi_enable_pll_clock(0); ++ return r; ++} ++ ++void dsi_pll_uninit(void) ++{ ++ dsi_pll_power(DSI_PLL_POWER_OFF); ++ dsi_enable_pll_clock(0); ++ DSSDBG("PLL uninit done\n"); ++} ++ ++unsigned long dsi_get_dsi1_pll_rate(void) ++{ ++ return dsi.dsi1_pll_fclk; ++} ++ ++unsigned long dsi_get_dsi2_pll_rate(void) ++{ ++ return dsi.dsi2_pll_fclk; ++} ++ ++ssize_t dsi_print_clocks(char *buf, ssize_t size) ++{ ++ ssize_t l = 0; ++ int clksel; ++ ++ enable_clocks(1); ++ ++ clksel = REG_GET(DSI_PLL_CONFIGURATION2, 11, 11); ++ ++ l += snprintf(buf + l, size - l, "- dsi -\n"); ++ ++ l += snprintf(buf + l, size - l, "dsi fclk source = %s\n", ++ dss_get_dsi_clk_source() == 0 ? ++ "dss1_alwon_fclk" : "dsi2_pll_fclk"); ++ ++ l += snprintf(buf + l, size - l, "dsi pll source = %s\n", ++ clksel == 0 ? ++ "dss2_alwon_fclk" : "pclkfree"); ++ ++ l += snprintf(buf + l, size - l, ++ "DSIPHY\t\t%lu\nDDR_CLK\t\t%lu\n", ++ dsi.dsiphy, dsi.ddr_clk); ++ ++ l += snprintf(buf + l, size - l, ++ "dsi1_pll_fck\t%lu (%s)\n" ++ "dsi2_pll_fck\t%lu (%s)\n", ++ dsi.dsi1_pll_fclk, ++ dss_get_dispc_clk_source() == 0 ? "off" : "on", ++ dsi.dsi2_pll_fclk, ++ dss_get_dsi_clk_source() == 0 ? "off" : "on"); ++ ++ enable_clocks(0); ++ ++ return l; ++} ++ ++ ++enum dsi_complexio_power_state { ++ DSI_COMPLEXIO_POWER_OFF = 0x0, ++ DSI_COMPLEXIO_POWER_ON = 0x1, ++ DSI_COMPLEXIO_POWER_ULPS = 0x2, ++}; ++ ++static int dsi_complexio_power(enum dsi_complexio_power_state state) ++{ ++ int t = 0; ++ ++ /* PWR_CMD */ ++ REG_FLD_MOD(DSI_COMPLEXIO_CFG1, state, 28, 27); ++ ++ /* PWR_STATUS */ ++ while (FLD_GET(dsi_read_reg(DSI_COMPLEXIO_CFG1), 26, 25) != state) { ++ udelay(1); ++ if (t++ > 1000) { ++ DSSERR("DSI: failed to set complexio power state to " ++ "%d\n", state); ++ return -ENODEV; ++ } ++ } ++ ++ return 0; ++} ++ ++static void dsi_complexio_config(struct omap_display *display) ++{ ++ u32 r; ++ ++ int clk_lane = display->hw_config.u.dsi.clk_lane; ++ int data1_lane = display->hw_config.u.dsi.data1_lane; ++ int data2_lane = display->hw_config.u.dsi.data2_lane; ++ int clk_pol = display->hw_config.u.dsi.clk_pol; ++ int data1_pol = display->hw_config.u.dsi.data1_pol; ++ int data2_pol = display->hw_config.u.dsi.data2_pol; ++ ++ r = dsi_read_reg(DSI_COMPLEXIO_CFG1); ++ r = FLD_MOD(r, clk_lane, 2, 0); ++ r = FLD_MOD(r, clk_pol, 3, 3); ++ r = FLD_MOD(r, data1_lane, 6, 4); ++ r = FLD_MOD(r, data1_pol, 7, 7); ++ r = FLD_MOD(r, data2_lane, 10, 8); ++ r = FLD_MOD(r, data2_pol, 11, 11); ++ dsi_write_reg(DSI_COMPLEXIO_CFG1, r); ++ ++ /* The configuration of the DSI complex I/O (number of data lanes, ++ position, differential order) should not be changed while ++ DSS.DSI_CLK_CRTRL[20] LP_CLK_ENABLE bit is set to 1. In order for ++ the hardware to take into account a new configuration of the complex ++ I/O (done in DSS.DSI_COMPLEXIO_CFG1 register), it is recommended to ++ follow this sequence: First set the DSS.DSI_CTRL[0] IF_EN bit to 1, ++ then reset the DSS.DSI_CTRL[0] IF_EN to 0, then set ++ DSS.DSI_CLK_CTRL[20] LP_CLK_ENABLE to 1 and finally set again the ++ DSS.DSI_CTRL[0] IF_EN bit to 1. If the sequence is not followed, the ++ DSI complex I/O configuration is unknown. */ ++ ++ /* ++ REG_FLD_MOD(DSI_CTRL, 1, 0, 0); ++ REG_FLD_MOD(DSI_CTRL, 0, 0, 0); ++ REG_FLD_MOD(DSI_CLK_CTRL, 1, 20, 20); ++ REG_FLD_MOD(DSI_CTRL, 1, 0, 0); ++ */ ++} ++ ++static inline int ns2ddr(int ns) ++{ ++ /* convert time in ns to ddr ticks, rounding up */ ++ return (ns * (dsi.ddr_clk/1000/1000) + 999) / 1000; ++} ++ ++static void dsi_complexio_timings(void) ++{ ++ u32 r; ++ u32 ths_prepare, ths_prepare_ths_zero, ths_trail, ths_exit; ++ u32 tlpx_half, tclk_trail, tclk_zero; ++ u32 tclk_prepare; ++ ++ /* calculate timings */ ++ ++ /* 1 * DDR_CLK = 2 * UI */ ++ ++ /* min 40ns + 4*UI max 85ns + 6*UI */ ++ ths_prepare = ns2ddr(59) + 2; ++ ++ /* min 145ns + 10*UI */ ++ ths_prepare_ths_zero = ns2ddr(145) + 5; ++ ++ /* min max(8*UI, 60ns+4*UI) */ ++ ths_trail = max(4, ns2ddr(60) + 2); ++ ++ /* min 100ns */ ++ ths_exit = ns2ddr(100); ++ ++ /* tlpx min 50n */ ++ tlpx_half = ns2ddr(25); ++ ++ /* min 60ns */ ++ tclk_trail = ns2ddr(60); ++ ++ /* min 38ns, max 95ns */ ++ tclk_prepare = ns2ddr(38); ++ ++ /* min tclk-prepare + tclk-zero = 300ns */ ++ tclk_zero = ns2ddr(300 - 38); ++ ++#ifdef VERBOSE ++ DSSDBG("ths_prepare %d, ths_prepare_ths_zero %d\n", ++ ths_prepare, ths_prepare_ths_zero); ++ DSSDBG("ths_trail %d, ths_exit %d\n", ths_trail, ths_exit); ++ ++ ++ DSSDBG("tlpx_half %d, tclk_trail %d, tclk_zero %d\n", tlpx_half, ++ tclk_trail, tclk_zero); ++ DSSDBG("tclk_prepare %d\n", tclk_prepare); ++#endif ++ ++ /* program timings */ ++ ++ r = dsi_read_reg(DSIPHY_CFG0); ++ r = FLD_MOD(r, ths_prepare, 31, 24); ++ r = FLD_MOD(r, ths_prepare_ths_zero, 23, 16); ++ r = FLD_MOD(r, ths_trail, 15, 8); ++ r = FLD_MOD(r, ths_exit, 7, 0); ++ dsi_write_reg(DSIPHY_CFG0, r); ++ ++ r = dsi_read_reg(DSIPHY_CFG1); ++ r = FLD_MOD(r, tlpx_half, 22, 16); ++ r = FLD_MOD(r, tclk_trail, 15, 8); ++ r = FLD_MOD(r, tclk_zero, 7, 0); ++ dsi_write_reg(DSIPHY_CFG1, r); ++ ++ r = dsi_read_reg(DSIPHY_CFG2); ++ r = FLD_MOD(r, tclk_prepare, 7, 0); ++ dsi_write_reg(DSIPHY_CFG2, r); ++} ++ ++ ++static int dsi_complexio_init(struct omap_display *display) ++{ ++ int r = 0; ++ ++ DSSDBG("dsi_complexio_init\n"); ++ ++ /* CIO_CLK_ICG, enable L3 clk to CIO */ ++ REG_FLD_MOD(DSI_CLK_CTRL, 1, 14, 14); ++ ++ if (wait_for_bit_change(DSIPHY_CFG5, 30, 1) != 1) { ++ DSSERR("DSI: ComplexIO PHY not coming out of reset.\n"); ++ r = -ENODEV; ++ goto err; ++ } ++ ++ dsi_complexio_config(display); ++ ++ r = dsi_complexio_power(DSI_COMPLEXIO_POWER_ON); ++ ++ if (r) ++ goto err; ++ ++ if (wait_for_bit_change(DSI_COMPLEXIO_CFG1, 29, 1) != 1) { ++ DSSERR("DSI: ComplexIO not coming out of reset.\n"); ++ r = -ENODEV; ++ goto err; ++ } ++ ++ if (wait_for_bit_change(DSI_COMPLEXIO_CFG1, 21, 1) != 1) { ++ DSSERR("DSI: ComplexIO LDO power down.\n"); ++ r = -ENODEV; ++ goto err; ++ } ++ ++ dsi_complexio_timings(); ++ ++ /* ++ The configuration of the DSI complex I/O (number of data lanes, ++ position, differential order) should not be changed while ++ DSS.DSI_CLK_CRTRL[20] LP_CLK_ENABLE bit is set to 1. For the ++ hardware to recognize a new configuration of the complex I/O (done ++ in DSS.DSI_COMPLEXIO_CFG1 register), it is recommended to follow ++ this sequence: First set the DSS.DSI_CTRL[0] IF_EN bit to 1, next ++ reset the DSS.DSI_CTRL[0] IF_EN to 0, then set DSS.DSI_CLK_CTRL[20] ++ LP_CLK_ENABLE to 1, and finally, set again the DSS.DSI_CTRL[0] IF_EN ++ bit to 1. If the sequence is not followed, the DSi complex I/O ++ configuration is undetermined. ++ */ ++ dsi_if_enable(1); ++ dsi_if_enable(0); ++ REG_FLD_MOD(DSI_CLK_CTRL, 1, 20, 20); /* LP_CLK_ENABLE */ ++ dsi_if_enable(1); ++ dsi_if_enable(0); ++ ++ DSSDBG("CIO init done\n"); ++err: ++ return r; ++} ++ ++static void dsi_complexio_uninit(void) ++{ ++ dsi_complexio_power(DSI_COMPLEXIO_POWER_OFF); ++} ++ ++ ++ ++static void dsi_config_tx_fifo(enum fifo_size size1, enum fifo_size size2, ++ enum fifo_size size3, enum fifo_size size4) ++{ ++ u32 r = 0; ++ int add = 0; ++ int i; ++ ++ dsi.vc[0].fifo_size = size1; ++ dsi.vc[1].fifo_size = size2; ++ dsi.vc[2].fifo_size = size3; ++ dsi.vc[3].fifo_size = size4; ++ ++ for (i = 0; i < 4; i++) { ++ u8 v; ++ int size = dsi.vc[i].fifo_size; ++ ++ if (add + size > 4) { ++ DSSERR("DSI: Illegal FIFO configuration\n"); ++ BUG(); ++ } ++ ++ v = FLD_VAL(add, 2, 0) | FLD_VAL(size, 7, 4); ++ r |= v << (8 * i); ++ /*DSSDBG("TX FIFO vc %d: size %d, add %d\n", i, size, add); */ ++ add += size; ++ } ++ ++ dsi_write_reg(DSI_TX_FIFO_VC_SIZE, r); ++} ++ ++static void dsi_config_rx_fifo(enum fifo_size size1, enum fifo_size size2, ++ enum fifo_size size3, enum fifo_size size4) ++{ ++ u32 r = 0; ++ int add = 0; ++ int i; ++ ++ dsi.vc[0].fifo_size = size1; ++ dsi.vc[1].fifo_size = size2; ++ dsi.vc[2].fifo_size = size3; ++ dsi.vc[3].fifo_size = size4; ++ ++ for (i = 0; i < 4; i++) { ++ u8 v; ++ int size = dsi.vc[i].fifo_size; ++ ++ if (add + size > 4) { ++ DSSERR("DSI: Illegal FIFO configuration\n"); ++ BUG(); ++ } ++ ++ v = FLD_VAL(add, 2, 0) | FLD_VAL(size, 7, 4); ++ r |= v << (8 * i); ++ /*DSSDBG("RX FIFO vc %d: size %d, add %d\n", i, size, add); */ ++ add += size; ++ } ++ ++ dsi_write_reg(DSI_RX_FIFO_VC_SIZE, r); ++} ++ ++static int dsi_force_tx_stop_mode_io(void) ++{ ++ u32 r; ++ ++ r = dsi_read_reg(DSI_TIMING1); ++ r = FLD_MOD(r, 1, 15, 15); /* FORCE_TX_STOP_MODE_IO */ ++ dsi_write_reg(DSI_TIMING1, r); ++ ++ if (wait_for_bit_change(DSI_TIMING1, 15, 0) != 0) { ++ DSSERR("TX_STOP bit not going down\n"); ++ return -EIO; ++ } ++ ++ return 0; ++} ++ ++static void dsi_vc_print_status(int channel) ++{ ++ u32 r; ++ ++ r = dsi_read_reg(DSI_VC_CTRL(channel)); ++ DSSDBG("vc %d: TX_FIFO_NOT_EMPTY %d, BTA_EN %d, VC_BUSY %d, " ++ "TX_FIFO_FULL %d, RX_FIFO_NOT_EMPTY %d, ", ++ channel, ++ FLD_GET(r, 5, 5), ++ FLD_GET(r, 6, 6), ++ FLD_GET(r, 15, 15), ++ FLD_GET(r, 16, 16), ++ FLD_GET(r, 20, 20)); ++ ++ r = dsi_read_reg(DSI_TX_FIFO_VC_EMPTINESS); ++ DSSDBG("EMPTINESS %d\n", (r >> (8 * channel)) & 0xff); ++} ++ ++static void dsi_vc_config(int channel) ++{ ++ u32 r; ++ ++ DSSDBG("dsi_vc_config %d\n", channel); ++ ++ r = dsi_read_reg(DSI_VC_CTRL(channel)); ++ ++ r = FLD_MOD(r, 0, 1, 1); /* SOURCE, 0 = L4 */ ++ r = FLD_MOD(r, 0, 2, 2); /* BTA_SHORT_EN */ ++ r = FLD_MOD(r, 0, 3, 3); /* BTA_LONG_EN */ ++ r = FLD_MOD(r, 0, 4, 4); /* MODE, 0 = command */ ++ r = FLD_MOD(r, 1, 7, 7); /* CS_TX_EN */ ++ r = FLD_MOD(r, 1, 8, 8); /* ECC_TX_EN */ ++ r = FLD_MOD(r, 0, 9, 9); /* MODE_SPEED, high speed on/off */ ++ ++ r = FLD_MOD(r, 4, 29, 27); /* DMA_RX_REQ_NB = no dma */ ++ r = FLD_MOD(r, 4, 23, 21); /* DMA_TX_REQ_NB = no dma */ ++ ++ dsi_write_reg(DSI_VC_CTRL(channel), r); ++} ++ ++static void dsi_vc_config_vp(int channel) ++{ ++ u32 r; ++ ++ DSSDBG("dsi_vc_config_vp\n"); ++ ++ r = dsi_read_reg(DSI_VC_CTRL(channel)); ++ ++ r = FLD_MOD(r, 1, 1, 1); /* SOURCE, 1 = video port */ ++ r = FLD_MOD(r, 0, 2, 2); /* BTA_SHORT_EN */ ++ r = FLD_MOD(r, 0, 3, 3); /* BTA_LONG_EN */ ++ r = FLD_MOD(r, 0, 4, 4); /* MODE, 0 = command */ ++ r = FLD_MOD(r, 1, 7, 7); /* CS_TX_EN */ ++ r = FLD_MOD(r, 1, 8, 8); /* ECC_TX_EN */ ++ r = FLD_MOD(r, 1, 9, 9); /* MODE_SPEED, high speed on/off */ ++ ++ r = FLD_MOD(r, 4, 29, 27); /* DMA_RX_REQ_NB = no dma */ ++ r = FLD_MOD(r, 4, 23, 21); /* DMA_TX_REQ_NB = no dma */ ++ ++ dsi_write_reg(DSI_VC_CTRL(channel), r); ++} ++ ++ ++static int dsi_vc_enable(int channel, int enable) ++{ ++ DSSDBG("dsi_vc_enable channel %d, enable %d\n", channel, enable); ++ ++ enable = enable ? 1 : 0; ++ ++ REG_FLD_MOD(DSI_VC_CTRL(channel), enable, 0, 0); ++ ++ if (wait_for_bit_change(DSI_VC_CTRL(channel), 0, enable) != enable) { ++ DSSERR("Failed to set dsi_vc_enable to %d\n", enable); ++ return -EIO; ++ } ++ ++ return 0; ++} ++ ++static void dsi_vc_enable_hs(int channel, int enable) ++{ ++ DSSDBG("dsi_vc_enable_hs(%d, %d)\n", channel, enable); ++ ++ dsi_vc_enable(channel, 0); ++ dsi_if_enable(0); ++ ++ REG_FLD_MOD(DSI_VC_CTRL(channel), enable, 9, 9); ++ ++ dsi_vc_enable(channel, 1); ++ dsi_if_enable(1); ++ ++ dsi_force_tx_stop_mode_io(); ++} ++ ++static void dsi_vc_flush_long_data(int channel) ++{ ++ while (REG_GET(DSI_VC_CTRL(channel), 20, 20)) { ++ u32 val; ++ val = dsi_read_reg(DSI_VC_SHORT_PACKET_HEADER(channel)); ++ DSSDBG("\t\tb1 %#02x b2 %#02x b3 %#02x b4 %#02x\n", ++ (val >> 0) & 0xff, ++ (val >> 8) & 0xff, ++ (val >> 16) & 0xff, ++ (val >> 24) & 0xff); ++ } ++} ++ ++static u16 dsi_vc_flush_receive_data(int channel) ++{ ++ /* RX_FIFO_NOT_EMPTY */ ++ while (REG_GET(DSI_VC_CTRL(channel), 20, 20)) { ++ u32 val; ++ u8 dt; ++ val = dsi_read_reg(DSI_VC_SHORT_PACKET_HEADER(channel)); ++ DSSDBG("\trawval %#08x\n", val); ++ dt = FLD_GET(val, 7, 0); ++ if (dt == DSI_DT_RX_ACK_WITH_ERR) { ++ u16 err = FLD_GET(val, 23, 8); ++ DSSERR("\tACK with ERROR: %#x\n", err); ++ if (err & (1 << 9)) ++ DSSERR("\t\tECC multibit\n"); ++ if (err & (1 << 11)) ++ DSSERR("\t\tData type not recognized\n"); ++ if (err & (1 << 12)) ++ DSSERR("\t\tInvalid VC ID\n"); ++ ++ } else if (dt == DSI_DT_RX_SHORT_READ_1) { ++ DSSDBG("\tDCS short response, 1 byte: %#x\n", ++ FLD_GET(val, 23, 8)); ++ return FLD_GET(val, 23, 8); ++ } else if (dt == DSI_DT_RX_SHORT_READ_2) { ++ DSSDBG("\tDCS short response, 2 byte: %#x\n", ++ FLD_GET(val, 23, 8)); ++ return FLD_GET(val, 23, 8); ++ } else if (dt == DSI_DT_RX_DCS_LONG_READ) { ++ DSSDBG("\tDCS long response, len %d\n", ++ FLD_GET(val, 23, 8)); ++ dsi_vc_flush_long_data(channel); ++ } else { ++ DSSERR("\tunknown datatype\n"); ++ } ++ } ++ return 0; ++} ++ ++static int dsi_vc_send_bta(int channel) ++{ ++ unsigned long tmo; ++ ++ /*DSSDBG("dsi_vc_send_bta_sync %d\n", channel); */ ++ ++ if (REG_GET(DSI_VC_CTRL(channel), 20, 20)) { /* RX_FIFO_NOT_EMPTY */ ++ DSSERR("rx fifo not empty when sending BTA, dumping data:\n"); ++ dsi_vc_flush_receive_data(channel); ++ } ++ ++ REG_FLD_MOD(DSI_VC_CTRL(channel), 1, 6, 6); /* BTA_EN */ ++ ++ tmo = jiffies + msecs_to_jiffies(10); ++ while (REG_GET(DSI_VC_CTRL(channel), 6, 6) == 1) { ++ if (time_after(jiffies, tmo)) { ++ DSSERR("Failed to send BTA\n"); ++ return -EIO; ++ } ++ } ++ ++ return 0; ++} ++ ++static int dsi_vc_send_bta_sync(int channel) ++{ ++ int r = 0; ++ ++ init_completion(&dsi.bta_completion); ++ ++ dsi_vc_enable_bta_irq(channel); ++ ++ r = dsi_vc_send_bta(channel); ++ if (r) ++ goto err; ++ ++ if (wait_for_completion_timeout(&dsi.bta_completion, ++ msecs_to_jiffies(500)) == 0) { ++ DSSERR("Failed to receive BTA\n"); ++ r = -EIO; ++ goto err; ++ } ++err: ++ dsi_vc_disable_bta_irq(channel); ++ ++ return r; ++} ++ ++static inline void dsi_vc_write_long_header(int channel, u8 data_type, ++ u16 len, u8 ecc) ++{ ++ u32 val; ++ u8 data_id; ++ ++ /*data_id = data_type | channel << 6; */ ++ data_id = data_type | dsi.vc[channel].dest_per << 6; ++ ++ val = FLD_VAL(data_id, 7, 0) | FLD_VAL(len, 23, 8) | ++ FLD_VAL(ecc, 31, 24); ++ ++ dsi_write_reg(DSI_VC_LONG_PACKET_HEADER(channel), val); ++} ++ ++static inline void dsi_vc_write_long_payload(int channel, ++ u8 b1, u8 b2, u8 b3, u8 b4) ++{ ++ u32 val; ++ ++ val = b4 << 24 | b3 << 16 | b2 << 8 | b1 << 0; ++ ++/* DSSDBG("\twriting %02x, %02x, %02x, %02x (%#010x)\n", ++ b1, b2, b3, b4, val); */ ++ ++ dsi_write_reg(DSI_VC_LONG_PACKET_PAYLOAD(channel), val); ++} ++ ++static int dsi_vc_send_long(int channel, u8 data_type, u8 *data, u16 len, ++ u8 ecc) ++{ ++ /*u32 val; */ ++ int i; ++ u8 *p; ++ int r = 0; ++ u8 b1, b2, b3, b4; ++ ++ /*DSSDBG("dsi_vc_send_long, %d bytes\n", len); */ ++ ++ /* len + header */ ++ if (dsi.vc[channel].fifo_size * 32 * 4 < len + 4) { ++ DSSERR("DSI: unable to send long packet: packet too long.\n"); ++ return -EINVAL; ++ } ++ ++ dsi_vc_write_long_header(channel, data_type, len, ecc); ++ ++ /*dsi_vc_print_status(0); */ ++ ++ p = data; ++ for (i = 0; i < len >> 2; i++) { ++ /*DSSDBG("\tsending full packet %d\n", i); */ ++ /*dsi_vc_print_status(0); */ ++ ++ b1 = *p++; ++ b2 = *p++; ++ b3 = *p++; ++ b4 = *p++; ++ ++ dsi_vc_write_long_payload(channel, b1, b2, b3, b4); ++ } ++ ++ i = len % 4; ++ if (i) { ++ b1 = 0; b2 = 0; b3 = 0; ++ ++ /*DSSDBG("\tsending remainder bytes %d\n", i); */ ++ ++ switch (i) { ++ case 3: ++ b1 = *p++; ++ b2 = *p++; ++ b3 = *p++; ++ break; ++ case 2: ++ b1 = *p++; ++ b2 = *p++; ++ break; ++ case 1: ++ b1 = *p++; ++ break; ++ } ++ ++ dsi_vc_write_long_payload(channel, b1, b2, b3, 0); ++ } ++ ++ return r; ++} ++ ++static int dsi_vc_send_short(int channel, u8 data_type, u16 data, u8 ecc) ++{ ++ u32 r; ++ u8 data_id; ++/* ++ DSSDBG("dsi_vc_send_short(ch%d, dt %#x, b1 %#x, b2 %#x)\n", ++ channel, ++ data_type, data & 0xff, (data >> 8) & 0xff); ++*/ ++ if (FLD_GET(dsi_read_reg(DSI_VC_CTRL(channel)), 16, 16)) { ++ DSSERR("ERROR FIFO FULL, aborting transfer\n"); ++ return -EINVAL; ++ } ++ ++ data_id = data_type | channel << 6; ++ ++ r = (data_id << 0) | (data << 8) | (ecc << 24); ++ ++ dsi_write_reg(DSI_VC_SHORT_PACKET_HEADER(channel), r); ++ ++ return 0; ++} ++ ++int dsi_vc_send_null(int channel) ++{ ++ u8 nullpkg[] = {0, 0, 0, 0}; ++ return dsi_vc_send_long(0, DSI_DT_NULL_PACKET, nullpkg, 4, 0); ++} ++EXPORT_SYMBOL(dsi_vc_send_null); ++ ++int dsi_vc_dcs_write_nosync(int channel, u8 *data, int len) ++{ ++ int r; ++ ++ BUG_ON(len == 0); ++ ++ if (len == 1) { ++ r = dsi_vc_send_short(channel, DSI_DT_DCS_SHORT_WRITE_0, ++ data[0], 0); ++ } else if (len == 2) { ++ r = dsi_vc_send_short(channel, DSI_DT_DCS_SHORT_WRITE_1, ++ data[0] | (data[1] << 8), 0); ++ } else { ++ /* 0x39 = DCS Long Write */ ++ r = dsi_vc_send_long(channel, DSI_DT_DCS_LONG_WRITE, ++ data, len, 0); ++ } ++ ++ return r; ++} ++EXPORT_SYMBOL(dsi_vc_dcs_write_nosync); ++ ++int dsi_vc_dcs_write(int channel, u8 *data, int len) ++{ ++ int r; ++ ++ r = dsi_vc_dcs_write_nosync(channel, data, len); ++ if (r) ++ return r; ++ ++ /* Some devices need time to process the msg in low power mode. ++ This also makes the write synchronous, and checks that ++ the peripheral is still alive */ ++ r = dsi_vc_send_bta_sync(channel); ++ ++ return r; ++} ++EXPORT_SYMBOL(dsi_vc_dcs_write); ++ ++int dsi_vc_dcs_read(int channel, u8 dcs_cmd, u8 *buf, int buflen) ++{ ++ u32 val; ++ u8 dt; ++ int debug = 0; ++ ++ if (debug) ++ DSSDBG("dsi_vc_dcs_read\n"); ++ ++ dsi_vc_send_short(channel, DSI_DT_DCS_READ, dcs_cmd, 0); ++ ++ dsi_vc_send_bta_sync(channel); ++ ++ val = dsi_read_reg(DSI_VC_SHORT_PACKET_HEADER(channel)); ++ if (debug) ++ DSSDBG("\trawval %#08x\n", val); ++ dt = FLD_GET(val, 7, 0); ++ if (dt == DSI_DT_RX_ACK_WITH_ERR) { ++ u16 err = FLD_GET(val, 23, 8); ++ DSSERR("\tACK with ERROR: %#x\n", err); ++ if (err & (1 << 9)) ++ DSSERR("\t\tECC multibit\n"); ++ if (err & (1 << 11)) ++ DSSERR("\t\tData type not recognized\n"); ++ if (err & (1 << 12)) ++ DSSERR("\t\tInvalid VC ID\n"); ++ return -1; ++ ++ } else if (dt == DSI_DT_RX_SHORT_READ_1) { ++ u8 data = FLD_GET(val, 15, 8); ++ if (debug) ++ DSSDBG("\tDCS short response, 1 byte: %#x\n", data); ++ ++ if (buflen < 1) ++ return -1; ++ ++ buf[0] = data; ++ ++ return 1; ++ } else if (dt == DSI_DT_RX_SHORT_READ_2) { ++ u16 data = FLD_GET(val, 23, 8); ++ if (debug) ++ DSSDBG("\tDCS short response, 2 byte: %#x\n", data); ++ ++ if (buflen < 2) ++ return -1; ++ ++ buf[0] = data & 0xff; ++ buf[1] = (data >> 8) & 0xff; ++ ++ return 2; ++ } else if (dt == DSI_DT_RX_DCS_LONG_READ) { ++ int x; ++ int len = FLD_GET(val, 23, 8); ++ if (debug) ++ DSSDBG("\tDCS long response, len %d\n", len); ++ ++ if (len > buflen) ++ return -1; ++ ++ x = 0; ++ while (x < len) { ++ val = dsi_read_reg(DSI_VC_SHORT_PACKET_HEADER(channel)); ++ if (debug) ++ DSSDBG("\t\tb1 %#02x b2 %#02x b3 %#02x b4 " ++ "%#02x\n", ++ (val >> 0) & 0xff, ++ (val >> 8) & 0xff, ++ (val >> 16) & 0xff, ++ (val >> 24) & 0xff); ++ ++ if (x < len) ++ buf[x++] = (val >> 0) & 0xff; ++ if (x < len) ++ buf[x++] = (val >> 8) & 0xff; ++ if (x < len) ++ buf[x++] = (val >> 16) & 0xff; ++ if (x < len) ++ buf[x++] = (val >> 24) & 0xff; ++ } ++ ++ return len; ++ } else { ++ DSSERR("\tunknown datatype\n"); ++ return -1; ++ } ++} ++EXPORT_SYMBOL(dsi_vc_dcs_read); ++ ++ ++int dsi_vc_set_max_rx_packet_size(int channel, u16 len) ++{ ++ return dsi_vc_send_short(channel, DSI_DT_SET_MAX_RET_PKG_SIZE, ++ len, 0); ++} ++EXPORT_SYMBOL(dsi_vc_set_max_rx_packet_size); ++ ++ ++static int dsi_set_lp_rx_timeout(int ns, int x4, int x16) ++{ ++ u32 r; ++ unsigned long fck; ++ int ticks; ++ ++ /* ticks in DSI_FCK */ ++ ++ fck = dsi_fclk_rate(); ++ ticks = (fck / 1000 / 1000) * ns / 1000; ++ ++ if (ticks > 0x1fff) { ++ DSSERR("LP_TX_TO too high\n"); ++ return -EINVAL; ++ } ++ ++ r = dsi_read_reg(DSI_TIMING2); ++ r = FLD_MOD(r, 1, 15, 15); /* LP_RX_TO */ ++ r = FLD_MOD(r, x16, 14, 14); /* LP_RX_TO_X16 */ ++ r = FLD_MOD(r, x4, 13, 13); /* LP_RX_TO_X4 */ ++ r = FLD_MOD(r, ticks, 12, 0); /* LP_RX_COUNTER */ ++ dsi_write_reg(DSI_TIMING2, r); ++ ++ DSSDBG("LP_RX_TO %ld ns (%#x ticks)\n", ++ (ticks * (x16 ? 16 : 1) * (x4 ? 4 : 1) * 1000) / ++ (fck / 1000 / 1000), ++ ticks); ++ ++ return 0; ++} ++ ++static int dsi_set_ta_timeout(int ns, int x8, int x16) ++{ ++ u32 r; ++ unsigned long fck; ++ int ticks; ++ ++ /* ticks in DSI_FCK */ ++ ++ fck = dsi_fclk_rate(); ++ ticks = (fck / 1000 / 1000) * ns / 1000; ++ ++ if (ticks > 0x1fff) { ++ DSSERR("TA_TO too high\n"); ++ return -EINVAL; ++ } ++ ++ r = dsi_read_reg(DSI_TIMING1); ++ r = FLD_MOD(r, 1, 31, 31); /* TA_TO */ ++ r = FLD_MOD(r, x16, 30, 30); /* TA_TO_X16 */ ++ r = FLD_MOD(r, x8, 29, 29); /* TA_TO_X8 */ ++ r = FLD_MOD(r, ticks, 28, 16); /* TA_TO_COUNTER */ ++ dsi_write_reg(DSI_TIMING1, r); ++ ++ DSSDBG("TA_TO %ld ns (%#x ticks)\n", ++ (ticks * (x16 ? 16 : 1) * (x8 ? 8 : 1) * 1000) / ++ (fck / 1000 / 1000), ++ ticks); ++ ++ return 0; ++} ++ ++static int dsi_set_stop_state_counter(int ns, int x4, int x16) ++{ ++ u32 r; ++ unsigned long fck; ++ int ticks; ++ ++ /* ticks in DSI_FCK */ ++ ++ fck = dsi_fclk_rate(); ++ ticks = (fck / 1000 / 1000) * ns / 1000; ++ ++ if (ticks > 0x1fff) { ++ DSSERR("STOP_STATE_COUNTER_IO too high\n"); ++ return -EINVAL; ++ } ++ ++ r = dsi_read_reg(DSI_TIMING1); ++ r = FLD_MOD(r, 1, 15, 15); /* FORCE_TX_STOP_MODE_IO */ ++ r = FLD_MOD(r, x16, 14, 14); /* STOP_STATE_X16_IO */ ++ r = FLD_MOD(r, x4, 13, 13); /* STOP_STATE_X4_IO */ ++ r = FLD_MOD(r, ticks, 12, 0); /* STOP_STATE_COUNTER_IO */ ++ dsi_write_reg(DSI_TIMING1, r); ++ ++ DSSDBG("STOP_STATE_COUNTER %ld ns (%#x ticks)\n", ++ (ticks * (x16 ? 16 : 1) * (x4 ? 4 : 1) * 1000) / ++ (fck / 1000 / 1000), ++ ticks); ++ ++ return 0; ++} ++ ++static int dsi_set_hs_tx_timeout(int ns, int x4, int x16) ++{ ++ u32 r; ++ unsigned long fck; ++ int ticks; ++ ++ /* ticks in TxByteClkHS */ ++ ++ fck = dsi.ddr_clk / 4; ++ ticks = (fck / 1000 / 1000) * ns / 1000; ++ ++ if (ticks > 0x1fff) { ++ DSSERR("HS_TX_TO too high\n"); ++ return -EINVAL; ++ } ++ ++ r = dsi_read_reg(DSI_TIMING2); ++ r = FLD_MOD(r, 1, 31, 31); /* HS_TX_TO */ ++ r = FLD_MOD(r, x16, 30, 30); /* HS_TX_TO_X16 */ ++ r = FLD_MOD(r, x4, 29, 29); /* HS_TX_TO_X8 (4 really) */ ++ r = FLD_MOD(r, ticks, 28, 16); /* HS_TX_TO_COUNTER */ ++ dsi_write_reg(DSI_TIMING2, r); ++ ++ DSSDBG("HS_TX_TO %ld ns (%#x ticks)\n", ++ (ticks * (x16 ? 16 : 1) * (x4 ? 4 : 1) * 1000) / ++ (fck / 1000 / 1000), ++ ticks); ++ ++ return 0; ++} ++static int dsi_proto_config(struct omap_display *display) ++{ ++ u32 r; ++ int buswidth = 0; ++ ++ dsi_config_tx_fifo(DSI_FIFO_SIZE_128, ++ DSI_FIFO_SIZE_0, ++ DSI_FIFO_SIZE_0, ++ DSI_FIFO_SIZE_0); ++ ++ dsi_config_rx_fifo(DSI_FIFO_SIZE_128, ++ DSI_FIFO_SIZE_0, ++ DSI_FIFO_SIZE_0, ++ DSI_FIFO_SIZE_0); ++ ++ /* XXX what values for the timeouts? */ ++ dsi_set_stop_state_counter(1000, 0, 0); ++ ++ dsi_set_ta_timeout(50000, 1, 1); ++ ++ /* 3000ns * 16 */ ++ dsi_set_lp_rx_timeout(3000, 0, 1); ++ ++ /* 10000ns * 4 */ ++ dsi_set_hs_tx_timeout(10000, 1, 0); ++ ++ switch (display->bpp) { ++ case 16: ++ buswidth = 0; ++ break; ++ case 18: ++ buswidth = 1; ++ break; ++ case 24: ++ buswidth = 2; ++ break; ++ default: ++ BUG(); ++ } ++ ++ r = dsi_read_reg(DSI_CTRL); ++ r = FLD_MOD(r, 1, 1, 1); /* CS_RX_EN */ ++ r = FLD_MOD(r, 1, 2, 2); /* ECC_RX_EN */ ++ r = FLD_MOD(r, 1, 3, 3); /* TX_FIFO_ARBITRATION */ ++ /* XXX what should the ratio be */ ++ r = FLD_MOD(r, 0, 4, 4); /* VP_CLK_RATIO, VP_PCLK = VP_CLK/2 */ ++ r = FLD_MOD(r, buswidth, 7, 6); /* VP_DATA_BUS_WIDTH */ ++ r = FLD_MOD(r, 0, 8, 8); /* VP_CLK_POL */ ++ r = FLD_MOD(r, 2, 13, 12); /* LINE_BUFFER, 2 lines */ ++ r = FLD_MOD(r, 1, 14, 14); /* TRIGGER_RESET_MODE */ ++ r = FLD_MOD(r, 1, 19, 19); /* EOT_ENABLE */ ++ r = FLD_MOD(r, 1, 24, 24); /* DCS_CMD_ENABLE */ ++ r = FLD_MOD(r, 0, 25, 25); /* DCS_CMD_CODE, 1=start, 0=continue */ ++ ++ dsi_write_reg(DSI_CTRL, r); ++ ++ /* we configure vc0 for L4 communication, and ++ * vc1 for dispc */ ++ dsi_vc_config(0); ++ dsi_vc_config_vp(1); ++ ++ /* set all vc targets to peripheral 0 */ ++ dsi.vc[0].dest_per = 0; ++ dsi.vc[1].dest_per = 0; ++ dsi.vc[2].dest_per = 0; ++ dsi.vc[3].dest_per = 0; ++ ++ return 0; ++} ++ ++static void dsi_proto_timings(void) ++{ ++ int tlpx_half, tclk_zero, tclk_prepare, tclk_trail; ++ int tclk_pre, tclk_post; ++ int ddr_clk_pre, ddr_clk_post; ++ u32 r; ++ ++ r = dsi_read_reg(DSIPHY_CFG1); ++ tlpx_half = FLD_GET(r, 22, 16); ++ tclk_trail = FLD_GET(r, 15, 8); ++ tclk_zero = FLD_GET(r, 7, 0); ++ ++ r = dsi_read_reg(DSIPHY_CFG2); ++ tclk_prepare = FLD_GET(r, 7, 0); ++ ++ /* min 8*UI */ ++ tclk_pre = 4; ++ /* min 60ns + 52*UI */ ++ tclk_post = ns2ddr(60) + 26; ++ ++ ddr_clk_pre = (tclk_pre + tlpx_half*2 + tclk_zero + tclk_prepare) / 4; ++ ddr_clk_post = (tclk_post + tclk_trail) / 4; ++ ++ r = dsi_read_reg(DSI_CLK_TIMING); ++ r = FLD_MOD(r, ddr_clk_pre, 15, 8); ++ r = FLD_MOD(r, ddr_clk_post, 7, 0); ++ dsi_write_reg(DSI_CLK_TIMING, r); ++ ++#ifdef VERBOSE ++ DSSDBG("ddr_clk_pre %d, ddr_clk_post %d\n", ++ ddr_clk_pre, ++ ddr_clk_post); ++#endif ++} ++ ++ ++#define DSI_DECL_VARS \ ++ int __dsi_cb = 0; u32 __dsi_cv = 0; ++ ++#define DSI_FLUSH(ch) \ ++ if (__dsi_cb > 0) { \ ++ /*DSSDBG("sending long packet %#010x\n", __dsi_cv);*/ \ ++ dsi_write_reg(DSI_VC_LONG_PACKET_PAYLOAD(ch), __dsi_cv); \ ++ __dsi_cb = __dsi_cv = 0; \ ++ } ++ ++#define DSI_PUSH(ch, data) \ ++ do { \ ++ __dsi_cv |= (data) << (__dsi_cb * 8); \ ++ /*DSSDBG("cv = %#010x, cb = %d\n", __dsi_cv, __dsi_cb);*/ \ ++ if (++__dsi_cb > 3) \ ++ DSI_FLUSH(ch); \ ++ } while (0) ++ ++static int dsi_update_screen_l4(struct omap_display *display, ++ int x, int y, int w, int h) ++{ ++ /* Note: supports only 24bit colors in 32bit container */ ++ int first = 1; ++ int fifo_stalls = 0; ++ int max_dsi_packet_size; ++ int max_data_per_packet; ++ int max_pixels_per_packet; ++ int pixels_left; ++ int bytespp = 3; ++ int scr_width; ++ u32 *data; ++ int start_offset; ++ int horiz_inc; ++ int current_x; ++ struct omap_overlay *ovl; ++ ++ debug_irq = 0; ++ ++ DSSDBG("dsi_update_screen_l4 (%d,%d %dx%d)\n", ++ x, y, w, h); ++ ++ ovl = &display->manager->overlays[0]; ++ ++ if (ovl->info.color_mode != OMAP_DSS_COLOR_RGB24U) ++ return -EINVAL; ++ ++ if (display->ctrl->bpp != 24) ++ return -EINVAL; ++ ++ enable_clocks(1); ++ ++ scr_width = ovl->info.screen_width; ++ data = ovl->info.vaddr; ++ ++ start_offset = scr_width * y + x; ++ horiz_inc = scr_width - w; ++ current_x = x; ++ ++ /* We need header(4) + DCSCMD(1) + pixels(numpix*bytespp) bytes ++ * in fifo */ ++ ++ /* When using CPU, max long packet size is TX buffer size */ ++ max_dsi_packet_size = dsi.vc[0].fifo_size * 32 * 4; ++ ++ /* we seem to get better perf if we divide the tx fifo to half, ++ and while the other half is being sent, we fill the other half ++ max_dsi_packet_size /= 2; */ ++ ++ max_data_per_packet = max_dsi_packet_size - 4 - 1; ++ ++ max_pixels_per_packet = max_data_per_packet / bytespp; ++ ++ DSSDBG("max_pixels_per_packet %d\n", max_pixels_per_packet); ++ ++ display->ctrl->setup_update(display, x, y, w, h); ++ ++ pixels_left = w * h; ++ ++ DSSDBG("total pixels %d\n", pixels_left); ++ ++ data += start_offset; ++ ++ dsi.update_region.x = x; ++ dsi.update_region.y = y; ++ dsi.update_region.w = w; ++ dsi.update_region.h = h; ++ dsi.update_region.bytespp = bytespp; ++ ++ start_measuring(); ++ ++ while (pixels_left > 0) { ++ /* 0x2c = write_memory_start */ ++ /* 0x3c = write_memory_continue */ ++ u8 dcs_cmd = first ? 0x2c : 0x3c; ++ int pixels; ++ DSI_DECL_VARS; ++ first = 0; ++ ++#if 1 ++ /* using fifo not empty */ ++ /* TX_FIFO_NOT_EMPTY */ ++ while (FLD_GET(dsi_read_reg(DSI_VC_CTRL(0)), 5, 5)) { ++ udelay(1); ++ fifo_stalls++; ++ if (fifo_stalls > 0xfffff) { ++ DSSERR("fifo stalls overflow, pixels left %d\n", ++ pixels_left); ++ dsi_if_enable(0); ++ enable_clocks(0); ++ return -EIO; ++ } ++ } ++#elif 1 ++ /* using fifo emptiness */ ++ while ((REG_GET(DSI_TX_FIFO_VC_EMPTINESS, 7, 0)+1)*4 < ++ max_dsi_packet_size) { ++ fifo_stalls++; ++ if (fifo_stalls > 0xfffff) { ++ DSSERR("fifo stalls overflow, pixels left %d\n", ++ pixels_left); ++ dsi_if_enable(0); ++ enable_clocks(0); ++ return -EIO; ++ } ++ } ++#else ++ while ((REG_GET(DSI_TX_FIFO_VC_EMPTINESS, 7, 0)+1)*4 == 0) { ++ fifo_stalls++; ++ if (fifo_stalls > 0xfffff) { ++ DSSERR("fifo stalls overflow, pixels left %d\n", ++ pixels_left); ++ dsi_if_enable(0); ++ enable_clocks(0); ++ return -EIO; ++ } ++ } ++#endif ++ pixels = min(max_pixels_per_packet, pixels_left); ++ ++ pixels_left -= pixels; ++ ++ dsi_vc_write_long_header(0, DSI_DT_DCS_LONG_WRITE, ++ 1 + pixels * bytespp, 0); ++ ++ DSI_PUSH(0, dcs_cmd); ++ ++ while (pixels-- > 0) { ++ u32 pix = *data++; ++ ++ DSI_PUSH(0, (pix >> 16) & 0xff); ++ DSI_PUSH(0, (pix >> 8) & 0xff); ++ DSI_PUSH(0, (pix >> 0) & 0xff); ++ ++ current_x++; ++ if (current_x == x+w) { ++ current_x = x; ++ data += horiz_inc; ++ } ++ } ++ ++ DSI_FLUSH(0); ++ } ++ ++ end_measuring("L4"); ++ ++ enable_clocks(0); ++ ++ return 0; ++} ++ ++#if 0 ++static void dsi_clear_screen_l4(struct omap_display *display, ++ int x, int y, int w, int h) ++{ ++ int first = 1; ++ int fifo_stalls = 0; ++ int max_dsi_packet_size; ++ int max_data_per_packet; ++ int max_pixels_per_packet; ++ int pixels_left; ++ int bytespp = 3; ++ int pixnum; ++ ++ debug_irq = 0; ++ ++ DSSDBG("dsi_clear_screen_l4 (%d,%d %dx%d)\n", ++ x, y, w, h); ++ ++ if (display->ctrl->bpp != 24) ++ return -EINVAL; ++ ++ /* We need header(4) + DCSCMD(1) + pixels(numpix*bytespp) ++ * bytes in fifo */ ++ ++ /* When using CPU, max long packet size is TX buffer size */ ++ max_dsi_packet_size = dsi.vc[0].fifo_size * 32 * 4; ++ ++ max_data_per_packet = max_dsi_packet_size - 4 - 1; ++ ++ max_pixels_per_packet = max_data_per_packet / bytespp; ++ ++ enable_clocks(1); ++ ++ display->ctrl->setup_update(display, x, y, w, h); ++ ++ pixels_left = w * h; ++ ++ dsi.update_region.x = x; ++ dsi.update_region.y = y; ++ dsi.update_region.w = w; ++ dsi.update_region.h = h; ++ dsi.update_region.bytespp = bytespp; ++ ++ start_measuring(); ++ ++ pixnum = 0; ++ ++ while (pixels_left > 0) { ++ /* 0x2c = write_memory_start */ ++ /* 0x3c = write_memory_continue */ ++ u8 dcs_cmd = first ? 0x2c : 0x3c; ++ int pixels; ++ DSI_DECL_VARS; ++ first = 0; ++ ++ /* TX_FIFO_NOT_EMPTY */ ++ while (FLD_GET(dsi_read_reg(DSI_VC_CTRL(0)), 5, 5)) { ++ fifo_stalls++; ++ if (fifo_stalls > 0xfffff) { ++ DSSERR("fifo stalls overflow\n"); ++ dsi_if_enable(0); ++ enable_clocks(0); ++ return; ++ } ++ } ++ ++ pixels = min(max_pixels_per_packet, pixels_left); ++ ++ pixels_left -= pixels; ++ ++ dsi_vc_write_long_header(0, DSI_DT_DCS_LONG_WRITE, ++ 1 + pixels * bytespp, 0); ++ ++ DSI_PUSH(0, dcs_cmd); ++ ++ while (pixels-- > 0) { ++ u32 pix; ++ ++ pix = 0x000000; ++ ++ DSI_PUSH(0, (pix >> 16) & 0xff); ++ DSI_PUSH(0, (pix >> 8) & 0xff); ++ DSI_PUSH(0, (pix >> 0) & 0xff); ++ } ++ ++ DSI_FLUSH(0); ++ } ++ ++ enable_clocks(0); ++ ++ end_measuring("L4 CLEAR"); ++} ++#endif ++ ++static int dsi_wait_for_framedone(void) ++{ ++ unsigned long flags; ++ ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ if (dsi.update_ongoing) { ++ long wait = msecs_to_jiffies(1000); ++ dsi.update_syncers++; ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ wait = wait_for_completion_timeout(&dsi.update_completion, ++ wait); ++ if (wait == 0) { ++ DSSERR("timeout waiting sync\n"); ++ return -ETIME; ++ } ++ } else { ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ } ++ ++ return 0; ++} ++ ++static void dsi_setup_update_dispc(struct omap_display *display, ++ int x, int y, int w, int h) ++{ ++ int bytespp = 3; ++ ++ DSSDBG("dsi_setup_update_dispc(%d,%d %dx%d)\n", ++ x, y, w, h); ++ ++ dsi.update_region.display = display; ++ dsi.update_region.x = x; ++ dsi.update_region.y = y; ++ dsi.update_region.w = w; ++ dsi.update_region.h = h; ++ dsi.update_region.bytespp = bytespp; ++ ++ enable_clocks(1); ++ ++ dispc_setup_partial_planes(display, &x, &y, &w, &h); ++ ++ dispc_set_lcd_size(w, h); ++ ++ enable_clocks(0); ++} ++ ++static void dsi_update_screen_dispc(struct omap_display *display) ++{ ++ int bytespp = 3; ++ int total_len; ++ int line_packet_len; ++ int x, y, w, h; ++ u32 l; ++ ++ x = dsi.update_region.x; ++ y = dsi.update_region.y; ++ w = dsi.update_region.w; ++ h = dsi.update_region.h; ++ ++ DSSDBG("dsi_update_screen_dispc(%d,%d %dx%d)\n", ++ x, y, w, h); ++ ++ enable_clocks(1); ++ ++ /* TODO: one packet could be longer, I think? Max is the line buffer */ ++ line_packet_len = w * bytespp + 1; /* 1 byte for DCS cmd */ ++ total_len = line_packet_len * h; ++ ++ display->ctrl->setup_update(display, x, y, w, h); ++ ++ if (0) ++ dsi_vc_print_status(1); ++ ++ start_measuring(); ++ ++ l = FLD_VAL(total_len, 23, 0); /* TE_SIZE */ ++ dsi_write_reg(DSI_VC_TE(1), l); ++ ++ dsi_vc_write_long_header(1, DSI_DT_DCS_LONG_WRITE, line_packet_len, 0); ++ ++ if (dsi.use_te) ++ l = FLD_MOD(l, 1, 30, 30); /* TE_EN */ ++ else ++ l = FLD_MOD(l, 1, 31, 31); /* TE_START */ ++ dsi_write_reg(DSI_VC_TE(1), l); ++ ++ dispc_enable_lcd_out(1); ++ ++ if (dsi.use_te) ++ dsi_vc_send_bta(1); ++} ++ ++static void framedone_callback(void *data, u32 mask) ++{ ++ if (dsi.framedone_scheduled) { ++ DSSERR("Framedone already scheduled. Bogus FRAMEDONE IRQ?\n"); ++ return; ++ } ++ ++ dsi.framedone_scheduled = 1; ++ ++ /* We get FRAMEDONE when DISPC has finished sending pixels and turns ++ * itself off. However, DSI still has the pixels in its buffers, and ++ * is sending the data. Thus we have to wait until we can do a new ++ * transfer or turn the clocks off. We do that in a separate work ++ * func. */ ++ schedule_work(&dsi.framedone_work); ++} ++ ++static void framedone_worker(struct work_struct *work) ++{ ++ unsigned long flags; ++ u32 l; ++ unsigned long tmo; ++ int i = 0; ++ ++ l = REG_GET(DSI_VC_TE(1), 23, 0); /* TE_SIZE */ ++ ++ /* There shouldn't be much stuff in DSI buffers, if any, so we'll ++ * just busyloop */ ++ if (l > 0) { ++ tmo = jiffies + msecs_to_jiffies(50); ++ while (REG_GET(DSI_VC_TE(1), 23, 0) > 0) { /* TE_SIZE */ ++ i++; ++ if (time_after(jiffies, tmo)) { ++ DSSERR("timeout waiting TE_SIZE to zero\n"); ++ break; ++ } ++ cpu_relax(); ++ } ++ } ++ ++ if (REG_GET(DSI_VC_TE(1), 30, 30)) ++ DSSERR("TE_EN not zero\n"); ++ ++ if (REG_GET(DSI_VC_TE(1), 31, 31)) ++ DSSERR("TE_START not zero\n"); ++ ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ if (dsi.update_ongoing == 0) { ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ DSSERR("framedone irq without update request\n"); ++ return; ++ } ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ ++ end_measuring("DISPC"); ++ ++ DSSDBG("FRAMEDONE\n"); ++ ++#if 0 ++ if (l) ++ DSSWARN("FRAMEDONE irq too early, %d bytes, %d loops\n", l, i); ++#else ++ if (l > 1024*3) ++ DSSWARN("FRAMEDONE irq too early, %d bytes, %d loops\n", l, i); ++#endif ++ ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ dsi.update_ongoing = 0; ++ while (dsi.update_syncers > 0) { ++ complete(&dsi.update_completion); ++ --dsi.update_syncers; ++ } ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ ++#ifdef CONFIG_OMAP2_DSS_FAKE_VSYNC ++ dispc_fake_vsync_irq(); ++#endif ++ enable_clocks(0); ++ ++ dsi.framedone_scheduled = 0; ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) { ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ dsi.update_ongoing = 1; ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ dsi_update_screen_dispc(dsi.update_region.display); ++ } ++} ++ ++static void dsi_start_auto_update(struct omap_display *display) ++{ ++ unsigned long flags; ++ int bytespp = 3; ++ ++ DSSDBG("starting auto update\n"); ++ ++ dsi.update_region.display = display; ++ dsi.update_region.x = 0; ++ dsi.update_region.y = 0; ++ dsi.update_region.w = display->x_res; ++ dsi.update_region.h = display->y_res; ++ dsi.update_region.bytespp = bytespp; ++ ++ enable_clocks(1); ++ ++ dispc_set_lcd_size(display->x_res, display->y_res); ++ ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ dsi.update_ongoing = 1; ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ dsi_update_screen_dispc(display); ++} ++ ++static void dsi_stop_auto_update(void) ++{ ++ dsi.update_mode = OMAP_DSS_UPDATE_DISABLED; ++ ++ DSSDBG("waiting for display to finish.\n"); ++ dsi_wait_for_framedone(); ++ DSSDBG("done waiting\n"); ++ enable_clocks(0); ++ ++ dsi.update_mode = OMAP_DSS_UPDATE_MANUAL; ++} ++ ++static int dsi_set_update_mode(struct omap_display *display, ++ enum omap_dss_update_mode mode) ++{ ++ if (mode == dsi.update_mode) ++ return 0; ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) ++ dsi_stop_auto_update(); ++ else if (dsi.update_mode == OMAP_DSS_UPDATE_MANUAL) ++ dsi_wait_for_framedone(); ++ ++ dsi.update_mode = mode; ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) ++ dsi_start_auto_update(display); ++ ++ return 0; ++} ++ ++/* Display funcs */ ++ ++static int dsi_display_enable(struct omap_display *display) ++{ ++ int r = 0; ++ struct dsi_clock_info cinfo; ++ ++ DSSDBG("dsi_display_enable\n"); ++ ++ mutex_lock(&dsi.lock); ++ ++ if (display->state != OMAP_DSS_DISPLAY_DISABLED) { ++ DSSERR("display already enabled\n"); ++ r = -EINVAL; ++ goto err0; ++ } ++ ++ enable_clocks(1); ++ ++ r = omap_dispc_register_isr(framedone_callback, NULL, ++ DISPC_IRQ_FRAMEDONE); ++ if (r) { ++ DSSERR("can't get FRAMEDONE irq\n"); ++ goto err1; ++ } ++ ++ dispc_set_lcd_display_type(OMAP_DSS_LCD_DISPLAY_TFT); ++ ++ dispc_set_parallel_interface_mode(OMAP_DSS_PARALLELMODE_DSI); ++ dispc_enable_fifohandcheck(1); ++ dispc_setup_plane_fifo(OMAP_DSS_GFX, 0); ++ dispc_setup_plane_fifo(OMAP_DSS_VIDEO1, 0); ++ dispc_setup_plane_fifo(OMAP_DSS_VIDEO2, 0); ++ dispc_set_tft_data_lines(display->bpp); ++ ++ { ++ struct omap_video_timings timings = { ++ .hsw = 1, ++ .hfp = 1, ++ .hbp = 1, ++ .vsw = 1, ++ .vfp = 0, ++ .vbp = 0, ++ }; ++ ++ dispc_set_lcd_timings(&timings); ++ } ++ ++ _dsi_print_reset_status(); ++ ++ r = dsi_pll_init(1, 0); ++ if (r) ++ goto err2; ++ ++ /* XXX hardcoded for 300Mbp/lane for now */ ++ r = dsi_pll_calc_datafreq(600 * 1000 * 1000, &cinfo); ++ if (r) ++ goto err3; ++ ++ r = dsi_pll_program(&cinfo); ++ if (r) ++ goto err3; ++ ++ DSSDBG("PLL OK\n"); ++ ++ r = dsi_complexio_init(display); ++ if (r) ++ goto err3; ++ ++ _dsi_print_reset_status(); ++ ++ dsi_proto_timings(); ++ dsi_set_lp_clk_divisor(); ++ ++ if (1) ++ _dsi_print_reset_status(); ++ ++ r = dsi_proto_config(display); ++ if (r) ++ goto err4; ++ ++ /* enable interface */ ++ dsi_vc_enable(0, 1); ++ dsi_vc_enable(1, 1); ++ dsi_if_enable(1); ++ dsi_force_tx_stop_mode_io(); ++ ++ ++ if (display->ctrl && display->ctrl->enable) { ++ r = display->ctrl->enable(display); ++ if (r) ++ goto err5; ++ } ++ ++ if (display->panel && display->panel->enable) { ++ r = display->panel->enable(display); ++ if (r) ++ goto err6; ++ } ++ ++ if (dsi.use_te) { ++ r = display->ctrl->enable_te(display, 1); ++ if (r) ++ goto err7; ++ } ++ ++ /* enable high-speed after initial config */ ++ dsi_vc_enable_hs(0, 1); ++ ++ display->state = OMAP_DSS_DISPLAY_ACTIVE; ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) ++ dsi_start_auto_update(display); ++ ++ enable_clocks(0); ++ mutex_unlock(&dsi.lock); ++ ++ return 0; ++err7: ++ if (display->panel && display->panel->disable) ++ display->panel->disable(display); ++err6: ++ if (display->ctrl && display->ctrl->disable) ++ display->ctrl->disable(display); ++err5: ++ dsi_if_enable(0); ++err4: ++ dsi_complexio_uninit(); ++err3: ++ dsi_pll_uninit(); ++err2: ++ omap_dispc_unregister_isr(framedone_callback); ++err1: ++ enable_clocks(0); ++err0: ++ mutex_unlock(&dsi.lock); ++ DSSDBG("dsi_display_enable FAILED\n"); ++ return r; ++} ++ ++static void dsi_display_disable(struct omap_display *display) ++{ ++ DSSDBG("dsi_display_disable\n"); ++ ++ mutex_lock(&dsi.lock); ++ ++ if (display->state == OMAP_DSS_DISPLAY_DISABLED) ++ goto end; ++ ++ enable_clocks(1); ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) ++ dsi_stop_auto_update(); ++ else if (dsi.update_mode == OMAP_DSS_UPDATE_MANUAL) ++ dsi_wait_for_framedone(); ++ ++ display->state = OMAP_DSS_DISPLAY_DISABLED; ++ ++ omap_dispc_unregister_isr(framedone_callback); ++ ++ if (display->panel && display->panel->disable) ++ display->panel->disable(display); ++ if (display->ctrl && display->ctrl->disable) ++ display->ctrl->disable(display); ++ ++ /* XXX sleep a bit to make sure all DSI buffers are sent. ++ * We should check it from somewhere, fifo fullness I guess */ ++ msleep(200); ++ ++ dsi_complexio_uninit(); ++ dsi_pll_uninit(); ++ ++ enable_clocks(0); ++ ++end: ++ mutex_unlock(&dsi.lock); ++} ++ ++static int dsi_display_suspend(struct omap_display *display) ++{ ++ if (display->state != OMAP_DSS_DISPLAY_ACTIVE) ++ return -EINVAL; ++ ++ if (display->panel->suspend) ++ display->panel->suspend(display); ++ ++ if (display->ctrl->suspend) ++ display->ctrl->suspend(display); ++ ++ display->state = OMAP_DSS_DISPLAY_SUSPENDED; ++ ++ return 0; ++} ++ ++static int dsi_display_resume(struct omap_display *display) ++{ ++ if (display->state != OMAP_DSS_DISPLAY_SUSPENDED) ++ return -EINVAL; ++ ++ if (display->panel->resume) ++ display->panel->resume(display); ++ ++ if (display->ctrl->resume) ++ display->ctrl->resume(display); ++ ++ display->state = OMAP_DSS_DISPLAY_ACTIVE; ++ ++ return 0; ++} ++ ++static void dsi_display_set_mode(struct omap_display *display, ++ int x_res, int y_res, int bpp) ++{ ++ DSSDBG("dsi_display_set_mode %dx%d, %dbpp\n", x_res, y_res, bpp); ++} ++ ++static int dsi_display_update(struct omap_display *display, ++ int x, int y, int w, int h) ++{ ++ unsigned long flags; ++ int r = 0; ++ ++ DSSDBG("dsi_display_update(%d,%d %dx%d)\n", x, y, w, h); ++ ++ if (w == 0 || h == 0) ++ return 0; ++ ++ mutex_lock(&dsi.lock); ++ ++ if (dsi.update_mode != OMAP_DSS_UPDATE_MANUAL) ++ goto end; /* XXX return error? */ ++ ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ ++ if (dsi.update_ongoing) { ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ DSSERR("DSI is busy\n"); ++ r = -EBUSY; ++ goto end; ++ } ++ ++ dsi.update_ongoing = 1; ++ ++ if (dsi.update_syncers > 0) ++ DSSERR("someone waiting for sync, and no update ongoing\n"); ++ ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ ++ if (display->manager->caps & OMAP_DSS_OVL_MGR_CAP_DISPC) { ++ dsi_setup_update_dispc(display, x, y, w, h); ++ dsi_update_screen_dispc(display); ++ } else { ++ r = dsi_update_screen_l4(display, x, y, w, h); ++ if (r) ++ goto end; ++ ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ dsi.update_ongoing = 0; ++ while (dsi.update_syncers > 0) { ++ complete(&dsi.update_completion); ++ --dsi.update_syncers; ++ } ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ } ++ ++end: ++ mutex_unlock(&dsi.lock); ++ return r; ++} ++ ++static int dsi_display_sync(struct omap_display *display) ++{ ++ int r = 0; ++ ++ DSSDBG("dsi_display_sync\n"); ++ ++ mutex_lock(&dsi.lock); ++ ++ if (dsi.update_mode != OMAP_DSS_UPDATE_MANUAL) ++ goto end; ++ ++ r = dsi_wait_for_framedone(); ++ ++end: ++ mutex_unlock(&dsi.lock); ++ return r; ++} ++ ++static int dsi_display_set_update_mode(struct omap_display *display, ++ enum omap_dss_update_mode mode) ++{ ++ int r; ++ ++ DSSDBG("dsi_display_set_update_mode\n"); ++ ++ mutex_lock(&dsi.lock); ++ ++ r = dsi_set_update_mode(display, mode); ++ ++ mutex_unlock(&dsi.lock); ++ ++ return r; ++} ++ ++static enum omap_dss_update_mode dsi_display_get_update_mode( ++ struct omap_display *display) ++{ ++ return dsi.update_mode; ++} ++ ++static int dsi_display_enable_te(struct omap_display *display, int enable) ++{ ++ enum omap_dss_update_mode mode; ++ ++ DSSDBG("dsi_display_enable_te\n"); ++ ++ mutex_lock(&dsi.lock); ++ ++ enable_clocks(1); ++ ++ mode = dsi.update_mode; ++ ++ /* XXX perhaps suspend or something would be better here */ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) ++ dsi_stop_auto_update(); ++ else if (dsi.update_mode == OMAP_DSS_UPDATE_MANUAL) ++ dsi_wait_for_framedone(); ++ ++ dsi.use_te = enable; ++ display->ctrl->enable_te(display, enable); ++ if (enable) { ++ /* disable LP_RX_TO, so that we can receive TE. ++ * Time to wait for TE is longer than the timer allows */ ++ REG_FLD_MOD(DSI_TIMING2, 0, 15, 15); /* LP_RX_TO */ ++ } else { ++ REG_FLD_MOD(DSI_TIMING2, 1, 15, 15); /* LP_RX_TO */ ++ } ++ ++ /* restore the old update mode */ ++ dsi_set_update_mode(display, mode); ++ ++ enable_clocks(0); ++ ++ mutex_unlock(&dsi.lock); ++ ++ return 0; ++} ++ ++static int dsi_display_get_te(struct omap_display *display) ++{ ++ return dsi.use_te; ++} ++ ++static int dsi_display_run_test(struct omap_display *display, int test_num) ++{ ++ enum omap_dss_update_mode mode; ++ int r = 0; ++ ++ DSSDBG("dsi_display_run_test %d\n", test_num); ++ ++ mutex_lock(&dsi.lock); ++ ++ enable_clocks(1); ++ ++ mode = dsi.update_mode; ++ ++ /* XXX perhaps suspend or something would be better here */ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) ++ dsi_stop_auto_update(); ++ else if (dsi.update_mode == OMAP_DSS_UPDATE_MANUAL) ++ dsi_wait_for_framedone(); ++ ++ /* run test first in low speed mode */ ++ dsi_vc_enable_hs(0, 0); ++ ++ if (display->ctrl->run_test) { ++ r = display->ctrl->run_test(display, test_num); ++ if (r) ++ goto fail; ++ } ++ ++ if (display->panel->run_test) { ++ r = display->panel->run_test(display, test_num); ++ if (r) ++ goto fail; ++ } ++ ++ /* then in high speed */ ++ dsi_vc_enable_hs(0, 1); ++ ++ if (display->ctrl->run_test) { ++ r = display->ctrl->run_test(display, test_num); ++ if (r) ++ goto fail; ++ } ++ ++ if (display->panel->run_test) ++ r = display->panel->run_test(display, test_num); ++ ++fail: ++ dsi_vc_enable_hs(0, 1); ++ ++ /* restore the old update mode */ ++ dsi_set_update_mode(display, mode); ++ ++ enable_clocks(0); ++ ++ mutex_unlock(&dsi.lock); ++ ++ return r; ++} ++ ++void dsi_init_display(struct omap_display *display) ++{ ++ DSSDBG("DSI init\n"); ++ ++ display->enable = dsi_display_enable; ++ display->disable = dsi_display_disable; ++ display->suspend = dsi_display_suspend; ++ display->resume = dsi_display_resume; ++ display->set_mode = dsi_display_set_mode; ++ display->update = dsi_display_update; ++ display->sync = dsi_display_sync; ++ display->set_update_mode = dsi_display_set_update_mode; ++ display->get_update_mode = dsi_display_get_update_mode; ++ display->enable_te = dsi_display_enable_te; ++ display->get_te = dsi_display_get_te; ++ display->run_test = dsi_display_run_test; ++ ++ display->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE; ++} ++ ++int dsi_init(void) ++{ ++ u32 rev; ++ ++ init_completion(&dsi.bta_completion); ++ INIT_WORK(&dsi.framedone_work, framedone_worker); ++ ++ init_completion(&dsi.update_completion); ++ spin_lock_init(&dsi.update_lock); ++ dsi.update_ongoing = 0; ++ dsi.update_syncers = 0; ++ ++ mutex_init(&dsi.lock); ++ ++ dsi.base = ioremap(DSI_BASE, SZ_1K); ++ if (!dsi.base) { ++ DSSERR("can't ioremap DSI\n"); ++ return -ENOMEM; ++ } ++ ++ dsi.dss_ick = get_dss_ick(); ++ dsi.dss1_fck = get_dss1_fck(); ++ dsi.dss2_fck = get_dss2_fck(); ++ ++ enable_clocks(1); ++ ++ /* Autoidle */ ++ REG_FLD_MOD(DSI_SYSCONFIG, 1, 0, 0); ++ ++ /* ENWAKEUP */ ++ REG_FLD_MOD(DSI_SYSCONFIG, 1, 2, 2); ++ ++ /* SIDLEMODE smart-idle */ ++ REG_FLD_MOD(DSI_SYSCONFIG, 2, 4, 3); ++ ++ if (0) ++ _dsi_reset(); ++ ++ _dsi_initialize_irq(); ++ ++ rev = dsi_read_reg(DSI_REVISION); ++ printk(KERN_INFO "OMAP DSI rev %d.%d\n", ++ FLD_GET(rev, 7, 4), FLD_GET(rev, 3, 0)); ++ ++ enable_clocks(0); ++ ++ return 0; ++} ++ ++void dsi_exit(void) ++{ ++ iounmap(dsi.base); ++ ++ DSSDBG("omap_dsi_exit\n"); ++} ++ +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0008-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch b/packages/linux/linux-omap/0008-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch new file mode 100644 index 0000000000..76cc5c793e --- /dev/null +++ b/packages/linux/linux-omap/0008-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch @@ -0,0 +1,2821 @@ +From a993119097b63f30364ca17db4d039a401c44b4d Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Tue, 4 Nov 2008 15:12:21 +0200 +Subject: [PATCH] DSS: OMAPFB: fb driver for new display subsystem + +Signed-off-by: Tomi Valkeinen +--- + arch/arm/plat-omap/fb.c | 9 +- + arch/arm/plat-omap/include/mach/omapfb.h | 7 + + drivers/video/Kconfig | 1 + + drivers/video/Makefile | 1 + + drivers/video/omap/Kconfig | 5 +- + drivers/video/omap2/Kconfig | 29 + + drivers/video/omap2/Makefile | 2 + + drivers/video/omap2/omapfb-ioctl.c | 428 ++++++++++ + drivers/video/omap2/omapfb-main.c | 1247 ++++++++++++++++++++++++++++++ + drivers/video/omap2/omapfb-sysfs.c | 833 ++++++++++++++++++++ + drivers/video/omap2/omapfb.h | 104 +++ + 11 files changed, 2663 insertions(+), 3 deletions(-) + create mode 100644 drivers/video/omap2/Kconfig + create mode 100644 drivers/video/omap2/Makefile + create mode 100644 drivers/video/omap2/omapfb-ioctl.c + create mode 100644 drivers/video/omap2/omapfb-main.c + create mode 100644 drivers/video/omap2/omapfb-sysfs.c + create mode 100644 drivers/video/omap2/omapfb.h + +diff --git a/arch/arm/plat-omap/fb.c b/arch/arm/plat-omap/fb.c +index 3746222..0ba1603 100644 +--- a/arch/arm/plat-omap/fb.c ++++ b/arch/arm/plat-omap/fb.c +@@ -36,7 +36,8 @@ + #include + #include + +-#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) ++#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) \ ++ || defined(CONFIG_FB_OMAP2) || defined(CONFIG_FB_OMAP2_MODULE) + + static struct omapfb_platform_data omapfb_config; + static int config_invalid; +@@ -298,14 +299,18 @@ unsigned long omapfb_reserve_sram(unsigned long sram_pstart, + return reserved; + } + ++#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) + void omapfb_set_ctrl_platform_data(void *data) + { + omapfb_config.ctrl_platform_data = data; + } ++#endif + + static inline int omap_init_fb(void) + { ++#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) + const struct omap_lcd_config *conf; ++#endif + + if (config_invalid) + return 0; +@@ -313,6 +318,7 @@ static inline int omap_init_fb(void) + printk(KERN_ERR "Invalid FB mem configuration entries\n"); + return 0; + } ++#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) + conf = omap_get_config(OMAP_TAG_LCD, struct omap_lcd_config); + if (conf == NULL) { + if (configured_regions) +@@ -321,6 +327,7 @@ static inline int omap_init_fb(void) + return 0; + } + omapfb_config.lcd = *conf; ++#endif + + return platform_device_register(&omap_fb_device); + } +diff --git a/arch/arm/plat-omap/include/mach/omapfb.h b/arch/arm/plat-omap/include/mach/omapfb.h +index a3c4408..e69c0b1 100644 +--- a/arch/arm/plat-omap/include/mach/omapfb.h ++++ b/arch/arm/plat-omap/include/mach/omapfb.h +@@ -90,6 +90,13 @@ enum omapfb_color_format { + OMAPFB_COLOR_CLUT_1BPP, + OMAPFB_COLOR_RGB444, + OMAPFB_COLOR_YUY422, ++ ++ OMAPFB_COLOR_ARGB16, ++ OMAPFB_COLOR_RGB24U, /* RGB24, 32-bit container */ ++ OMAPFB_COLOR_RGB24P, /* RGB24, 24-bit container */ ++ OMAPFB_COLOR_ARGB32, ++ OMAPFB_COLOR_RGBA32, ++ OMAPFB_COLOR_RGBX32, + }; + + struct omapfb_update_window { +diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig +index 0f13448..4b45731 100644 +--- a/drivers/video/Kconfig ++++ b/drivers/video/Kconfig +@@ -2084,6 +2084,7 @@ config FB_METRONOME + and could also have been called by some vendors as PVI-nnnn. + + source "drivers/video/omap/Kconfig" ++source "drivers/video/omap2/Kconfig" + + source "drivers/video/backlight/Kconfig" + source "drivers/video/display/Kconfig" +diff --git a/drivers/video/Makefile b/drivers/video/Makefile +index 248bddc..4d69355 100644 +--- a/drivers/video/Makefile ++++ b/drivers/video/Makefile +@@ -120,6 +120,7 @@ obj-$(CONFIG_FB_SM501) += sm501fb.o + obj-$(CONFIG_FB_XILINX) += xilinxfb.o + obj-$(CONFIG_FB_SH_MOBILE_LCDC) += sh_mobile_lcdcfb.o + obj-$(CONFIG_FB_OMAP) += omap/ ++obj-$(CONFIG_OMAP2_DSS) += omap2/ + obj-$(CONFIG_XEN_FBDEV_FRONTEND) += xen-fbfront.o + obj-$(CONFIG_FB_CARMINE) += carminefb.o + +diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig +index 5ebd591..8b6c675 100644 +--- a/drivers/video/omap/Kconfig ++++ b/drivers/video/omap/Kconfig +@@ -1,6 +1,7 @@ + config FB_OMAP + tristate "OMAP frame buffer support (EXPERIMENTAL)" +- depends on FB && ARCH_OMAP ++ depends on FB && ARCH_OMAP && (OMAP2_DSS = "n") ++ + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT +@@ -76,7 +77,7 @@ config FB_OMAP_BOOTLOADER_INIT + + config FB_OMAP_CONSISTENT_DMA_SIZE + int "Consistent DMA memory size (MB)" +- depends on FB_OMAP ++ depends on FB && ARCH_OMAP + range 1 14 + default 2 + help +diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig +new file mode 100644 +index 0000000..4b72479 +--- /dev/null ++++ b/drivers/video/omap2/Kconfig +@@ -0,0 +1,29 @@ ++config FB_OMAP2 ++ tristate "OMAP2/3 frame buffer support (EXPERIMENTAL)" ++ depends on FB && OMAP2_DSS ++ ++ select FB_CFB_FILLRECT ++ select FB_CFB_COPYAREA ++ select FB_CFB_IMAGEBLIT ++ help ++ Frame buffer driver for OMAP2/3 based boards. ++ ++config FB_OMAP2_DEBUG ++ bool "Debug output for OMAP2/3 FB" ++ depends on FB_OMAP2 ++ ++config FB_OMAP2_FORCE_AUTO_UPDATE ++ bool "Force main display to automatic update mode" ++ depends on FB_OMAP2 ++ help ++ Forces main display to automatic update mode (if possible), ++ and also enables tearsync (if possible). By default ++ displays that support manual update are started in manual ++ update mode. ++ ++menu "OMAP2/3 Display Device Drivers" ++ depends on OMAP2_DSS ++ ++ ++endmenu ++ +diff --git a/drivers/video/omap2/Makefile b/drivers/video/omap2/Makefile +new file mode 100644 +index 0000000..51c2e00 +--- /dev/null ++++ b/drivers/video/omap2/Makefile +@@ -0,0 +1,2 @@ ++obj-$(CONFIG_FB_OMAP2) += omapfb.o ++omapfb-y := omapfb-main.o omapfb-sysfs.o omapfb-ioctl.o +diff --git a/drivers/video/omap2/omapfb-ioctl.c b/drivers/video/omap2/omapfb-ioctl.c +new file mode 100644 +index 0000000..1ceb6b9 +--- /dev/null ++++ b/drivers/video/omap2/omapfb-ioctl.c +@@ -0,0 +1,428 @@ ++/* ++ * linux/drivers/video/omap2/omapfb-ioctl.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "omapfb.h" ++ ++static int omapfb_setup_plane(struct fb_info *fbi, struct omapfb_plane_info *pi) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ struct omap_overlay *ovl; ++ int r = 0; ++ ++ DBG("omapfb_setup_plane\n"); ++ ++ if (ofbi->num_overlays != 1) { ++ r = -EINVAL; ++ goto out; ++ } ++ ++ ovl = ofbi->overlays[0]; ++ ++ omapfb_lock(fbdev); ++ ++ if (display) { ++ if (pi->pos_x + pi->out_width > display->x_res || ++ pi->pos_y + pi->out_height > display->y_res) { ++ r = -EINVAL; ++ goto out; ++ } ++ } ++ ++ if (pi->enabled && !ofbi->region.size) { ++ /* ++ * This plane's memory was freed, can't enable it ++ * until it's reallocated. ++ */ ++ r = -EINVAL; ++ goto out; ++ } ++ ++ if (!ovl) { ++ r = -EINVAL; ++ goto out; ++ } ++ ++ r = omapfb_setup_overlay(fbi, ovl, pi->pos_x, pi->pos_y, ++ pi->out_width, pi->out_height); ++ if (r) ++ goto out; ++ ++ ovl->enable(ovl, pi->enabled); ++ ++ if (ovl->manager) ++ ovl->manager->apply(ovl->manager); ++ ++ if (display) { ++ if (display->sync) ++ display->sync(display); ++ ++ if (display->update) ++ display->update(display, 0, 0, ++ display->x_res, display->y_res); ++ } ++ ++out: ++ omapfb_unlock(fbdev); ++ if (r) ++ dev_err(fbdev->dev, "setup_plane failed\n"); ++ return r; ++} ++ ++static int omapfb_query_plane(struct fb_info *fbi, struct omapfb_plane_info *pi) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ ++ omapfb_lock(fbdev); ++ ++ if (ofbi->num_overlays != 1) { ++ memset(pi, 0, sizeof(*pi)); ++ } else { ++ struct omap_overlay_info *ovli; ++ struct omap_overlay *ovl; ++ ++ ovl = ofbi->overlays[0]; ++ ovli = &ovl->info; ++ ++ pi->pos_x = ovli->pos_x; ++ pi->pos_y = ovli->pos_y; ++ pi->enabled = ovli->enabled; ++ pi->channel_out = 0; /* xxx */ ++ pi->mirror = 0; ++ pi->out_width = ovli->out_width; ++ pi->out_height = ovli->out_height; ++ } ++ ++ omapfb_unlock(fbdev); ++ ++ return 0; ++} ++ ++static int omapfb_setup_mem(struct fb_info *fbi, struct omapfb_mem_info *mi) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omapfb_mem_region *rg; ++ int ret = -EINVAL; ++ ++ rg = &ofbi->region; ++ ++ omapfb_lock(fbdev); ++ if (mi->size > rg->size) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ ++ if (mi->type != rg->type) ++ goto out; ++ ++ ret = 0; ++out: ++ omapfb_unlock(fbdev); ++ ++ return ret; ++} ++ ++static int omapfb_query_mem(struct fb_info *fbi, struct omapfb_mem_info *mi) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omapfb_mem_region *rg; ++ ++ rg = &ofbi->region; ++ memset(mi, 0, sizeof(*mi)); ++ ++ omapfb_lock(fbdev); ++ mi->size = rg->size; ++ mi->type = rg->type; ++ omapfb_unlock(fbdev); ++ ++ return 0; ++} ++ ++static int omapfb_update_window(struct fb_info *fbi, ++ u32 x, u32 y, u32 w, u32 h) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ ++ if (!display) ++ return 0; ++ ++ if (w == 0 || h == 0) ++ return 0; ++ ++ if (x + w > display->x_res || y + h > display->y_res) ++ return -EINVAL; ++ ++ omapfb_lock(fbdev); ++ display->update(display, x, y, w, h); ++ omapfb_unlock(fbdev); ++ ++ return 0; ++} ++ ++static int omapfb_set_update_mode(struct fb_info *fbi, ++ enum omapfb_update_mode mode) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ enum omap_dss_update_mode um; ++ int r; ++ ++ if (!display || !display->set_update_mode) ++ return -EINVAL; ++ ++ switch (mode) { ++ case OMAPFB_UPDATE_DISABLED: ++ um = OMAP_DSS_UPDATE_DISABLED; ++ break; ++ ++ case OMAPFB_AUTO_UPDATE: ++ um = OMAP_DSS_UPDATE_AUTO; ++ break; ++ ++ case OMAPFB_MANUAL_UPDATE: ++ um = OMAP_DSS_UPDATE_MANUAL; ++ break; ++ ++ default: ++ return -EINVAL; ++ } ++ ++ omapfb_lock(fbdev); ++ r = display->set_update_mode(display, um); ++ omapfb_unlock(fbdev); ++ ++ return r; ++} ++ ++static int omapfb_get_update_mode(struct fb_info *fbi, ++ enum omapfb_update_mode *mode) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ enum omap_dss_update_mode m; ++ ++ if (!display || !display->get_update_mode) ++ return -EINVAL; ++ ++ omapfb_lock(fbdev); ++ m = display->get_update_mode(display); ++ omapfb_unlock(fbdev); ++ ++ switch (m) { ++ case OMAP_DSS_UPDATE_DISABLED: ++ *mode = OMAPFB_UPDATE_DISABLED; ++ break; ++ case OMAP_DSS_UPDATE_AUTO: ++ *mode = OMAPFB_AUTO_UPDATE; ++ break; ++ case OMAP_DSS_UPDATE_MANUAL: ++ *mode = OMAPFB_MANUAL_UPDATE; ++ break; ++ default: ++ BUG(); ++ } ++ ++ return 0; ++} ++ ++int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ ++ union { ++ struct omapfb_update_window_old uwnd_o; ++ struct omapfb_update_window uwnd; ++ struct omapfb_plane_info plane_info; ++ struct omapfb_caps caps; ++ struct omapfb_mem_info mem_info; ++ enum omapfb_update_mode update_mode; ++ int test_num; ++ } p; ++ ++ int r = 0; ++ ++ DBG("ioctl %x (%d)\n", cmd, cmd & 0xff); ++ ++ switch (cmd) { ++ case OMAPFB_SYNC_GFX: ++ if (!display || !display->sync) { ++ r = -EINVAL; ++ break; ++ } ++ ++ omapfb_lock(fbdev); ++ r = display->sync(display); ++ omapfb_unlock(fbdev); ++ break; ++ ++ case OMAPFB_UPDATE_WINDOW_OLD: ++ if (!display || !display->update) { ++ r = -EINVAL; ++ break; ++ } ++ ++ if (copy_from_user(&p.uwnd_o, ++ (void __user *)arg, ++ sizeof(p.uwnd_o))) { ++ r = -EFAULT; ++ break; ++ } ++ ++ r = omapfb_update_window(fbi, p.uwnd_o.x, p.uwnd_o.y, ++ p.uwnd_o.width, p.uwnd_o.height); ++ break; ++ ++ case OMAPFB_UPDATE_WINDOW: ++ if (!display || !display->update) { ++ r = -EINVAL; ++ break; ++ } ++ ++ if (copy_from_user(&p.uwnd, (void __user *)arg, ++ sizeof(p.uwnd))) { ++ r = -EFAULT; ++ break; ++ } ++ ++ r = omapfb_update_window(fbi, p.uwnd.x, p.uwnd.y, ++ p.uwnd.width, p.uwnd.height); ++ break; ++ ++ case OMAPFB_SETUP_PLANE: ++ if (copy_from_user(&p.plane_info, (void __user *)arg, ++ sizeof(p.plane_info))) ++ r = -EFAULT; ++ else ++ r = omapfb_setup_plane(fbi, &p.plane_info); ++ break; ++ ++ case OMAPFB_QUERY_PLANE: ++ r = omapfb_query_plane(fbi, &p.plane_info); ++ if (r < 0) ++ break; ++ if (copy_to_user((void __user *)arg, &p.plane_info, ++ sizeof(p.plane_info))) ++ r = -EFAULT; ++ break; ++ ++ case OMAPFB_SETUP_MEM: ++ if (copy_from_user(&p.mem_info, (void __user *)arg, ++ sizeof(p.mem_info))) ++ r = -EFAULT; ++ else ++ r = omapfb_setup_mem(fbi, &p.mem_info); ++ break; ++ ++ case OMAPFB_QUERY_MEM: ++ r = omapfb_query_mem(fbi, &p.mem_info); ++ if (r < 0) ++ break; ++ if (copy_to_user((void __user *)arg, &p.mem_info, ++ sizeof(p.mem_info))) ++ r = -EFAULT; ++ break; ++ ++ case OMAPFB_GET_CAPS: ++ if (!display) { ++ r = -EINVAL; ++ break; ++ } ++ ++ p.caps.ctrl = display->caps; ++ ++ if (copy_to_user((void __user *)arg, &p.caps, sizeof(p.caps))) ++ r = -EFAULT; ++ break; ++ ++ case OMAPFB_SET_UPDATE_MODE: ++ if (get_user(p.update_mode, (int __user *)arg)) ++ r = -EFAULT; ++ else ++ r = omapfb_set_update_mode(fbi, p.update_mode); ++ break; ++ ++ case OMAPFB_GET_UPDATE_MODE: ++ r = omapfb_get_update_mode(fbi, &p.update_mode); ++ if (r) ++ break; ++ if (put_user(p.update_mode, ++ (enum omapfb_update_mode __user *)arg)) ++ r = -EFAULT; ++ break; ++ ++ /* LCD and CTRL tests do the same thing for backward ++ * compatibility */ ++ case OMAPFB_LCD_TEST: ++ if (get_user(p.test_num, (int __user *)arg)) { ++ r = -EFAULT; ++ break; ++ } ++ if (!display || !display->run_test) { ++ r = -EINVAL; ++ break; ++ } ++ ++ r = display->run_test(display, p.test_num); ++ ++ break; ++ ++ case OMAPFB_CTRL_TEST: ++ if (get_user(p.test_num, (int __user *)arg)) { ++ r = -EFAULT; ++ break; ++ } ++ if (!display || !display->run_test) { ++ r = -EINVAL; ++ break; ++ } ++ ++ r = display->run_test(display, p.test_num); ++ ++ break; ++ ++ default: ++ DBG("ioctl unhandled\n"); ++ r = -EINVAL; ++ } ++ ++ return r; ++} ++ ++ +diff --git a/drivers/video/omap2/omapfb-main.c b/drivers/video/omap2/omapfb-main.c +new file mode 100644 +index 0000000..7ef7080 +--- /dev/null ++++ b/drivers/video/omap2/omapfb-main.c +@@ -0,0 +1,1247 @@ ++/* ++ * linux/drivers/video/omap2/omapfb-main.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "omapfb.h" ++ ++#define MODULE_NAME "omapfb" ++ ++#ifdef DEBUG ++static void fill_fb(void *addr, struct fb_info *fbi) ++{ ++ struct fb_var_screeninfo *var = &fbi->var; ++ ++ const short w = var->xres_virtual; ++ const short h = var->yres_virtual; ++ ++ int y, x; ++ u8 *p = addr; ++ ++ for (y = 0; y < h; y++) { ++ for (x = 0; x < w; x++) { ++ if (var->bits_per_pixel == 16) { ++ u16 *pw = (u16 *)p; ++ ++ if (x == 20 || x == w - 20 || ++ y == 20 || y == h - 20) ++ *pw = 0xffff; ++ else if (x == y || w - x == h - y) ++ *pw = ((1<<5)-1)<<11; ++ else if (w - x == y || x == h - y) ++ *pw = ((1<<6)-1)<<5; ++ else { ++ int t = x / (w/3); ++ if (t == 0) ++ *pw = y % 32; ++ else if (t == 1) ++ *pw = (y % 64) << 5; ++ else if (t == 2) ++ *pw = (y % 32) << 11; ++ } ++ } else if (var->bits_per_pixel == 24) { ++ u8 *pb = (u8 *)p; ++ ++ int r = 0, g = 0, b = 0; ++ ++ if (x == 20 || x == w - 20 || ++ y == 20 || y == h - 20) ++ r = g = b = 0xff; ++ else if (x == y || w - x == h - y) ++ r = 0xff; ++ else if (w - x == y || x == h - y) ++ g = 0xff; ++ else { ++ int q = x / (w / 3); ++ u8 base = 255 - (y % 256); ++ if (q == 0) ++ r = base; ++ else if (q == 1) ++ g = base; ++ else if (q == 2) ++ b = base; ++ } ++ ++ pb[0] = b; ++ pb[1] = g; ++ pb[2] = r; ++ ++ } else if (var->bits_per_pixel == 32) { ++ u32 *pd = (u32 *)p; ++ ++ if (x == 20 || x == w - 20 || ++ y == 20 || y == h - 20) ++ *pd = 0xffffff; ++ else if (x == y || w - x == h - y) ++ *pd = 0xff0000; ++ else if (w - x == y || x == h - y) ++ *pd = 0x00ff00; ++ else { ++ u8 base = 255 - (y % 256); ++ *pd = base << ((x / (w/3)) << 3); ++ } ++ } ++ ++ p += var->bits_per_pixel >> 3; ++ } ++ } ++} ++#endif ++ ++static enum omap_color_mode fb_mode_to_dss_mode(struct fb_var_screeninfo *var) ++{ ++ switch (var->nonstd) { ++ case 0: ++ break; ++ case OMAPFB_COLOR_YUV422: ++ return OMAP_DSS_COLOR_YUV2; ++ ++ case OMAPFB_COLOR_YUY422: ++ return OMAP_DSS_COLOR_UYVY; ++ ++ case OMAPFB_COLOR_ARGB16: ++ return OMAP_DSS_COLOR_ARGB16; ++ ++ case OMAPFB_COLOR_ARGB32: ++ return OMAP_DSS_COLOR_ARGB32; ++ ++ case OMAPFB_COLOR_RGBA32: ++ return OMAP_DSS_COLOR_RGBA32; ++ ++ case OMAPFB_COLOR_RGBX32: ++ return OMAP_DSS_COLOR_RGBX32; ++ ++ default: ++ return -EINVAL; ++ } ++ ++ switch (var->bits_per_pixel) { ++ case 1: ++ return OMAP_DSS_COLOR_CLUT1; ++ case 2: ++ return OMAP_DSS_COLOR_CLUT2; ++ case 4: ++ return OMAP_DSS_COLOR_CLUT4; ++ case 8: ++ return OMAP_DSS_COLOR_CLUT8; ++ case 12: ++ return OMAP_DSS_COLOR_RGB12U; ++ case 16: ++ return OMAP_DSS_COLOR_RGB16; ++ case 24: ++ return OMAP_DSS_COLOR_RGB24P; ++ case 32: ++ return OMAP_DSS_COLOR_RGB24U; ++ default: ++ return -EINVAL; ++ } ++ ++ return -EINVAL; ++} ++ ++static void set_fb_fix(struct fb_info *fbi) ++{ ++ struct fb_fix_screeninfo *fix = &fbi->fix; ++ struct fb_var_screeninfo *var = &fbi->var; ++ struct omapfb_mem_region *rg = &FB2OFB(fbi)->region; ++ ++ DBG("set_fb_fix\n"); ++ ++ /* used by open/write in fbmem.c */ ++ fbi->screen_base = (char __iomem *)rg->vaddr; ++ ++ /* used by mmap in fbmem.c */ ++ fix->smem_start = rg->paddr; ++ fix->smem_len = rg->size; ++ ++ fix->type = FB_TYPE_PACKED_PIXELS; ++ ++ if (var->nonstd) ++ fix->visual = FB_VISUAL_PSEUDOCOLOR; ++ else { ++ switch (var->bits_per_pixel) { ++ case 32: ++ case 24: ++ case 16: ++ case 12: ++ fix->visual = FB_VISUAL_TRUECOLOR; ++ /* 12bpp is stored in 16 bits */ ++ break; ++ case 1: ++ case 2: ++ case 4: ++ case 8: ++ fix->visual = FB_VISUAL_PSEUDOCOLOR; ++ break; ++ } ++ } ++ ++ fix->accel = FB_ACCEL_NONE; ++ fix->line_length = (var->xres_virtual * var->bits_per_pixel) >> 3; ++} ++ ++/* check new var and possibly modify it to be ok */ ++static int check_fb_var(struct fb_info *fbi, struct fb_var_screeninfo *var) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omap_display *display = fb2display(fbi); ++ unsigned long max_frame_size; ++ unsigned long line_size; ++ int xres_min, xres_max; ++ int yres_min, yres_max; ++ enum omap_color_mode mode = 0; ++ struct omap_overlay *ovl; ++ ++ DBG("check_fb_var %d\n", ofbi->id); ++ ++ if (ofbi->num_overlays == 0) { ++ dev_err(ofbi->fbdev->dev, "no overlays, aborting\n"); ++ return -EINVAL; ++ } ++ ++ /* XXX: uses the first overlay */ ++ ovl = ofbi->overlays[0]; ++ ++ /* if we are using non standard mode, fix the bpp first */ ++ switch (var->nonstd) { ++ case 0: ++ break; ++ case OMAPFB_COLOR_YUV422: ++ case OMAPFB_COLOR_YUY422: ++ case OMAPFB_COLOR_ARGB16: ++ var->bits_per_pixel = 16; ++ break; ++ case OMAPFB_COLOR_ARGB32: ++ case OMAPFB_COLOR_RGBA32: ++ case OMAPFB_COLOR_RGBX32: ++ var->bits_per_pixel = 32; ++ break; ++ default: ++ DBG("invalid nonstd mode\n"); ++ return -EINVAL; ++ } ++ ++ mode = fb_mode_to_dss_mode(var); ++ if (mode < 0) { ++ DBG("cannot convert var to omap dss mode\n"); ++ return -EINVAL; ++ } ++ ++ if ((ovl->supported_modes & mode) == 0) { ++ DBG("invalid mode\n"); ++ return -EINVAL; ++ } ++ ++ xres_min = OMAPFB_PLANE_XRES_MIN; ++ xres_max = (display ? display->x_res : 2048) - ovl->info.pos_x; ++ yres_min = OMAPFB_PLANE_YRES_MIN; ++ yres_max = (display ? display->y_res : 2048) - ovl->info.pos_y; ++ ++ if (var->xres < xres_min) ++ var->xres = xres_min; ++ if (var->yres < yres_min) ++ var->yres = yres_min; ++ if (var->xres_virtual < var->xres) ++ var->xres_virtual = var->xres; ++ if (var->yres_virtual < var->yres) ++ var->yres_virtual = var->yres; ++ max_frame_size = ofbi->region.size; ++ line_size = (var->xres_virtual * var->bits_per_pixel) >> 3; ++ ++ if (line_size * var->yres_virtual > max_frame_size) { ++ /* Try to keep yres_virtual first */ ++ line_size = max_frame_size / var->yres_virtual; ++ var->xres_virtual = line_size * 8 / var->bits_per_pixel; ++ if (var->xres_virtual < var->xres) { ++ /* Still doesn't fit. Shrink yres_virtual too */ ++ var->xres_virtual = var->xres; ++ line_size = var->xres * var->bits_per_pixel / 8; ++ var->yres_virtual = max_frame_size / line_size; ++ } ++ /* Recheck this, as the virtual size changed. */ ++ if (var->xres_virtual < var->xres) ++ var->xres = var->xres_virtual; ++ if (var->yres_virtual < var->yres) ++ var->yres = var->yres_virtual; ++ if (var->xres < xres_min || var->yres < yres_min) { ++ DBG("Cannot fit FB to memory\n"); ++ return -EINVAL; ++ } ++ } ++ if (var->xres + var->xoffset > var->xres_virtual) ++ var->xoffset = var->xres_virtual - var->xres; ++ if (var->yres + var->yoffset > var->yres_virtual) ++ var->yoffset = var->yres_virtual - var->yres; ++ ++ if (var->bits_per_pixel == 16) { ++ var->red.offset = 11; var->red.length = 5; ++ var->red.msb_right = 0; ++ var->green.offset = 5; var->green.length = 6; ++ var->green.msb_right = 0; ++ var->blue.offset = 0; var->blue.length = 5; ++ var->blue.msb_right = 0; ++ } else if (var->bits_per_pixel == 24) { ++ var->red.offset = 16; var->red.length = 8; ++ var->red.msb_right = 0; ++ var->green.offset = 8; var->green.length = 8; ++ var->green.msb_right = 0; ++ var->blue.offset = 0; var->blue.length = 8; ++ var->blue.msb_right = 0; ++ var->transp.offset = 0; var->transp.length = 0; ++ } else if (var->bits_per_pixel == 32) { ++ var->red.offset = 16; var->red.length = 8; ++ var->red.msb_right = 0; ++ var->green.offset = 8; var->green.length = 8; ++ var->green.msb_right = 0; ++ var->blue.offset = 0; var->blue.length = 8; ++ var->blue.msb_right = 0; ++ var->transp.offset = 0; var->transp.length = 0; ++ } else { ++ DBG("failed to setup fb color mask\n"); ++ return -EINVAL; ++ } ++ ++ DBG("xres = %d, yres = %d, vxres = %d, vyres = %d\n", ++ var->xres, var->yres, ++ var->xres_virtual, var->yres_virtual); ++ ++ var->height = -1; ++ var->width = -1; ++ var->grayscale = 0; ++ ++ if (display && display->check_timings) { ++ struct omap_video_timings timings; ++ timings.pixel_clock = PICOS2KHZ(var->pixclock); ++ timings.hfp = var->left_margin; ++ timings.hbp = var->right_margin; ++ timings.vfp = var->upper_margin; ++ timings.vbp = var->lower_margin; ++ timings.hsw = var->hsync_len; ++ timings.vsw = var->vsync_len; ++ ++ if (display->check_timings(display, &timings)) { ++ DBG("illegal video timings\n"); ++ return -EINVAL; ++ } ++ ++ /* pixclock in ps, the rest in pixclock */ ++ var->pixclock = KHZ2PICOS(timings.pixel_clock); ++ var->left_margin = timings.hfp; ++ var->right_margin = timings.hbp; ++ var->upper_margin = timings.vfp; ++ var->lower_margin = timings.vbp; ++ var->hsync_len = timings.hsw; ++ var->vsync_len = timings.vsw; ++ } ++ ++ /* TODO: get these from panel->config */ ++ var->vmode = FB_VMODE_NONINTERLACED; ++ var->sync = 0; ++ ++ return 0; ++} ++ ++/* ++ * --------------------------------------------------------------------------- ++ * fbdev framework callbacks ++ * --------------------------------------------------------------------------- ++ */ ++static int omapfb_open(struct fb_info *fbi, int user) ++{ ++ return 0; ++} ++ ++static int omapfb_release(struct fb_info *fbi, int user) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ ++ DBG("Closing fb with plane index %d\n", ofbi->id); ++ ++ omapfb_lock(fbdev); ++#if 1 ++ if (display) { ++ /* XXX Is this really needed ? */ ++ if (display->sync) ++ display->sync(display); ++ ++ if (display->update) ++ display->update(display, ++ 0, 0, ++ display->x_res, display->y_res); ++ } ++#endif ++ ++ if (display && display->sync) ++ display->sync(display); ++ ++ omapfb_unlock(fbdev); ++ ++ return 0; ++} ++ ++/* setup overlay according to the fb */ ++int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl, ++ int posx, int posy, int outw, int outh) ++{ ++ int r = 0; ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct fb_var_screeninfo *var = &fbi->var; ++ enum omap_color_mode mode = 0; ++ int offset; ++ u32 data_start_p; ++ void *data_start_v; ++ ++ DBG("setup_overlay %d\n", ofbi->id); ++ ++ if ((ovl->caps & OMAP_DSS_OVL_CAP_SCALE) == 0 && ++ (outw != var->xres || outh != var->yres)) { ++ r = -EINVAL; ++ goto err; ++ } ++ ++ offset = ((var->yoffset * var->xres_virtual + ++ var->xoffset) * var->bits_per_pixel) >> 3; ++ ++ data_start_p = ofbi->region.paddr + offset; ++ data_start_v = ofbi->region.vaddr + offset; ++ ++ mode = fb_mode_to_dss_mode(var); ++ ++ if (mode == -EINVAL) { ++ r = -EINVAL; ++ goto err; ++ } ++ ++ r = ovl->setup_input(ovl, ++ data_start_p, data_start_v, ++ var->xres_virtual, ++ var->xres, var->yres, ++ mode); ++ ++ if (r) ++ goto err; ++ ++ r = ovl->setup_output(ovl, ++ posx, posy, ++ outw, outh); ++ ++ if (r) ++ goto err; ++ ++ return 0; ++ ++err: ++ DBG("setup_overlay failed\n"); ++ return r; ++} ++ ++/* apply var to the overlay */ ++int omapfb_apply_changes(struct fb_info *fbi, int init) ++{ ++ int r = 0; ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct fb_var_screeninfo *var = &fbi->var; ++ /*struct omap_display *display = fb2display(fbi);*/ ++ struct omap_overlay *ovl; ++ int posx, posy; ++ int outw, outh; ++ int i; ++ ++ for (i = 0; i < ofbi->num_overlays; i++) { ++ ovl = ofbi->overlays[i]; ++ ++ DBG("apply_changes, fb %d, ovl %d\n", ofbi->id, ovl->id); ++ ++ if (init || (ovl->caps & OMAP_DSS_OVL_CAP_SCALE) == 0) { ++ outw = var->xres; ++ outh = var->yres; ++ } else { ++ outw = ovl->info.out_width; ++ outh = ovl->info.out_height; ++ } ++ ++ if (init) { ++ posx = 0; ++ posy = 0; ++ } else { ++ posx = ovl->info.pos_x; ++ posy = ovl->info.pos_y; ++ } ++ ++ r = omapfb_setup_overlay(fbi, ovl, posx, posy, outw, outh); ++ if (r) ++ goto err; ++ ++ /* disabled for now. if the display has changed, var ++ * still contains the old timings. */ ++#if 0 ++ if (display && display->set_timings) { ++ struct omap_video_timings timings; ++ timings.pixel_clock = PICOS2KHZ(var->pixclock); ++ timings.hfp = var->left_margin; ++ timings.hbp = var->right_margin; ++ timings.vfp = var->upper_margin; ++ timings.vbp = var->lower_margin; ++ timings.hsw = var->hsync_len; ++ timings.vsw = var->vsync_len; ++ ++ display->set_timings(display, &timings); ++ } ++#endif ++ if (!init && ovl->manager) ++ ovl->manager->apply(ovl->manager); ++ } ++ return 0; ++err: ++ DBG("apply_changes failed\n"); ++ return r; ++} ++ ++/* checks var and eventually tweaks it to something supported, ++ * DO NOT MODIFY PAR */ ++static int omapfb_check_var(struct fb_var_screeninfo *var, struct fb_info *fbi) ++{ ++ int r; ++ ++ DBG("check_var(%d)\n", FB2OFB(fbi)->id); ++ ++ r = check_fb_var(fbi, var); ++ ++ return r; ++} ++ ++/* set the video mode according to info->var */ ++static int omapfb_set_par(struct fb_info *fbi) ++{ ++ int r; ++ ++ DBG("set_par(%d)\n", FB2OFB(fbi)->id); ++ ++ set_fb_fix(fbi); ++ r = omapfb_apply_changes(fbi, 0); ++ ++ return r; ++} ++ ++static void omapfb_rotate(struct fb_info *fbi, int rotate) ++{ ++ DBG("rotate(%d)\n", FB2OFB(fbi)->id); ++ return; ++} ++ ++static int omapfb_pan_display(struct fb_var_screeninfo *var, ++ struct fb_info *fbi) ++{ ++ DBG("pan_display(%d)\n", FB2OFB(fbi)->id); ++ return 0; ++} ++ ++static int omapfb_mmap(struct fb_info *fbi, struct vm_area_struct *vma) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omapfb_mem_region *rg = &ofbi->region; ++ ++ return dma_mmap_writecombine(fbdev->dev, vma, ++ rg->vaddr, ++ rg->paddr, ++ rg->size); ++} ++ ++/* Store a single color palette entry into a pseudo palette or the hardware ++ * palette if one is available. For now we support only 16bpp and thus store ++ * the entry only to the pseudo palette. ++ */ ++static int _setcolreg(struct fb_info *fbi, u_int regno, u_int red, u_int green, ++ u_int blue, u_int transp, int update_hw_pal) ++{ ++ /*struct omapfb_info *ofbi = FB2OFB(fbi);*/ ++ /*struct omapfb2_device *fbdev = ofbi->fbdev;*/ ++ struct fb_var_screeninfo *var = &fbi->var; ++ int r = 0; ++ ++ enum omapfb_color_format mode = OMAPFB_COLOR_RGB24U; /* XXX */ ++ ++ /*switch (plane->color_mode) {*/ ++ switch (mode) { ++ case OMAPFB_COLOR_YUV422: ++ case OMAPFB_COLOR_YUV420: ++ case OMAPFB_COLOR_YUY422: ++ r = -EINVAL; ++ break; ++ case OMAPFB_COLOR_CLUT_8BPP: ++ case OMAPFB_COLOR_CLUT_4BPP: ++ case OMAPFB_COLOR_CLUT_2BPP: ++ case OMAPFB_COLOR_CLUT_1BPP: ++ /* ++ if (fbdev->ctrl->setcolreg) ++ r = fbdev->ctrl->setcolreg(regno, red, green, blue, ++ transp, update_hw_pal); ++ */ ++ /* Fallthrough */ ++ r = -EINVAL; ++ break; ++ case OMAPFB_COLOR_RGB565: ++ case OMAPFB_COLOR_RGB444: ++ case OMAPFB_COLOR_RGB24P: ++ case OMAPFB_COLOR_RGB24U: ++ if (r != 0) ++ break; ++ ++ if (regno < 0) { ++ r = -EINVAL; ++ break; ++ } ++ ++ if (regno < 16) { ++ u16 pal; ++ pal = ((red >> (16 - var->red.length)) << ++ var->red.offset) | ++ ((green >> (16 - var->green.length)) << ++ var->green.offset) | ++ (blue >> (16 - var->blue.length)); ++ ((u32 *)(fbi->pseudo_palette))[regno] = pal; ++ } ++ break; ++ default: ++ BUG(); ++ } ++ return r; ++} ++ ++static int omapfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, ++ u_int transp, struct fb_info *info) ++{ ++ DBG("setcolreg\n"); ++ ++ return _setcolreg(info, regno, red, green, blue, transp, 1); ++} ++ ++static int omapfb_setcmap(struct fb_cmap *cmap, struct fb_info *info) ++{ ++ int count, index, r; ++ u16 *red, *green, *blue, *transp; ++ u16 trans = 0xffff; ++ ++ DBG("setcmap\n"); ++ ++ red = cmap->red; ++ green = cmap->green; ++ blue = cmap->blue; ++ transp = cmap->transp; ++ index = cmap->start; ++ ++ for (count = 0; count < cmap->len; count++) { ++ if (transp) ++ trans = *transp++; ++ r = _setcolreg(info, index++, *red++, *green++, *blue++, trans, ++ count == cmap->len - 1); ++ if (r != 0) ++ return r; ++ } ++ ++ return 0; ++} ++ ++static int omapfb_blank(int blank, struct fb_info *fbi) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ int do_update = 0; ++ int r = 0; ++ ++ omapfb_lock(fbdev); ++ ++ switch (blank) { ++ case VESA_NO_BLANKING: ++ if (display->state != OMAP_DSS_DISPLAY_SUSPENDED) { ++ r = -EINVAL; ++ goto exit; ++ } ++ ++ if (display->resume) ++ r = display->resume(display); ++ ++ if (r == 0 && display->get_update_mode && ++ display->get_update_mode(display) == ++ OMAP_DSS_UPDATE_MANUAL) ++ do_update = 1; ++ ++ break; ++ ++ case VESA_POWERDOWN: ++ if (display->state != OMAP_DSS_DISPLAY_ACTIVE) { ++ r = -EINVAL; ++ goto exit; ++ } ++ ++ if (display->suspend) ++ r = display->suspend(display); ++ ++ break; ++ ++ default: ++ r = -EINVAL; ++ } ++ ++exit: ++ omapfb_unlock(fbdev); ++ ++ if (r == 0 && do_update && display->update) ++ r = display->update(display, ++ 0, 0, ++ display->x_res, display->y_res); ++ ++ return r; ++} ++ ++static struct fb_ops omapfb_ops = { ++ .owner = THIS_MODULE, ++ .fb_open = omapfb_open, ++ .fb_release = omapfb_release, ++ .fb_fillrect = cfb_fillrect, ++ .fb_copyarea = cfb_copyarea, ++ .fb_imageblit = cfb_imageblit, ++ .fb_blank = omapfb_blank, ++ .fb_ioctl = omapfb_ioctl, ++ .fb_check_var = omapfb_check_var, ++ .fb_set_par = omapfb_set_par, ++ .fb_rotate = omapfb_rotate, ++ .fb_pan_display = omapfb_pan_display, ++ .fb_mmap = omapfb_mmap, ++ .fb_setcolreg = omapfb_setcolreg, ++ .fb_setcmap = omapfb_setcmap, ++}; ++ ++static int omapfb_free_fbmem(struct omapfb2_device *fbdev) ++{ ++ int i; ++ ++ DBG("free fbmem\n"); ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]); ++ struct omapfb_mem_region *rg; ++ ++ rg = &ofbi->region; ++ ++ if (rg->alloc) { ++ dma_free_writecombine(fbdev->dev, rg->size, ++ rg->vaddr, rg->paddr); ++ } ++ ++ rg->vaddr = NULL; ++ rg->paddr = 0; ++ rg->alloc = 0; ++ } ++ ++ fbdev->num_fbs = 0; ++ ++ return 0; ++} ++ ++static int omapfb_allocate_fbmem(struct omapfb2_device *fbdev) ++{ ++ int i; ++ struct omapfb_mem_desc *plat_mem_desc; ++ struct omapfb_platform_data *pdata = fbdev->dev->platform_data; ++ ++ plat_mem_desc = &pdata->mem_desc; ++ ++ DBG("omapfb: setup mem regions, %d regions\n", ++ plat_mem_desc->region_cnt); ++ ++ for (i = 0; i < plat_mem_desc->region_cnt; i++) { ++ struct omapfb_mem_region *plat_rg; ++ struct omapfb_mem_region *rg; ++ struct omapfb_info *ofb_info = FB2OFB(fbdev->fbs[i]); ++ ++ plat_rg = &plat_mem_desc->region[i]; ++ rg = &ofb_info->region; ++ ++ memset(rg, 0, sizeof(*rg)); ++ ++ DBG("platform region%d phys %08x virt %p size=%lu\n", ++ i, ++ plat_rg->paddr, ++ plat_rg->vaddr, ++ plat_rg->size); ++ ++ if (plat_rg->paddr == 0) { ++ u32 paddr; ++ void *vaddr; ++ ++ vaddr = dma_alloc_writecombine(fbdev->dev, ++ plat_rg->size, ++ &paddr, GFP_KERNEL); ++ ++ if (vaddr == NULL) { ++ dev_err(fbdev->dev, ++ "failed to allocate framebuffer\n"); ++ return -ENOMEM; ++ } ++ ++ rg->paddr = paddr; ++ rg->vaddr = vaddr; ++ rg->size = plat_rg->size; ++ rg->alloc = 1; ++ } else { ++ dev_err(fbdev->dev, ++ "Using preallocated fb not supported\n"); ++ return -EINVAL; ++ } ++ } ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ struct omapfb_info *ofb_info = FB2OFB(fbdev->fbs[i]); ++ struct omapfb_mem_region *rg; ++ rg = &ofb_info->region; ++ ++ DBG("region%d phys %08x virt %p size=%lu\n", ++ i, ++ rg->paddr, ++ rg->vaddr, ++ rg->size); ++ } ++ ++ return 0; ++} ++ ++/* initialize fb_info, var, fix to something sane based on the display */ ++static int fbinfo_init(struct omapfb2_device *fbdev, struct fb_info *fbi) ++{ ++ struct fb_var_screeninfo *var = &fbi->var; ++ struct fb_fix_screeninfo *fix = &fbi->fix; ++ struct omap_display *display = fb2display(fbi); ++ int r = 0; ++ ++ if (!display) { ++ dev_err(fbdev->dev, "cannot fbinfo_init, no display\n"); ++ return -EINVAL; ++ } ++ ++ fbi->fbops = &omapfb_ops; ++ fbi->flags = FBINFO_FLAG_DEFAULT; ++ fbi->pseudo_palette = fbdev->pseudo_palette; ++ ++ strncpy(fix->id, MODULE_NAME, sizeof(fix->id)); ++ ++ var->xres = display->x_res; ++ var->yres = display->y_res; ++ var->xres_virtual = var->xres; ++ var->yres_virtual = var->yres; ++ /* var->rotate = def_rotate; */ ++ ++ var->nonstd = 0; ++ ++ switch (display->bpp) { ++ case 16: ++ var->bits_per_pixel = 16; ++ break; ++ case 18: ++ var->bits_per_pixel = 16; ++ break; ++ case 24: ++ var->bits_per_pixel = 32; ++ break; ++ default: ++ dev_err(fbdev->dev, "illegal display bpp\n"); ++ return -EINVAL; ++ } ++ ++ if (display->get_timings) { ++ struct omap_video_timings timings; ++ display->get_timings(display, &timings); ++ ++ /* pixclock in ps, the rest in pixclock */ ++ var->pixclock = KHZ2PICOS(timings.pixel_clock); ++ var->left_margin = timings.hfp; ++ var->right_margin = timings.hbp; ++ var->upper_margin = timings.vfp; ++ var->lower_margin = timings.vbp; ++ var->hsync_len = timings.hsw; ++ var->vsync_len = timings.vsw; ++ } else { ++ var->pixclock = 0; ++ var->left_margin = 0; ++ var->right_margin = 0; ++ var->upper_margin = 0; ++ var->lower_margin = 0; ++ var->hsync_len = 0; ++ var->vsync_len = 0; ++ } ++ ++ r = check_fb_var(fbi, var); ++ if (r) ++ goto err; ++ ++ set_fb_fix(fbi); ++ ++#ifdef DEBUG ++ fill_fb(FB2OFB(fbi)->region.vaddr, fbi); ++#endif ++err: ++ return r; ++} ++ ++static void fbinfo_cleanup(struct omapfb2_device *fbdev, struct fb_info *fbi) ++{ ++ fb_dealloc_cmap(&fbi->cmap); ++} ++ ++ ++static void omapfb_free_resources(struct omapfb2_device *fbdev) ++{ ++ int i; ++ ++ DBG("free_resources\n"); ++ ++ if (fbdev == NULL) ++ return; ++ ++ for (i = 0; i < fbdev->num_fbs; i++) ++ unregister_framebuffer(fbdev->fbs[i]); ++ ++ /* free the reserved fbmem */ ++ omapfb_free_fbmem(fbdev); ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ fbinfo_cleanup(fbdev, fbdev->fbs[i]); ++ framebuffer_release(fbdev->fbs[i]); ++ } ++ ++ ++ for (i = 0; i < fbdev->num_displays; i++) { ++ if (fbdev->displays[i]->state != OMAP_DSS_DISPLAY_DISABLED) ++ fbdev->displays[i]->disable(fbdev->displays[i]); ++ ++ omap_dss_put_display(fbdev->displays[i]); ++ } ++ ++ dev_set_drvdata(fbdev->dev, NULL); ++ kfree(fbdev); ++} ++ ++static int omapfb_create_framebuffers(struct omapfb2_device *fbdev) ++{ ++ int r; ++ int i; ++ struct omapfb_mem_desc *plat_mem_desc; ++ struct omapfb_platform_data *pdata = fbdev->dev->platform_data; ++ ++ plat_mem_desc = &pdata->mem_desc; ++ ++ fbdev->num_fbs = 0; ++ ++ DBG("create %d framebuffers\n", plat_mem_desc->region_cnt); ++ ++ /* allocate fb_infos */ ++ for (i = 0; i < plat_mem_desc->region_cnt; i++) { ++ struct fb_info *fbi; ++ struct omapfb_info *ofbi; ++ ++ fbi = framebuffer_alloc(sizeof(struct omapfb_info), ++ fbdev->dev); ++ ++ if (fbi == NULL) { ++ dev_err(fbdev->dev, ++ "unable to allocate memory for plane info\n"); ++ return -ENOMEM; ++ } ++ ++ fbdev->fbs[i] = fbi; ++ ++ ofbi = FB2OFB(fbi); ++ ofbi->fbdev = fbdev; ++ /* XXX here we presume we have enough overlays */ ++ ofbi->overlays[0] = fbdev->overlays[i]; ++ ofbi->num_overlays = 1; ++ ofbi->id = i; ++ fbdev->num_fbs++; ++ } ++ ++ DBG("fb_infos allocated\n"); ++ ++ /* allocate fb memories */ ++ r = omapfb_allocate_fbmem(fbdev); ++ if (r) { ++ dev_err(fbdev->dev, "failed to allocate fbmem\n"); ++ return r; ++ } ++ ++ DBG("fbmems allocated\n"); ++ ++ /* setup fb_infos */ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ r = fbinfo_init(fbdev, fbdev->fbs[i]); ++ if (r) { ++ dev_err(fbdev->dev, "failed to setup fb_info\n"); ++ return r; ++ } ++ } ++ ++ DBG("fb_infos initialized\n"); ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ r = register_framebuffer(fbdev->fbs[i]); ++ if (r != 0) { ++ dev_err(fbdev->dev, ++ "registering framebuffer %d failed\n", i); ++ return r; ++ } ++ } ++ ++ DBG("framebuffers registered\n"); ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ r = omapfb_apply_changes(fbdev->fbs[i], 1); ++ if (r) ++ dev_err(fbdev->dev, "failed to change mode\n"); ++ } ++ ++ /* Enable the first framebuffer that has overlay that is connected ++ * to display. Usually this would be the GFX plane. */ ++ r = 0; ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]); ++ int t; ++ ++ for (t = 0; t < ofbi->num_overlays; t++) { ++ struct omap_overlay *ovl = ofbi->overlays[t]; ++ if (ovl->manager && ovl->manager->display) { ++ ovl->enable(ovl, 1); ++ r = 1; ++ break; ++ } ++ } ++ ++ if (r) ++ break; ++ } ++ ++ DBG("create_framebuffers done\n"); ++ ++ return 0; ++} ++ ++static int omapfb_probe(struct platform_device *pdev) ++{ ++ struct omapfb2_device *fbdev = NULL; ++ int r = 0; ++ int i, t; ++ struct omap_overlay *ovl; ++ struct omap_display *def_display; ++ ++ DBG("omapfb_probe\n"); ++ ++ if (pdev->num_resources != 0) { ++ dev_err(&pdev->dev, "probed for an unknown device\n"); ++ r = -ENODEV; ++ goto err0; ++ } ++ ++ if (pdev->dev.platform_data == NULL) { ++ dev_err(&pdev->dev, "missing platform data\n"); ++ r = -ENOENT; ++ goto err0; ++ } ++ ++ fbdev = kzalloc(sizeof(struct omapfb2_device), GFP_KERNEL); ++ if (fbdev == NULL) { ++ r = -ENOMEM; ++ goto err0; ++ } ++ ++ mutex_init(&fbdev->mtx); ++ ++ fbdev->dev = &pdev->dev; ++ platform_set_drvdata(pdev, fbdev); ++ ++ fbdev->num_displays = 0; ++ t = omap_dss_get_num_displays(); ++ for (i = 0; i < t; i++) { ++ struct omap_display *display; ++ display = omap_dss_get_display(i); ++ if (!display) { ++ dev_err(&pdev->dev, "can't get display %d\n", i); ++ r = -EINVAL; ++ goto cleanup; ++ } ++ ++ fbdev->displays[fbdev->num_displays++] = display; ++ } ++ ++ if (fbdev->num_displays == 0) { ++ dev_err(&pdev->dev, "no displays\n"); ++ r = -EINVAL; ++ goto cleanup; ++ } ++ ++ fbdev->num_overlays = omap_dss_get_num_overlays(); ++ for (i = 0; i < fbdev->num_overlays; i++) ++ fbdev->overlays[i] = omap_dss_get_overlay(i); ++ ++ fbdev->num_managers = omap_dss_get_num_overlay_managers(); ++ for (i = 0; i < fbdev->num_managers; i++) ++ fbdev->managers[i] = omap_dss_get_overlay_manager(i); ++ ++ ++ /* gfx overlay should be the default one. find a display ++ * connected to that, and use it as default display */ ++ ovl = omap_dss_get_overlay(0); ++ if (ovl->manager && ovl->manager->display) { ++ def_display = ovl->manager->display; ++ } else { ++ dev_err(&pdev->dev, "cannot find default display\n"); ++ r = -EINVAL; ++ goto cleanup; ++ } ++ ++ r = omapfb_create_framebuffers(fbdev); ++ if (r) ++ goto cleanup; ++ ++ for (i = 0; i < fbdev->num_managers; i++) { ++ struct omap_overlay_manager *mgr; ++ mgr = fbdev->managers[i]; ++ r = mgr->apply(mgr); ++ if (r) { ++ dev_err(fbdev->dev, "failed to apply dispc config\n"); ++ goto cleanup; ++ } ++ } ++ ++ DBG("mgr->apply'ed\n"); ++ ++ r = def_display->enable(def_display); ++ if (r) { ++ dev_err(fbdev->dev, "Failed to enable display '%s'\n", ++ def_display->name); ++ goto cleanup; ++ } ++ ++ /* set the update mode */ ++ if (def_display->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) { ++#ifdef CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE ++ if (def_display->set_update_mode) ++ def_display->set_update_mode(def_display, ++ OMAP_DSS_UPDATE_AUTO); ++ if (def_display->enable_te) ++ def_display->enable_te(def_display, 1); ++#else ++ if (def_display->set_update_mode) ++ def_display->set_update_mode(def_display, ++ OMAP_DSS_UPDATE_MANUAL); ++ if (def_display->enable_te) ++ def_display->enable_te(def_display, 0); ++#endif ++ } else { ++ if (def_display->set_update_mode) ++ def_display->set_update_mode(def_display, ++ OMAP_DSS_UPDATE_AUTO); ++ } ++ ++ for (i = 0; i < fbdev->num_displays; i++) { ++ struct omap_display *display = fbdev->displays[i]; ++ ++ if (display->update) ++ display->update(display, ++ 0, 0, ++ display->x_res, display->y_res); ++ } ++ ++ DBG("display->updated\n"); ++ ++ omapfb_create_sysfs(fbdev); ++ DBG("sysfs created\n"); ++ ++ return 0; ++ ++cleanup: ++ omapfb_free_resources(fbdev); ++err0: ++ dev_err(&pdev->dev, "failed to setup omapfb\n"); ++ return r; ++} ++ ++static int omapfb_remove(struct platform_device *pdev) ++{ ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ ++ /* FIXME: wait till completion of pending events */ ++ ++ omapfb_remove_sysfs(fbdev); ++ ++ omapfb_free_resources(fbdev); ++ ++ return 0; ++} ++ ++static struct platform_driver omapfb_driver = { ++ .probe = omapfb_probe, ++ .remove = omapfb_remove, ++ .driver = { ++ .name = "omapfb", ++ .owner = THIS_MODULE, ++ }, ++}; ++ ++static int __init omapfb_init(void) ++{ ++ DBG("omapfb_init\n"); ++ ++ if (platform_driver_register(&omapfb_driver)) { ++ printk(KERN_ERR "failed to register omapfb driver\n"); ++ return -ENODEV; ++ } ++ ++ return 0; ++} ++ ++static void __exit omapfb_exit(void) ++{ ++ DBG("omapfb_exit\n"); ++ platform_driver_unregister(&omapfb_driver); ++} ++ ++/* late_initcall to let panel/ctrl drivers loaded first. ++ * I guess better option would be a more dynamic approach, ++ * so that omapfb reacts to new panels when they are loaded */ ++late_initcall(omapfb_init); ++/*module_init(omapfb_init);*/ ++module_exit(omapfb_exit); ++ ++MODULE_AUTHOR("Tomi Valkeinen "); ++MODULE_DESCRIPTION("OMAP2/3 Framebuffer"); ++MODULE_LICENSE("GPL v2"); +diff --git a/drivers/video/omap2/omapfb-sysfs.c b/drivers/video/omap2/omapfb-sysfs.c +new file mode 100644 +index 0000000..e01edd1 +--- /dev/null ++++ b/drivers/video/omap2/omapfb-sysfs.c +@@ -0,0 +1,833 @@ ++/* ++ * linux/drivers/video/omap2/omapfb-sysfs.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "omapfb.h" ++ ++static int omapfb_attach_framebuffer(struct fb_info *fbi, ++ struct omap_overlay *ovl) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ int i, t; ++ int r; ++ ++ if (ofbi->num_overlays >= OMAPFB_MAX_OVL_PER_FB) { ++ dev_err(fbdev->dev, "fb has max number of overlays already\n"); ++ return -EINVAL; ++ } ++ ++ for (i = 0; i < ofbi->num_overlays; i++) { ++ if (ofbi->overlays[i] == ovl) { ++ dev_err(fbdev->dev, "fb already attached to overlay\n"); ++ return -EINVAL; ++ } ++ } ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ struct omapfb_info *ofbi2 = FB2OFB(fbdev->fbs[i]); ++ for (t = 0; t < ofbi2->num_overlays; t++) { ++ if (ofbi2->overlays[t] == ovl) { ++ dev_err(fbdev->dev, "overlay already in use\n"); ++ return -EINVAL; ++ } ++ } ++ } ++ ++ ofbi->overlays[ofbi->num_overlays++] = ovl; ++ ++/* ++ if (ovl->manager && ovl->manager->display) ++ omapfb_adjust_fb(fbi, ovl, 0, 0); ++*/ ++ r = omapfb_apply_changes(fbi, 1); ++ if (r) ++ return r; ++ ++ if (ovl->manager) ++ ovl->manager->apply(ovl->manager); ++ ++ return 0; ++} ++ ++static int omapfb_detach_framebuffer(struct fb_info *fbi, ++ struct omap_overlay *ovl) ++{ ++ int i; ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ ++ for (i = 0; i < ofbi->num_overlays; i++) { ++ if (ofbi->overlays[i] == ovl) ++ break; ++ } ++ ++ if (i == ofbi->num_overlays) { ++ dev_err(fbdev->dev, "cannot detach fb, overlay not attached\n"); ++ return -EINVAL; ++ } ++ ++ ovl->enable(ovl, 0); ++ ++ if (ovl->manager) ++ ovl->manager->apply(ovl->manager); ++ ++ for (i = i + 1; i < ofbi->num_overlays; i++) ++ ofbi->overlays[i-1] = ofbi->overlays[i]; ++ ++ ofbi->num_overlays--; ++ ++ return 0; ++} ++ ++ ++static ssize_t show_framebuffers(struct device *dev, ++ struct device_attribute *attr, ++ char *buf) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ ssize_t l = 0, size = PAGE_SIZE; ++ int i, t; ++ ++ omapfb_lock(fbdev); ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]); ++ ++ l += snprintf(buf + l, size - l, "%d t:", ofbi->id); ++ ++ if (ofbi->num_overlays == 0) ++ l += snprintf(buf + l, size - l, "none"); ++ ++ for (t = 0; t < ofbi->num_overlays; t++) { ++ struct omap_overlay *ovl; ++ ovl = ofbi->overlays[t]; ++ ++ l += snprintf(buf + l, size - l, "%s%s", ++ t == 0 ? "" : ",", ++ ovl->name); ++ } ++ ++ l += snprintf(buf + l, size - l, "\n"); ++ } ++ ++ omapfb_unlock(fbdev); ++ ++ return l; ++} ++ ++static struct omap_overlay *find_overlay_by_name(struct omapfb2_device *fbdev, ++ char *name) ++{ ++ int i; ++ ++ for (i = 0; i < fbdev->num_overlays; i++) ++ if (strcmp(name, fbdev->overlays[i]->name) == 0) ++ return fbdev->overlays[i]; ++ ++ return NULL; ++} ++ ++static struct omap_display *find_display_by_name(struct omapfb2_device *fbdev, ++ char *name) ++{ ++ int i; ++ ++ for (i = 0; i < fbdev->num_displays; i++) ++ if (strcmp(name, fbdev->displays[i]->name) == 0) ++ return fbdev->displays[i]; ++ ++ return NULL; ++} ++ ++static struct omap_overlay_manager *find_manager_by_name( ++ struct omapfb2_device *fbdev, ++ char *name) ++{ ++ int i; ++ ++ for (i = 0; i < fbdev->num_managers; i++) ++ if (strcmp(name, fbdev->managers[i]->name) == 0) ++ return fbdev->managers[i]; ++ ++ return NULL; ++} ++ ++static int parse_overlays(struct omapfb2_device *fbdev, char *str, ++ struct omap_overlay *ovls[]) ++{ ++ int num_ovls = 0; ++ int s, e = 0; ++ char ovlname[10]; ++ ++ while (1) { ++ struct omap_overlay *ovl; ++ ++ s = e; ++ ++ while (e < strlen(str) && str[e] != ',') ++ e++; ++ ++ strncpy(ovlname, str + s, e - s); ++ ovlname[e-s] = 0; ++ ++ DBG("searching for '%s'\n", ovlname); ++ ovl = find_overlay_by_name(fbdev, ovlname); ++ ++ if (ovl) { ++ DBG("found an overlay\n"); ++ ovls[num_ovls] = ovl; ++ num_ovls++; ++ } else { ++ DBG("unknown overlay %s\n", str); ++ return 0; ++ } ++ ++ if (e == strlen(str)) ++ break; ++ ++ e++; ++ } ++ ++ return num_ovls; ++} ++ ++static ssize_t store_framebuffers(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ int idx; ++ char fbname[3]; ++ unsigned long fbnum; ++ char ovlnames[40]; ++ int num_ovls = 0; ++ struct omap_overlay *ovls[OMAPFB_MAX_OVL_PER_FB]; ++ struct fb_info *fbi; ++ struct omapfb_info *ofbi; ++ int r, i; ++ ++ idx = 0; ++ while (idx < count && buf[idx] != ' ') ++ ++idx; ++ ++ if (idx == count) ++ return -EINVAL; ++ ++ if (idx >= sizeof(fbname)) ++ return -EINVAL; ++ ++ strncpy(fbname, buf, idx); ++ fbname[idx] = 0; ++ idx++; ++ ++ if (strict_strtoul(fbname, 10, &fbnum)) ++ return -EINVAL; ++ ++ r = sscanf(buf + idx, "t:%39s", ovlnames); ++ ++ if (r != 1) { ++ r = -EINVAL; ++ goto err; ++ } ++ ++ omapfb_lock(fbdev); ++ ++ if (fbnum >= fbdev->num_fbs) { ++ dev_err(dev, "fb not found\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ fbi = fbdev->fbs[fbnum]; ++ ofbi = FB2OFB(fbi); ++ ++ if (strcmp(ovlnames, "none") == 0) { ++ num_ovls = 0; ++ } else { ++ num_ovls = parse_overlays(fbdev, ovlnames, ovls); ++ ++ if (num_ovls == 0) { ++ dev_err(dev, "overlays not found\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ } ++ ++ for (i = 0; i < ofbi->num_overlays; i++) { ++ r = omapfb_detach_framebuffer(fbi, ofbi->overlays[i]); ++ if (r) { ++ dev_err(dev, "detach failed\n"); ++ goto err; ++ } ++ } ++ ++ if (num_ovls > 0) { ++ for (i = 0; i < num_ovls; i++) { ++ r = omapfb_attach_framebuffer(fbi, ovls[i]); ++ if (r) { ++ dev_err(dev, "attach failed\n"); ++ goto err; ++ } ++ } ++ } ++ ++ omapfb_unlock(fbdev); ++ return count; ++ ++err: ++ omapfb_unlock(fbdev); ++ return r; ++} ++ ++static ssize_t show_overlays(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ ssize_t l = 0, size = PAGE_SIZE; ++ int i, mgr_num; ++ ++ omapfb_lock(fbdev); ++ ++ for (i = 0; i < fbdev->num_overlays; i++) { ++ struct omap_overlay *ovl; ++ struct omap_overlay_manager *mgr; ++ ++ ovl = fbdev->overlays[i]; ++ mgr = ovl->manager; ++ ++ for (mgr_num = 0; mgr_num < fbdev->num_managers; mgr_num++) ++ if (fbdev->managers[mgr_num] == mgr) ++ break; ++ ++ l += snprintf(buf + l, size - l, ++ "%s t:%s x:%d y:%d iw:%d ih:%d w: %d h: %d e:%d\n", ++ ovl->name, ++ mgr ? mgr->name : "none", ++ ovl->info.pos_x, ++ ovl->info.pos_y, ++ ovl->info.width, ++ ovl->info.height, ++ ovl->info.out_width, ++ ovl->info.out_height, ++ ovl->info.enabled); ++ } ++ ++ omapfb_unlock(fbdev); ++ ++ return l; ++} ++ ++static ssize_t store_overlays(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ int idx; ++ struct omap_overlay *ovl = NULL; ++ struct omap_overlay_manager *mgr; ++ int r; ++ char ovlname[10]; ++ int posx, posy, outw, outh; ++ int enabled; ++ ++ idx = 0; ++ while (idx < count && buf[idx] != ' ') ++ ++idx; ++ ++ if (idx == count) ++ return -EINVAL; ++ ++ if (idx >= sizeof(ovlname)) ++ return -EINVAL; ++ ++ strncpy(ovlname, buf, idx); ++ ovlname[idx] = 0; ++ idx++; ++ ++ omapfb_lock(fbdev); ++ ++ ovl = find_overlay_by_name(fbdev, ovlname); ++ ++ if (!ovl) { ++ dev_err(dev, "ovl not found\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ DBG("ovl %s found\n", ovl->name); ++ ++ mgr = ovl->manager; ++ ++ posx = ovl->info.pos_x; ++ posy = ovl->info.pos_y; ++ outw = ovl->info.out_width; ++ outh = ovl->info.out_height; ++ enabled = ovl->info.enabled; ++ ++ while (idx < count) { ++ char c; ++ int val; ++ int len; ++ char sval[10]; ++ ++ r = sscanf(buf + idx, "%c:%d%n", &c, &val, &len); ++ ++ if (r != 2) { ++ val = 0; ++ ++ r = sscanf(buf + idx, "%c:%9s%n", &c, sval, &len); ++ ++ if (r != 2) { ++ dev_err(dev, "sscanf failed, aborting\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ } else { ++ sval[0] = 0; ++ } ++ ++ switch (c) { ++ case 't': ++ if (strcmp(sval, "none") == 0) { ++ mgr = NULL; ++ } else { ++ mgr = find_manager_by_name(fbdev, sval); ++ ++ if (mgr == NULL) { ++ dev_err(dev, "no such manager\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ DBG("manager %s found\n", mgr->name); ++ } ++ ++ break; ++ ++ case 'x': ++ posx = val; ++ break; ++ ++ case 'y': ++ posy = val; ++ break; ++ ++ case 'w': ++ if (ovl->caps & OMAP_DSS_OVL_CAP_SCALE) ++ outw = val; ++ break; ++ ++ case 'h': ++ if (ovl->caps & OMAP_DSS_OVL_CAP_SCALE) ++ outh = val; ++ break; ++ ++ case 'e': ++ enabled = val; ++ break; ++ ++ default: ++ dev_err(dev, "unknown option %c\n", c); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ idx += len + 1; ++ } ++ ++ r = ovl->setup_output(ovl, posx, posy, outw, outh); ++ ++ if (r) { ++ dev_err(dev, "setup overlay failed\n"); ++ goto err; ++ } ++ ++ if (mgr != ovl->manager) { ++ /* detach old manager */ ++ if (ovl->manager) { ++ r = ovl->unset_manager(ovl); ++ if (r) { ++ dev_err(dev, "detach failed\n"); ++ goto err; ++ } ++ } ++ ++ if (mgr) { ++ r = ovl->set_manager(ovl, mgr); ++ if (r) { ++ dev_err(dev, "Failed to attach overlay\n"); ++ goto err; ++ } ++ } ++ } ++ ++ r = ovl->enable(ovl, enabled); ++ ++ if (r) { ++ dev_err(dev, "enable overlay failed\n"); ++ goto err; ++ } ++ ++ if (mgr) { ++ r = mgr->apply(mgr); ++ if (r) { ++ dev_err(dev, "failed to apply dispc config\n"); ++ goto err; ++ } ++ } else { ++ ovl->enable(ovl, 0); ++ } ++ ++ if (mgr && mgr->display && mgr->display->update) ++ mgr->display->update(mgr->display, ++ 0, 0, ++ mgr->display->x_res, mgr->display->y_res); ++ ++ omapfb_unlock(fbdev); ++ return count; ++ ++err: ++ omapfb_unlock(fbdev); ++ return r; ++} ++ ++static ssize_t show_managers(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ ssize_t l = 0, size = PAGE_SIZE; ++ int i; ++ ++ omapfb_lock(fbdev); ++ ++ for (i = 0; i < fbdev->num_managers; i++) { ++ struct omap_display *display; ++ struct omap_overlay_manager *mgr; ++ ++ mgr = fbdev->managers[i]; ++ display = mgr->display; ++ ++ l += snprintf(buf + l, size - l, "%s t:%s\n", ++ mgr->name, display ? display->name : "none"); ++ } ++ ++ omapfb_unlock(fbdev); ++ ++ return l; ++} ++ ++static ssize_t store_managers(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ int idx; ++ struct omap_overlay_manager *mgr; ++ struct omap_display *display; ++ char mgrname[10]; ++ char displayname[10]; ++ int r; ++ ++ idx = 0; ++ while (idx < count && buf[idx] != ' ') ++ ++idx; ++ ++ if (idx == count) ++ return -EINVAL; ++ ++ if (idx >= sizeof(mgrname)) ++ return -EINVAL; ++ ++ strncpy(mgrname, buf, idx); ++ mgrname[idx] = 0; ++ idx++; ++ ++ omapfb_lock(fbdev); ++ ++ mgr = find_manager_by_name(fbdev, mgrname); ++ ++ if (!mgr) { ++ dev_err(dev, "manager not found\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ r = sscanf(buf + idx, "t:%9s", displayname); ++ ++ if (r != 1) { ++ r = -EINVAL; ++ goto err; ++ } ++ ++ if (strcmp(displayname, "none") == 0) { ++ display = NULL; ++ } else { ++ display = find_display_by_name(fbdev, displayname); ++ ++ if (!display) { ++ dev_err(dev, "display not found\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ } ++ ++ if (mgr->display) { ++ r = mgr->unset_display(mgr); ++ if (r) { ++ dev_err(dev, "failed to unset display\n"); ++ goto err; ++ } ++ } ++ ++ if (display) { ++ r = mgr->set_display(mgr, display); ++ if (r) { ++ dev_err(dev, "failed to set manager\n"); ++ goto err; ++ } ++ ++ r = mgr->apply(mgr); ++ if (r) { ++ dev_err(dev, "failed to apply dispc config\n"); ++ goto err; ++ } ++ } ++ ++ omapfb_unlock(fbdev); ++ return count; ++ ++err: ++ omapfb_unlock(fbdev); ++ return r; ++} ++ ++static ssize_t show_displays(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ ssize_t l = 0, size = PAGE_SIZE; ++ int i; ++ ++ omapfb_lock(fbdev); ++ ++ for (i = 0; i < fbdev->num_displays; i++) { ++ struct omap_display *display; ++ enum omap_dss_update_mode mode = -1; ++ int te = 0; ++ ++ display = fbdev->displays[i]; ++ ++ if (display->get_update_mode) ++ mode = display->get_update_mode(display); ++ ++ if (display->get_te) ++ te = display->get_te(display); ++ ++ l += snprintf(buf + l, size - l, ++ "%s w:%d h:%d e:%d u:%d t:%d\n", ++ display->name, ++ display->x_res, ++ display->y_res, ++ display->state != OMAP_DSS_DISPLAY_DISABLED, ++ mode, te); ++ } ++ ++ omapfb_unlock(fbdev); ++ ++ return l; ++} ++ ++static ssize_t store_displays(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ int idx; ++ int enable, width, height; ++ enum omap_dss_update_mode mode; ++ struct omap_display *display = NULL; ++ int r; ++ char displayname[10]; ++ int te; ++ ++ idx = 0; ++ while (idx < count && buf[idx] != ' ') ++ ++idx; ++ ++ if (idx == count) ++ return -EINVAL; ++ ++ if (idx >= sizeof(displayname)) ++ return -EINVAL; ++ ++ strncpy(displayname, buf, idx); ++ displayname[idx] = 0; ++ idx++; ++ ++ omapfb_lock(fbdev); ++ ++ display = find_display_by_name(fbdev, displayname); ++ ++ if (!display) { ++ dev_err(dev, "display not found\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ width = display->x_res; ++ height = display->y_res; ++ enable = display->state != OMAP_DSS_DISPLAY_DISABLED; ++ if (display->get_update_mode) ++ mode = display->get_update_mode(display); ++ else ++ mode = 0; ++ ++ if (display->get_te) ++ te = display->get_te(display); ++ else ++ te = 0; ++ ++ while (idx < count) { ++ char c; ++ int val; ++ int len; ++ ++ r = sscanf(buf + idx, "%c:%d%n", &c, &val, &len); ++ ++ if (r != 2) { ++ dev_err(dev, "sscanf failed, aborting\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ switch (c) { ++ case 'w': ++ width = val; ++ break; ++ ++ case 'h': ++ height = val; ++ break; ++ ++ case 'e': ++ enable = val; ++ break; ++ ++ case 'u': ++ mode = val; ++ break; ++ ++ case 't': ++ te = val; ++ break; ++ ++ default: ++ dev_err(dev, "unknown option %c\n", c); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ idx += len + 1; ++ } ++ ++ /* XXX: setmode */ ++ if (enable != (display->state != OMAP_DSS_DISPLAY_DISABLED)) { ++ if (enable) { ++ r = display->enable(display); ++ if (r) ++ dev_err(dev, "failed to enable display\n"); ++ } else { ++ display->disable(display); ++ } ++ } ++ ++ if (display->set_update_mode && display->get_update_mode) { ++ if (mode != display->get_update_mode(display)) ++ display->set_update_mode(display, mode); ++ } ++ ++ if (display->enable_te && display->get_te) { ++ if (te != display->get_te(display)) ++ display->enable_te(display, te); ++ } ++ ++ omapfb_unlock(fbdev); ++ return count; ++ ++err: ++ omapfb_unlock(fbdev); ++ return r; ++} ++ ++ ++static DEVICE_ATTR(framebuffers, S_IRUGO | S_IWUSR, ++ show_framebuffers, store_framebuffers); ++static DEVICE_ATTR(overlays, S_IRUGO | S_IWUSR, ++ show_overlays, store_overlays); ++static DEVICE_ATTR(managers, S_IRUGO | S_IWUSR, ++ show_managers, store_managers); ++static DEVICE_ATTR(displays, S_IRUGO | S_IWUSR, ++ show_displays, store_displays); ++ ++static struct attribute *omapfb_attrs[] = { ++ &dev_attr_framebuffers.attr, ++ &dev_attr_overlays.attr, ++ &dev_attr_managers.attr, ++ &dev_attr_displays.attr, ++ NULL, ++}; ++ ++static struct attribute_group omapfb_attr_group = { ++ .attrs = omapfb_attrs, ++}; ++ ++void omapfb_create_sysfs(struct omapfb2_device *fbdev) ++{ ++ int r; ++ ++ r = sysfs_create_group(&fbdev->dev->kobj, &omapfb_attr_group); ++ if (r) ++ dev_err(fbdev->dev, "failed to create sysfs clk file\n"); ++} ++ ++void omapfb_remove_sysfs(struct omapfb2_device *fbdev) ++{ ++ sysfs_remove_group(&fbdev->dev->kobj, &omapfb_attr_group); ++} ++ +diff --git a/drivers/video/omap2/omapfb.h b/drivers/video/omap2/omapfb.h +new file mode 100644 +index 0000000..04ca444 +--- /dev/null ++++ b/drivers/video/omap2/omapfb.h +@@ -0,0 +1,104 @@ ++/* ++ * linux/drivers/video/omap2/omapfb.h ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#ifndef __DRIVERS_VIDEO_OMAP2_OMAPFB_H__ ++#define __DRIVERS_VIDEO_OMAP2_OMAPFB_H__ ++ ++#ifdef CONFIG_FB_OMAP2_DEBUG ++#define DEBUG ++#endif ++ ++#ifdef DEBUG ++#define DBG(format, ...) printk(KERN_DEBUG "OMAPFB: " format, ## __VA_ARGS__) ++#else ++#define DBG(format, ...) ++#endif ++ ++#define FB2OFB(fb_info) ((struct omapfb_info *)(fb_info->par)) ++ ++/* max number of overlays to which a framebuffer data can be direct */ ++#define OMAPFB_MAX_OVL_PER_FB 3 ++ ++/* appended to fb_info */ ++struct omapfb_info { ++ int id; ++ struct omapfb_mem_region region; ++ int num_overlays; ++ struct omap_overlay *overlays[OMAPFB_MAX_OVL_PER_FB]; ++ struct omapfb2_device *fbdev; ++}; ++ ++struct omapfb2_device { ++ struct device *dev; ++ struct mutex mtx; ++ ++ u32 pseudo_palette[17]; ++ ++ int state; ++ ++ int num_fbs; ++ struct fb_info *fbs[10]; ++ ++ int num_displays; ++ struct omap_display *displays[10]; ++ int num_overlays; ++ struct omap_overlay *overlays[10]; ++ int num_managers; ++ struct omap_overlay_manager *managers[10]; ++}; ++ ++int omapfb_apply_changes(struct fb_info *fbi, int init); ++int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl, ++ int posx, int posy, int outw, int outh); ++ ++void omapfb_create_sysfs(struct omapfb2_device *fbdev); ++void omapfb_remove_sysfs(struct omapfb2_device *fbdev); ++ ++int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg); ++ ++/* find the display connected to this fb, if any */ ++static inline struct omap_display *fb2display(struct fb_info *fbi) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ int i; ++ ++ /* XXX: returns the display connected to first attached overlay */ ++ for (i = 0; i < ofbi->num_overlays; i++) { ++ if (ofbi->overlays[i]->manager) ++ return ofbi->overlays[i]->manager->display; ++ } ++ ++ return NULL; ++} ++ ++static inline void omapfb_lock(struct omapfb2_device *fbdev) ++{ ++ mutex_lock(&fbdev->mtx); ++} ++ ++static inline void omapfb_unlock(struct omapfb2_device *fbdev) ++{ ++ mutex_unlock(&fbdev->mtx); ++} ++ ++ ++#endif +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0009-DSS-Add-generic-DVI-panel.patch b/packages/linux/linux-omap/0009-DSS-Add-generic-DVI-panel.patch new file mode 100644 index 0000000000..26a7999abe --- /dev/null +++ b/packages/linux/linux-omap/0009-DSS-Add-generic-DVI-panel.patch @@ -0,0 +1,189 @@ +From e62e58fbb6adfb288da56c949bdb6211c695a263 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Mon, 20 Oct 2008 13:12:33 +0300 +Subject: [PATCH] DSS: Add generic DVI panel + +For some reason we can't allocate enough mem for 1280x1024x24bpp, even if +there should be enough continuous mem. So 1280x1024 mode defaults to +16bpp for now. + +You also need DSI PLL to generate pix clock for 1280x1024. + +Signed-off-by: Tomi Valkeinen +--- + drivers/video/omap2/Kconfig | 20 +++++++ + drivers/video/omap2/Makefile | 2 + + drivers/video/omap2/panel-dvi.c | 121 +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 143 insertions(+), 0 deletions(-) + create mode 100644 drivers/video/omap2/panel-dvi.c + +diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig +index 4b72479..4584e1b 100644 +--- a/drivers/video/omap2/Kconfig ++++ b/drivers/video/omap2/Kconfig +@@ -24,6 +24,26 @@ config FB_OMAP2_FORCE_AUTO_UPDATE + menu "OMAP2/3 Display Device Drivers" + depends on OMAP2_DSS + ++config PANEL_DVI ++ tristate "DVI Panel" ++ help ++ DVI output, for Beagle and OMAP3 SDP ++ ++choice ++ prompt "Default DVI Mode" ++ depends on PANEL_DVI ++ default PANEL_DVI_HIGHRES ++ ++config PANEL_DVI_LOWRES ++ bool "800 x 600 @ 60" ++ ++config PANEL_DVI_HIGHRES ++ bool "1024 x 768 @ 60" ++ ++config PANEL_DVI_VERYHIGHRES ++ bool "1280 x 1024 @ 57" ++ ++endchoice + + endmenu + +diff --git a/drivers/video/omap2/Makefile b/drivers/video/omap2/Makefile +index 51c2e00..7c75340 100644 +--- a/drivers/video/omap2/Makefile ++++ b/drivers/video/omap2/Makefile +@@ -1,2 +1,4 @@ + obj-$(CONFIG_FB_OMAP2) += omapfb.o + omapfb-y := omapfb-main.o omapfb-sysfs.o omapfb-ioctl.o ++ ++obj-$(CONFIG_PANEL_DVI) += panel-dvi.o +diff --git a/drivers/video/omap2/panel-dvi.c b/drivers/video/omap2/panel-dvi.c +new file mode 100644 +index 0000000..2d053df +--- /dev/null ++++ b/drivers/video/omap2/panel-dvi.c +@@ -0,0 +1,121 @@ ++/* ++ * DVI panel support ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++ ++#include ++ ++static int dvi_panel_init(struct omap_display *display) ++{ ++ return 0; ++} ++ ++static int dvi_panel_enable(struct omap_display *display) ++{ ++ int r = 0; ++ ++ if (display->hw_config.panel_enable) ++ r = display->hw_config.panel_enable(display); ++ ++ return r; ++} ++ ++static void dvi_panel_disable(struct omap_display *display) ++{ ++ if (display->hw_config.panel_disable) ++ display->hw_config.panel_disable(display); ++} ++ ++static struct omap_panel dvi_panel = { ++ .owner = THIS_MODULE, ++ .name = "panel-dvi", ++ .init = dvi_panel_init, ++ /*.remove = dvi_cleanup, */ ++ .enable = dvi_panel_enable, ++ .disable = dvi_panel_disable, ++ /*.set_mode = dvi_set_mode, */ ++ ++#if defined(CONFIG_PANEL_DVI_LOWRES) ++ .timings = { ++ /* 800 x 600 @ 60 Hz Reduced blanking VESA CVT 0.48M3-R */ ++ .pixel_clock = 35500, ++ .hfp = 48, ++ .hsw = 32, ++ .hbp = 80, ++ .vfp = 3, ++ .vsw = 4, ++ .vbp = 11, ++ }, ++ ++ .x_res = 800, ++ .y_res = 600, ++ .bpp = 24, ++#elif defined(CONFIG_PANEL_DVI_HIGHRES) ++ .timings = { ++ /* 1024 x 768 @ 60 Hz Reduced blanking */ ++ .pixel_clock = 56000, ++ .hfp = 48, ++ .hsw = 32, ++ .hbp = 80, ++ .vfp = 3, ++ .vsw = 4, ++ .vbp = 15, ++ }, ++ ++ .x_res = 1024, ++ .y_res = 768, ++ .bpp = 24, ++#elif defined(CONFIG_PANEL_DVI_VERYHIGHRES) ++ .timings = { ++ /* 1280 x 1024 @ 57 Hz Reduced blanking */ ++ .pixel_clock = 86500, ++ .hfp = 48, ++ .hsw = 32, ++ .hbp = 80, ++ .vfp = 3, ++ .vsw = 4, ++ .vbp = 15, ++ }, ++ ++ .x_res = 1280, ++ .y_res = 1024, ++ .bpp = 16, ++#else ++#error Undefined default mode ++#endif ++ ++ .config = OMAP_DSS_LCD_TFT, ++}; ++ ++ ++static int __init dvi_panel_drv_init(void) ++{ ++ omap_dss_register_panel(&dvi_panel); ++ return 0; ++} ++ ++static void __exit dvi_panel_drv_exit(void) ++{ ++ omap_dss_unregister_panel(&dvi_panel); ++} ++ ++module_init(dvi_panel_drv_init); ++module_exit(dvi_panel_drv_exit); ++MODULE_LICENSE("GPL"); +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0010-DSS-support-for-Beagle-Board.patch b/packages/linux/linux-omap/0010-DSS-support-for-Beagle-Board.patch new file mode 100644 index 0000000000..ee93a32dde --- /dev/null +++ b/packages/linux/linux-omap/0010-DSS-support-for-Beagle-Board.patch @@ -0,0 +1,182 @@ +From 25b99d79100db8142de061954704fdabd76672d2 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Mon, 29 Sep 2008 17:03:36 +0300 +Subject: [PATCH] DSS: support for Beagle Board + +Signed-off-by: Tomi Valkeinen +--- + arch/arm/mach-omap2/board-omap3beagle.c | 121 +++++++++++++++++++++++++++---- + 1 files changed, 108 insertions(+), 13 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index ce6c7b4..a6fe63d 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -42,6 +42,8 @@ + #include + #include + #include ++#include ++#include + + #include "twl4030-generic-scripts.h" + +@@ -186,15 +188,6 @@ static void __init omap3_beagle_init_irq(void) + omap_gpio_init(); + } + +-static struct platform_device omap3_beagle_lcd_device = { +- .name = "omap3beagle_lcd", +- .id = -1, +-}; +- +-static struct omap_lcd_config omap3_beagle_lcd_config __initdata = { +- .ctrl_name = "internal", +-}; +- + static struct gpio_led gpio_leds[] = { + { + .name = "beagleboard::usr0", +@@ -248,13 +241,114 @@ static struct platform_device keys_gpio = { + }, + }; + ++/* DSS */ ++ ++static int beagle_enable_dvi(struct omap_display *display) ++{ ++ if (display->hw_config.panel_reset_gpio != -1) ++ gpio_direction_output(display->hw_config.panel_reset_gpio, 1); ++ ++ return 0; ++} ++ ++static void beagle_disable_dvi(struct omap_display *display) ++{ ++ if (display->hw_config.panel_reset_gpio != -1) ++ gpio_direction_output(display->hw_config.panel_reset_gpio, 0); ++} ++ ++static struct omap_display_data beagle_display_data_dvi = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "dvi", ++ .panel_name = "panel-dvi", ++ .u.dpi.data_lines = 24, ++ .panel_reset_gpio = 170, ++ .panel_enable = beagle_enable_dvi, ++ .panel_disable = beagle_disable_dvi, ++}; ++ ++ ++static int panel_enable_tv(struct omap_display *display) ++{ ++#define ENABLE_VDAC_DEDICATED 0x03 ++#define ENABLE_VDAC_DEV_GRP 0x20 ++ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEDICATED, ++ TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); ++ ++ return 0; ++} ++ ++static void panel_disable_tv(struct omap_display *display) ++{ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEV_GRP); ++} ++ ++static struct omap_display_data beagle_display_data_tv = { ++ .type = OMAP_DISPLAY_TYPE_VENC, ++ .name = "tv", ++ .u.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, ++ .panel_enable = panel_enable_tv, ++ .panel_disable = panel_disable_tv, ++}; ++ ++static struct omap_dss_platform_data beagle_dss_data = { ++ .num_displays = 2, ++ .displays = { ++ &beagle_display_data_dvi, ++ &beagle_display_data_tv, ++ } ++}; ++ ++static struct platform_device beagle_dss_device = { ++ .name = "omap-dss", ++ .id = -1, ++ .dev = { ++ .platform_data = &beagle_dss_data, ++ }, ++}; ++ ++static void __init beagle_display_init(void) ++{ ++ int r; ++ ++ r = gpio_request(beagle_display_data_dvi.panel_reset_gpio, "DVI reset GPIO"); ++ if(r < 0) { ++ printk(KERN_ERR "Unable to get DVI reset GPIO\n"); ++ } ++} ++ ++static struct omap_fbmem_config beagle_fbmem0_config = { ++ .size = 1024*768*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++ ++static struct omap_fbmem_config beagle_fbmem1_config = { ++ .size = 1024*768*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++ ++static struct omap_fbmem_config beagle_fbmem2_config = { ++ .size = 1024*768*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++ ++ + static struct omap_board_config_kernel omap3_beagle_config[] __initdata = { + { OMAP_TAG_UART, &omap3_beagle_uart_config }, +- { OMAP_TAG_LCD, &omap3_beagle_lcd_config }, ++ { OMAP_TAG_FBMEM, &beagle_fbmem0_config }, ++ { OMAP_TAG_FBMEM, &beagle_fbmem1_config }, ++ { OMAP_TAG_FBMEM, &beagle_fbmem2_config }, + }; + + static struct platform_device *omap3_beagle_devices[] __initdata = { +- &omap3_beagle_lcd_device, ++ &beagle_dss_device, + &leds_gpio, + &keys_gpio, + }; +@@ -302,8 +396,6 @@ static void __init omap3_beagle_init(void) + omap3_beagle_i2c_init(); + platform_add_devices(omap3_beagle_devices, + ARRAY_SIZE(omap3_beagle_devices)); +- omap_board_config = omap3_beagle_config; +- omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); + omap_serial_init(); + + omap_cfg_reg(AH8_34XX_GPIO29); +@@ -319,10 +411,13 @@ static void __init omap3_beagle_init(void) + usb_musb_init(); + usb_ehci_init(); + omap3beagle_flash_init(); ++ beagle_display_init(); + } + + static void __init omap3_beagle_map_io(void) + { ++ omap_board_config = omap3_beagle_config; ++ omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); + omap2_set_globals_343x(); + omap2_map_common_io(); + } +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0011-DSS-support-for-OMAP3-SDP-board.patch b/packages/linux/linux-omap/0011-DSS-support-for-OMAP3-SDP-board.patch new file mode 100644 index 0000000000..1e23a192b1 --- /dev/null +++ b/packages/linux/linux-omap/0011-DSS-support-for-OMAP3-SDP-board.patch @@ -0,0 +1,441 @@ +From 69302d06679f25f940f5ee3cb8c51c1becf46e52 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Mon, 20 Oct 2008 13:13:15 +0300 +Subject: [PATCH] DSS: support for OMAP3 SDP board + +Signed-off-by: Tomi Valkeinen +--- + arch/arm/mach-omap2/board-3430sdp.c | 234 +++++++++++++++++++++++++++++++++-- + drivers/video/omap2/Kconfig | 7 +- + drivers/video/omap2/Makefile | 1 + + drivers/video/omap2/panel-sdp3430.c | 110 ++++++++++++++++ + 4 files changed, 340 insertions(+), 12 deletions(-) + create mode 100644 drivers/video/omap2/panel-sdp3430.c + +diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c +index 8773698..b910bc6 100644 +--- a/arch/arm/mach-omap2/board-3430sdp.c ++++ b/arch/arm/mach-omap2/board-3430sdp.c +@@ -40,6 +40,8 @@ + #include + #include + #include ++#include ++#include + + #include + #include +@@ -239,14 +241,224 @@ static struct spi_board_info sdp3430_spi_board_info[] __initdata = { + }, + }; + +-static struct platform_device sdp3430_lcd_device = { +- .name = "sdp2430_lcd", +- .id = -1, ++static struct omap_fbmem_config sdp3430_fbmem0_config = { ++ .size = 1024*768*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++ ++static struct omap_fbmem_config sdp3430_fbmem1_config = { ++ .size = 640*480*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, + }; + ++static struct omap_fbmem_config sdp3430_fbmem2_config = { ++ .size = 640*480*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++ ++ ++#define SDP2430_LCD_PANEL_BACKLIGHT_GPIO 91 ++#define SDP2430_LCD_PANEL_ENABLE_GPIO 154 ++#define SDP3430_LCD_PANEL_BACKLIGHT_GPIO 24 ++#define SDP3430_LCD_PANEL_ENABLE_GPIO 28 ++ ++#define PM_RECEIVER TWL4030_MODULE_PM_RECEIVER ++#define ENABLE_VAUX2_DEDICATED 0x09 ++#define ENABLE_VAUX2_DEV_GRP 0x20 ++#define ENABLE_VAUX3_DEDICATED 0x03 ++#define ENABLE_VAUX3_DEV_GRP 0x20 ++ ++#define ENABLE_VPLL2_DEDICATED 0x05 ++#define ENABLE_VPLL2_DEV_GRP 0xE0 ++#define TWL4030_VPLL2_DEV_GRP 0x33 ++#define TWL4030_VPLL2_DEDICATED 0x36 ++ ++#define t2_out(c, r, v) twl4030_i2c_write_u8(c, r, v) ++ ++static unsigned backlight_gpio; ++static unsigned enable_gpio; ++static int lcd_enabled; ++static int dvi_enabled; ++ ++static void __init display_init(void) ++{ ++ int r; ++ ++ enable_gpio = SDP3430_LCD_PANEL_ENABLE_GPIO; ++ backlight_gpio = SDP3430_LCD_PANEL_BACKLIGHT_GPIO; ++ ++ r = gpio_request(enable_gpio, "OMAP SDP LCD Reset GPIO"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD reset GPIO\n"); ++ goto err0; ++ } ++ ++ r = gpio_request(backlight_gpio, "OMAP SDP LCD Backlight GPIO"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD backlight GPIO\n"); ++ goto err1; ++ } ++ ++ gpio_direction_output(enable_gpio, 0); ++ gpio_direction_output(backlight_gpio, 0); ++ ++ return; ++err1: ++ gpio_free(enable_gpio); ++err0: ++ return; ++} ++ ++ ++static int panel_enable_lcd(struct omap_display *display) ++{ ++ u8 ded_val, ded_reg; ++ u8 grp_val, grp_reg; ++ ++ if (dvi_enabled) { ++ printk(KERN_ERR "cannot enable LCD, DVI is enabled\n"); ++ return -EINVAL; ++ } ++ ++ if (system_rev > OMAP3430_REV_ES1_0) { ++ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEDICATED, ++ TWL4030_VPLL2_DEDICATED); ++ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEV_GRP, ++ TWL4030_VPLL2_DEV_GRP); ++ } ++ ++ ded_reg = TWL4030_VAUX3_DEDICATED; ++ ded_val = ENABLE_VAUX3_DEDICATED; ++ grp_reg = TWL4030_VAUX3_DEV_GRP; ++ grp_val = ENABLE_VAUX3_DEV_GRP; ++ ++ gpio_direction_output(enable_gpio, 1); ++ gpio_direction_output(backlight_gpio, 1); ++ ++ if (0 != t2_out(PM_RECEIVER, ded_val, ded_reg)) ++ return -EIO; ++ if (0 != t2_out(PM_RECEIVER, grp_val, grp_reg)) ++ return -EIO; ++ ++ lcd_enabled = 1; ++ ++ return 0; ++} ++ ++static void panel_disable_lcd(struct omap_display *display) ++{ ++ lcd_enabled = 0; ++ ++ gpio_direction_output(enable_gpio, 0); ++ gpio_direction_output(backlight_gpio, 0); ++ ++ if (system_rev > OMAP3430_REV_ES1_0) { ++ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEDICATED); ++ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEV_GRP); ++ mdelay(4); ++ } ++} ++ ++static struct omap_display_data sdp_display_data = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "lcd", ++ .panel_name = "panel-sdp3430", ++ .u.dpi.data_lines = 16, ++ .panel_enable = panel_enable_lcd, ++ .panel_disable = panel_disable_lcd, ++}; ++ ++static int panel_enable_dvi(struct omap_display *display) ++{ ++ if (lcd_enabled) { ++ printk(KERN_ERR "cannot enable DVI, LCD is enabled\n"); ++ return -EINVAL; ++ } ++ ++ if (system_rev > OMAP3430_REV_ES1_0) { ++ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEDICATED, ++ TWL4030_VPLL2_DEDICATED); ++ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEV_GRP, ++ TWL4030_VPLL2_DEV_GRP); ++ } ++ ++ dvi_enabled = 1; ++ ++ return 0; ++} ++ ++static void panel_disable_dvi(struct omap_display *display) ++{ ++ dvi_enabled = 0; ++ ++ if (system_rev > OMAP3430_REV_ES1_0) { ++ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEDICATED); ++ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEV_GRP); ++ mdelay(4); ++ } ++} ++ ++ ++static struct omap_display_data sdp_display_data_dvi = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "dvi", ++ .panel_name = "panel-dvi", ++ .u.dpi.data_lines = 24, ++ .panel_enable = panel_enable_dvi, ++ .panel_disable = panel_disable_dvi, ++}; ++ ++static int panel_enable_tv(struct omap_display *display) ++{ ++#define ENABLE_VDAC_DEDICATED 0x03 ++#define ENABLE_VDAC_DEV_GRP 0x20 ++ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEDICATED, ++ TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); ++ ++ return 0; ++} ++ ++static void panel_disable_tv(struct omap_display *display) ++{ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEV_GRP); ++} ++ ++static struct omap_display_data sdp_display_data_tv = { ++ .type = OMAP_DISPLAY_TYPE_VENC, ++ .name = "tv", ++ .u.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, ++ .panel_enable = panel_enable_tv, ++ .panel_disable = panel_disable_tv, ++}; ++ ++static struct omap_dss_platform_data sdp3430_dss_data = { ++ .num_displays = 3, ++ .displays = { ++ &sdp_display_data, ++ &sdp_display_data_dvi, ++ &sdp_display_data_tv, ++ } ++}; ++ ++static struct platform_device sdp3430_dss_device = { ++ .name = "omap-dss", ++ .id = -1, ++ .dev = { ++ .platform_data = &sdp3430_dss_data, ++ }, ++}; ++ ++ + static struct platform_device *sdp3430_devices[] __initdata = { + &sdp3430_smc91x_device, +- &sdp3430_lcd_device, ++ &sdp3430_dss_device, + }; + + static inline void __init sdp3430_init_smc91x(void) +@@ -293,13 +505,11 @@ static struct omap_uart_config sdp3430_uart_config __initdata = { + .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)), + }; + +-static struct omap_lcd_config sdp3430_lcd_config __initdata = { +- .ctrl_name = "internal", +-}; +- + static struct omap_board_config_kernel sdp3430_config[] __initdata = { + { OMAP_TAG_UART, &sdp3430_uart_config }, +- { OMAP_TAG_LCD, &sdp3430_lcd_config }, ++ { OMAP_TAG_FBMEM, &sdp3430_fbmem0_config }, ++ { OMAP_TAG_FBMEM, &sdp3430_fbmem1_config }, ++ { OMAP_TAG_FBMEM, &sdp3430_fbmem2_config }, + }; + + static int sdp3430_batt_table[] = { +@@ -450,8 +660,6 @@ static void __init omap_3430sdp_init(void) + { + omap3430_i2c_init(); + platform_add_devices(sdp3430_devices, ARRAY_SIZE(sdp3430_devices)); +- omap_board_config = sdp3430_config; +- omap_board_config_size = ARRAY_SIZE(sdp3430_config); + if (system_rev > OMAP3430_REV_ES1_0) + ts_gpio = OMAP34XX_TS_GPIO_IRQ_SDPV2; + else +@@ -466,10 +674,14 @@ static void __init omap_3430sdp_init(void) + usb_musb_init(); + usb_ehci_init(); + hsmmc_init(); ++ display_init(); + } + + static void __init omap_3430sdp_map_io(void) + { ++ omap_board_config = sdp3430_config; ++ omap_board_config_size = ARRAY_SIZE(sdp3430_config); ++ + omap2_set_globals_343x(); + omap2_map_common_io(); + } +diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig +index 4584e1b..95691ad 100644 +--- a/drivers/video/omap2/Kconfig ++++ b/drivers/video/omap2/Kconfig +@@ -45,5 +45,10 @@ config PANEL_DVI_VERYHIGHRES + + endchoice + +-endmenu ++config PANEL_SDP3430 ++ tristate "SDP3430 Panel" ++ depends on OMAP2_DSS ++ help ++ SDP3430 LCD + ++endmenu +diff --git a/drivers/video/omap2/Makefile b/drivers/video/omap2/Makefile +index 7c75340..73ab1c0 100644 +--- a/drivers/video/omap2/Makefile ++++ b/drivers/video/omap2/Makefile +@@ -2,3 +2,4 @@ obj-$(CONFIG_FB_OMAP2) += omapfb.o + omapfb-y := omapfb-main.o omapfb-sysfs.o omapfb-ioctl.o + + obj-$(CONFIG_PANEL_DVI) += panel-dvi.o ++obj-$(CONFIG_PANEL_SDP3430) += panel-sdp3430.o +diff --git a/drivers/video/omap2/panel-sdp3430.c b/drivers/video/omap2/panel-sdp3430.c +new file mode 100644 +index 0000000..40fe6f2 +--- /dev/null ++++ b/drivers/video/omap2/panel-sdp3430.c +@@ -0,0 +1,110 @@ ++/* ++ * LCD panel support for the TI 3430SDP board ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Derived from drivers/video/omap/lcd_2430sdp.c ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++ ++#include ++ ++static int sdp3430_panel_init(struct omap_display *display) ++{ ++ return 0; ++} ++ ++static void sdp3430_panel_cleanup(struct omap_display *display) ++{ ++} ++ ++static int sdp3430_panel_enable(struct omap_display *display) ++{ ++ int r = 0; ++ ++ if (display->hw_config.panel_enable) ++ r = display->hw_config.panel_enable(display); ++ ++ return r; ++} ++ ++static void sdp3430_panel_disable(struct omap_display *display) ++{ ++ if (display->hw_config.panel_disable) ++ display->hw_config.panel_disable(display); ++} ++ ++static int sdp3430_panel_suspend(struct omap_display *display) ++{ ++ sdp3430_panel_disable(display); ++ return 0; ++} ++ ++static int sdp3430_panel_resume(struct omap_display *display) ++{ ++ return sdp3430_panel_enable(display); ++} ++ ++static struct omap_panel sdp3430_panel = { ++ .owner = THIS_MODULE, ++ .name = "panel-sdp3430", ++ .init = sdp3430_panel_init, ++ .cleanup = sdp3430_panel_cleanup, ++ .enable = sdp3430_panel_enable, ++ .disable = sdp3430_panel_disable, ++ .suspend = sdp3430_panel_suspend, ++ .resume = sdp3430_panel_resume, ++ /*.set_mode = sdp3430_set_mode, */ ++ ++ .timings = { ++ .pixel_clock = 19200, ++ ++ .hsw = 4, ++ .hfp = 4, ++ .hbp = 40, ++ ++ .vsw = 2, ++ .vfp = 1, ++ .vbp = 1, ++ }, ++ ++ .acb = 0x28, ++ ++ .config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | ++ OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC, ++ ++ .x_res = 480, ++ .y_res = 640, ++ .bpp = 16, ++}; ++ ++ ++static int __init sdp3430_panel_drv_init(void) ++{ ++ omap_dss_register_panel(&sdp3430_panel); ++ return 0; ++} ++ ++static void __exit sdp3430_panel_drv_exit(void) ++{ ++ omap_dss_unregister_panel(&sdp3430_panel); ++} ++ ++module_init(sdp3430_panel_drv_init); ++module_exit(sdp3430_panel_drv_exit); ++MODULE_LICENSE("GPL"); +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/beagleboard/defconfig b/packages/linux/linux-omap/beagleboard/defconfig index 1344060446..56dea7e122 100644 --- a/packages/linux/linux-omap/beagleboard/defconfig +++ b/packages/linux/linux-omap/beagleboard/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.27-omap1 -# Sun Oct 26 10:27:59 2008 +# Linux kernel version: 2.6.28-rc3-omap1 +# Sat Nov 8 08:59:05 2008 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -22,9 +22,8 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y # CONFIG_ARCH_HAS_ILOG2_U64 is not set CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_ARCH_SUPPORTS_AOUT=y -CONFIG_ZONE_DMA=y CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y +CONFIG_OPROFILE_ARMV7=y CONFIG_VECTORS_BASE=0xffff0000 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" @@ -80,6 +79,7 @@ CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y +CONFIG_AIO=y CONFIG_VM_EVENT_COUNTERS=y CONFIG_SLAB=y # CONFIG_SLUB is not set @@ -89,15 +89,9 @@ CONFIG_PROFILING=y CONFIG_OPROFILE=y CONFIG_HAVE_OPROFILE=y # CONFIG_KPROBES is not set -# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set -# CONFIG_HAVE_IOREMAP_PROT is not set CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y -# CONFIG_HAVE_ARCH_TRACEHOOK is not set -# CONFIG_HAVE_DMA_ATTRS is not set -# CONFIG_USE_GENERIC_SMP_HELPERS is not set CONFIG_HAVE_CLK=y -CONFIG_PROC_PAGE_MONITOR=y CONFIG_HAVE_GENERIC_DMA_COHERENT=y CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y @@ -130,6 +124,7 @@ CONFIG_DEFAULT_CFQ=y # CONFIG_DEFAULT_NOOP is not set CONFIG_DEFAULT_IOSCHED="cfq" CONFIG_CLASSIC_RCU=y +CONFIG_FREEZER=y # # System Type @@ -170,7 +165,7 @@ CONFIG_CLASSIC_RCU=y # CONFIG_ARCH_LH7A40X is not set # CONFIG_ARCH_DAVINCI is not set CONFIG_ARCH_OMAP=y -# CONFIG_ARCH_MSM7X00A is not set +# CONFIG_ARCH_MSM is not set # # TI OMAP Implementations @@ -203,6 +198,14 @@ CONFIG_OMAP_DM_TIMER=y # CONFIG_OMAP_LL_DEBUG_UART1 is not set # CONFIG_OMAP_LL_DEBUG_UART2 is not set CONFIG_OMAP_LL_DEBUG_UART3=y +CONFIG_OMAP2_DSS=y +CONFIG_OMAP2_DSS_DEBUG=y +# CONFIG_OMAP2_DSS_RFBI is not set +CONFIG_OMAP2_DSS_VENC=y +# CONFIG_OMAP2_DSS_SDI is not set +# CONFIG_OMAP2_DSS_DSI is not set +# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set +CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=4 CONFIG_ARCH_OMAP34XX=y CONFIG_ARCH_OMAP3430=y @@ -267,26 +270,30 @@ CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 # CONFIG_PREEMPT is not set CONFIG_HZ=128 CONFIG_AEABI=y # CONFIG_OABI_COMPAT is not set CONFIG_ARCH_FLATMEM_HAS_HOLES=y -# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y # CONFIG_DISCONTIGMEM_MANUAL is not set # CONFIG_SPARSEMEM_MANUAL is not set CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y -# CONFIG_SPARSEMEM_STATIC is not set -# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4 # CONFIG_RESOURCES_64BIT is not set -CONFIG_ZONE_DMA_FLAG=1 -CONFIG_BOUNCE=y +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 CONFIG_VIRT_TO_BUS=y +CONFIG_UNEVICTABLE_LRU=y CONFIG_LEDS=y CONFIG_ALIGNMENT_TRAP=y @@ -301,7 +308,7 @@ CONFIG_KEXEC=y CONFIG_ATAGS_PROC=y # -# CPU Frequency scaling +# CPU Power Management # CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_TABLE=y @@ -318,6 +325,7 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +# CONFIG_CPU_IDLE is not set # # Floating point emulation @@ -335,6 +343,8 @@ CONFIG_NEON=y # Userspace binary formats # CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_MISC=y @@ -342,9 +352,12 @@ CONFIG_BINFMT_MISC=y # Power management options # CONFIG_PM=y -# CONFIG_PM_DEBUG is not set +CONFIG_PM_DEBUG=y +# CONFIG_PM_VERBOSE is not set +CONFIG_CAN_PM_TRACE=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y +# CONFIG_PM_TEST_SUSPEND is not set CONFIG_SUSPEND_FREEZER=y # CONFIG_APM_EMULATION is not set CONFIG_ARCH_SUSPEND_POSSIBLE=y @@ -416,6 +429,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y # CONFIG_TIPC is not set # CONFIG_ATM is not set # CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set # CONFIG_VLAN_8021Q is not set # CONFIG_DECNET is not set # CONFIG_LLC2 is not set @@ -459,12 +473,11 @@ CONFIG_BT_HCIBPA10X=y # CONFIG_BT_HCIH4P is not set # CONFIG_BT_HCIVHCI is not set # CONFIG_AF_RXRPC is not set - -# -# Wireless -# +# CONFIG_PHONET is not set +CONFIG_WIRELESS=y CONFIG_CFG80211=y CONFIG_NL80211=y +CONFIG_WIRELESS_OLD_REGULATORY=y CONFIG_WIRELESS_EXT=y CONFIG_WIRELESS_EXT_SYSFS=y CONFIG_MAC80211=y @@ -473,10 +486,13 @@ CONFIG_MAC80211=y # Rate control algorithm selection # CONFIG_MAC80211_RC_PID=y +# CONFIG_MAC80211_RC_MINSTREL is not set CONFIG_MAC80211_RC_DEFAULT_PID=y +# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set CONFIG_MAC80211_RC_DEFAULT="pid" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUGFS is not set # CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=y # CONFIG_IEEE80211_DEBUG is not set @@ -570,6 +586,7 @@ CONFIG_MTD_NAND=y # CONFIG_MTD_NAND_VERIFY_WRITE is not set # CONFIG_MTD_NAND_ECC_SMC is not set # CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_GPIO is not set CONFIG_MTD_NAND_OMAP2=y CONFIG_MTD_NAND_IDS=y # CONFIG_MTD_NAND_DISKONCHIP is not set @@ -686,6 +703,7 @@ CONFIG_LIBERTAS=m CONFIG_LIBERTAS_USB=m # CONFIG_LIBERTAS_SDIO is not set # CONFIG_LIBERTAS_DEBUG is not set +# CONFIG_LIBERTAS_THINFIRM is not set CONFIG_USB_ZD1201=m CONFIG_USB_NET_RNDIS_WLAN=m CONFIG_RTL8187=m @@ -701,14 +719,13 @@ CONFIG_HOSTAP_FIRMWARE_NVRAM=y CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y CONFIG_RT2X00_LIB_LEDS=y -CONFIG_RT2500USB=m -CONFIG_RT2500USB_LEDS=y -CONFIG_RT73USB=m -CONFIG_RT73USB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -722,6 +739,7 @@ CONFIG_USB_USBNET=y CONFIG_USB_NET_AX8817X=y CONFIG_USB_NET_CDCETHER=y CONFIG_USB_NET_DM9601=m +# CONFIG_USB_NET_SMSC95XX is not set CONFIG_USB_NET_GL620A=m CONFIG_USB_NET_NET1080=m CONFIG_USB_NET_PLUSB=m @@ -790,6 +808,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y CONFIG_MOUSE_PS2_SYNAPTICS=y CONFIG_MOUSE_PS2_LIFEBOOK=y CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_PS2_ELANTECH is not set # CONFIG_MOUSE_PS2_TOUCHKIT is not set # CONFIG_MOUSE_SERIAL is not set # CONFIG_MOUSE_APPLETOUCH is not set @@ -984,6 +1003,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_LM90 is not set # CONFIG_SENSORS_LM92 is not set # CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_MAX1111 is not set # CONFIG_SENSORS_MAX1619 is not set # CONFIG_SENSORS_MAX6650 is not set # CONFIG_SENSORS_PC87360 is not set @@ -1006,6 +1026,8 @@ CONFIG_HWMON=y # CONFIG_SENSORS_TSC210X is not set CONFIG_SENSORS_OMAP34XX=y # CONFIG_HWMON_DEBUG_CHIP is not set +# CONFIG_THERMAL is not set +# CONFIG_THERMAL_HWMON is not set CONFIG_WATCHDOG=y CONFIG_WATCHDOG_NOWAYOUT=y @@ -1040,6 +1062,9 @@ CONFIG_TWL4030_POWER=y # CONFIG_MFD_T7L66XB is not set # CONFIG_MFD_TC6387XB is not set # CONFIG_MFD_TC6393XB is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM8350_I2C is not set # # Multimedia devices @@ -1081,6 +1106,7 @@ CONFIG_VIDEO_TVEEPROM=m CONFIG_VIDEO_TUNER=m CONFIG_VIDEO_CAPTURE_DRIVERS=y # CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set CONFIG_VIDEO_HELPER_CHIPS_AUTO=y CONFIG_VIDEO_MSP3400=m CONFIG_VIDEO_CS53L32A=m @@ -1093,8 +1119,8 @@ CONFIG_VIDEO_CX2341X=m # CONFIG_VIDEO_CPIA2 is not set # CONFIG_VIDEO_SAA5246A is not set # CONFIG_VIDEO_SAA5249 is not set -# CONFIG_TUNER_3036 is not set # CONFIG_VIDEO_AU0828 is not set +# CONFIG_SOC_CAMERA is not set CONFIG_V4L_USB_DRIVERS=y CONFIG_USB_VIDEO_CLASS=m CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y @@ -1123,12 +1149,10 @@ CONFIG_USB_PWC=m CONFIG_USB_ZR364XX=m # CONFIG_USB_STKWEBCAM is not set # CONFIG_USB_S2255 is not set -# CONFIG_SOC_CAMERA is not set -# CONFIG_VIDEO_SH_MOBILE_CEU is not set CONFIG_RADIO_ADAPTERS=y -# CONFIG_RADIO_TEA5761 is not set # CONFIG_USB_DSBR is not set # CONFIG_USB_SI470X is not set +# CONFIG_USB_MR800 is not set CONFIG_DVB_CAPTURE_DRIVERS=y # CONFIG_TTPCI_EEPROM is not set @@ -1158,11 +1182,12 @@ CONFIG_DVB_USB_OPERA1=m CONFIG_DVB_USB_AF9005=m CONFIG_DVB_USB_AF9005_REMOTE=m # CONFIG_DVB_USB_DW2102 is not set +# CONFIG_DVB_USB_CINERGY_T2 is not set # CONFIG_DVB_USB_ANYSEE is not set +# CONFIG_DVB_USB_DTV5100 is not set +# CONFIG_DVB_USB_AF9015 is not set CONFIG_DVB_TTUSB_BUDGET=m CONFIG_DVB_TTUSB_DEC=m -CONFIG_DVB_CINERGYT2=m -# CONFIG_DVB_CINERGYT2_TUNING is not set # CONFIG_DVB_SIANO_SMS1XXX is not set # @@ -1186,6 +1211,8 @@ CONFIG_DVB_CX24110=m CONFIG_DVB_CX24123=m CONFIG_DVB_MT312=m CONFIG_DVB_S5H1420=m +# CONFIG_DVB_STV0288 is not set +# CONFIG_DVB_STB6000 is not set CONFIG_DVB_STV0299=m CONFIG_DVB_TDA8083=m CONFIG_DVB_TDA10086=m @@ -1193,6 +1220,8 @@ CONFIG_DVB_VES1X93=m CONFIG_DVB_TUNER_ITD1000=m CONFIG_DVB_TDA826X=m CONFIG_DVB_TUA6100=m +# CONFIG_DVB_CX24116 is not set +# CONFIG_DVB_SI21XX is not set # # DVB-T (terrestrial) frontends @@ -1245,6 +1274,13 @@ CONFIG_DVB_TUNER_DIB0070=m CONFIG_DVB_LNBP21=m # CONFIG_DVB_ISL6405 is not set CONFIG_DVB_ISL6421=m +# CONFIG_DVB_LGS8GL5 is not set + +# +# Tools to develop new frontends +# +# CONFIG_DVB_DUMMY_FE is not set +# CONFIG_DVB_AF9013 is not set # CONFIG_DAB is not set # @@ -1255,6 +1291,7 @@ CONFIG_DVB_ISL6421=m CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set # CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y @@ -1275,11 +1312,19 @@ CONFIG_FB_CFB_IMAGEBLIT=y # # CONFIG_FB_S1D13XXX is not set # CONFIG_FB_VIRTUAL is not set -CONFIG_FB_OMAP=y -CONFIG_FB_OMAP_VIDEO_MODE="1024x768@60" -# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set -# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set -CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=8 +# CONFIG_FB_METRONOME is not set +CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=14 +CONFIG_FB_OMAP2=y +CONFIG_FB_OMAP2_DEBUG=y +# CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE is not set + +# +# OMAP2/3 Display Device Drivers +# +CONFIG_PANEL_DVI=y +# CONFIG_PANEL_DVI_LOWRES is not set +CONFIG_PANEL_DVI_HIGHRES=y +# CONFIG_PANEL_DVI_VERYHIGHRES is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # @@ -1307,6 +1352,7 @@ CONFIG_LOGO_LINUX_MONO=y CONFIG_LOGO_LINUX_VGA16=y CONFIG_LOGO_LINUX_CLUT224=y CONFIG_SOUND=y +CONFIG_SOUND_OSS_CORE=y CONFIG_SND=y CONFIG_SND_TIMER=y CONFIG_SND_PCM=y @@ -1331,11 +1377,6 @@ CONFIG_SND_DRIVERS=y # CONFIG_SND_SERIAL_U16550 is not set # CONFIG_SND_MPU401 is not set CONFIG_SND_ARM=y -# CONFIG_SND_OMAP_AIC23 is not set -# CONFIG_SND_OMAP_TSC2101 is not set -# CONFIG_SND_SX1 is not set -# CONFIG_SND_OMAP_TSC2102 is not set -# CONFIG_SND_OMAP24XX_EAC is not set CONFIG_SND_SPI=y CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=y @@ -1343,9 +1384,7 @@ CONFIG_SND_USB_CAIAQ=m CONFIG_SND_USB_CAIAQ_INPUT=y CONFIG_SND_SOC=y CONFIG_SND_OMAP_SOC=y -CONFIG_SND_OMAP_SOC_MCBSP=y -CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=y -CONFIG_SND_SOC_TWL4030=y +# CONFIG_SND_SOC_ALL_CODECS is not set # CONFIG_SOUND_PRIME is not set CONFIG_HID_SUPPORT=y CONFIG_HID=y @@ -1356,9 +1395,36 @@ CONFIG_HID_DEBUG=y # USB Input Devices # CONFIG_USB_HID=y -# CONFIG_USB_HIDINPUT_POWERBOOK is not set -# CONFIG_HID_FF is not set +# CONFIG_HID_PID is not set # CONFIG_USB_HIDDEV is not set + +# +# Special HID drivers +# +CONFIG_HID_COMPAT=y +CONFIG_HID_A4TECH=y +CONFIG_HID_APPLE=y +CONFIG_HID_BELKIN=y +CONFIG_HID_BRIGHT=y +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +CONFIG_HID_CYPRESS=y +CONFIG_HID_DELL=y +CONFIG_HID_EZKEY=y +CONFIG_HID_GYRATION=y +CONFIG_HID_LOGITECH=y +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +CONFIG_HID_PANTHERLORD=y +# CONFIG_PANTHERLORD_FF is not set +CONFIG_HID_PETALYNX=y +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +CONFIG_HID_SUNPLUS=y +# CONFIG_THRUSTMASTER_FF is not set +# CONFIG_ZEROPLUS_FF is not set CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y @@ -1378,6 +1444,8 @@ CONFIG_USB_SUSPEND=y # CONFIG_USB_OTG_WHITELIST is not set # CONFIG_USB_OTG_BLACKLIST_HUB is not set CONFIG_USB_MON=y +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set # # USB Host Controller Drivers @@ -1389,6 +1457,7 @@ CONFIG_USB_MON=y # CONFIG_USB_OHCI_HCD is not set # CONFIG_USB_SL811_HCD is not set # CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HWA_HCD is not set CONFIG_USB_MUSB_HDRC=y CONFIG_USB_MUSB_SOC=y @@ -1411,6 +1480,7 @@ CONFIG_USB_INVENTRA_DMA=y CONFIG_USB_ACM=m CONFIG_USB_PRINTER=m CONFIG_USB_WDM=m +# CONFIG_USB_TMC is not set # # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' @@ -1507,6 +1577,7 @@ CONFIG_USB_SERIAL_DEBUG=m CONFIG_USB_EMI62=m CONFIG_USB_EMI26=m # CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set # CONFIG_USB_RIO500 is not set CONFIG_USB_LEGOTOWER=m CONFIG_USB_LCD=m @@ -1523,23 +1594,27 @@ CONFIG_USB_LED=m # CONFIG_USB_IOWARRIOR is not set # CONFIG_USB_TEST is not set # CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_VST is not set CONFIG_USB_GADGET=y # CONFIG_USB_GADGET_DEBUG is not set # CONFIG_USB_GADGET_DEBUG_FILES is not set +CONFIG_USB_GADGET_DEBUG_FS=y +CONFIG_USB_GADGET_VBUS_DRAW=2 CONFIG_USB_GADGET_SELECTED=y -# CONFIG_USB_GADGET_AMD5536UDC is not set +# CONFIG_USB_GADGET_AT91 is not set # CONFIG_USB_GADGET_ATMEL_USBA is not set # CONFIG_USB_GADGET_FSL_USB2 is not set -# CONFIG_USB_GADGET_NET2280 is not set +# CONFIG_USB_GADGET_LH7A40X is not set +# CONFIG_USB_GADGET_OMAP is not set # CONFIG_USB_GADGET_PXA25X is not set +# CONFIG_USB_GADGET_PXA27X is not set +# CONFIG_USB_GADGET_S3C2410 is not set CONFIG_USB_GADGET_M66592=y CONFIG_USB_M66592=y -# CONFIG_USB_GADGET_PXA27X is not set +# CONFIG_USB_GADGET_AMD5536UDC is not set +# CONFIG_USB_GADGET_FSL_QE is not set +# CONFIG_USB_GADGET_NET2280 is not set # CONFIG_USB_GADGET_GOKU is not set -# CONFIG_USB_GADGET_LH7A40X is not set -# CONFIG_USB_GADGET_OMAP is not set -# CONFIG_USB_GADGET_S3C2410 is not set -# CONFIG_USB_GADGET_AT91 is not set # CONFIG_USB_GADGET_DUMMY_HCD is not set CONFIG_USB_GADGET_DUALSPEED=y # CONFIG_USB_ZERO is not set @@ -1556,7 +1631,7 @@ CONFIG_MMC=y CONFIG_MMC_UNSAFE_RESUME=y # -# MMC/SD Card Drivers +# MMC/SD/SDIO Card Drivers # CONFIG_MMC_BLOCK=y CONFIG_MMC_BLOCK_BOUNCE=y @@ -1564,11 +1639,13 @@ CONFIG_SDIO_UART=y # CONFIG_MMC_TEST is not set # -# MMC/SD Host Controller Drivers +# MMC/SD/SDIO Host Controller Drivers # # CONFIG_MMC_SDHCI is not set CONFIG_MMC_OMAP_HS=y CONFIG_MMC_SPI=m +# CONFIG_MEMSTICK is not set +# CONFIG_ACCESSIBILITY is not set CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y @@ -1588,6 +1665,7 @@ CONFIG_LEDS_GPIO=y CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y @@ -1629,17 +1707,21 @@ CONFIG_RTC_DRV_TWL4030=y # CONFIG_RTC_DRV_MAX6902 is not set # CONFIG_RTC_DRV_R9701 is not set # CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_DS3234 is not set # # Platform RTC drivers # # CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1286 is not set # CONFIG_RTC_DRV_DS1511 is not set # CONFIG_RTC_DRV_DS1553 is not set # CONFIG_RTC_DRV_DS1742 is not set # CONFIG_RTC_DRV_STK17TA8 is not set # CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set # CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_BQ4802 is not set # CONFIG_RTC_DRV_V3020 is not set # @@ -1669,11 +1751,13 @@ CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y # CONFIG_EXT3_FS_XATTR is not set -# CONFIG_EXT4DEV_FS is not set +# CONFIG_EXT4_FS is not set CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set CONFIG_FS_POSIX_ACL=y +CONFIG_FILE_LOCKING=y CONFIG_XFS_FS=m # CONFIG_XFS_QUOTA is not set # CONFIG_XFS_POSIX_ACL is not set @@ -1718,6 +1802,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_PROC_FS=y CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y CONFIG_SYSFS=y CONFIG_TMPFS=y # CONFIG_TMPFS_POSIX_ACL is not set @@ -1772,6 +1857,7 @@ CONFIG_LOCKD_V4=y CONFIG_NFS_COMMON=y CONFIG_SUNRPC=y CONFIG_SUNRPC_GSS=y +# CONFIG_SUNRPC_REGISTER_V4 is not set CONFIG_RPCSEC_GSS_KRB5=y # CONFIG_RPCSEC_GSS_SPKM3 is not set # CONFIG_SMB_FS is not set @@ -1852,7 +1938,7 @@ CONFIG_ENABLE_MUST_CHECK=y CONFIG_FRAME_WARN=1024 CONFIG_MAGIC_SYSRQ=y # CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_DEBUG_FS is not set +CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_SHIRQ is not set @@ -1884,15 +1970,23 @@ CONFIG_DEBUG_MUTEXES=y CONFIG_FRAME_POINTER=y # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set # CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set -CONFIG_HAVE_FTRACE=y -CONFIG_HAVE_DYNAMIC_FTRACE=y -# CONFIG_FTRACE is not set +CONFIG_HAVE_FUNCTION_TRACER=y + +# +# Tracers +# +# CONFIG_FUNCTION_TRACER is not set # CONFIG_IRQSOFF_TRACER is not set # CONFIG_SCHED_TRACER is not set # CONFIG_CONTEXT_SWITCH_TRACER is not set +# CONFIG_BOOT_TRACER is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_DYNAMIC_PRINTK_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set @@ -1906,6 +2000,7 @@ CONFIG_HAVE_ARCH_KGDB=y # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set # CONFIG_SECURITY_FILE_CAPABILITIES is not set CONFIG_XOR_BLOCKS=m CONFIG_ASYNC_CORE=m @@ -1916,10 +2011,12 @@ CONFIG_CRYPTO=y # # Crypto core or helper # +# CONFIG_CRYPTO_FIPS is not set CONFIG_CRYPTO_ALGAPI=y -CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD=y CONFIG_CRYPTO_BLKCIPHER=y -CONFIG_CRYPTO_HASH=m +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_RNG=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_GF128MUL=m CONFIG_CRYPTO_NULL=m @@ -1993,14 +2090,17 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m # CONFIG_CRYPTO_DEFLATE=m # CONFIG_CRYPTO_LZO is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set CONFIG_CRYPTO_HW=y # # Library routines # CONFIG_BITREVERSE=y -# CONFIG_GENERIC_FIND_FIRST_BIT is not set -# CONFIG_GENERIC_FIND_NEXT_BIT is not set CONFIG_CRC_CCITT=y CONFIG_CRC16=m CONFIG_CRC_T10DIF=y diff --git a/packages/linux/linux-omap/fix-clkrate-programming.diff b/packages/linux/linux-omap/fix-clkrate-programming.diff new file mode 100644 index 0000000000..10369d4200 --- /dev/null +++ b/packages/linux/linux-omap/fix-clkrate-programming.diff @@ -0,0 +1,57 @@ +From: Paul Walmsley +Date: Fri, 17 Oct 2008 22:18:42 +0000 (-0600) +Subject: OMAP3 clock: fix non-CORE DPLL rate assignment bugs +X-Git-Tag: v2.6.27-omap1~8 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftmlind%2Flinux-omap-2.6.git;a=commitdiff_plain;h=2ac1da8c787f73f067e717408e631501ba60aabc + +OMAP3 clock: fix non-CORE DPLL rate assignment bugs + +Commit 8b1f0bd44fe490ec631230c8c040753a2bda8caa introduced a bug that +caused non-CORE DPLL rates to be incorrectly set on boot in +omap3_noncore_dpll_enable(). Debugged by Tomi Valkeinen + - thanks Tomi. + +Also fix omap3_noncore_dpll_set_rate() to assign clk->rate after a +DPLL reprogram. + +Tested on 3430SDP. + +Signed-off-by: Paul Walmsley +Cc: Tomi Valkeinen +Cc: Rick Bronson +Cc: Timo Kokkonen +Cc: Sakari Poussa +Signed-off-by: Tony Lindgren +--- + +diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c +index df258f7..cc43f4f 100644 +--- a/arch/arm/mach-omap2/clock34xx.c ++++ b/arch/arm/mach-omap2/clock34xx.c +@@ -271,7 +271,6 @@ static int _omap3_noncore_dpll_stop(struct clk *clk) + static int omap3_noncore_dpll_enable(struct clk *clk) + { + int r; +- long rate; + struct dpll_data *dd; + + if (clk == &dpll3_ck) +@@ -287,7 +286,7 @@ static int omap3_noncore_dpll_enable(struct clk *clk) + r = _omap3_noncore_dpll_lock(clk); + + if (!r) +- clk->rate = rate; ++ clk->rate = omap2_get_dpll_rate(clk); + + return r; + } +@@ -430,6 +429,9 @@ static int omap3_noncore_dpll_set_rate(struct clk *clk, unsigned long rate) + ret = omap3_noncore_dpll_program(clk, dd->last_rounded_m, + dd->last_rounded_n, freqsel); + ++ if (!ret) ++ clk->rate = rate; ++ + } + + omap3_dpll_recalc(clk); diff --git a/packages/linux/linux-omap/mru-add-clk-get-parent.diff b/packages/linux/linux-omap/mru-add-clk-get-parent.diff index 64944a5e47..4488b311a0 100644 --- a/packages/linux/linux-omap/mru-add-clk-get-parent.diff +++ b/packages/linux/linux-omap/mru-add-clk-get-parent.diff @@ -1,20 +1,21 @@ +From 2414b5ac7596904dd8951619316b63d644f544db Mon Sep 17 00:00:00 2001 From: Mans Rullgard -Date: Fri, 29 Aug 2008 01:51:36 +0000 (+0100) -Subject: OMAP: Add clk_get_parent() for OMAP2/3 -X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=08d1f1947a5a970b2fe6e4dfeeb70286b9379056 - -OMAP: Add clk_get_parent() for OMAP2/3 - -This makes clk_get_parent() work on OMAP2/3. +Date: Tue, 22 Jul 2008 01:58:18 +0100 +Subject: [PATCH] ARM: OMAP: add clk_get_parent() for OMAP2/3 Signed-off-by: Mans Rullgard --- + arch/arm/mach-omap2/clock.c | 5 +++++ + arch/arm/mach-omap2/clock.h | 1 + + arch/arm/mach-omap2/clock24xx.c | 1 + + arch/arm/mach-omap2/clock34xx.c | 1 + + 4 files changed, 8 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c -index 5f48e14..aae0d2e 100644 +index c3af24e..9e502a0 100644 --- a/arch/arm/mach-omap2/clock.c +++ b/arch/arm/mach-omap2/clock.c -@@ -831,6 +831,11 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) +@@ -817,6 +817,11 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) return 0; } @@ -27,7 +28,7 @@ index 5f48e14..aae0d2e 100644 /** diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h -index 3fa2e26..2916879 100644 +index bcb0c03..a5183d0 100644 --- a/arch/arm/mach-omap2/clock.h +++ b/arch/arm/mach-omap2/clock.h @@ -29,6 +29,7 @@ int omap2_clk_set_rate(struct clk *clk, unsigned long rate); @@ -39,10 +40,10 @@ index 3fa2e26..2916879 100644 #ifdef CONFIG_OMAP_RESET_CLOCKS void omap2_clk_disable_unused(struct clk *clk); diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c -index c26d9d8..f91bd57 100644 +index a54f10f..4382e60 100644 --- a/arch/arm/mach-omap2/clock24xx.c +++ b/arch/arm/mach-omap2/clock24xx.c -@@ -423,6 +423,7 @@ static struct clk_functions omap2_clk_functions = { +@@ -416,6 +416,7 @@ static struct clk_functions omap2_clk_functions = { .clk_round_rate = omap2_clk_round_rate, .clk_set_rate = omap2_clk_set_rate, .clk_set_parent = omap2_clk_set_parent, @@ -51,10 +52,10 @@ index c26d9d8..f91bd57 100644 #ifdef CONFIG_CPU_FREQ .clk_init_cpufreq_table = omap2_clk_init_cpufreq_table, diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c -index 152d095..2196edd 100644 +index cc43f4f..2a1a6b1 100644 --- a/arch/arm/mach-omap2/clock34xx.c +++ b/arch/arm/mach-omap2/clock34xx.c -@@ -606,6 +606,7 @@ static struct clk_functions omap2_clk_functions = { +@@ -635,6 +635,7 @@ static struct clk_functions omap2_clk_functions = { .clk_round_rate = omap2_clk_round_rate, .clk_set_rate = omap2_clk_set_rate, .clk_set_parent = omap2_clk_set_parent, @@ -62,3 +63,6 @@ index 152d095..2196edd 100644 .clk_disable_unused = omap2_clk_disable_unused, }; +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/mru-make-dpll4-m4-ck-programmable.diff b/packages/linux/linux-omap/mru-make-dpll4-m4-ck-programmable.diff index 0a535c5d52..85f9cc3129 100644 --- a/packages/linux/linux-omap/mru-make-dpll4-m4-ck-programmable.diff +++ b/packages/linux/linux-omap/mru-make-dpll4-m4-ck-programmable.diff @@ -1,22 +1,20 @@ +From 38e48da3c27d38b05bed4572930240e73e4dfb22 Mon Sep 17 00:00:00 2001 From: Mans Rullgard -Date: Fri, 29 Aug 2008 01:52:42 +0000 (+0100) -Subject: OMAP: Make dpll4_m4_ck programmable with clk_set_rate() -X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=feab5b628c06619196044c15d9d2a113df173eee - -OMAP: Make dpll4_m4_ck programmable with clk_set_rate() +Date: Tue, 22 Jul 2008 01:31:11 +0100 +Subject: [PATCH] ARM: OMAP: make dpll4_m4_ck programmable with clk_set_rate() Filling the set_rate and round_rate fields of dpll4_m4_ck makes this clock programmable through clk_set_rate(). This is needed to give omapfb control over the dss1_alwon_fck rate. - -Signed-off-by: Mans Rullgard --- + arch/arm/mach-omap2/clock34xx.h | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/clock34xx.h b/arch/arm/mach-omap2/clock34xx.h -index 41f91f8..9c8e0c8 100644 +index 08789c8..1032577 100644 --- a/arch/arm/mach-omap2/clock34xx.h +++ b/arch/arm/mach-omap2/clock34xx.h -@@ -877,6 +877,8 @@ static struct clk dpll4_m4_ck = { +@@ -821,6 +821,8 @@ static struct clk dpll4_m4_ck = { PARENT_CONTROLS_CLOCK, .clkdm = { .name = "dpll4_clkdm" }, .recalc = &omap2_clksel_recalc, @@ -25,3 +23,6 @@ index 41f91f8..9c8e0c8 100644 }; /* The PWRDN bit is apparently only available on 3430ES2 and above */ +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb index 2462484dd3..72684249b9 100644 --- a/packages/linux/linux-omap_git.bb +++ b/packages/linux/linux-omap_git.bb @@ -6,18 +6,17 @@ KERNEL_IMAGETYPE = "uImage" COMPATIBLE_MACHINE = "omap5912osk|omap1710h3|omap2430sdp|omap2420h4|beagleboard|omap3evm" -SRCREV = "2a3408be17f287fdb5809c9b6c68e7ad96d25b74" +SRCREV = "f7429fd378a29cf6947c2613e0fd6e6e36165167" -#PV = "2.6.26+2.6.27-rc7+${PR}+gitr${SRCREV}" -PV = "2.6.27+${PR}+gitr${SRCREV}" -PR = "r4" +PV = "2.6.27+2.6.28-rc3+${PR}+gitr${SRCREV}" +#PV = "2.6.27+${PR}+gitr${SRCREV}" +PR = "r0" SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \ file://defconfig" SRC_URI_append = " \ file://no-empty-flash-warnings.patch;patch=1 \ - file://oprofile-0.9.3.armv7.diff;patch=1 \ file://no-cortex-deadlock.patch;patch=1 \ file://read_die_ids.patch;patch=1 \ file://fix-install.patch;patch=1 \ @@ -30,12 +29,19 @@ SRC_URI_append = " \ file://mru-improve-pixclock-config.diff;patch=1 \ file://mru-make-video-timings-selectable.diff;patch=1 \ file://mru-enable-overlay-optimalization.diff;patch=1 \ - file://musb-fix-ISO-in-unlink.diff;patch=1 \ file://musb-fix-multiple-bulk-transfers.diff;patch=1 \ file://musb-fix-endpoints.diff;patch=1 \ file://dvb-fix-dma.diff;patch=1 \ file://0001-Removed-resolution-check-that-prevents-scaling-when.patch;patch=1 \ file://0001-Implement-downsampling-with-debugs.patch;patch=1 \ + file://0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch;patch=1 \ + file://0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch;patch=1 \ + file://0005-DSS-RFBI-support-for-OMAP2-3-DSS.patch;patch=1 \ + file://0006-DSS-TV-out-support-for-OMAP2-3-DSS.patch;patch=1 \ + file://0007-DSS-DSI-support-for-OMAP2-3-DSS.patch;patch=1 \ + file://0008-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch;patch=1 \ + file://0009-DSS-Add-generic-DVI-panel.patch;patch=1 \ + file://0010-DSS-support-for-Beagle-Board.patch;patch=1 \ " -- cgit v1.2.3 From 091b88f6df689ab466a71dcc4552f6ba23967c21 Mon Sep 17 00:00:00 2001 From: Tom Talpey Date: Sat, 8 Nov 2008 10:06:02 +0100 Subject: gnome-games: better granular packaging --- packages/gnome/gnome-games_2.24.0.bb | 201 ++++++++++++++++++++++++++++++++--- 1 file changed, 189 insertions(+), 12 deletions(-) diff --git a/packages/gnome/gnome-games_2.24.0.bb b/packages/gnome/gnome-games_2.24.0.bb index d4e58da4e7..10e41effb6 100644 --- a/packages/gnome/gnome-games_2.24.0.bb +++ b/packages/gnome/gnome-games_2.24.0.bb @@ -1,9 +1,9 @@ LICENSE = "GPL" -DEPENDS = " guile libggz ggz-client-libs python-pygtk gtk+ libgnome libgnomeui librsvg gnome-vfs gconf libglade gnome-common gnome-python-desktop" +DEPENDS = " guile libggz ggz-client-libs python-pygtk gtk+ libgnome libgnomeui librsvg gnome-vfs gconf libglade gnome-common gnome-python-desktop gnome-python gstreamer" inherit gnome distutils-base gconf -PR = "r1" +PR = "r2" SRC_URI += "file://ggz-unbreak-m4.patch;patch=1 \ " @@ -13,6 +13,7 @@ EXTRA_OECONF = "--with-libggz-includes=${STAGING_INCDIR} \ --with-ggzmod-includes=${STAGING_INCDIR} \ --with-ggzmod-libraries=${STAGING_LIBDIR} \ --enable-scalable \ + INTLTOOL_PERL=${STAGING_BINDIR_NATIVE}/perl \ " do_configure_prepend() { @@ -27,22 +28,198 @@ do_configure_append() { done } +# copy matchbox icons +do_install_append() { + install -m 0644 ${D}/${datadir}/icons/hicolor/48x48/apps/* ${D}/${datadir}/pixmaps +} + CFLAGS_append = " -lguile -lgmp -lcrypt -lm -lltdl" FILES_${PN}-doc += " ${datadir}/gnome/help" FILES_${PN}-dbg += " ${bindir}/.debug ${libdir}/gnome-games/.debug" -FILES_${PN} += "/var/games \ - ${datadir}/applications \ - ${datadir}/g* \ - ${datadir}/ggz \ - ${datadir}/icons \ - ${datadir}/pixmaps \ - ${sysconfdir}" +PACKAGES =+ "gnome-games-common" +DESCRIPTION_gnome-games-common = "GNOME games common resources" +FILES_gnome-games-common = "${datadir}/ggz \ + ${libdir}/ggz \ + ${sysconfdir} \ + ${datadir}/gnome-games/icons \ + ${datadir}/icons \ + ${datadir}/gnome-games/sounds" +# svg is needed for --enable-scalable by nearly all, so put into -common +RDEPENDS_gnome-games-common = "librsvg librsvg-gtk" -PACKAGES =+ "gnome-games-gnometris " -FILES_gnome-games-gnometris = "${bindir}/gnometris ${datadir}/pixmaps/gnometris ${datadir}/pixmaps/gnome-gtetris.png ${datadir}/applications/gnometris.desktop ${sysconfdir}/gconf/schemas/gnometris.schemas" +PACKAGES =+ "gnome-games-cards" +DESCRIPTION_gnome-games-cards = "GNOME games playing card resources" +FILES_gnome-games-cards = "${datadir}/gnome-games/pixmaps \ + ${libdir}/gnome-games/gnome-games-render-cards \ + ${datadir}/gnome-games-common/cards" + +PACKAGES =+ "gnome-games-gnometris" +DESCRIPTION_gnome-games-gnometris = "GNOME tetris game" +RDEPENDS_gnome-games-gnometris = "gnome-games-common" +FILES_gnome-games-gnometris = "${bindir}/gnometris \ + ${datadir}/pixmaps/gnometris \ + ${datadir}/pixmaps/gnome-gnometris.png \ + ${datadir}/applications/gnometris.desktop \ + ${sysconfdir}/gconf/schemas/gnometris.schemas \ + /var/games/gnometris.scores" PACKAGES =+ "gnome-games-gnomine" -FILES_gnome-games-gnomine = "${bindir}/gnomine ${datadir}/pixmaps/gnomine ${datadir}/pixmaps/gnome-gnomine.png ${datadir}/applications/gnomine.desktop ${sysconfdir}/gconf/schemas/gnomine.schemas" +DESCRIPTION_gnome-games-gnomine = "GNOME minesweeper game" +RDEPENDS_gnome-games-gnomine = "gnome-games-common" +FILES_gnome-games-gnomine = "${bindir}/gnomine \ + ${datadir}/pixmaps/gnomine \ + ${datadir}/pixmaps/gnome-mines.png \ + ${datadir}/applications/gnomine.desktop \ + ${sysconfdir}/gconf/schemas/gnomine.schemas \ + /var/games/gnomine.*.scores" + +PACKAGES =+ "gnome-games-aisleriot" +DESCRIPTION_gnome-games-aisleriot = "GNOME solitaire games" +RDEPENDS_gnome-games-aisleriot = "gnome-games-common gnome-games-cards" +FILES_gnome-games-aisleriot = "${bindir}/sol \ + ${datadir}/gnome-games/aisleriot \ + ${datadir}/pixmaps/gnome-aisleriot.png \ + ${datadir}/pixmaps/gnome-freecell.png \ + ${datadir}/applications/sol.desktop \ + ${datadir}/applications/freecell.desktop \ + ${sysconfdir}/gconf/schemas/aisleriot.schemas" + +PACKAGES =+ "gnome-games-blackjack" +DESCRIPTION_gnome-games-blackjack = "GNOME blackjack game" +RDEPENDS_gnome-games-blackjack = "gnome-games-common gnome-games-cards" +FILES_gnome-games-blackjack = "${bindir}/blackjack \ + ${datadir}/gnome-games/blackjack \ + ${datadir}/pixmaps/gnome-blackjack.png \ + ${datadir}/applications/blackjack.desktop \ + ${sysconfdir}/gconf/schemas/blackjack.schemas" + +PACKAGES =+ "gnome-games-gnect" +DESCRIPTION_gnome-games-gnect = "GNOME four-in-a-row game" +RDEPENDS_gnome-games-gnect = "gnome-games-common" +FILES_gnome-games-gnect = "${bindir}/gnect \ + ${datadir}/gnect \ + ${datadir}/pixmaps/gnect \ + ${datadir}/pixmaps/gnome-gnect.png \ + ${datadir}/applications/gnect.desktop \ + ${sysconfdir}/gconf/schemas/gnect.schemas" + +PACKAGES =+ "gnome-games-same-gnome" +DESCRIPTION_gnome-games-same-gnome = "GNOME block removal game" +RDEPENDS_gnome-games-same-gnome = "gnome-games-common" +FILES_gnome-games-same-gnome = "${bindir}/same-gnome \ + ${datadir}/gnome-games/same-gnome/themes/2.10 \ + ${datadir}/pixmaps/gnome-samegnome.png \ + ${datadir}/applications/same-gnome.desktop \ + ${sysconfdir}/gconf/schemas/same-gnome.schemas \ + /var/games/same-gnome.*.scores" + +PACKAGES =+ "gnome-games-mahjongg" +DESCRIPTION_gnome-games-mahjongg = "GNOME mahjongg game" +RDEPENDS_gnome-games-mahjongg = "gnome-games-common" +FILES_gnome-games-mahjongg = "${bindir}/mahjongg \ + ${datadir}/gnome-games/mahjongg \ + ${datadir}/pixmaps/mahjongg \ + ${datadir}/pixmaps/gnome-mahjongg.png \ + ${datadir}/applications/mahjongg.desktop \ + ${sysconfdir}/gconf/schemas/mahjongg.schemas \ + /var/games/mahjongg.*.scores" + +PACKAGES =+ "gnome-games-gtali" +DESCRIPTION_gnome-games-gtali = "GNOME yahtzee game" +RDEPENDS_gnome-games-gtali = "gnome-games-common" +FILES_gnome-games-gtali = "${bindir}/gtali \ + ${datadir}/pixmaps/gtali \ + ${datadir}/pixmaps/gnome-tali.png \ + ${datadir}/applications/gtali.desktop \ + ${sysconfdir}/gconf/schemas/gtali.schemas \ + /var/games/gtali.*.scores" + +PACKAGES =+ "gnome-games-gnotravex" +DESCRIPTION_gnome-games-gnotravex = "GNOME tile matching game" +RDEPENDS_gnome-games-gnotravex = "gnome-games-common" +FILES_gnome-games-gnotravex = "${bindir}/gnotravex \ + ${datadir}/pixmaps/gnotravex \ + ${datadir}/pixmaps/gnome-tetravex.png \ + ${datadir}/applications/gnotravex.desktop \ + ${sysconfdir}/gconf/schemas/gnotravex.schemas \ + /var/games/gnotravex.*.scores" + +PACKAGES =+ "gnome-games-gnotski" +DESCRIPTION_gnome-games-gnotski = "GNOME blocks puzzle game" +RDEPENDS_gnome-games-gnotski = "gnome-games-common" +FILES_gnome-games-gnotski = "${bindir}/gnotski \ + ${datadir}/gnome-games/gnotski \ + ${datadir}/pixmaps/gnome-klotski.png \ + ${datadir}/applications/gnotski.desktop \ + ${sysconfdir}/gconf/schemas/gnotski.schemas \ + /var/games/gnotski.*.scores" + +PACKAGES =+ "gnome-games-glines" +DESCRIPTION_gnome-games-glines = "GNOME five-or-more game" +RDEPENDS_gnome-games-glines = "gnome-games-common" +FILES_gnome-games-glines = "${bindir}/glines \ + ${datadir}/pixmaps/glines \ + ${datadir}/pixmaps/gnome-glines.png \ + ${datadir}/applications/glines.desktop \ + ${sysconfdir}/gconf/schemas/glines.schemas \ + /var/games/glines.*.scores" + +PACKAGES =+ "gnome-games-iagno" +DESCRIPTION_gnome-games-iagno = "GNOME reversi game" +RDEPENDS_gnome-games-iagno = "gnome-games-common" +FILES_gnome-games-iagno = "${bindir}/iagno \ + ${datadir}/pixmaps/iagno \ + ${datadir}/pixmaps/gnome-iagno.png \ + ${datadir}/applications/iagno.desktop \ + ${sysconfdir}/gconf/schemas/iagno.schemas" + +PACKAGES =+ "gnome-games-gnobots2" +DESCRIPTION_gnome-games-gnobots2 = "GNOME robots game" +RDEPENDS_gnome-games-gnobots2 = "gnome-games-common" +FILES_gnome-games-gnobots2 = "${bindir}/gnobots2 \ + ${datadir}/pixmaps/gnobots2 \ + ${datadir}/gnobots2 \ + ${datadir}/pixmaps/gnome-robots.png \ + ${datadir}/applications/gnobots2.desktop \ + ${sysconfdir}/gconf/schemas/gnobots2.schemas \ + /var/games/gnobots2.*.scores" + +PACKAGES =+ "gnome-games-gnibbles" +DESCRIPTION_gnome-games-gnibbles = "GNOME worm game" +RDEPENDS_gnome-games-gnibbles = "gnome-games-common" +FILES_gnome-games-gnibbles = "${bindir}/gnibbles \ + ${datadir}/pixmaps/gnibbles \ + ${datadir}/gnibbles \ + ${datadir}/pixmaps/gnome-gnibbles.png \ + ${datadir}/applications/gnibbles.desktop \ + ${sysconfdir}/gconf/schemas/gnibbles.schemas \ + /var/games/gnibbles.*.scores" + +PACKAGES =+ "gnome-games-glchess" +DESCRIPTION_gnome-games-glchess = "GNOME chess" +RDEPENDS_gnome-games-glchess = "python-pygtk python-codecs \ + python-netclient python-xml \ + gnome-python" +FILES_gnome-games-glchess = "${bindir}/glchess \ + ${bindir}/gnome-gnuchess \ + ${datadir}/pixmaps/glchess \ + ${datadir}/glchess \ + ${datadir}/pixmaps/gnome-glchess.png \ + ${datadir}/applications/glchess.desktop \ + ${sysconfdir}/gconf/schemas/glchess.schemas \ + ${libdir}/python2.5/site-packages/glchess" +PACKAGES =+ "gnome-games-sudoku" +DESCRIPTION_gnome-games-sudoku = "GNOME sudoku" +RDEPENDS_gnome-games-sudoku = "python-pygtk python-codecs python-difflib \ + python-xml python-netclient \ + python-textutils python-threading \ + gnome-python gnome-python-desktop" +FILES_gnome-games-sudoku = "${bindir}/gnome-sudoku \ + ${datadir}/pixmaps/gnome-sudoku \ + ${datadir}/gnome-sudoku \ + ${datadir}/pixmaps/gnome-sudoku.png \ + ${datadir}/applications/gnome-sudoku.desktop \ + ${libdir}/python2.5/site-packages/gnome_sudoku" -- cgit v1.2.3 From f230fbcfc59c4a8997e305967fa6d5b03e99cdab Mon Sep 17 00:00:00 2001 From: Tom Talpey Date: Sat, 8 Nov 2008 10:07:46 +0100 Subject: guile: Add libtool dependency --- packages/guile/guile_1.8.5.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/guile/guile_1.8.5.bb b/packages/guile/guile_1.8.5.bb index 62fdedd44a..fe5ebbc154 100644 --- a/packages/guile/guile_1.8.5.bb +++ b/packages/guile/guile_1.8.5.bb @@ -2,10 +2,10 @@ DESCRIPTION = "Guile is an interpreter for the Scheme programming language, \ packaged as a library which can be incorporated into your programs." HOMEPAGE = "http://www.gnu.org/software/guile/guile.html" SECTION = "devel/scheme" -DEPENDS = "guile-native gmp" +DEPENDS = "guile-native gmp libtool" LICENSE = "GPL" -PR = "r2" +PR = "r3" SRC_URI = "http://ftp.gnu.org/pub/gnu/guile/guile-${PV}.tar.gz \ file://configure-fix.patch;patch=1 " -- cgit v1.2.3 From a7986a7530ad64d565c6edc78c4b4815b9008496 Mon Sep 17 00:00:00 2001 From: Tom Talpey Date: Sat, 8 Nov 2008 10:08:27 +0100 Subject: gnome-python-desktop: Add DEPENDS for gnome-python and libgnomeprint*, needed for gnome-games. --- packages/gnome/gnome-python-desktop_2.23.0.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/gnome/gnome-python-desktop_2.23.0.bb b/packages/gnome/gnome-python-desktop_2.23.0.bb index 45209b2923..c489da124a 100644 --- a/packages/gnome/gnome-python-desktop_2.23.0.bb +++ b/packages/gnome/gnome-python-desktop_2.23.0.bb @@ -1,7 +1,7 @@ LICENSE = "GPL/LGPL" -DEPENDS = "librsvg libwnck totem-pl-parser libgtop gnome-panel gnome-desktop eds-dbus python-pygtk" +DEPENDS = "librsvg libwnck totem-pl-parser libgtop gnome-panel gnome-desktop eds-dbus python-pygtk gnome-python libgnomeprint libgnomeprintui" -PR = "r1" +PR = "r2" inherit gnome distutils-base -- cgit v1.2.3 From fe18b91c582c8a6c18944e276f11050b252473bc Mon Sep 17 00:00:00 2001 From: Tom Talpey Date: Sat, 8 Nov 2008 10:09:16 +0100 Subject: gnome-desktop: add libxrandr to DEPENDS --- packages/gnome/gnome-desktop_2.24.0.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/gnome/gnome-desktop_2.24.0.bb b/packages/gnome/gnome-desktop_2.24.0.bb index 4460c5ad92..36553637bf 100644 --- a/packages/gnome/gnome-desktop_2.24.0.bb +++ b/packages/gnome/gnome-desktop_2.24.0.bb @@ -2,7 +2,7 @@ require gnome-desktop.inc inherit gnome pkgconfig -DEPENDS += "gnome-doc-utils gnome-vfs" +DEPENDS += "gnome-doc-utils gnome-vfs libxrandr" SRC_URI += "file://scrollkeeper.patch;patch=1 \ file://no-desktop-docs.patch;patch=1;pnum=0" -- cgit v1.2.3 From b8fc3e9a0457272354e4ac928985f908386b8567 Mon Sep 17 00:00:00 2001 From: Tom Talpey Date: Sat, 8 Nov 2008 10:10:17 +0100 Subject: gnome-python 2.22.1: new package --- packages/gnome/gnome-python_2.22.1.bb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 packages/gnome/gnome-python_2.22.1.bb diff --git a/packages/gnome/gnome-python_2.22.1.bb b/packages/gnome/gnome-python_2.22.1.bb new file mode 100644 index 0000000000..5ea7cba83a --- /dev/null +++ b/packages/gnome/gnome-python_2.22.1.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "GNOME Python miscellaneous bindings" +LICENSE = "LGPL" +DEPENDS = "libgnomeui pyorbit python-pygtk" +RDEPENDS = "pyorbit" + +PR = "r0" + +inherit gnome distutils-base pkgconfig + +FILES_${PN}-dbg += "${libdir}/gnome-vfs-2.0/modules/.debug" + +do_configure() { + export HOST_SYS=${HOST_SYS} + export BUILD_SYS=${BUILD_SYS} + autotools_do_configure +} + -- cgit v1.2.3 From 14074e4e1314f4d1b304dcc23468a848a53424f1 Mon Sep 17 00:00:00 2001 From: Tom Talpey Date: Sat, 8 Nov 2008 10:11:14 +0100 Subject: pyorbit 2.14.3: new recipe --- packages/gnome/pyorbit_2.14.3.bb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 packages/gnome/pyorbit_2.14.3.bb diff --git a/packages/gnome/pyorbit_2.14.3.bb b/packages/gnome/pyorbit_2.14.3.bb new file mode 100644 index 0000000000..8b9c1aa76f --- /dev/null +++ b/packages/gnome/pyorbit_2.14.3.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "Python Orbit bindings" +LICENSE = "LGPL" + +PR = "r0" + +inherit gnome distutils-base pkgconfig + +do_configure() { + export HOST_SYS=${HOST_SYS} + export BUILD_SYS=${BUILD_SYS} + autotools_do_configure +} + +do_stage() { + install -d ${STAGING_INCDIR}/pyorbit-2 + install -m 0644 src/pyorbit.h ${STAGING_INCDIR}/pyorbit-2 +} -- cgit v1.2.3 From b71fd3c563f96ad4fb6f1d359b114184ccc73274 Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Sun, 9 Nov 2008 01:09:35 +0100 Subject: checksums.ini: Add sums for xkeyboard-config-1.3 --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 2da6a9fa57..e72b1af198 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -17354,6 +17354,10 @@ sha256=d2e9c3c28e23010441ce40c48bda7adabd338a256cb9b99848be6ed937fc10e7 md5=798502eca0c6c3e8c02d76fabb910532 sha256=8178a1c45af6e844ca0adcfe72fbddcbaebf3f305452a83e39768373981be92f +[http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-1.3.tar.bz2] +md5=d9e9f69f9c6ef5c5a8255cfbe6a57d51 +sha256=49f02ed7b0b246a640fb129fcb3d24d7560305bb6f04e69b09739554857f79f5 + [http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-1.4.tar.bz2] md5=a9fe7efbc67a6966c4d4501f0cf88073 sha256=921a857dcf90a59df7feb26da5aabcf0bbfb749c46e2a46c3bc7a0280b83b0e1 -- cgit v1.2.3 From 12f279b37d07e82dadd4e51642cfceb80ccbbce9 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sun, 9 Nov 2008 10:28:16 +0100 Subject: linux-omap git: add patch to fix red-tint on omap3evm screens --- .../linux-omap/omap3evm/omap3evm-lcd-redtint.diff | 66 ++++++++++++++++++++++ packages/linux/linux-omap_git.bb | 3 +- 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 packages/linux/linux-omap/omap3evm/omap3evm-lcd-redtint.diff diff --git a/packages/linux/linux-omap/omap3evm/omap3evm-lcd-redtint.diff b/packages/linux/linux-omap/omap3evm/omap3evm-lcd-redtint.diff new file mode 100644 index 0000000000..54ea3c9f68 --- /dev/null +++ b/packages/linux/linux-omap/omap3evm/omap3evm-lcd-redtint.diff @@ -0,0 +1,66 @@ +Message-ID: +Date: Sat, 27 Sep 2008 03:46:18 -0400 +From: "arun c" +To: "Daniel Schaeffer" +Subject: Re: OMAP3EVM LCD red tint + +Hi Daniel Schaeffer + +On Fri, Sep 26, 2008 at 4:20 PM, Daniel Schaeffer + wrote: +> Has anyone looked into why the LCD display on the OMAP3EVM is always tinted +> red? I created a couple of color test images that I cat'ed to /dev/fb and it +> looks like the blue color channel is completely ignored. I was testing on +> v2.6.26-omap2 but is doesn't look like there have been any changes to the fb +> driver since then so I'm assuming the issue is also present in the head of +> the git tree. +> +> Regards, +> +> Daniel Schaeffer +> + +Try the patch below(Remember that you may have to manually edit because +this patch is against current HEAD) + + +diff --git a/drivers/video/omap/lcd_omap3evm.c +b/drivers/video/omap/lcd_omap3evm.c +index a564ca5..821bafe 100644 +--- a/drivers/video/omap/lcd_omap3evm.c ++++ b/drivers/video/omap/lcd_omap3evm.c +@@ -44,6 +44,8 @@ + #define ENABLE_VDAC_DEV_GRP 0x20 + #define ENABLE_VPLL2_DEDICATED 0x05 + #define ENABLE_VPLL2_DEV_GRP 0xE0 ++#define TWL4030_VPLL2_DEV_GRP 0x33 ++#define TWL4030_VPLL2_DEDICATED 0x36 + + #define TWL_LED_LEDEN 0x00 + #define TWL_PWMA_PWMAON 0x00 +@@ -86,12 +88,24 @@ static void omap3evm_panel_cleanup(struct lcd_panel *panel) + + static int omap3evm_panel_enable(struct lcd_panel *panel) + { ++ if (omap_rev > OMAP3430_REV_ES1_0) { ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VPLL2_DEDICATED, TWL4030_VPLL2_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VPLL2_DEV_GRP, TWL4030_VPLL2_DEV_GRP); ++ } + omap_set_gpio_dataout(LCD_PANEL_ENABLE_GPIO, 0); + return 0; + } + + static void omap3evm_panel_disable(struct lcd_panel *panel) + { ++ if (omap_rev > OMAP3430_REV_ES1_0) { ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0, ++ TWL4030_VPLL2_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0, ++ TWL4030_VPLL2_DEV_GRP); ++ } + omap_set_gpio_dataout(LCD_PANEL_ENABLE_GPIO, 1); + } + + diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb index 72684249b9..66029225c4 100644 --- a/packages/linux/linux-omap_git.bb +++ b/packages/linux/linux-omap_git.bb @@ -10,7 +10,7 @@ SRCREV = "f7429fd378a29cf6947c2613e0fd6e6e36165167" PV = "2.6.27+2.6.28-rc3+${PR}+gitr${SRCREV}" #PV = "2.6.27+${PR}+gitr${SRCREV}" -PR = "r0" +PR = "r1" SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \ file://defconfig" @@ -50,6 +50,7 @@ SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \ SRC_URI_append_omap3evm = " \ file://evm-mcspi-ts.diff;patch=1 \ + file://omap3evm-lcd-redtint.diff;patch=1 \ " S = "${WORKDIR}/git" -- cgit v1.2.3 From dda91f2523aa41b263094bc3bcffeabc4b1b2b8d Mon Sep 17 00:00:00 2001 From: Phil Blundell Date: Sun, 9 Nov 2008 09:42:44 +0000 Subject: glib-2.0: apply patch from Andrea Adami to make thumb work with 2.18.1 --- .../glib-2.0/glib-2.0-2.18.1/atomic-thumb.patch | 42 ++++++++++++++++++++++ packages/glib-2.0/glib-2.0_2.18.1.bb | 1 + 2 files changed, 43 insertions(+) create mode 100644 packages/glib-2.0/glib-2.0-2.18.1/atomic-thumb.patch diff --git a/packages/glib-2.0/glib-2.0-2.18.1/atomic-thumb.patch b/packages/glib-2.0/glib-2.0-2.18.1/atomic-thumb.patch new file mode 100644 index 0000000000..d7aa08821f --- /dev/null +++ b/packages/glib-2.0/glib-2.0-2.18.1/atomic-thumb.patch @@ -0,0 +1,42 @@ +# gatomic.c uses SWP, which doesn't work in Thumb mode. +# Put that source file into a separate convenience library which is always built as ARM. + +Index: glib-2.18.1/glib/Makefile.am +=================================================================== +--- glib-2.18.1/glib/Makefile.am 2008-09-18 00:33:57.000000000 +0200 ++++ glib-2.18.1/glib/Makefile.am 2008-11-08 10:13:27.000000000 +0100 +@@ -80,6 +80,7 @@ + galiasdef.c + + lib_LTLIBRARIES = libglib-2.0.la ++noinst_LTLIBRARIES = libgatomic.la + + if OS_WIN32_AND_DLL_COMPILATION + if MS_LIB_AVAILABLE +@@ -96,10 +97,14 @@ + uninstall-ms-lib: + $(uninstall_ms_lib_cmd) + ++libgatomic_la_CFLAGS = $(CFLAGS) -mno-thumb ++ ++libgatomic_la_SOURCES = \ ++ gatomic.c ++ + libglib_2_0_la_SOURCES = \ + garray.c \ + gasyncqueue.c \ +- gatomic.c \ + gbacktrace.c \ + gbase64.c \ + gbookmarkfile.c \ +@@ -286,8 +291,8 @@ + pcre_inc = + endif + +-libglib_2_0_la_LIBADD = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ @ICONV_LIBS@ @G_LIBS_EXTRA@ $(pcre_lib) +-libglib_2_0_la_DEPENDENCIES = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ $(glib_win32_res) $(glib_def) ++libglib_2_0_la_LIBADD = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ @ICONV_LIBS@ @G_LIBS_EXTRA@ $(pcre_lib) libgatomic.la ++libglib_2_0_la_DEPENDENCIES = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ $(glib_win32_res) $(glib_def) libgatomic.la + + libglib_2_0_la_LDFLAGS = \ + $(glib_win32_res_ldflag) \ diff --git a/packages/glib-2.0/glib-2.0_2.18.1.bb b/packages/glib-2.0/glib-2.0_2.18.1.bb index 3ac0487018..1083ef4ba0 100644 --- a/packages/glib-2.0/glib-2.0_2.18.1.bb +++ b/packages/glib-2.0/glib-2.0_2.18.1.bb @@ -9,3 +9,4 @@ SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glib/2.18/glib-${PV}.tar.bz2 \ file://glibconfig-sysdefs.h \ file://configure-libtool.patch;patch=1 \ " +SRC_URI_append_arm = "file://atomic-thumb.patch;patch=1" -- cgit v1.2.3 From 0661316d45aadb91a8bc807e26d7ded3ec1ec0ae Mon Sep 17 00:00:00 2001 From: Andrea Adami Date: Sun, 9 Nov 2008 09:51:58 +0000 Subject: bluez-utils: apply sbc-thumb.patch for 3.36 --- packages/bluez/bluez-utils_3.36.bb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/bluez/bluez-utils_3.36.bb b/packages/bluez/bluez-utils_3.36.bb index cf6d6328ea..403e32b1e2 100644 --- a/packages/bluez/bluez-utils_3.36.bb +++ b/packages/bluez/bluez-utils_3.36.bb @@ -2,9 +2,10 @@ require bluez-utils3.inc PR = "r1" +# removed hciattach-ti-bts.patch (landed upstream) SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \ file://hcid.conf \ - " + file://sbc-thumb.patch;patch=1" # see bluez-utils3.inc for the explanation of these option EXTRA_OECONF = " \ -- cgit v1.2.3 From c89f3d82f00cf55515f3f2cbd7adbfa3e529fca5 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sun, 9 Nov 2008 12:27:11 +0100 Subject: angstrom release set: remove ep93xx machine, add beagleboard and omap3evm --- contrib/angstrom/build-release.sh | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/contrib/angstrom/build-release.sh b/contrib/angstrom/build-release.sh index bb903b236a..8688ad5f75 100755 --- a/contrib/angstrom/build-release.sh +++ b/contrib/angstrom/build-release.sh @@ -52,10 +52,10 @@ do_report_success() { # No graphics -for machine in ep93xx gumstix-connex gumstix-verdex efika dht-walnut omap5912osk +for machine in gumstix-connex gumstix-verdex efika dht-walnut omap5912osk do BUILD_MACHINE=$machine - BUILD_CLEAN="libtool-cross base-files" + BUILD_CLEAN="base-files" BUILD_TARGETS="base-image console-image" do_build done @@ -78,7 +78,7 @@ do done # graphics, flash storage -for machine in om-gta01 a780 at91sam9263ek qemuarm h2200 h3900 h4000 h5000 poodle tosa hx4700 c7x0 spitz akita collie simpad +for machine in beagleboard omap3evm om-gta01 om-gta02 a780 at91sam9263ek qemuarm qemux86 h2200 h3900 h4000 h5000 poodle tosa hx4700 c7x0 spitz akita collie simpad do BUILD_CLEAN="base-files" BUILD_MACHINE=$machine @@ -87,7 +87,7 @@ do done # graphics, disk storage -for machine in spitz +for machine in spitz beagleboard omap3evm do BUILD_CLEAN="base-files" BUILD_MACHINE=$machine @@ -96,18 +96,17 @@ do done #phones -for machine in om-gta01 a780 +for machine in om-gta01 om-gta02 a780 do BUILD_MACHINE=$machine - BUILD_TARGETS="minimal-openmoko-image openmoko-image" + BUILD_TARGETS="minimal-openmoko-image openmoko-image fso-console-image fso-illume-image fso-image-light fso-image-nox fso-image" do_build done -# populate feeds -#for machine in ep93xx a780 efika collie ixp4xxbe -#do -# BUILD_MACHINE=$machine -# BUILD_TARGETS="meta-angstrom-2007" -# do_build -#done - +# omap3 boards +for machine in beagleboard omap3evm +do + BUILD_MACHINE=$machine + BUILD_TARGETS="beagleboard-demo-image" + do_build +done -- cgit v1.2.3 From fc4fd06b4b6476d36ab24953337e59809e85459b Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sun, 9 Nov 2008 13:32:51 +0100 Subject: angstrom release set: pass machine via env --- contrib/angstrom/build-release.sh | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/contrib/angstrom/build-release.sh b/contrib/angstrom/build-release.sh index 8688ad5f75..402f20dd8e 100755 --- a/contrib/angstrom/build-release.sh +++ b/contrib/angstrom/build-release.sh @@ -3,36 +3,33 @@ DO_UCLIBC=1 do_build() { - echo "MACHINE = \"$BUILD_MACHINE\"" > conf/auto.conf - if [ $DO_UCLIBC = 1 ] then BUILD_MODE="uclibc" - echo 'ANGSTROM_MODE = "uclibc"' >> conf/auto.conf + echo 'ANGSTROM_MODE = "uclibc"' > conf/auto.conf if [ "$BUILD_CLEAN" != "" ] then - bitbake -c clean $BUILD_CLEAN + MACHINE=$BUILD_MACHINE bitbake -c clean $BUILD_CLEAN fi for target in $BUILD_TARGETS do - bitbake $target && do_report_success + MACHINE=$BUILD_MACHINE bitbake $target && do_report_success done fi BUILD_MODE="glibc" - echo "MACHINE = \"$BUILD_MACHINE\"" > conf/auto.conf - echo 'ANGSTROM_MODE = "glibc"' >> conf/auto.conf + echo 'ANGSTROM_MODE = "glibc"' > conf/auto.conf if [ "$BUILD_CLEAN" != "" ] then - bitbake -c clean $BUILD_CLEAN + MACHINE=$BUILD_MACHINE bitbake -c clean $BUILD_CLEAN fi for target in $BUILD_TARGETS do - bitbake $target && do_report_success + MACHINE=$BUILD_MACHINE bitbake $target && do_report_success done } -- cgit v1.2.3 From d9c0d46e9554d5bb1162f62f3cc30b61c9d425d5 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sun, 9 Nov 2008 15:27:23 +0100 Subject: checksums: add sums for gnome-python and pyorbit --- conf/checksums.ini | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index e72b1af198..62be7eb72f 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -5074,6 +5074,10 @@ sha256=6d6d0f013594f1d5f685bc9d35ad2c64d7817339a932d8e17eede5b8a3c8196a md5=db310dadcc958a781a2752a6a7748e60 sha256=78f7dc6946e178513202f06afc19496c8ac1e3ac6c43c56c40f4db1a23762179 +[http://ftp.gnome.org/pub/GNOME/sources/gnome-python/2.22/gnome-python-2.22.1.tar.bz2] +md5=02054115dc86617da2a80eb87a1f988b +sha256=559b5d857b4fbc31418bc677f3391182ba1c357cabb8dfee04a1e709a7a63d01 + [http://ftp.gnome.org/pub/GNOME/sources/gnome-python-desktop/2.23/gnome-python-desktop-2.23.0.tar.bz2] md5=d8f8e61d99402e8b0a82d3c8d6e873be sha256=7ad66f99a1bad1ae0bbb02bd7a7cf8ed17fdc3fd104fa5c68e04961459ad5c50 @@ -13134,6 +13138,10 @@ sha256=f3237fe997390469af50f79ed5981f6c8cf051300f23c464aea332c900194a8c md5=45a4ecc4d0600661199e4040a81ea3fe sha256=10051f2894e901037dfa05b3c604fbdd76d891b9db2213a3c4f24ae79fbcc2a4 +[http://ftp.gnome.org/pub/GNOME/sources/pyorbit/2.14/pyorbit-2.14.3.tar.bz2] +md5=3c4d42ae1a7303fd85071a842617043f +sha256=a3517e0ddaf23508f99e7489a23e3462f86c528ea24bce432e832a78ee4149db + [http://www.wiggy.net/files/pyrad-0.8.tar.gz] md5=562ddc819d5f6b9d6e1458483e8bbd26 sha256=0ba5090c66aa76a78dac74f92162f3220ac244ad79ce3ee749ff59022c6ca9fd -- cgit v1.2.3 From 33085259dfbe1004f38efe40853b72ee166c834b Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sun, 9 Nov 2008 16:08:35 +0100 Subject: pyorbit: update to 2.24.0 --- conf/checksums.ini | 4 ++++ packages/gnome/pyorbit_2.24.0.bb | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 packages/gnome/pyorbit_2.24.0.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 62be7eb72f..12be6980bd 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -13142,6 +13142,10 @@ sha256=10051f2894e901037dfa05b3c604fbdd76d891b9db2213a3c4f24ae79fbcc2a4 md5=3c4d42ae1a7303fd85071a842617043f sha256=a3517e0ddaf23508f99e7489a23e3462f86c528ea24bce432e832a78ee4149db +[http://ftp.gnome.org/pub/GNOME/sources/pyorbit/2.24/pyorbit-2.24.0.tar.bz2] +md5=574593815e75ee6e98062c75d6d1581f +sha256=8754669b8220aa1f151b920360029d5ea28c42bec55769059676725fe28397b8 + [http://www.wiggy.net/files/pyrad-0.8.tar.gz] md5=562ddc819d5f6b9d6e1458483e8bbd26 sha256=0ba5090c66aa76a78dac74f92162f3220ac244ad79ce3ee749ff59022c6ca9fd diff --git a/packages/gnome/pyorbit_2.24.0.bb b/packages/gnome/pyorbit_2.24.0.bb new file mode 100644 index 0000000000..fe6e2d1b0b --- /dev/null +++ b/packages/gnome/pyorbit_2.24.0.bb @@ -0,0 +1,25 @@ +DESCRIPTION = "Python Orbit bindings" +LICENSE = "LGPL" + +PR = "r0" + +inherit gnome distutils-base pkgconfig + +SRC_URI += "file://acinclude.m4" + +EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../" +EXTRA_OEMAKE = "-e" + +do_configure() { + install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/ + export HOST_SYS=${HOST_SYS} + export BUILD_SYS=${BUILD_SYS} + export CC=${TARGET_PREFIX}gcc + autotools_do_configure +} + +do_stage() { + install -d ${STAGING_INCDIR}/pyorbit-2 + install -m 0644 src/pyorbit.h ${STAGING_INCDIR}/pyorbit-2 + autotools_stage_all +} -- cgit v1.2.3 From 4991b6049fc18c656caa32fe5b79b6b999e16a3b Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sun, 9 Nov 2008 16:12:15 +0100 Subject: gnome-python: fix locations of defs files --- packages/gnome/gnome-python_2.22.1.bb | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/gnome/gnome-python_2.22.1.bb b/packages/gnome/gnome-python_2.22.1.bb index 5ea7cba83a..c21ed9860d 100644 --- a/packages/gnome/gnome-python_2.22.1.bb +++ b/packages/gnome/gnome-python_2.22.1.bb @@ -10,6 +10,7 @@ inherit gnome distutils-base pkgconfig FILES_${PN}-dbg += "${libdir}/gnome-vfs-2.0/modules/.debug" do_configure() { + sed -i -e s:'`$PKG_CONFIG --variable=defsdir pygtk-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/defs\":g ${S}/configure.ac export HOST_SYS=${HOST_SYS} export BUILD_SYS=${BUILD_SYS} autotools_do_configure -- cgit v1.2.3 From 217085b82addded5064fbe2a05e3bcd2671ccfcc Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sun, 9 Nov 2008 16:26:05 +0100 Subject: gnome-python: use stage_all instead of stage_includes --- packages/gnome/gnome-python_2.22.1.bb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/gnome/gnome-python_2.22.1.bb b/packages/gnome/gnome-python_2.22.1.bb index c21ed9860d..0507cba010 100644 --- a/packages/gnome/gnome-python_2.22.1.bb +++ b/packages/gnome/gnome-python_2.22.1.bb @@ -3,7 +3,7 @@ LICENSE = "LGPL" DEPENDS = "libgnomeui pyorbit python-pygtk" RDEPENDS = "pyorbit" -PR = "r0" +PR = "r1" inherit gnome distutils-base pkgconfig @@ -16,3 +16,6 @@ do_configure() { autotools_do_configure } +do_stage() { + autotools_stage_all +} -- cgit v1.2.3 From 6a2d9761df0ae071953dbadd647944c990cb2abe Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sun, 9 Nov 2008 16:31:38 +0100 Subject: gnome-python-desktop: sed some more python locations --- packages/gnome/gnome-python-desktop_2.23.0.bb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/gnome/gnome-python-desktop_2.23.0.bb b/packages/gnome/gnome-python-desktop_2.23.0.bb index c489da124a..140c0a8dbf 100644 --- a/packages/gnome/gnome-python-desktop_2.23.0.bb +++ b/packages/gnome/gnome-python-desktop_2.23.0.bb @@ -1,7 +1,7 @@ LICENSE = "GPL/LGPL" DEPENDS = "librsvg libwnck totem-pl-parser libgtop gnome-panel gnome-desktop eds-dbus python-pygtk gnome-python libgnomeprint libgnomeprintui" -PR = "r2" +PR = "r3" inherit gnome distutils-base @@ -14,7 +14,10 @@ do_configure_prepend() { } do_configure_prepend() { - sed -i -e s:'`$PKG_CONFIG --variable=defsdir pygtk-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/defs\":g ${S}/configure.ac + sed -i -e s:'`$PKG_CONFIG --variable=defsdir pygtk-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/defs\":g \ + -e s:'`$PKG_CONFIG --variable=defsdir gnome-python-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/defs\":g \ + -e s:'`$PKG_CONFIG --variable=argtypesdir gnome-python-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/argtypes\":g \ + ${S}/configure.ac } AUTOTOOLS_STAGE_PKGCONFIG = "1" -- cgit v1.2.3 From 0bf971196e727b52b84bf2c60d28ec7719ff23e0 Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Sun, 9 Nov 2008 20:00:38 +0100 Subject: fso-image.bb: Replace xterm with gpe-terminal They seem to look the same, but gpe-teminal includes a .desktop file --- packages/images/fso-image.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/images/fso-image.bb b/packages/images/fso-image.bb index 8d75782286..992160ec72 100644 --- a/packages/images/fso-image.bb +++ b/packages/images/fso-image.bb @@ -44,7 +44,7 @@ AUDIO_INSTALL = "\ GTK_INSTALL = "\ openmoko-calculator2 \ - xterm \ + gpe-terminal \ openmoko-terminal2 \ gpe-scap \ tangogps \ -- cgit v1.2.3 From e67cecc8dd2e8ed8289d478c3f1a72a1999f6328 Mon Sep 17 00:00:00 2001 From: Philip Balister Date: Sun, 9 Nov 2008 17:45:31 -0700 Subject: pulseaudio-meta_0.9.10.bb : Correct typo. --- packages/pulseaudio/pulseaudio-meta_0.9.10.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pulseaudio/pulseaudio-meta_0.9.10.bb b/packages/pulseaudio/pulseaudio-meta_0.9.10.bb index 1c53ee0b91..7f5f72dad5 100644 --- a/packages/pulseaudio/pulseaudio-meta_0.9.10.bb +++ b/packages/pulseaudio/pulseaudio-meta_0.9.10.bb @@ -13,7 +13,7 @@ RDEPENDS = "\ pulseaudio-module-cli-protocol-unix \ pulseaudio-module-rescue-streams\ pulseaudio-module-suspend-on-idle \ - pulseaudio-module-volue-restore \ + pulseaudio-module-volume-restore \ gst-plugin-pulse \ libasound-module-ctl-pulse \ libasound-module-pcm-pulse \ -- cgit v1.2.3 From 99b78c8b96c7faa37cfca49d2a19f546f97e5d03 Mon Sep 17 00:00:00 2001 From: Mike Westerhof Date: Sun, 9 Nov 2008 21:18:24 -0600 Subject: glib-2.0-native: update older recipe (2.16.1) to also install libgio. --- packages/glib-2.0/glib-2.0-native_2.16.1.bb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/glib-2.0/glib-2.0-native_2.16.1.bb b/packages/glib-2.0/glib-2.0-native_2.16.1.bb index 4a610c4a74..c847bcc246 100644 --- a/packages/glib-2.0/glib-2.0-native_2.16.1.bb +++ b/packages/glib-2.0/glib-2.0-native_2.16.1.bb @@ -2,7 +2,7 @@ require glib-2.0_${PV}.bb FILESPATH = "${FILE_DIRNAME}/glib-2.0-${PV}:${FILE_DIRNAME}/files" DEPENDS = "gtk-doc-native" -PR = "r1" +PR = "r2" inherit native @@ -23,6 +23,7 @@ do_stage () { oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR} oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR} oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR} + oe_libinstall -so -C gio libgio-2.0 ${STAGING_LIBDIR} autotools_stage_includes install -d ${STAGING_INCDIR}/glib-2.0/glib install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h -- cgit v1.2.3 From 3b84b9a27154e3692fe2c091429594c24b65a9a1 Mon Sep 17 00:00:00 2001 From: Mike Westerhof Date: Mon, 10 Nov 2008 00:49:50 -0600 Subject: conf/machine/ixp4xx: remove duplicate archs now specificed in tune-xscale --- conf/machine/ixp4xxbe.conf | 2 +- conf/machine/ixp4xxle.conf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/machine/ixp4xxbe.conf b/conf/machine/ixp4xxbe.conf index 756024a3a7..575886fba6 100644 --- a/conf/machine/ixp4xxbe.conf +++ b/conf/machine/ixp4xxbe.conf @@ -4,7 +4,7 @@ TARGET_ARCH = "armeb" -PACKAGE_EXTRA_ARCHS = "armv4b armv4tb armv5eb armv5teb" +PACKAGE_EXTRA_ARCHS = "armv5eb" require conf/machine/include/ixp4xx.inc diff --git a/conf/machine/ixp4xxle.conf b/conf/machine/ixp4xxle.conf index 622db3ec27..d823c08a67 100644 --- a/conf/machine/ixp4xxle.conf +++ b/conf/machine/ixp4xxle.conf @@ -4,7 +4,7 @@ TARGET_ARCH = "arm" -PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te" +PACKAGE_EXTRA_ARCHS = "armv5e" require conf/machine/include/ixp4xx.inc -- cgit v1.2.3 From 50551ad424290f248638c58bf0218719e03ae6f1 Mon Sep 17 00:00:00 2001 From: Rod Whitby Date: Mon, 10 Nov 2008 13:48:09 +0000 Subject: unslung.conf: Define PREFERRED_PROVIDER for virtual/libc-initial:glibc-initial --- conf/distro/unslung.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/distro/unslung.conf b/conf/distro/unslung.conf index b59057b6ff..5cb162524f 100644 --- a/conf/distro/unslung.conf +++ b/conf/distro/unslung.conf @@ -45,6 +45,7 @@ PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial" PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-intermediate:gcc-cross-intermediate" PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc:gcc-cross" PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross" +PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}libc-initial:glibc-initial" PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}libc-for-gcc:glibc" PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}binutils:binutils-cross" PREFERRED_PROVIDERS += " virtual/libc:glibc" -- cgit v1.2.3 From df7e29eb9f23e4dcf1ce0f23ccc8fd42f1e2796a Mon Sep 17 00:00:00 2001 From: Rod Whitby Date: Mon, 10 Nov 2008 13:49:27 +0000 Subject: glibc_2.2.5: Make it buildable again for Unslung distro --- packages/glibc/glibc-initial_2.2.5.bb | 2 ++ packages/glibc/glibc_2.2.5.bb | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/glibc/glibc-initial_2.2.5.bb b/packages/glibc/glibc-initial_2.2.5.bb index 84412bd596..a2e656035e 100644 --- a/packages/glibc/glibc-initial_2.2.5.bb +++ b/packages/glibc/glibc-initial_2.2.5.bb @@ -3,3 +3,5 @@ require glibc-initial.inc DEFAULT_PREFERENCE_sh3 = "-99" FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-${PV}', '${FILE_DIRNAME}/glibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}" + +PROVIDES_unslung = "virtual/${TARGET_PREFIX}libc-initial" diff --git a/packages/glibc/glibc_2.2.5.bb b/packages/glibc/glibc_2.2.5.bb index c7d308b6a2..7cb6681a31 100644 --- a/packages/glibc/glibc_2.2.5.bb +++ b/packages/glibc/glibc_2.2.5.bb @@ -1,7 +1,7 @@ require glibc.inc FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs" -PR = "r19" +PR = "r20" DEFAULT_PREFERENCE_sh3 = "-99" @@ -199,7 +199,7 @@ require glibc-package.bbclass # Unslung distribution specific packages follow ... -PACKAGES_unslung = "libc6-unslung" +PACKAGES_unslung = "libc6-unslung libsegfault" PACKAGE_ARCH_unslung = "nslu2" PACKAGE_NO_GCONV_unslung = "1" RDEPENDS_libc6-unslung = "nslu2-linksys-libs" -- cgit v1.2.3 From 872fae1c4a7236c1e3f940fb057dacc11459f189 Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Mon, 10 Nov 2008 15:39:53 +0000 Subject: illume: Add patch to fix segfault on gsm module on FSO. --- packages/e17/illume/gsm-segfault.patch | 28 ++++++++++++++++++++++++++++ packages/e17/illume_svn.bb | 5 +++-- 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 packages/e17/illume/gsm-segfault.patch diff --git a/packages/e17/illume/gsm-segfault.patch b/packages/e17/illume/gsm-segfault.patch new file mode 100644 index 0000000000..f7bf87a9f1 --- /dev/null +++ b/packages/e17/illume/gsm-segfault.patch @@ -0,0 +1,28 @@ +Index: src/e_mod_gad_gsm.c +=================================================================== +--- src/e_mod_gad_gsm.c (revision 37564) ++++ src/e_mod_gad_gsm.c (working copy) +@@ -353,7 +353,7 @@ + { + /* We care only about the provider name right now. All the other status + * informations get ingnored for the gadget for now */ +- const char *provider, *name, *reg_stat; ++ const char *provider = 0 , *name = 0, *reg_stat = 0; + DBusMessageIter iter, a_iter, s_iter, v_iter; + + if (!dbus_message_has_signature(msg, "a{sv}")) return NULL; +@@ -380,10 +380,13 @@ + dbus_message_iter_next(&a_iter); + } + ++ if (!reg_stat) return NULL; + if (strcmp(reg_stat, "unregistered") == 0) provider = "No Service"; + else if (strcmp(reg_stat, "busy") == 0) provider = "Searching..."; + else if (strcmp(reg_stat, "denied") == 0) provider = "SOS only"; +- ++ ++ if (!provider) return NULL; ++ + return strdup(provider); + } + diff --git a/packages/e17/illume_svn.bb b/packages/e17/illume_svn.bb index 2c1521c813..6c4519bb70 100644 --- a/packages/e17/illume_svn.bb +++ b/packages/e17/illume_svn.bb @@ -4,9 +4,10 @@ AUTHOR = "Carsten 'Rasterman' Haitzler" LICENSE = "MIT/BSD" DEPENDS = "e-wm eet evas ecore edje embryo efreet edbus edje-native embryo-native eet-native" PV = "0.0+svnr${SRCREV}" -PR = "r13" +PR = "r14" -SRC_URI = "svn://svn.enlightenment.org/svn/e/trunk;module=illume;proto=http" +SRC_URI = "svn://svn.enlightenment.org/svn/e/trunk;module=illume;proto=http \ + file://gsm-segfault.patch;patch=1;pnum=0" S = "${WORKDIR}/${PN}" inherit autotools pkgconfig -- cgit v1.2.3 From 79db433025da916140571151ba6bdbd5de33f8fe Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Mon, 10 Nov 2008 16:20:41 +0000 Subject: illume: Actually use a patch that applies. Sorry. --- packages/e17/illume/gsm-segfault.patch | 21 ++++++++++----------- packages/e17/illume_svn.bb | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/packages/e17/illume/gsm-segfault.patch b/packages/e17/illume/gsm-segfault.patch index f7bf87a9f1..f9fc2645b6 100644 --- a/packages/e17/illume/gsm-segfault.patch +++ b/packages/e17/illume/gsm-segfault.patch @@ -1,28 +1,27 @@ -Index: src/e_mod_gad_gsm.c +Index: illume/src/e_mod_gad_gsm.c =================================================================== ---- src/e_mod_gad_gsm.c (revision 37564) -+++ src/e_mod_gad_gsm.c (working copy) -@@ -353,7 +353,7 @@ +--- illume.orig/src/e_mod_gad_gsm.c 2008-11-10 16:15:08.000000000 +0000 ++++ illume/src/e_mod_gad_gsm.c 2008-11-10 16:16:23.000000000 +0000 +@@ -357,7 +357,7 @@ { /* We care only about the provider name right now. All the other status * informations get ingnored for the gadget for now */ - const char *provider, *name, *reg_stat; + const char *provider = 0 , *name = 0, *reg_stat = 0; DBusMessageIter iter, a_iter, s_iter, v_iter; - + if (!dbus_message_has_signature(msg, "a{sv}")) return NULL; -@@ -380,10 +380,13 @@ - dbus_message_iter_next(&a_iter); +@@ -384,10 +384,13 @@ + dbus_message_iter_next(&a_iter); } - + + if (!reg_stat) return NULL; if (strcmp(reg_stat, "unregistered") == 0) provider = "No Service"; else if (strcmp(reg_stat, "busy") == 0) provider = "Searching..."; else if (strcmp(reg_stat, "denied") == 0) provider = "SOS only"; -- -+ + + if (!provider) return NULL; + return strdup(provider); } - + diff --git a/packages/e17/illume_svn.bb b/packages/e17/illume_svn.bb index 6c4519bb70..de738211f7 100644 --- a/packages/e17/illume_svn.bb +++ b/packages/e17/illume_svn.bb @@ -7,7 +7,7 @@ PV = "0.0+svnr${SRCREV}" PR = "r14" SRC_URI = "svn://svn.enlightenment.org/svn/e/trunk;module=illume;proto=http \ - file://gsm-segfault.patch;patch=1;pnum=0" + file://gsm-segfault.patch;patch=1;pnum=1" S = "${WORKDIR}/${PN}" inherit autotools pkgconfig -- cgit v1.2.3 From e9eaf164be4e8043d2ea49e1a273a4ffd8ddc065 Mon Sep 17 00:00:00 2001 From: woglinde Date: Sun, 9 Nov 2008 21:28:31 +0100 Subject: gdal-1.5.2: fix various stuff * *-config file in staging had the wrong directories * put /usr/share into dev files to save space on the devices, should eventually become -example * bump PR --- packages/gdal/files/gdal_config.patch | 61 +++++++++++++++++++++++++++++++++++ packages/gdal/gdal_1.5.2.bb | 18 ++++++++--- 2 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 packages/gdal/files/gdal_config.patch diff --git a/packages/gdal/files/gdal_config.patch b/packages/gdal/files/gdal_config.patch new file mode 100644 index 0000000000..b09cc43faf --- /dev/null +++ b/packages/gdal/files/gdal_config.patch @@ -0,0 +1,61 @@ +Index: gdal-1.5.2/apps/GNUmakefile +=================================================================== +--- gdal-1.5.2.orig/apps/GNUmakefile 2007-12-21 04:20:10.000000000 +0100 ++++ gdal-1.5.2/apps/GNUmakefile 2008-11-09 20:58:31.506906134 +0100 +@@ -21,7 +21,7 @@ + ogrtindex$(EXE) + endif + +-default: gdal-config-inst gdal-config $(BIN_LIST) ++default: gdal-config $(BIN_LIST) + + lib-depend: + (cd ../gcore ; $(MAKE) ) +@@ -108,41 +108,26 @@ + -o test_ogrsf$(EXE) + + clean: +- $(RM) *.o $(BIN_LIST) core gdal-config gdal-config-inst ++ $(RM) *.o $(BIN_LIST) core gdal-config + + $(DEP_LIBS): + +- + gdal-config: gdal-config.in ../GDALmake.opt ./GNUmakefile ../VERSION + rm -f gdal-config + echo '#!/bin/sh' > gdal-config +- echo 'CONFIG_LIBS="$(CONFIG_LIBS)"' >> gdal-config ++ echo 'CONFIG_LIBS="$(CONFIG_LIBS_INS)"' >> gdal-config + echo 'CONFIG_DEP_LIBS="$(LIBS)"' >> gdal-config +- echo 'CONFIG_PREFIX="$(GDAL_ROOT)"' >> gdal-config +- echo 'CONFIG_CFLAGS="-I$(GDAL_ROOT)/port -I$(GDAL_ROOT)/gcore -I$(GDAL_ROOT)/alg -I$(GDAL_ROOT)/ogr -I$(GDAL_ROOT)/ogr/ogrsf_frmts"' >> gdal-config +- echo 'CONFIG_DATA="$(GDAL_ROOT)/data"' >> gdal-config ++ echo 'CONFIG_PREFIX="$(INST_PREFIX)"' >> gdal-config ++ echo 'CONFIG_CFLAGS="-I$(INST_INCLUDE)"' >> gdal-config ++ echo 'CONFIG_DATA="$(INST_DATA)"' >> gdal-config + echo 'CONFIG_VERSION="'`cat ../VERSION`'"' >> gdal-config + echo 'CONFIG_OGR_ENABLED=$(OGR_ENABLED)' >> gdal-config + echo 'CONFIG_FORMATS="$(GDAL_FORMATS)"' >> gdal-config + cat gdal-config.in >> gdal-config + chmod a+x gdal-config + +-gdal-config-inst: gdal-config.in ../GDALmake.opt ./GNUmakefile ../VERSION +- rm -f gdal-config-inst +- echo '#!/bin/sh' > gdal-config-inst +- echo 'CONFIG_LIBS="$(CONFIG_LIBS_INS)"' >> gdal-config-inst +- echo 'CONFIG_DEP_LIBS="$(LIBS)"' >> gdal-config-inst +- echo 'CONFIG_PREFIX="$(INST_PREFIX)"' >> gdal-config-inst +- echo 'CONFIG_CFLAGS="-I$(INST_INCLUDE)"' >> gdal-config-inst +- echo 'CONFIG_DATA="$(INST_DATA)"' >> gdal-config-inst +- echo 'CONFIG_VERSION="'`cat ../VERSION`'"' >> gdal-config-inst +- echo 'CONFIG_OGR_ENABLED=$(OGR_ENABLED)' >> gdal-config-inst +- echo 'CONFIG_FORMATS="$(GDAL_FORMATS)"' >> gdal-config-inst +- cat gdal-config.in >> gdal-config-inst +- chmod a+x gdal-config-inst +- + + install: default + for f in $(BIN_LIST) ; do $(INSTALL) $$f $(DESTDIR)$(INST_BIN) ; done +- $(INSTALL) gdal-config-inst $(DESTDIR)$(INST_BIN)/gdal-config ++ $(INSTALL) gdal-config $(DESTDIR)$(INST_BIN)/ + diff --git a/packages/gdal/gdal_1.5.2.bb b/packages/gdal/gdal_1.5.2.bb index 60162e15f5..6874ddf35a 100644 --- a/packages/gdal/gdal_1.5.2.bb +++ b/packages/gdal/gdal_1.5.2.bb @@ -1,11 +1,14 @@ DESCRIPTION = "GDAL is a translator library for raster geospatial data formats" HOMEPAGE = "http://www.gdal.org/" LICENSE = "MIT" -DEPENDS = "proj-4 sqlite3 zlib jpeg libpng jasper expat" +DEPENDS = "proj-4 sqlite3 zlib jpeg libpng tiff giflib curl jasper expat" +PR = "r1" -SRC_URI = "http://www.gdal.org/dl/${P}.tar.gz" +SRC_URI = "http://www.gdal.org/dl/${P}.tar.gz \ + file://gdal_config.patch;patch=1 \ + " -inherit autotools pkgconfig binconfig +inherit autotools binconfig EXTRA_OECONF = "--without-perl \ --without-python \ @@ -14,15 +17,20 @@ EXTRA_OECONF = "--without-perl \ --with-libz=${STAGING_DIR_TARGET} \ --with-png=${STAGING_DIR_TARGET} \ --with-jpeg=${STAGING_DIR_TARGET} \ - --with-jasper=${STAGING_DIR_TARGET} \ --with-libtiff=${STAGING_DIR_TARGET} \ + --with-gif=${STAGING_DIR_TARGET} \ + --with-jasper=${STAGING_DIR_TARGET} \ --with-expat=${STAGING_DIR_TARGET} \ --with-expat-inc=${STAGING_INCDIR} \ --with-expat-lib=${STAGING_LIBDIR} \ " # GDAL clutter /usr/share with files instead of using a subdir :( -FILES_${PN} += "${datadir}" +FILES_${PN}-dev += "${datadir}" + +do_compile() { + oe_runmake default +} do_stage() { autotools_stage_all -- cgit v1.2.3 From 986245012f0c83e5356724f2387184442b74a1b5 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 10 Nov 2008 23:06:58 +0000 Subject: opie-cardapplet: add 1.2.4 version recipe Signed-off-by: Dmitry Baryshkov --- packages/opie-cardapplet/opie-cardapplet_1.2.4.bb | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 packages/opie-cardapplet/opie-cardapplet_1.2.4.bb diff --git a/packages/opie-cardapplet/opie-cardapplet_1.2.4.bb b/packages/opie-cardapplet/opie-cardapplet_1.2.4.bb new file mode 100644 index 0000000000..6c4d3c1af0 --- /dev/null +++ b/packages/opie-cardapplet/opie-cardapplet_1.2.4.bb @@ -0,0 +1,10 @@ +require ${PN}.inc + +PR = "r0" + +SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/applets/cardapplet \ + ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ + ${HANDHELDS_CVS};tag=${TAG};module=opie/sounds \ + ${HANDHELDS_CVS};tag=${TAG};module=opie/apps \ + ${HANDHELDS_CVS};tag=${TAG};module=opie/etc" + -- cgit v1.2.3 From 605bcac3af6f9b85d5d0e15df1b5e8a6a91d6aea Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 10 Nov 2008 23:08:20 +0000 Subject: libmailwrapper: add 1.2.4 version recipe Signed-off-by: Dmitry Baryshkov --- packages/libmailwrapper/libmailwrapper_1.2.4.bb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/libmailwrapper/libmailwrapper_1.2.4.bb diff --git a/packages/libmailwrapper/libmailwrapper_1.2.4.bb b/packages/libmailwrapper/libmailwrapper_1.2.4.bb new file mode 100644 index 0000000000..c3fcddf49b --- /dev/null +++ b/packages/libmailwrapper/libmailwrapper_1.2.4.bb @@ -0,0 +1,5 @@ +require ${PN}.inc + +PR = "r0" + +SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/net/mail/libmailwrapper" -- cgit v1.2.3 From 1e90c8d745ca227f116d5a97e6adae3f377426bf Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 10 Nov 2008 23:11:14 +0000 Subject: task-sdk-opie: correctly select qte or qte-mt preferred-versions-opie*.inc contain a mechanism for selecting between qte or qte-mt packages. Follow that way to correctly select task-sdk-opie dependency. Signed-off-by: Dmitry Baryshkov --- packages/tasks/task-sdk-opie.bb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/tasks/task-sdk-opie.bb b/packages/tasks/task-sdk-opie.bb index a38e58385f..f6446c4f76 100644 --- a/packages/tasks/task-sdk-opie.bb +++ b/packages/tasks/task-sdk-opie.bb @@ -3,6 +3,8 @@ PR = "r7" LICENSE = "MIT" ALLOW_EMPTY = "1" +PALMTOP_USE_MULTITHREADED_QT ?= "yes" + PACKAGES = "task-sdk-opie" RDEPENDS_task-sdk-opie = "\ @@ -13,6 +15,6 @@ RDEPENDS_task-sdk-opie = "\ libopiepim2 \ libopieui2 \ libqpe-opie \ - qte \ + ${@base_conditional("PALMTOP_USE_MULTITHREADED_QT", "yes", "qte-mt", "qte", d)} \ libqtaux2 \ libmailwrapper" -- cgit v1.2.3 From 72503ee854a543e59da0d1b4e4be3a096e74e7cf Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 10 Nov 2008 23:12:57 +0000 Subject: meta-toolchain-opie: add Opie SDK package Signed-off-by: Dmitry Baryshkov --- packages/meta/meta-toolchain-opie.bb | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/meta/meta-toolchain-opie.bb diff --git a/packages/meta/meta-toolchain-opie.bb b/packages/meta/meta-toolchain-opie.bb new file mode 100644 index 0000000000..c72208c822 --- /dev/null +++ b/packages/meta/meta-toolchain-opie.bb @@ -0,0 +1,7 @@ +TOOLCHAIN_TARGET_TASK = "\ + task-sdk-base \ + task-sdk-opie" + +require meta-toolchain.bb + +SDK_SUFFIX = "toolchain-opie" -- cgit v1.2.3 From f377746d0c67ac450bf8b64164c78717034c84be Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Tue, 11 Nov 2008 01:01:51 +0100 Subject: xserver-kdrive-common: Update openmoko/Xserver script --- .../xserver-kdrive-common/openmoko/Xserver | 87 ++++++++++++++-------- 1 file changed, 57 insertions(+), 30 deletions(-) diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/openmoko/Xserver b/packages/xserver-kdrive-common/xserver-kdrive-common/openmoko/Xserver index d9ee794b75..e1adfa32a5 100644 --- a/packages/xserver-kdrive-common/xserver-kdrive-common/openmoko/Xserver +++ b/packages/xserver-kdrive-common/xserver-kdrive-common/openmoko/Xserver @@ -2,7 +2,6 @@ # # note xinit needs full server path -XSERVER=/usr/bin/Xipaq if [ -f /usr/bin/Xfbdev ]; then XSERVER=/usr/bin/Xfbdev fi @@ -12,12 +11,6 @@ fi if [ -f /usr/bin/Xorg ]; then XSERVER=/usr/bin/Xorg fi -if [ -f /usr/bin/Xomap ]; then - XSERVER=/usr/bin/Xomap -fi -if [ -f /usr/bin/Xglamo ]; then - XSERVER=/usr/bin/Xglamo -fi . /etc/profile @@ -29,6 +22,13 @@ fallback_screen_arg() { echo -n "${w}x${h}x${b}" } +screen_width() { + geom=`fbset | grep geometry` + w=`echo $geom | awk '{ print $2 }'` + echo -n "${w}" +} + + module_id() { ## used to read from assets, but sometimes assets is corrupted # grep "Module ID" /proc/hal/assets | sed "s/.*://" @@ -39,7 +39,9 @@ module_id() { export USER=root -ARGS=" -pn" +SCREEN_SIZE=`fallback_screen_arg` + +ARGS=" -br -pn" # use ucb 1x00 touchscreen if present if [ -z "$TSLIB_TSDEVICE" ] && [ -e /dev/touchscreen/ucb1x00 ]; then @@ -55,57 +57,82 @@ fi # start off server in conventional location. case `module_id` in "HP iPAQ H3100" | "HP iPAQ H3800") - ARGS="$ARGS -br -dpi 100 -rgba vrgb -screen 320x240@90" ;; + ARGS="$ARGS -dpi 100 -rgba vrgb -screen ${SCREEN_SIZE}@90" ;; "HP iPAQ H3600" | "HP iPAQ H3700" | "HP iPAQ H3900") - ARGS="$ARGS -br -dpi 100 -rgba vbgr -screen 320x240@270" ;; + ARGS="$ARGS -dpi 100 -rgba vbgr -screen ${SCREEN_SIZE}@270" ;; "HP iPAQ H5400" | "HP iPAQ H2200") - ARGS="$ARGS -br -dpi 100 -rgba rgb" ;; + ARGS="$ARGS -dpi 100 -rgba rgb" ;; "HP iPAQ HX4700") - ARGS="$ARGS -br -dpi 200" + ARGS="$ARGS -dpi 200" IMAGEON="w3220" ;; "Ramses") - ARGS="$ARGS -br -dpi 100 -rgba vrgb -screen 320x240@90 vt2" ;; + # What is this "vt2" in aid of? + ARGS="$ARGS -dpi 100 -rgba vrgb -screen ${SCREEN_SIZE}@90 vt2" ;; # both 'Sharp-Collie' and just 'Collie' have been reported *Poodle) - ARGS="$ARGS -br -dpi 100 -rgba vrgb -screen 320x240@270" ;; + ARGS="$ARGS -dpi 100 -rgba vrgb -screen ${SCREEN_SIZE}@270" ;; *Collie) - ARGS="$ARGS -br -dpi 100 -rgba vrgb -screen 320x240@270" ;; + ARGS="$ARGS -dpi 100 -rgba vrgb -screen ${SCREEN_SIZE}@270" ;; "SHARP Shepherd" | "SHARP Husky" | "SHARP Corgi") - ARGS="$ARGS -br -dpi 200 -rgba rgb" + if [ `screen_width` -gt 330 ] ; then + DPI=200 + else + DPI=100 + fi + ARGS="$ARGS -dpi ${DPI} -rgba rgb" IMAGEON="w100" ;; "SHARP Spitz" | "SHARP Akita" | "SHARP Borzoi") - ARGS="$ARGS -br -dpi 200 -rgba rgb -screen 480x640@270" ;; + ARGS="$ARGS -dpi 200 -rgba rgb -screen ${SCREEN_SIZE}@270" ;; "Simpad") - ARGS="$ARGS -br -dpi 100 -rgba rgb" ;; + ARGS="$ARGS -dpi 100 -rgba rgb" ;; "Generic OMAP1510/1610/1710") - ARGS="$ARGS -br -dpi 220 -mouse /dev/input/event0" ;; + ARGS="$ARGS -dpi 220 -mouse /dev/input/event0" ;; "Cellon C8000 Board") - ARGS="$ARGS -br -dpi 100 -screen 240x320,10,1" ;; + ARGS="$ARGS -dpi 100 -screen ${SCREEN_SIZE},10,1" ;; "HTC Magician") - ARGS="$ARGS -br -dpi 142" ;; + ARGS="$ARGS -dpi 142" ;; "HTC Universal") - ARGS="$ARGS -br -dpi 225 -screen 480x640@270" ;; + ARGS="$ARGS -dpi 225 -screen ${SCREEN_SIZE}@270" ;; "ARM-IntegratorCP" | "ARM-Versatile PB") - ARGS="$ARGS -br -rgba vrgb" ;; + ARGS="$ARGS -rgba vrgb" ;; "Compulab CM-x270") modprobe mbxfb - ARGS="$ARGS -br -fb /dev/fb1" ;; - "GTA01" | "GTA02") - ARGS="$ARGS -dpi 285 -screen 480x640 -hide-cursor -root-ppm /usr/share/pixmaps/xsplash-vga.ppm vt1" ;; - "Motorola Ezx Platform") - ARGS="$ARGS -dpi 170 -screen 240x320 -hide-cursor -root-ppm /usr/share/pixmaps/xsplash-qvga.ppm vt1" ;; + ARGS="$ARGS -fb /dev/fb1" ;; + "GTA01") + if [ `screen_width` -gt 330 ] ; then + DPI=285 + else + DPI=140 + fi + ARGS="$ARGS -dpi ${DPI} -screen ${SCREEN_SIZE} -mouse tslib -hide-cursor -root-ppm /usr/share/pixmaps/xsplash-vga.ppm vt1" ;; + "GTA02") + if [ `screen_width` -gt 330 ] ; then + DPI=285 + else + DPI=140 + fi + ARGS="$ARGS -dpi ${DPI} -screen ${SCREEN_SIZE} -mouse tslib -hide-cursor -root-ppm /usr/share/pixmaps/xsplash-vga.ppm vt1" + XSERVER=/usr/bin/Xglamo + ;; + "Nokia N770") + ARGS="$ARGS -dpi 225 -screen ${SCREEN_SIZE} -mouse tslib" + XSERVER=/usr/bin/Xomap ;; "Nokia N800") - ARGS="$ARGS -br -dpi 225 -screen 800x480x16 -mouse tslib" ;; + ARGS="$ARGS -dpi 225 -screen ${SCREEN_SIZE} -mouse tslib" + XSERVER=/usr/bin/Xomap ;; + "Motorola Ezx Platform") + ARGS="$ARGS -dpi 170 -screen ${SCREEN_SIZE} -hide-cursor -root-ppm /usr/share/pixmaps/xsplash-qvga.ppm vt1" ;; "Freescale MX21ADS") # That's what /proc/cpuinfo shows as hardware on the chumby ARGS="$ARGS -dpi 121 -screen 320x240 -hide-cursor -mouse tslib -root-ppm /usr/share/pixmaps/xsplash-qvga.ppm vt1" ;; + *) # It is a device we do not know about, in which case we force # kdrive to use the current framebuffer geometry -- otherwise # it will default to trying to achieve 1024x768 - S=`fallback_screen_arg` + S=${SCREEN_SIZE} ARGS="$ARGS -screen $S" ;; esac -- cgit v1.2.3 From 2c3da95f41b83a8709ccda9fdd2cd7bf087e4a15 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 11 Nov 2008 09:18:46 +0100 Subject: feedbrowser: remove bogus check so the db will get created and fix SQL to get the feeds created --- contrib/feed-browser/includes/functions.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/feed-browser/includes/functions.inc b/contrib/feed-browser/includes/functions.inc index d4454ca708..4c7841f797 100644 --- a/contrib/feed-browser/includes/functions.inc +++ b/contrib/feed-browser/includes/functions.inc @@ -428,7 +428,7 @@ function check_database() { $db_exists = FALSE; - if(file_exists(DB_FILENAME) AND $db = sqlite_open(DB_FILENAME)) + if($db = sqlite_open(DB_FILENAME)) { $db_exists = TRUE; @@ -461,7 +461,7 @@ function check_database() f_id int(8), f_name varchar(32), f_uri varchar(100), - f_type varchar(16) + f_type varchar(16), f_comments varchar(500))"); insert_feeds ($db) ; -- cgit v1.2.3 From 14a31297558bccf048e1a66d04f1c500507ff808 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 11 Nov 2008 10:04:19 +0100 Subject: xserver xorg: simplify omap3evm xorg.conf, HAL handles most of the input stuff nowadays --- .../xorg-xserver/xserver-xorg/omap3evm/xorg.conf | 171 +++++---------------- 1 file changed, 38 insertions(+), 133 deletions(-) diff --git a/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf b/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf index 55eba4fc21..43296dbd8a 100644 --- a/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf +++ b/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf @@ -1,133 +1,38 @@ - -# xorg configuration - -Section "ServerLayout" - Identifier "Default Layout" - Screen 0 "Screen0" 0 0 - InputDevice "touchscreen0" "CorePointer" - InputDevice "Keyboard0" "CoreKeyboard" -EndSection - -Section "Files" - -# RgbPath is the location of the RGB database. Note, this is the name of the -# file minus the extension (like ".txt" or ".db"). There is normally -# no need to change the default. -# Multiple FontPath entries are allowed (they are concatenated together) -# By default, Red Hat 6.0 and later now use a font server independent of -# the X server to render fonts. -# FontPath "unix/:7100" - FontPath "/usr/lib/X11/fonts/misc" -EndSection - -Section "Module" - Load "dbe" - Load "extmod" - Load "fbdevhw" -# Load "glx" - Load "record" - Load "freetype" - Load "type1" - Load "tslib" -# to enable Xv, link /dev/videox to video device, eg. ln -s video0 /dev/videox -# Load "z4l" -EndSection - -Section "InputDevice" - -# Specify which keyboard LEDs can be user-controlled (eg, with xset(1)) -# Option "Xleds" "1 2 3" -# To disable the XKEYBOARD extension, uncomment XkbDisable. -# Option "XkbDisable" -# To customise the XKB settings to suit your keyboard, modify the -# lines below (which are the defaults). For example, for a non-U.S. -# keyboard, you will probably want to use: -# Option "XkbModel" "pc102" -# If you have a US Microsoft Natural keyboard, you can use: -# Option "XkbModel" "microsoft" -# -# Then to change the language, change the Layout setting. -# For example, a german layout can be obtained with: -# Option "XkbLayout" "de" -# or: -# Option "XkbLayout" "de" -# Option "XkbVariant" "nodeadkeys" -# -# If you'd like to switch the positions of your capslock and -# control keys, use: -# Option "XkbOptions" "ctrl:swapcaps" -# Or if you just want both to be control, use: -# Option "XkbOptions" "ctrl:nocaps" -# - Identifier "Keyboard0" - Driver "keyboard" - Option "XkbModel" "pc105" - Option "XkbLayout" "us" -EndSection - -Section "InputDevice" - Identifier "touchscreen0" - Driver "tslib" - Option "TslibDevice" "/dev/input/touchscreen0" -EndSection - -Section "Monitor" - Identifier "Monitor0" - VendorName "Monitor Vendor" - ModelName "NEC FP2141SB" -# DisplaySize 400 300 -# Note: setting HorizSync/VertRefresh will override DDC probe -# HorizSync 30.0 - 140.0 -# VertRefresh 25.0 - 160.0 - Option "dpms" -EndSection - -Section "Monitor" - Identifier "Monitor1" - VendorName "Generic Vendor" - ModelName "Generic Monitor" - HorizSync 28-50 - VertRefresh 43-73 - Modeline "800x600-60" 40.0000 800 840 976 1056 600 601 605 628 - Modeline "800x600-72" 50.0000 800 856 976 1040 600 637 643 666 - Modeline "640x480-60" 25.1749 640 656 744 800 480 490 492 525 -HSync -VSync - Modeline "640x480-72" 31.5000 640 664 704 832 480 489 492 520 -HSync -VSync - Option "dpms" -EndSection - - -Section "Device" - Identifier "FBDev" - Driver "omapfb" - #Option "shadowfb" "off" -EndSection - -Section "Screen" - Identifier "Screen0" - Device "FBDev" - Monitor "Monitor0" - DefaultDepth 16 - - SubSection "Display" - Depth 8 - Modes "1024x768" "800x600" "640x480" - EndSubsection - - SubSection "Display" - Depth 16 - Modes "1024x768" "800x600" "640x480" - EndSubsection - - SubSection "Display" - Depth 24 - FbBpp 32 - Modes "1024x768" "800x600" "640x480" - EndSubsection - -EndSection - -Section "DRI" - Group 0 - Mode 0666 -EndSection - +Section "Module" + Load "extmod" + Load "dbe" + Load "glx" + Load "freetype" + Load "type1" + Load "record" + Load "dri" +EndSection + +Section "InputDevice" + Identifier "touchscreen0" + Driver "tslib" + Option "TslibDevice" "/dev/input/touchscreen0" + Option "Width" "480" + Option "Height" "640" +EndSection + +Section "Monitor" + Identifier "Builtin Default Monitor" +EndSection + +Section "Device" + Identifier "Builtin Default fbdev Device 0" + Driver "omapfb" +EndSection + +Section "Screen" + Identifier "Builtin Default fbdev Screen 0" + Device "Builtin Default fbdev Device 0" + Monitor "Builtin Default Monitor" +EndSection + +Section "ServerLayout" + Identifier "Builtin Default Layout" + Screen "Builtin Default fbdev Screen 0" + InputDevice "touchscreen0" "CorePointer" +EndSection -- cgit v1.2.3 From b599dd011042785fb8435265d4720ca10d2d0dfc Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Mon, 10 Nov 2008 18:47:32 -0200 Subject: qemu (svn): fix include of dirent.h file --- packages/qemu/qemu-0.9.1+svn/fix_dirent_h_include.patch | 12 ++++++++++++ packages/qemu/qemu_svn.bb | 5 +++-- 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 packages/qemu/qemu-0.9.1+svn/fix_dirent_h_include.patch diff --git a/packages/qemu/qemu-0.9.1+svn/fix_dirent_h_include.patch b/packages/qemu/qemu-0.9.1+svn/fix_dirent_h_include.patch new file mode 100644 index 0000000000..1320422aa7 --- /dev/null +++ b/packages/qemu/qemu-0.9.1+svn/fix_dirent_h_include.patch @@ -0,0 +1,12 @@ +--- a/linux-user/syscall.c~ 2008-11-10 18:39:25.000000000 -0200 ++++ b/linux-user/syscall.c 2008-11-10 18:39:25.000000000 -0200 +@@ -76,8 +76,8 @@ + #include + #include + #include +-#include + #include ++#include + + #include "qemu.h" + #include "qemu_spinlock.h" diff --git a/packages/qemu/qemu_svn.bb b/packages/qemu/qemu_svn.bb index 6e52a1513f..e8d9883c74 100644 --- a/packages/qemu/qemu_svn.bb +++ b/packages/qemu/qemu_svn.bb @@ -1,7 +1,7 @@ LICENSE = "GPL" DEPENDS = "zlib" PV = "0.9.1+svnr${SRCREV}" -PR = "r12" +PR = "r13" FILESPATH = "${FILE_DIRNAME}/qemu-${PV}/:${FILE_DIRNAME}/qemu-0.9.1+svn/" @@ -33,7 +33,8 @@ SRC_URI = "\ file://fix_brk.patch;patch=1 \ file://fix_protection_bits.patch;patch=1 \ file://revert_arm_tcg.patch.gz;patch=1;minrev=4242 \ - file://qemu-n800-support.patch;patch=1" + file://qemu-n800-support.patch;patch=1 \ + file://fix_dirent_h_include.patch;patch=1" S = "${WORKDIR}/trunk" -- cgit v1.2.3 From 4a70a7201b0e8be41f68c3c8659061d672f8d5b4 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 11 Nov 2008 13:21:18 +0100 Subject: xf86-input-tslib: add patch to make detection using HAL work instead of hardcoding /dev/event0 --- .../xf86-input-tslib/use-hal-for-device.diff | 45 ++++++++++++++++++++++ packages/xorg-driver/xf86-input-tslib_0.0.5.bb | 3 +- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 packages/xorg-driver/xf86-input-tslib/use-hal-for-device.diff diff --git a/packages/xorg-driver/xf86-input-tslib/use-hal-for-device.diff b/packages/xorg-driver/xf86-input-tslib/use-hal-for-device.diff new file mode 100644 index 0000000000..9f2cfa25d9 --- /dev/null +++ b/packages/xorg-driver/xf86-input-tslib/use-hal-for-device.diff @@ -0,0 +1,45 @@ +From: Markku Vire markku.vire@movial.fi +Date: Tue, 9 Oct 2007 07:29:08 +0000 (+0300) +Subject: Changed tslib device path to use the data provided by +X-Git-Url: http://linux.onarm.com/gitweb/?p=generic%2Fsource%2Fxf86-input-tslib.git;a=commitdiff_plain;h=9ead96bb85857c0122b7a1a4653a5863f187d511 + +Changed tslib device path to use the data provided by +automatic device detection. +--- + +--- /tmp/tslib.c 2008-11-11 13:05:57.000000000 +0100 ++++ xf86-input-tslib-0.0.5/src/tslib.c 2008-11-11 13:10:55.000000000 +0100 +@@ -72,11 +72,6 @@ + int width; + }; + +-static const char *DEFAULTS[] = { +- "TslibDevice", "/dev/event0", +- NULL +-}; +- + static void + BellProc(int percent, DeviceIntPtr pDev, pointer ctrl, int unused) + { +@@ -308,7 +303,7 @@ + pInfo->private = priv; + + /* Collect the options, and process the common options. */ +- xf86CollectInputOptions(pInfo, DEFAULTS, NULL); ++ xf86CollectInputOptions(pInfo, NULL, NULL); + xf86ProcessCommonOptions(pInfo, pInfo->options); + + priv->screen_num = xf86SetIntOption(pInfo->options, "ScreenNumber", 0 ); +@@ -334,8 +329,10 @@ + priv->rotate = TSLIB_ROTATE_NONE; + } + +- s = xf86SetStrOption(pInfo->options, "TslibDevice", NULL); +- ++ s = xf86CheckStrOption(dev->commonOptions, "path", NULL); ++ if (!s) ++ s = xf86CheckStrOption(dev->commonOptions, "Device", NULL); ++ + priv->ts = ts_open(s, 0); + if (!priv->ts) { + ErrorF("ts_open failed (device=%s)\n",s); diff --git a/packages/xorg-driver/xf86-input-tslib_0.0.5.bb b/packages/xorg-driver/xf86-input-tslib_0.0.5.bb index b504dff5cf..b8d88888ef 100644 --- a/packages/xorg-driver/xf86-input-tslib_0.0.5.bb +++ b/packages/xorg-driver/xf86-input-tslib_0.0.5.bb @@ -2,9 +2,10 @@ require xorg-driver-input.inc DESCRIPTION = "X.Org X server -- tslib input driver" RRECOMMENDS += "hal" -PR = "r4" +PR = "r5" SRC_URI = "http://www.pengutronix.de/software/xf86-input-tslib/download/xf86-input-tslib-${PV}.tar.bz2 \ + file://use-hal-for-device.diff;patch=1 \ file://10-x11-input-tslib.fdi" do_configure_prepend() { -- cgit v1.2.3 From aa7e8873560a65aef38990f73406865b274cacb0 Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Sat, 1 Nov 2008 16:20:40 +0000 Subject: mplayer: Temporarily disable debug build due to gcc bug#37987. --- packages/mplayer/mplayer_0.0+1.0rc2.bb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/mplayer/mplayer_0.0+1.0rc2.bb b/packages/mplayer/mplayer_0.0+1.0rc2.bb index e4fb267f7c..8ecb205457 100644 --- a/packages/mplayer/mplayer_0.0+1.0rc2.bb +++ b/packages/mplayer/mplayer_0.0+1.0rc2.bb @@ -198,7 +198,9 @@ EXTRA_OECONF_append = " ${@base_contains('MACHINE_FEATURES', 'x86', '--enable-ru FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O4 -ffast-math" FULL_OPTIMIZATION_armv7a = "-fexpensive-optimizations -ftree-vectorize -fomit-frame-pointer -O4 -ffast-math" BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}" - +# FIXME: Temporarily disable debugging to work-around http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37987 +DEBUG_OPTIMIZATION_spitz = "-O -fomit-frame-pointer -g" +DEBUG_OPTIMIZATION_akita = "-O -fomit-frame-pointer -g" do_configure() { cp ${WORKDIR}/vo_w100.c ${S}/libvo -- cgit v1.2.3 From e359350395120b910cd281157e678f8416d68416 Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Mon, 10 Nov 2008 21:20:24 +0000 Subject: bitbake.conf:Define STAGING_BINDIR_CROSS_BASEPKG and add it to the PATH: * fixes build of packages compiled with higher optimization than base system * actually fixes references to sdl-config in mplayer while compiling for iwmmxt * for more see http://lists.linuxtogo.org/pipermail/openembedded-devel/2008-November/006808.html --- conf/bitbake.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/conf/bitbake.conf b/conf/bitbake.conf index 4273152a87..678062ad3b 100644 --- a/conf/bitbake.conf +++ b/conf/bitbake.conf @@ -245,6 +245,7 @@ STAGING_DIR = "${TMPDIR}/staging" STAGING_DIR_NATIVE = "${STAGING_DIR}/${BUILD_SYS}" STAGING_BINDIR_NATIVE = "${STAGING_DIR_NATIVE}${layout_bindir}" STAGING_BINDIR_CROSS = "${STAGING_DIR_NATIVE}${layout_bindir}/${MULTIMACH_HOST_SYS}" +STAGING_BINDIR_CROSS_BASEPKG = "${STAGING_DIR_NATIVE}${layout_bindir}/${BASEPKG_TARGET_SYS}" STAGING_LIBDIR_NATIVE = "${STAGING_DIR_NATIVE}${layout_libdir}" STAGING_INCDIR_NATIVE = "${STAGING_DIR_NATIVE}${layout_includedir}" STAGING_ETCDIR_NATIVE = "${STAGING_DIR_NATIVE}${layout_sysconfdir}" @@ -337,7 +338,7 @@ EXTRA_IMAGEDEPENDS = "" CROSS_DIR = "${TMPDIR}/cross/${BASE_PACKAGE_ARCH}" CROSS_DATADIR = "${CROSS_DIR}/share" -PATH_prepend = "${STAGING_BINDIR_CROSS}:${STAGING_DIR_NATIVE}${layout_sbindir}:${STAGING_BINDIR_NATIVE}:${CROSS_DIR}/bin:${STAGING_DIR_NATIVE}${layout_base_sbindir}:${STAGING_DIR_NATIVE}${layout_base_bindir}:" +PATH_prepend = "${STAGING_BINDIR_CROSS}:${STAGING_BINDIR_CROSS_BASEPKG}:${STAGING_DIR_NATIVE}${layout_sbindir}:${STAGING_BINDIR_NATIVE}:${CROSS_DIR}/bin:${STAGING_DIR_NATIVE}${layout_base_sbindir}:${STAGING_DIR_NATIVE}${layout_base_bindir}:" export PATH ################################################################## -- cgit v1.2.3 From 76e3e6e123c6b2a64905a32e5181e647107e562d Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Mon, 10 Nov 2008 21:24:04 +0000 Subject: perl and cpan.bbclass: Never reference to host instance of perl: * install MakeMaker files separately for native and target system * PERL_INC, PERL_LIB and PERL_ARCHLIB changes through environment * for more see http://lists.linuxtogo.org/pipermail/openembedded-devel/2008-November/006815.html --- classes/cpan.bbclass | 3 ++- packages/perl/perl-5.8.8/native-perlinc.patch | 14 +++++++++++--- packages/perl/perl-native_5.8.8.bb | 19 ++++++++++++++++++- packages/perl/perl_5.8.8.bb | 6 +++++- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/classes/cpan.bbclass b/classes/cpan.bbclass index 3ff3f3093d..7b3faa2561 100644 --- a/classes/cpan.bbclass +++ b/classes/cpan.bbclass @@ -10,7 +10,8 @@ export PERLCONFIGTARGET = "${@is_target(d)}" # Env var which tells perl where the perl include files are export PERL_INC = "${STAGING_LIBDIR}/perl/${@get_perl_version(d)}/CORE" -export PERL_ARCHLIB = "${STAGING_LIBDIR_NATIVE}/perl/${@get_perl_version(d)}" +export PERL_LIB = "${STAGING_DATADIR}/perl/${@get_perl_version(d)}" +export PERL_ARCHLIB = "${STAGING_LIBDIR}/perl/${@get_perl_version(d)}" cpan_do_configure () { yes '' | perl Makefile.PL ${EXTRA_CPANFLAGS} diff --git a/packages/perl/perl-5.8.8/native-perlinc.patch b/packages/perl/perl-5.8.8/native-perlinc.patch index aea38a0b56..6dc4b9538d 100644 --- a/packages/perl/perl-5.8.8/native-perlinc.patch +++ b/packages/perl/perl-5.8.8/native-perlinc.patch @@ -1,12 +1,20 @@ Index: perl-5.8.8/lib/ExtUtils/MM_Unix.pm =================================================================== ---- perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm 2007-05-30 15:16:47.000000000 +1000 -+++ perl-5.8.8/lib/ExtUtils/MM_Unix.pm 2007-05-30 15:18:12.000000000 +1000 -@@ -1597,6 +1597,11 @@ +--- perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm 2008-10-31 22:01:35.000000000 +0000 ++++ perl-5.8.8/lib/ExtUtils/MM_Unix.pm 2008-11-08 16:01:12.000000000 +0000 +@@ -1597,6 +1597,19 @@ $self->{PERL_LIB} ||= $Config{privlibexp}; $self->{PERL_ARCHLIB} ||= $Config{archlibexp}; $self->{PERL_INC} = $self->catdir("$self->{PERL_ARCHLIB}","CORE"); # wild guess for now + # Check for environment override so we'll find the headers in the correct place ++ if (defined $ENV{PERL_LIB}) ++ { ++ $self->{PERL_LIB} = $ENV{PERL_LIB}; ++ } ++ if (defined $ENV{PERL_ARCHLIB}) ++ { ++ $self->{PERL_ARCHLIB} = $ENV{PERL_ARCHLIB}; ++ } + if (defined $ENV{PERL_INC}) + { + $self->{PERL_INC} = $ENV{PERL_INC}; diff --git a/packages/perl/perl-native_5.8.8.bb b/packages/perl/perl-native_5.8.8.bb index c58f82822c..e3d73845fc 100644 --- a/packages/perl/perl-native_5.8.8.bb +++ b/packages/perl/perl-native_5.8.8.bb @@ -65,8 +65,25 @@ do_stage_append() { # We need a hostperl link for building perl ln -sf ${STAGING_BINDIR_NATIVE}/perl${PV} ${STAGING_BINDIR_NATIVE}/hostperl # Store native config in non-versioned directory - install -d ${STAGING_DIR_HOST}/perl + install -d ${STAGING_DIR_HOST}/perl \ + ${STAGING_LIBDIR_NATIVE}/perl/${PV}/CORE \ + ${STAGING_DATADIR_NATIVE}/perl/${PV}/ExtUtils install config.sh ${STAGING_DIR_HOST}/perl + # target configuration + install lib/Config.pm ${STAGING_LIBDIR_NATIVE}/perl/${PV}/ + install lib/ExtUtils/typemap ${STAGING_DATADIR_NATIVE}/perl/${PV}/ExtUtils/ + # perl shared library headers + for i in av.h embed.h gv.h keywords.h op.h perlio.h pp.h regexp.h \ + uconfig.h XSUB.h cc_runtime.h embedvar.h handy.h opnames.h \ + perliol.h pp_proto.h regnodes.h unixish.h config.h EXTERN.h \ + hv.h malloc_ctl.h pad.h perlsdio.h proto.h scope.h utf8.h \ + cop.h fakesdio.h INTERN.h mg.h patchlevel.h perlsfio.h \ + reentr.h sv.h utfebcdic.h cv.h fakethr.h intrpvar.h \ + nostdio.h perlapi.h perlvars.h reentr.inc thrdvar.h util.h \ + dosish.h form.h iperlsys.h opcode.h perl.h perly.h regcomp.h \ + thread.h warnings.h; do + install $i ${STAGING_LIBDIR_NATIVE}/perl/${PV}/CORE + done } PARALLEL_MAKE = "" diff --git a/packages/perl/perl_5.8.8.bb b/packages/perl/perl_5.8.8.bb index 8c00a61536..2118bba68f 100644 --- a/packages/perl/perl_5.8.8.bb +++ b/packages/perl/perl_5.8.8.bb @@ -139,11 +139,15 @@ do_install() { do_stage() { install -d ${STAGING_DIR_HOST}/perl \ ${STAGING_LIBDIR_NATIVE}/perl/${PV} \ - ${STAGING_LIBDIR}/perl/${PV}/CORE + ${STAGING_LIBDIR}/perl/${PV}/CORE \ + ${STAGING_DATADIR}/perl/${PV}/ExtUtils # target config, used by cpan.bbclass to extract version information install config.sh ${STAGING_DIR_HOST}/perl/ # target configuration, used by native perl when cross-compiling install lib/Config_heavy.pl ${STAGING_LIBDIR_NATIVE}/perl/${PV}/Config_heavy-target.pl + # target configuration + install lib/Config.pm ${STAGING_LIBDIR}/perl/${PV}/ + install lib/ExtUtils/typemap ${STAGING_DATADIR}/perl/${PV}/ExtUtils/ # perl shared library headers for i in av.h embed.h gv.h keywords.h op.h perlio.h pp.h regexp.h \ uconfig.h XSUB.h cc_runtime.h embedvar.h handy.h opnames.h \ -- cgit v1.2.3 From f9df63752b3510e4b559d4be69e66035f6068182 Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Mon, 10 Nov 2008 23:25:32 +0000 Subject: zaurusd: Turn backlight off when closing the lid and ~/.norot exists. --- packages/zaurusd/files/zaurus-hinge.in | 9 +++++++-- packages/zaurusd/zaurusd_svn.bb | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/zaurusd/files/zaurus-hinge.in b/packages/zaurusd/files/zaurus-hinge.in index 9670e8803e..0fcad38f98 100644 --- a/packages/zaurusd/files/zaurus-hinge.in +++ b/packages/zaurusd/files/zaurus-hinge.in @@ -21,13 +21,18 @@ fi panel_user="`ps aux|grep matchbox-panel|grep -v grep | awk '{print $1}'`" +STATE=$1 + # touch ~/.norot can disable rotation. if test -f /home/$panel_user/.norot ; then + if [ $STATE = "3" ]; then + . /etc/zaurusd/hinge-close.d/00-backlight-off + else + . /etc/zaurusd/hinge-landscape.d/00-backlight-on + fi exit fi -STATE=$1 - if [ $STATE = "3" ]; then for script in `ls -1 /etc/zaurusd/hinge-close.d` diff --git a/packages/zaurusd/zaurusd_svn.bb b/packages/zaurusd/zaurusd_svn.bb index be9379eced..2ad405e419 100644 --- a/packages/zaurusd/zaurusd_svn.bb +++ b/packages/zaurusd/zaurusd_svn.bb @@ -4,7 +4,7 @@ LICENSE = "GPL" DEPENDS = "tslib" RDEPENDS = "procps" PV = "0.0+svn${SRCDATE}" -PR = "r17" +PR = "r18" SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=zaurusd;proto=http \ file://zaurus-hinge.in \ -- cgit v1.2.3 From bee34861034d53a97cdca02b8641ca8d4da66c3e Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Tue, 11 Nov 2008 01:10:13 +0100 Subject: Prepare for FSO milestone4 release frameworkd_git.bb: Increased PV for milestone4 zhone_git.bb: Increased PV for milestone4 distro/include/sane-srcrecs.inc: Bump packages for FSO milestone4 --- conf/distro/include/sane-srcrevs.inc | 14 +++++++------- packages/freesmartphone/frameworkd_git.bb | 2 +- packages/freesmartphone/zhone_git.bb | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc index c081e0d450..5368d6d953 100644 --- a/conf/distro/include/sane-srcrevs.inc +++ b/conf/distro/include/sane-srcrevs.inc @@ -46,7 +46,7 @@ SRCREV_pn-elf2flt ?= "1786" SRCREV_pn-epiphany ?= "7837" SRCREV_pn-fbgrab-viewer-native ?= "1943" SRCREV_pn-flashrom ?= "3682" -SRCREV_pn-frameworkd ?= "69ac1421799f966baaf904a6790ed1a87c066798" +SRCREV_pn-frameworkd ?= "b4fc84fef759999e9e0cb73902e4b42fbbc8351d" SRCREV_pn-frameworkd-devel ?= "e8ad25f2e36e31e0a8afe08fbe11e54b9305aa8f" SRCREV_pn-fso-gpsd ?= "8f82d35ae83fdc00f2c4786257e98551b9dea995" SRCREV_pn-fso-sounds ?= "b24d3c2e66fee10a5e288101cd1b6f5bbd3da7e2" @@ -55,7 +55,7 @@ SRCREV_pn-gconf-dbus ?= "641" SRCREV_pn-gnuradio ?= "9809" SRCREV_pn-gpe-contacts ?= "9312" SRCREV_pn-gpe-sketchbook ?= "9547" -SRCREV_pn-gsm0710muxd ?= "3ff86b129640b647ccba3d86eb243d864671b039" +SRCREV_pn-gsm0710muxd ?= "79e10fe8ad0828e5be9a5c087ac9ee04956674c1" SRCREV_pn-gsmd2 ?= "963f34df8fa3ff4b301079dcf86e9acea6b6fe0f" SRCREV_pn-gtkhtml2 ?= "1158" SRCREV_pn-gypsy ?= "134" @@ -119,7 +119,7 @@ SRCREV_pn-osb-jscore ?= "117" SRCREV_pn-osb-nrcit ?= "125" SRCREV_pn-osb-nrcore ?= "126" SRCREV_pn-openmoko-agpsui ?= "7" -SRCREV_pn-openmoko-alsa-scenarios ?= "4406" +SRCREV_pn-openmoko-alsa-scenarios ?= "4732" SRCREV_pn-openmoko-appearance ?= "3262" SRCREV_pn-openmoko-appmanager2 ?= "4530" SRCREV_pn-openmoko-browser2 ?= "4172" @@ -159,9 +159,9 @@ SRCREV_pn-openmoko-toolchain-scripts ?= "4430" SRCREV_pn-openmoko-worldclock2 ?= "3365" SRCREV_pn-openocd ?= "517" SRCREV_pn-openocd-native ?= "517" -SRCREV_pn-opkg ?= "4640" -SRCREV_pn-opkg-native ?= "4640" -SRCREV_pn-opkg-sdk ?= "4640" +SRCREV_pn-opkg ?= "4755" +SRCREV_pn-opkg-native ?= "4755" +SRCREV_pn-opkg-sdk ?= "4755" SRCREV_pn-opkg-utils ?= "4534" SRCREV_pn-opkg-utils-native ?= "4534" SRCREV_pn-oprofileui ?= "173" @@ -206,7 +206,7 @@ SRCREV_pn-wlan-ng-modules ?= "1859" SRCREV_pn-wlan-ng-utils ?= "1859" SRCREV_pn-xoo ?= "1971" SRCREV_pn-xserver-kdrive-glamo ?= "7fa46527131177dfba7e711d1530205a9efc5e79" -SRCREV_pn-zhone ?= "4a630de01b4ac9ec62540439eee94c12a55c0c71" +SRCREV_pn-zhone ?= "929c78f2e83faef526064231c17958eaef72eba3" # Enlightenment Foundation Libraries # Caution: This is not alphabetically, but (roughly) dependency-sorted. diff --git a/packages/freesmartphone/frameworkd_git.bb b/packages/freesmartphone/frameworkd_git.bb index 521fe5d8ed..3467c79a66 100644 --- a/packages/freesmartphone/frameworkd_git.bb +++ b/packages/freesmartphone/frameworkd_git.bb @@ -4,7 +4,7 @@ AUTHOR = "Michael 'Mickey' Lauer et. al." SECTION = "console/network" DEPENDS = "python-cython-native python-pyrex-native" LICENSE = "GPL" -PV = "0.8.4.2+gitr${SRCREV}" +PV = "0.8.4.3+gitr${SRCREV}" PR = "r0" inherit distutils update-rc.d diff --git a/packages/freesmartphone/zhone_git.bb b/packages/freesmartphone/zhone_git.bb index 3fd0c7a4a5..18b46e2a3a 100644 --- a/packages/freesmartphone/zhone_git.bb +++ b/packages/freesmartphone/zhone_git.bb @@ -2,7 +2,7 @@ DESCRIPTION = "A phone UI based on the freesmartphone.org framework" LICENSE = "GPL" SECTION = "x11" DEPENDS = "edje-native python-pyrex-native python-cython-native" -PV = "0.0.1+gitr${SRCREV}" +PV = "0.0.2+gitr${SRCREV}" PR = "r10" SRC_URI = "${FREESMARTPHONE_GIT}/zhone.git;protocol=git;branch=master \ -- cgit v1.2.3 From 8c676179c23de3ddd0c135ab0fa4e38d0f503cab Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 11 Nov 2008 15:17:49 +0100 Subject: xf86-input-tslib_0.0.5.bb : add rotation handling patch from debian and my own experimental dynamic resolution patch. Using Xorg to tell us what resolution we run at, not assuming hardcoded defaults. --- .../01_fix-wrong-value-range-for-the-axises.diff | 47 ++++++++++++++++++++++ .../xorg-driver/xf86-input-tslib/dynamic-xy.patch | 17 ++++++++ packages/xorg-driver/xf86-input-tslib_0.0.5.bb | 6 ++- 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 packages/xorg-driver/xf86-input-tslib/01_fix-wrong-value-range-for-the-axises.diff create mode 100644 packages/xorg-driver/xf86-input-tslib/dynamic-xy.patch diff --git a/packages/xorg-driver/xf86-input-tslib/01_fix-wrong-value-range-for-the-axises.diff b/packages/xorg-driver/xf86-input-tslib/01_fix-wrong-value-range-for-the-axises.diff new file mode 100644 index 0000000000..b5407102b9 --- /dev/null +++ b/packages/xorg-driver/xf86-input-tslib/01_fix-wrong-value-range-for-the-axises.diff @@ -0,0 +1,47 @@ +--- xf86-input-tslib-0.0.5.orig/src/tslib.c ++++ xf86-input-tslib-0.0.5/src/tslib.c +@@ -183,7 +185,7 @@ + { + InputInfoPtr pInfo; + unsigned char map[MAXBUTTONS + 1]; +- int i; ++ int i, axiswidth, axisheight; + struct ts_priv *priv; + + ErrorF("%s\n", __FUNCTION__); +@@ -212,17 +226,29 @@ + return !Success; + } + ++ switch(priv->rotate) { ++ case TSLIB_ROTATE_CW: ++ case TSLIB_ROTATE_CCW: ++ axiswidth = priv->height; ++ axisheight = priv->width; ++ break; ++ default: ++ axiswidth = priv->width; ++ axisheight = priv->height; ++ break; ++ } ++ + InitValuatorAxisStruct(device, 0, 0, /* min val */ +- priv->width - 1, /* max val */ +- priv->width, /* resolution */ ++ axiswidth - 1, /* max val */ ++ axiswidth, /* resolution */ + 0, /* min_res */ +- priv->width); /* max_res */ ++ axiswidth); /* max_res */ + + InitValuatorAxisStruct(device, 1, 0, /* min val */ +- priv->height - 1,/* max val */ +- priv->height, /* resolution */ ++ axisheight - 1, /* max val */ ++ axisheight, /* resolution */ + 0, /* min_res */ +- priv->height); /* max_res */ ++ axisheight); /* max_res */ + + if (InitProximityClassDeviceStruct (device) == FALSE) { + ErrorF ("Unable to allocate EVTouch touchscreen ProximityClassDeviceStruct\n"); diff --git a/packages/xorg-driver/xf86-input-tslib/dynamic-xy.patch b/packages/xorg-driver/xf86-input-tslib/dynamic-xy.patch new file mode 100644 index 0000000000..e4ff346d28 --- /dev/null +++ b/packages/xorg-driver/xf86-input-tslib/dynamic-xy.patch @@ -0,0 +1,17 @@ +Index: xf86-input-tslib-0.0.5/src/tslib.c +=================================================================== +--- xf86-input-tslib-0.0.5.orig/src/tslib.c 2008-11-11 13:48:12.000000000 +0000 ++++ xf86-input-tslib-0.0.5/src/tslib.c 2008-11-11 13:51:51.000000000 +0000 +@@ -321,10 +321,10 @@ + priv->screen_num = xf86SetIntOption(pInfo->options, "ScreenNumber", 0 ); + + priv->width = xf86SetIntOption(pInfo->options, "Width", 0); +- if (priv->width <= 0) priv->width = DEFAULT_WIDTH; ++ if (priv->width <= 0) priv->width = screenInfo.screens[0]->width; + + priv->height = xf86SetIntOption(pInfo->options, "Height", 0); +- if (priv->height <= 0) priv->height = DEFAULT_HEIGHT; ++ if (priv->height <= 0) priv->height = screenInfo.screens[0]->height; + + s = xf86SetStrOption(pInfo->options, "Rotate", 0); + if (s > 0) { diff --git a/packages/xorg-driver/xf86-input-tslib_0.0.5.bb b/packages/xorg-driver/xf86-input-tslib_0.0.5.bb index b8d88888ef..bed0160138 100644 --- a/packages/xorg-driver/xf86-input-tslib_0.0.5.bb +++ b/packages/xorg-driver/xf86-input-tslib_0.0.5.bb @@ -2,10 +2,14 @@ require xorg-driver-input.inc DESCRIPTION = "X.Org X server -- tslib input driver" RRECOMMENDS += "hal" -PR = "r5" +DEPENDS += "tslib" + +PR = "r6" SRC_URI = "http://www.pengutronix.de/software/xf86-input-tslib/download/xf86-input-tslib-${PV}.tar.bz2 \ file://use-hal-for-device.diff;patch=1 \ + file://01_fix-wrong-value-range-for-the-axises.diff;patch=1 \ + file://dynamic-xy.patch;patch=1 \ file://10-x11-input-tslib.fdi" do_configure_prepend() { -- cgit v1.2.3 From e64327876b43fedcc8ef635ccc1a2f4f0f585791 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 11 Nov 2008 15:22:44 +0100 Subject: xserver-xorg: remove touchscreen section from omap3evm xorg.conf now that everything gets detected automagically --- packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf | 9 --------- 1 file changed, 9 deletions(-) diff --git a/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf b/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf index 43296dbd8a..983bb0823a 100644 --- a/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf +++ b/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf @@ -8,14 +8,6 @@ Section "Module" Load "dri" EndSection -Section "InputDevice" - Identifier "touchscreen0" - Driver "tslib" - Option "TslibDevice" "/dev/input/touchscreen0" - Option "Width" "480" - Option "Height" "640" -EndSection - Section "Monitor" Identifier "Builtin Default Monitor" EndSection @@ -34,5 +26,4 @@ EndSection Section "ServerLayout" Identifier "Builtin Default Layout" Screen "Builtin Default fbdev Screen 0" - InputDevice "touchscreen0" "CorePointer" EndSection -- cgit v1.2.3 From 022c55ed2377493c8774165d0fb2c124b91c3cc1 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 11 Nov 2008 16:06:06 +0100 Subject: linux-omap git: update DSS2 patches and attempt to fix ASoC --- ...cumentation-for-OMAP2-3-display-subsystem.patch | 6 +- ...-New-display-subsystem-driver-for-OMAP2-3.patch | 6255 +++++++++++++++++--- ...MAPFB-fb-driver-for-new-display-subsystem.patch | 2850 +++++++++ .../0005-DSS-RFBI-support-for-OMAP2-3-DSS.patch | 1254 ---- .../0006-DSS-Add-generic-DVI-panel.patch | 219 + .../0006-DSS-TV-out-support-for-OMAP2-3-DSS.patch | 519 -- .../0007-DSS-DSI-support-for-OMAP2-3-DSS.patch | 3047 ---------- .../0007-DSS-support-for-Beagle-Board.patch | 184 + ...DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch | 453 ++ ...MAPFB-fb-driver-for-new-display-subsystem.patch | 2821 --------- .../0009-DSS-Add-generic-DVI-panel.patch | 189 - .../0009-DSS-support-for-OMAP3-SDP-board.patch | 441 ++ .../0010-DSS-support-for-Beagle-Board.patch | 182 - .../0011-DSS-support-for-OMAP3-SDP-board.patch | 441 -- packages/linux/linux-omap/beagleboard/defconfig | 10 +- packages/linux/linux-omap/fix-asoc.diff | 130 + packages/linux/linux-omap_git.bb | 16 +- 17 files changed, 9862 insertions(+), 9155 deletions(-) create mode 100644 packages/linux/linux-omap/0005-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch delete mode 100644 packages/linux/linux-omap/0005-DSS-RFBI-support-for-OMAP2-3-DSS.patch create mode 100644 packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch delete mode 100644 packages/linux/linux-omap/0006-DSS-TV-out-support-for-OMAP2-3-DSS.patch delete mode 100644 packages/linux/linux-omap/0007-DSS-DSI-support-for-OMAP2-3-DSS.patch create mode 100644 packages/linux/linux-omap/0007-DSS-support-for-Beagle-Board.patch create mode 100644 packages/linux/linux-omap/0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch delete mode 100644 packages/linux/linux-omap/0008-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch delete mode 100644 packages/linux/linux-omap/0009-DSS-Add-generic-DVI-panel.patch create mode 100644 packages/linux/linux-omap/0009-DSS-support-for-OMAP3-SDP-board.patch delete mode 100644 packages/linux/linux-omap/0010-DSS-support-for-Beagle-Board.patch delete mode 100644 packages/linux/linux-omap/0011-DSS-support-for-OMAP3-SDP-board.patch create mode 100644 packages/linux/linux-omap/fix-asoc.diff diff --git a/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch b/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch index 59c15cee7d..4946bda5e7 100644 --- a/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch +++ b/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch @@ -1,4 +1,4 @@ -From 7a7fe8f7530bf5c7f3714acbe9a5ec8cf80c3d0c Mon Sep 17 00:00:00 2001 +From 58be9dfad433036ff46ed883c3bc77fca88079f7 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Tue, 4 Nov 2008 15:08:07 +0200 Subject: [PATCH] DSS: Documentation for OMAP2/3 display subsystem @@ -11,7 +11,7 @@ Signed-off-by: Tomi Valkeinen diff --git a/Documentation/arm/OMAP/DSS b/Documentation/arm/OMAP/DSS new file mode 100644 -index 0000000..b0cc980 +index 0000000..387bb73 --- /dev/null +++ b/Documentation/arm/OMAP/DSS @@ -0,0 +1,239 @@ @@ -41,7 +41,7 @@ index 0000000..b0cc980 +- Use CPU to update RFBI or DSI output +- OMAP DISPC planes +- RGB16, RGB24 packed, RGB24 unpacked -+- YUV2, UYVY ++- YUV2, UYVY +- Scaling +- Adjusting DSS FCK to find a good pixel clock +- Use DSI DPLL to create DSS FCK diff --git a/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch b/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch index febfc48c4d..509f34697a 100644 --- a/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch +++ b/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch @@ -1,32 +1,36 @@ -From 0cd726d12358cfe8d80fc0a309bb0c0732c716f0 Mon Sep 17 00:00:00 2001 +From 5a4331bf757fdec0ceb72bf40f7e46ce5c404e2d Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen -Date: Tue, 4 Nov 2008 16:52:12 +0200 +Date: Tue, 11 Nov 2008 13:52:25 +0200 Subject: [PATCH] DSS: New display subsystem driver for OMAP2/3 -DSI, RFBI and VENC are separate patches - Signed-off-by: Tomi Valkeinen --- arch/arm/plat-omap/Kconfig | 2 + arch/arm/plat-omap/Makefile | 2 + - arch/arm/plat-omap/dss/Kconfig | 66 ++ + arch/arm/plat-omap/dss/Kconfig | 66 + arch/arm/plat-omap/dss/Makefile | 6 + - arch/arm/plat-omap/dss/dispc.c | 1667 +++++++++++++++++++++++++++++ - arch/arm/plat-omap/dss/display.c | 781 ++++++++++++++ - arch/arm/plat-omap/dss/dpi.c | 303 ++++++ - arch/arm/plat-omap/dss/dss.c | 547 ++++++++++ - arch/arm/plat-omap/dss/dss.h | 240 +++++ - arch/arm/plat-omap/dss/sdi.c | 154 +++ - arch/arm/plat-omap/include/mach/display.h | 458 ++++++++ - 11 files changed, 4226 insertions(+), 0 deletions(-) + arch/arm/plat-omap/dss/dispc.c | 1720 ++++++++++++++++ + arch/arm/plat-omap/dss/display.c | 775 ++++++++ + arch/arm/plat-omap/dss/dpi.c | 323 +++ + arch/arm/plat-omap/dss/dsi.c | 3022 +++++++++++++++++++++++++++++ + arch/arm/plat-omap/dss/dss.c | 547 ++++++ + arch/arm/plat-omap/dss/dss.h | 254 +++ + arch/arm/plat-omap/dss/rfbi.c | 1234 ++++++++++++ + arch/arm/plat-omap/dss/sdi.c | 157 ++ + arch/arm/plat-omap/dss/venc.c | 515 +++++ + arch/arm/plat-omap/include/mach/display.h | 458 +++++ + 14 files changed, 9081 insertions(+), 0 deletions(-) create mode 100644 arch/arm/plat-omap/dss/Kconfig create mode 100644 arch/arm/plat-omap/dss/Makefile create mode 100644 arch/arm/plat-omap/dss/dispc.c create mode 100644 arch/arm/plat-omap/dss/display.c create mode 100644 arch/arm/plat-omap/dss/dpi.c + create mode 100644 arch/arm/plat-omap/dss/dsi.c create mode 100644 arch/arm/plat-omap/dss/dss.c create mode 100644 arch/arm/plat-omap/dss/dss.h + create mode 100644 arch/arm/plat-omap/dss/rfbi.c create mode 100644 arch/arm/plat-omap/dss/sdi.c + create mode 100644 arch/arm/plat-omap/dss/venc.c create mode 100644 arch/arm/plat-omap/include/mach/display.h diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig @@ -54,7 +58,7 @@ index 1259846..2740497 100644 +obj-y += dss/ diff --git a/arch/arm/plat-omap/dss/Kconfig b/arch/arm/plat-omap/dss/Kconfig new file mode 100644 -index 0000000..150cd24 +index 0000000..ef0b5d9 --- /dev/null +++ b/arch/arm/plat-omap/dss/Kconfig @@ -0,0 +1,66 @@ @@ -107,8 +111,8 @@ index 0000000..150cd24 + +config OMAP2_DSS_MIN_FCK_PER_PCK + int "Minimum FCK/PCK ratio (for scaling)" -+ range 1 32 -+ default 4 ++ range 0 32 ++ default 0 + help + This can be used to adjust the minimum FCK/PCK ratio. + @@ -116,7 +120,7 @@ index 0000000..150cd24 + n x PCK. Video plane scaling requires higher FCK than + normally. + -+ If this is set to 1, there's no extra constraint on the ++ If this is set to 0, there's no extra constraint on the + DISPC FCK. However, the FCK will at minimum be + 2xPCK (if active matrix) or 3xPCK (if passive matrix). + @@ -138,10 +142,10 @@ index 0000000..e98c6c1 +omap-dss-$(CONFIG_OMAP2_DSS_DSI) += dsi.o diff --git a/arch/arm/plat-omap/dss/dispc.c b/arch/arm/plat-omap/dss/dispc.c new file mode 100644 -index 0000000..8f5da2d +index 0000000..6d06082 --- /dev/null +++ b/arch/arm/plat-omap/dss/dispc.c -@@ -0,0 +1,1667 @@ +@@ -0,0 +1,1720 @@ +/* + * linux/arch/arm/plat-omap/dss/dispc.c + * @@ -255,8 +259,8 @@ index 0000000..8f5da2d + DISPC_IRQ_OCP_ERR | \ + DISPC_IRQ_VID1_FIFO_UNDERFLOW | \ + DISPC_IRQ_VID2_FIFO_UNDERFLOW | \ -+ DISPC_IRQ_SYNC_LOST) -+/*DISPC_IRQ_SYNC_LOST_DIGIT*/ ++ DISPC_IRQ_SYNC_LOST | \ ++ DISPC_IRQ_SYNC_LOST_DIGIT) + +#define DISPC_MAX_NR_ISRS 8 + @@ -1240,91 +1244,135 @@ index 0000000..8f5da2d + panel->acbi, panel->acb); +} + -+unsigned long dispc_calc_clock_div(int is_tft, int pck, int *fck_div, ++void find_lck_pck_divs(int is_tft, unsigned long req_pck, unsigned long fck, + int *lck_div, int *pck_div) +{ -+ unsigned long prate = clk_get_rate(clk_get_parent(dispc.dpll4_m4_ck)); -+ unsigned long pcd_min = is_tft ? 2 : 3; -+ unsigned long best_pck = 0; -+ int best_fd = 9, best_ld = 1, best_pd = 2; -+ int fd, ld, pd; ++ int pcd_min = is_tft ? 2 : 3; ++ unsigned long best_pck; ++ int best_ld, cur_ld; ++ int best_pd, cur_pd; + -+ for (fd = 16; fd > 0; --fd) { -+ unsigned long fck = prate / fd * 2; -+ -+ if (fck > DISPC_MAX_FCK) -+ continue; ++ best_pck = 0; ++ best_ld = 0; ++ best_pd = 0; + -+#ifdef CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK -+ if (fck < pck * CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK) -+ continue; -+#endif -+ for (ld = 1; ld <= 255; ++ld) { -+ unsigned long lck = fck / ld; ++ for (cur_ld = 1; cur_ld <= 255; ++cur_ld) { ++ unsigned long lck = fck / cur_ld; + -+ for (pd = pcd_min; pd <= 255; ++pd) { -+ int p = lck / pd; ++ for (cur_pd = pcd_min; cur_pd <= 255; ++cur_pd) { ++ unsigned long pck = lck / cur_pd; + -+ if (abs(p - pck) < abs(best_pck - pck)) { -+ best_pck = p; -+ best_fd = fd; -+ best_ld = ld; -+ best_pd = pd; -+ } ++ if (abs(pck - req_pck) < abs(best_pck - req_pck)) { ++ best_pck = pck; ++ best_ld = cur_ld; ++ best_pd = cur_pd; + -+ if (p == pck) ++ if (pck == req_pck) + goto found; -+ -+ if (p < pck) -+ break; + } + -+ if (lck / pcd_min < pck) ++ if (pck < req_pck) + break; + } ++ ++ if (lck / pcd_min < req_pck) ++ break; + } + +found: -+ *fck_div = best_fd; + *lck_div = best_ld; + *pck_div = best_pd; -+ -+ return prate / best_fd * 2; +} + -+void dispc_set_clock_div(int fck_div, int lck_div, int pck_div) ++int dispc_calc_clock_div(int is_tft, unsigned long req_pck, ++ struct dispc_clock_info *cinfo) +{ -+ unsigned long prate; ++ unsigned long prate = clk_get_rate(clk_get_parent(dispc.dpll4_m4_ck)); ++ struct dispc_clock_info cur, best; ++ int match = 0; ++ int min_fck_per_pck; ++ ++ min_fck_per_pck = CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK; ++ ++ if (min_fck_per_pck && ++ req_pck * min_fck_per_pck > DISPC_MAX_FCK) { ++ DSSERR("Requested pixel clock not possible with the current " ++ "OMAP2_DSS_MIN_FCK_PER_PCK setting. Turning " ++ "the constraint off.\n"); ++ min_fck_per_pck = 0; ++ } + -+ prate = clk_get_rate(clk_get_parent(dispc.dpll4_m4_ck)); ++retry: ++ memset(&cur, 0, sizeof(cur)); ++ memset(&best, 0, sizeof(best)); + -+ clk_set_rate(dispc.dpll4_m4_ck, prate / fck_div); -+ dispc_set_lcd_divisor(lck_div, pck_div); ++ for (cur.fck_div = 16; cur.fck_div > 0; --cur.fck_div) { ++ cur.fck = prate / cur.fck_div * 2; + -+#ifdef DEBUG -+ { -+ unsigned long fck, lck, pck; -+ fck = prate / fck_div * 2; -+ lck = fck / lck_div; -+ pck = lck / pck_div; ++ if (cur.fck > DISPC_MAX_FCK) ++ continue; ++ ++ if (min_fck_per_pck && ++ cur.fck < req_pck * min_fck_per_pck) ++ continue; ++ ++ match = 1; ++ ++ find_lck_pck_divs(is_tft, req_pck, cur.fck, ++ &cur.lck_div, &cur.pck_div); ++ ++ cur.lck = cur.fck / cur.lck_div; ++ cur.pck = cur.lck / cur.pck_div; + -+ DSSDBG("dpll4_m4 = %ld\n", prate); -+ DSSDBG("fck = %ld (%d)\n", fck, fck_div); -+ DSSDBG("lck = %ld (%d)\n", lck, lck_div); -+ DSSDBG("pck = %ld (%d)\n", pck, pck_div); ++ if (abs(cur.pck - req_pck) < abs(best.pck - req_pck)) { ++ best = cur; ++ ++ if (cur.pck == req_pck) ++ goto found; ++ } + } -+#endif ++ ++found: ++ if (!match) { ++ if (min_fck_per_pck) { ++ DSSERR("Could not find suitable clock settings.\n" ++ "Turning FCK/PCK constraint off and" ++ "trying again.\n"); ++ min_fck_per_pck = 0; ++ goto retry; ++ } ++ ++ DSSERR("Could not find suitable clock settings.\n"); ++ ++ return -EINVAL; ++ } ++ ++ if (cinfo) ++ *cinfo = best; ++ ++ return 0; +} + -+int dispc_pixel_clock_valid(int pixel_clock) ++int dispc_set_clock_div(struct dispc_clock_info *cinfo) +{ -+ int fck_div, lck_div, pck_div; -+ unsigned long fck; ++ unsigned long prate; ++ int r; + -+ fck = dispc_calc_clock_div(1, pixel_clock * 1000, -+ &fck_div, &lck_div, &pck_div); ++ prate = clk_get_rate(clk_get_parent(dispc.dpll4_m4_ck)); ++ ++ r = clk_set_rate(dispc.dpll4_m4_ck, prate / cinfo->fck_div); ++ ++ if (r) ++ return r; ++ ++ dispc_set_lcd_divisor(cinfo->lck_div, cinfo->pck_div); + -+ return fck > 0; ++ DSSDBG("dpll4_m4 = %ld\n", prate); ++ DSSDBG("fck = %ld (%d)\n", cinfo->fck, cinfo->fck_div); ++ DSSDBG("lck = %ld (%d)\n", cinfo->lck, cinfo->lck_div); ++ DSSDBG("pck = %ld (%d)\n", cinfo->pck, cinfo->pck_div); ++ ++ return 0; +} + +int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask) @@ -1431,8 +1479,23 @@ index 0000000..8f5da2d + int i; + u32 irqstatus = dispc_read_reg(DISPC_IRQSTATUS); + static int errors; ++ u32 handledirqs = 0; + -+ if (irqstatus & DISPC_IRQ_MASK_ERROR) { ++#ifdef DEBUG ++ print_irq_status(irqstatus); ++#endif ++ ++ for (i = 0; i < DISPC_MAX_NR_ISRS; i++) { ++ if (!registered_isr[i].isr) ++ continue; ++ if (registered_isr[i].mask & irqstatus) { ++ registered_isr[i].isr(registered_isr[i].arg, ++ irqstatus); ++ handledirqs |= registered_isr[i].mask; ++ } ++ } ++ ++ if (irqstatus & ~handledirqs & DISPC_IRQ_MASK_ERROR) { + if (printk_ratelimit()) { + DSSERR("dispc irq error status %04x\n", + irqstatus); @@ -1444,17 +1507,6 @@ index 0000000..8f5da2d + dispc_enable_digit_out(0); + } + } -+#ifdef DEBUG -+ print_irq_status(irqstatus); -+#endif -+ -+ for (i = 0; i < DISPC_MAX_NR_ISRS; i++) { -+ if (!registered_isr[i].isr) -+ continue; -+ if (registered_isr[i].mask & irqstatus) -+ registered_isr[i].isr(registered_isr[i].arg, -+ irqstatus); -+ } + + /* ack the interrupt */ + dispc_write_reg(DISPC_IRQSTATUS, irqstatus); @@ -1480,6 +1532,11 @@ index 0000000..8f5da2d +{ + memset(registered_isr, 0, sizeof(registered_isr)); + ++ /* there's SYNC_LOST_DIGIT waiting after enabling the DSS, ++ * so clear it */ ++ dispc_write_reg(DISPC_IRQSTATUS, ++ dispc_read_reg(DISPC_IRQSTATUS)); ++ + /* We'll handle these always */ + dispc_write_reg(DISPC_IRQENABLE, DISPC_IRQ_MASK_ERROR); +} @@ -1811,10 +1868,10 @@ index 0000000..8f5da2d + diff --git a/arch/arm/plat-omap/dss/display.c b/arch/arm/plat-omap/dss/display.c new file mode 100644 -index 0000000..86f7d39 +index 0000000..4d7238f --- /dev/null +++ b/arch/arm/plat-omap/dss/display.c -@@ -0,0 +1,781 @@ +@@ -0,0 +1,775 @@ +/* + * linux/arch/arm/plat-omap/dss/display.c + * @@ -1843,7 +1900,6 @@ index 0000000..86f7d39 +#include +#include +#include -+#include +#include +#include + @@ -2230,11 +2286,6 @@ index 0000000..86f7d39 + dispc_enable_plane(ovl->id, 1); + } + -+ /* XXX if autoidle is enabled, we have to wait here a bit. -+ * Otherwise if we issue GOLCD too soon after lcd enable, -+ * we get sync lost. Why? */ -+ mdelay(100); -+ + dispc_go(mgr->id); + + return 0; @@ -2598,10 +2649,10 @@ index 0000000..86f7d39 +EXPORT_SYMBOL(omap_dss_unregister_panel); diff --git a/arch/arm/plat-omap/dss/dpi.c b/arch/arm/plat-omap/dss/dpi.c new file mode 100644 -index 0000000..d121b52 +index 0000000..2261288 --- /dev/null +++ b/arch/arm/plat-omap/dss/dpi.c -@@ -0,0 +1,303 @@ +@@ -0,0 +1,323 @@ +/* + * linux/arch/arm/plat-omap/dss/dpi.c + * @@ -2674,23 +2725,32 @@ index 0000000..d121b52 + } +#else + { -+ int fck_div; -+ fck = dispc_calc_clock_div(is_tft, -+ panel->timings.pixel_clock*1000, -+ &fck_div, &lck_div, &pck_div); ++ struct dispc_clock_info cinfo; ++ dispc_calc_clock_div(is_tft, panel->timings.pixel_clock*1000, ++ &cinfo); + -+ if (fck == 0) { -+ DSSERR("Requested pixel clock is not possible\n"); ++ if (dispc_set_clock_div(&cinfo)) { ++ DSSERR("Failed to set DSS clocks\n"); + return; + } + -+ dispc_set_clock_div(fck_div, lck_div, pck_div); ++ fck = cinfo.fck; ++ lck_div = cinfo.lck_div; ++ pck_div = cinfo.pck_div; + } +#endif + + pck = fck / lck_div / pck_div / 1000; + -+ panel->timings.pixel_clock = pck; ++ if (pck != panel->timings.pixel_clock) { ++ DSSWARN("Could not find exact pixel clock. Requested %d KHz, " ++ "got %lu KHz.\n", ++ panel->timings.pixel_clock, ++ pck); ++ ++ panel->timings.pixel_clock = pck; ++ } ++ + DSSDBG("fck %lu, lck_div %d, pck_div %d\n", fck, lck_div, pck_div); +#ifdef DEBUG + { @@ -2830,6 +2890,9 @@ index 0000000..d121b52 +static int dpi_check_timings(struct omap_display *display, + struct omap_video_timings *timings) +{ ++ int is_tft; ++ int r; ++ + if (timings->hsw < 1 || timings->hsw > 64 || + timings->hfp < 1 || timings->hfp > 256 || + timings->hbp < 1 || timings->hbp > 256) { @@ -2841,8 +2904,16 @@ index 0000000..d121b52 + return -EINVAL; + } + -+ if (!dispc_pixel_clock_valid(timings->pixel_clock)) -+ return -EINVAL; ++ ++ is_tft = (display->panel->config & OMAP_DSS_LCD_TFT) != 0; ++ ++#ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL ++ r = dsi_pll_calc_pck(is_tft, timings->pixel_clock * 1000, 0); ++#else ++ r = dispc_calc_clock_div(is_tft, timings->pixel_clock * 1000, 0); ++#endif ++ if (r) ++ return r; + + return 0; +} @@ -2905,21 +2976,18 @@ index 0000000..d121b52 +{ +} + -diff --git a/arch/arm/plat-omap/dss/dss.c b/arch/arm/plat-omap/dss/dss.c +diff --git a/arch/arm/plat-omap/dss/dsi.c b/arch/arm/plat-omap/dss/dsi.c new file mode 100644 -index 0000000..da0364b +index 0000000..980be39 --- /dev/null -+++ b/arch/arm/plat-omap/dss/dss.c -@@ -0,0 +1,547 @@ ++++ b/arch/arm/plat-omap/dss/dsi.c +@@ -0,0 +1,3022 @@ +/* -+ * linux/arch/arm/plat-omap/dss/dss.c ++ * linux/arch/arm/plat-omap/dss/dsi.c + * + * Copyright (C) 2008 Nokia Corporation + * Author: Tomi Valkeinen + * -+ * Some code and ideas taken from drivers/video/omap/ driver -+ * by Imre Deak. -+ * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. @@ -2933,783 +3001,5068 @@ index 0000000..da0364b + * this program. If not, see . + */ + -+#define DSS_SUBSYS_NAME "DSS" ++#define DSS_SUBSYS_NAME "DSI" + +#include -+#include +#include +#include ++#include +#include -+#include +#include -+#include ++#include ++#include ++#include + ++#include +#include -+#include -+#include "dss.h" -+ -+#define DSS_BASE 0x48050000 + -+struct dss_reg { -+ u16 idx; -+}; ++#include "dss.h" + -+#define DSS_REG(idx) ((const struct dss_reg) { idx }) ++/*#define VERBOSE*/ ++/*#define VERBOSE_IRQ*/ ++/*#define MEASURE_PERF*/ ++ ++#define DSI_BASE 0x4804FC00 ++ ++struct dsi_reg { u16 idx; }; ++ ++#define DSI_REG(idx) ((const struct dsi_reg) { idx }) ++ ++/* DSI Protocol Engine */ ++ ++#define DSI_REVISION DSI_REG(0x0000) ++#define DSI_SYSCONFIG DSI_REG(0x0010) ++#define DSI_SYSSTATUS DSI_REG(0x0014) ++#define DSI_IRQSTATUS DSI_REG(0x0018) ++#define DSI_IRQENABLE DSI_REG(0x001C) ++#define DSI_CTRL DSI_REG(0x0040) ++#define DSI_COMPLEXIO_CFG1 DSI_REG(0x0048) ++#define DSI_COMPLEXIO_IRQ_STATUS DSI_REG(0x004C) ++#define DSI_COMPLEXIO_IRQ_ENABLE DSI_REG(0x0050) ++#define DSI_CLK_CTRL DSI_REG(0x0054) ++#define DSI_TIMING1 DSI_REG(0x0058) ++#define DSI_TIMING2 DSI_REG(0x005C) ++#define DSI_VM_TIMING1 DSI_REG(0x0060) ++#define DSI_VM_TIMING2 DSI_REG(0x0064) ++#define DSI_VM_TIMING3 DSI_REG(0x0068) ++#define DSI_CLK_TIMING DSI_REG(0x006C) ++#define DSI_TX_FIFO_VC_SIZE DSI_REG(0x0070) ++#define DSI_RX_FIFO_VC_SIZE DSI_REG(0x0074) ++#define DSI_COMPLEXIO_CFG2 DSI_REG(0x0078) ++#define DSI_RX_FIFO_VC_FULLNESS DSI_REG(0x007C) ++#define DSI_VM_TIMING4 DSI_REG(0x0080) ++#define DSI_TX_FIFO_VC_EMPTINESS DSI_REG(0x0084) ++#define DSI_VM_TIMING5 DSI_REG(0x0088) ++#define DSI_VM_TIMING6 DSI_REG(0x008C) ++#define DSI_VM_TIMING7 DSI_REG(0x0090) ++#define DSI_STOPCLK_TIMING DSI_REG(0x0094) ++#define DSI_VC_CTRL(n) DSI_REG(0x0100 + (n * 0x20)) ++#define DSI_VC_TE(n) DSI_REG(0x0104 + (n * 0x20)) ++#define DSI_VC_LONG_PACKET_HEADER(n) DSI_REG(0x0108 + (n * 0x20)) ++#define DSI_VC_LONG_PACKET_PAYLOAD(n) DSI_REG(0x010C + (n * 0x20)) ++#define DSI_VC_SHORT_PACKET_HEADER(n) DSI_REG(0x0110 + (n * 0x20)) ++#define DSI_VC_IRQSTATUS(n) DSI_REG(0x0118 + (n * 0x20)) ++#define DSI_VC_IRQENABLE(n) DSI_REG(0x011C + (n * 0x20)) ++ ++/* DSIPHY_SCP */ ++ ++#define DSIPHY_CFG0 DSI_REG(0x200 + 0x0000) ++#define DSIPHY_CFG1 DSI_REG(0x200 + 0x0004) ++#define DSIPHY_CFG2 DSI_REG(0x200 + 0x0008) ++#define DSIPHY_CFG5 DSI_REG(0x200 + 0x0014) ++ ++/* DSI_PLL_CTRL_SCP */ ++ ++#define DSI_PLL_CONTROL DSI_REG(0x300 + 0x0000) ++#define DSI_PLL_STATUS DSI_REG(0x300 + 0x0004) ++#define DSI_PLL_GO DSI_REG(0x300 + 0x0008) ++#define DSI_PLL_CONFIGURATION1 DSI_REG(0x300 + 0x000C) ++#define DSI_PLL_CONFIGURATION2 DSI_REG(0x300 + 0x0010) + -+#define DSS_REVISION DSS_REG(0x0000) -+#define DSS_SYSCONFIG DSS_REG(0x0010) -+#define DSS_SYSSTATUS DSS_REG(0x0014) -+#define DSS_IRQSTATUS DSS_REG(0x0018) -+#define DSS_CONTROL DSS_REG(0x0040) -+#define DSS_SDI_CONTROL DSS_REG(0x0044) -+#define DSS_PLL_CONTROL DSS_REG(0x0048) -+#define DSS_SDI_STATUS DSS_REG(0x005C) ++#define REG_GET(idx, start, end) \ ++ FLD_GET(dsi_read_reg(idx), start, end) + +#define REG_FLD_MOD(idx, val, start, end) \ -+ dss_write_reg(idx, FLD_MOD(dss_read_reg(idx), val, start, end)) ++ dsi_write_reg(idx, FLD_MOD(dsi_read_reg(idx), val, start, end)) ++ ++/* Global interrupts */ ++#define DSI_IRQ_VC0 (1 << 0) ++#define DSI_IRQ_VC1 (1 << 1) ++#define DSI_IRQ_VC2 (1 << 2) ++#define DSI_IRQ_VC3 (1 << 3) ++#define DSI_IRQ_WAKEUP (1 << 4) ++#define DSI_IRQ_RESYNC (1 << 5) ++#define DSI_IRQ_PLL_LOCK (1 << 7) ++#define DSI_IRQ_PLL_UNLOCK (1 << 8) ++#define DSI_IRQ_PLL_RECALL (1 << 9) ++#define DSI_IRQ_COMPLEXIO_ERR (1 << 10) ++#define DSI_IRQ_HS_TX_TIMEOUT (1 << 14) ++#define DSI_IRQ_LP_RX_TIMEOUT (1 << 15) ++#define DSI_IRQ_TE_TRIGGER (1 << 16) ++#define DSI_IRQ_ACK_TRIGGER (1 << 17) ++#define DSI_IRQ_SYNC_LOST (1 << 18) ++#define DSI_IRQ_LDO_POWER_GOOD (1 << 19) ++#define DSI_IRQ_TA_TIMEOUT (1 << 20) ++#define DSI_IRQ_ERROR_MASK \ ++ (DSI_IRQ_HS_TX_TIMEOUT | DSI_IRQ_LP_RX_TIMEOUT | DSI_IRQ_SYNC_LOST | \ ++ DSI_IRQ_TA_TIMEOUT) ++#define DSI_IRQ_CHANNEL_MASK 0xf ++ ++/* Virtual channel interrupts */ ++#define DSI_VC_IRQ_CS (1 << 0) ++#define DSI_VC_IRQ_ECC_CORR (1 << 1) ++#define DSI_VC_IRQ_PACKET_SENT (1 << 2) ++#define DSI_VC_IRQ_FIFO_TX_OVF (1 << 3) ++#define DSI_VC_IRQ_FIFO_RX_OVF (1 << 4) ++#define DSI_VC_IRQ_BTA (1 << 5) ++#define DSI_VC_IRQ_ECC_NO_CORR (1 << 6) ++#define DSI_VC_IRQ_FIFO_TX_UDF (1 << 7) ++#define DSI_VC_IRQ_PP_BUSY_CHANGE (1 << 8) ++#define DSI_VC_IRQ_ERROR_MASK \ ++ (DSI_VC_IRQ_CS | DSI_VC_IRQ_ECC_CORR | DSI_VC_IRQ_FIFO_TX_OVF | \ ++ DSI_VC_IRQ_FIFO_RX_OVF | DSI_VC_IRQ_ECC_NO_CORR | \ ++ DSI_VC_IRQ_FIFO_TX_UDF) ++ ++/* ComplexIO interrupts */ ++#define DSI_CIO_IRQ_ERRSYNCESC1 (1 << 0) ++#define DSI_CIO_IRQ_ERRSYNCESC2 (1 << 1) ++#define DSI_CIO_IRQ_ERRSYNCESC3 (1 << 2) ++#define DSI_CIO_IRQ_ERRESC1 (1 << 5) ++#define DSI_CIO_IRQ_ERRESC2 (1 << 6) ++#define DSI_CIO_IRQ_ERRESC3 (1 << 7) ++#define DSI_CIO_IRQ_ERRCONTROL1 (1 << 10) ++#define DSI_CIO_IRQ_ERRCONTROL2 (1 << 11) ++#define DSI_CIO_IRQ_ERRCONTROL3 (1 << 12) ++#define DSI_CIO_IRQ_STATEULPS1 (1 << 15) ++#define DSI_CIO_IRQ_STATEULPS2 (1 << 16) ++#define DSI_CIO_IRQ_STATEULPS3 (1 << 17) ++#define DSI_CIO_IRQ_ERRCONTENTIONLP0_1 (1 << 20) ++#define DSI_CIO_IRQ_ERRCONTENTIONLP1_1 (1 << 21) ++#define DSI_CIO_IRQ_ERRCONTENTIONLP0_2 (1 << 22) ++#define DSI_CIO_IRQ_ERRCONTENTIONLP1_2 (1 << 23) ++#define DSI_CIO_IRQ_ERRCONTENTIONLP0_3 (1 << 24) ++#define DSI_CIO_IRQ_ERRCONTENTIONLP1_3 (1 << 25) ++#define DSI_CIO_IRQ_ULPSACTIVENOT_ALL0 (1 << 30) ++#define DSI_CIO_IRQ_ULPSACTIVENOT_ALL1 (1 << 31) ++ ++#define DSI_DT_DCS_SHORT_WRITE_0 0x05 ++#define DSI_DT_DCS_SHORT_WRITE_1 0x15 ++#define DSI_DT_DCS_READ 0x06 ++#define DSI_DT_SET_MAX_RET_PKG_SIZE 0x37 ++#define DSI_DT_NULL_PACKET 0x09 ++#define DSI_DT_DCS_LONG_WRITE 0x39 ++ ++#define DSI_DT_RX_ACK_WITH_ERR 0x02 ++#define DSI_DT_RX_DCS_LONG_READ 0x1c ++#define DSI_DT_RX_SHORT_READ_1 0x21 ++#define DSI_DT_RX_SHORT_READ_2 0x22 ++ ++#define FINT_MAX 2100000 ++#define FINT_MIN 750000 ++#define REGN_MAX (1 << 7) ++#define REGM_MAX ((1 << 11) - 1) ++#define REGM3_MAX (1 << 4) ++#define REGM4_MAX (1 << 4) ++ ++enum fifo_size { ++ DSI_FIFO_SIZE_0 = 0, ++ DSI_FIFO_SIZE_32 = 1, ++ DSI_FIFO_SIZE_64 = 2, ++ DSI_FIFO_SIZE_96 = 3, ++ DSI_FIFO_SIZE_128 = 4, ++}; + -+static struct { -+ void __iomem *base; ++static struct ++{ ++ void __iomem *base; + -+ struct clk *dss_ick; ++ struct clk *dss_ick; + struct clk *dss1_fck; + struct clk *dss2_fck; -+ struct clk *dss_54m_fck; -+ struct clk *dss_96m_fck; -+} dss; -+ -+static inline void dss_write_reg(const struct dss_reg idx, u32 val) -+{ -+ __raw_writel(val, dss.base + idx.idx); -+} -+ -+static inline u32 dss_read_reg(const struct dss_reg idx) -+{ -+ return __raw_readl(dss.base + idx.idx); -+} + -+void dss_sdi_init(int datapairs) -+{ -+ u32 l; -+ -+ BUG_ON(datapairs > 3 || datapairs < 1); ++ unsigned long dsi1_pll_fclk; /* Hz */ ++ unsigned long dsi2_pll_fclk; /* Hz */ ++ unsigned long dsiphy; /* Hz */ ++ unsigned long ddr_clk; /* Hz */ + -+ l = dss_read_reg(DSS_SDI_CONTROL); -+ l = FLD_MOD(l, 0xf, 19, 15); /* SDI_PDIV */ -+ l = FLD_MOD(l, datapairs-1, 3, 2); /* SDI_PRSEL */ -+ l = FLD_MOD(l, 2, 1, 0); /* SDI_BWSEL */ -+ dss_write_reg(DSS_SDI_CONTROL, l); ++ struct { ++ enum fifo_size fifo_size; ++ int dest_per; /* destination peripheral 0-3 */ ++ } vc[4]; + -+ l = dss_read_reg(DSS_PLL_CONTROL); -+ l = FLD_MOD(l, 0x7, 25, 22); /* SDI_PLL_FREQSEL */ -+ l = FLD_MOD(l, 0xb, 16, 11); /* SDI_PLL_REGN */ -+ l = FLD_MOD(l, 0xb4, 10, 1); /* SDI_PLL_REGM */ -+ dss_write_reg(DSS_PLL_CONTROL, l); ++ struct mutex lock; + -+ /* Reset SDI PLL */ -+ REG_FLD_MOD(DSS_PLL_CONTROL, 1, 18, 18); /* SDI_PLL_SYSRESET */ -+ udelay(1); /* wait 2x PCLK */ ++ struct completion bta_completion; + -+ /* Lock SDI PLL */ -+ REG_FLD_MOD(DSS_PLL_CONTROL, 1, 28, 28); /* SDI_PLL_GOBIT */ ++ spinlock_t update_lock; ++ int update_ongoing; ++ int update_syncers; ++ struct completion update_completion; ++ struct work_struct framedone_work; + -+ /* Waiting for PLL lock request to complete */ -+ while (dss_read_reg(DSS_SDI_STATUS) & (1 << 6)) -+ ; ++ enum omap_dss_update_mode update_mode; ++ int use_te; ++ int framedone_scheduled; /* helps to catch strange framedone bugs */ + -+ /* Clearing PLL_GO bit */ -+ REG_FLD_MOD(DSS_PLL_CONTROL, 0, 28, 28); ++ struct { ++ struct omap_display *display; ++ int x, y, w, h; ++ int bytespp; ++ } update_region; + -+ /* Waiting for PLL to lock */ -+ while (!(dss_read_reg(DSS_SDI_STATUS) & (1 << 5))) -+ ; ++#ifdef MEASURE_PERF ++ ktime_t measure_time; ++ int measure_frames; ++#endif ++} dsi; + -+ dispc_lcd_enable_signal(1); + -+ /* Waiting for SDI reset to complete */ -+ while (!(dss_read_reg(DSS_SDI_STATUS) & (1 << 5))) -+ ; ++static inline void dsi_write_reg(const struct dsi_reg idx, u32 val) ++{ ++ __raw_writel(val, dsi.base + idx.idx); +} + -+static int get_dss_clocks(void) ++static inline u32 dsi_read_reg(const struct dsi_reg idx) +{ -+ const struct { -+ struct clk **clock; -+ char *omap2_name; -+ char *omap3_name; -+ } clocks[5] = { -+ { &dss.dss_ick, "dss_ick", "dss_ick" }, /* L3 & L4 ick */ -+ { &dss.dss1_fck, "dss1_fck", "dss1_alwon_fck" }, -+ { &dss.dss2_fck, "dss2_fck", "dss2_alwon_fck" }, -+ { &dss.dss_54m_fck, "dss_54m_fck", "dss_tv_fck" }, -+ { &dss.dss_96m_fck, NULL, "dss_96m_fck" }, -+ }; ++ return __raw_readl(dsi.base + idx.idx); ++} + -+ int r = 0; -+ int i; -+ const int num_clocks = 5; ++static inline int wait_for_bit_change(const struct dsi_reg idx, int bitnum, ++ int value) ++{ ++ int t = 1000; + -+ for (i = 0; i < num_clocks; i++) -+ *clocks[i].clock = NULL; ++ while (REG_GET(idx, bitnum, bitnum) != value) { ++ if (--t == 0) ++ return !value; ++ } + -+ for (i = 0; i < num_clocks; i++) { -+ struct clk *clk; -+ const char *clk_name; ++ return value; ++} + -+ clk_name = cpu_is_omap34xx() ? clocks[i].omap3_name -+ : clocks[i].omap2_name; + -+ if (!clk_name) -+ continue; ++#ifdef MEASURE_PERF ++static void start_measuring(void) ++{ ++ dsi.measure_time = ktime_get(); ++} + -+ clk = clk_get(NULL, clk_name); ++static void end_measuring(const char *name) ++{ ++ ktime_t t; ++ u32 total_bytes; ++ u32 us; ++ const int numframes = 100; + -+ if (IS_ERR(clk)) { -+ DSSERR("can't get clock %s", clk_name); -+ r = PTR_ERR(clk); -+ goto err; -+ } ++ if (dsi.update_mode == OMAP_DSS_UPDATE_DISABLED) ++ return; + -+ DSSDBG("clk %s, rate %ld\n", -+ clk_name, clk_get_rate(clk)); ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) { ++ dsi.measure_frames++; ++ if (dsi.measure_frames < numframes) ++ return; ++ dsi.measure_frames = 0; ++ } + -+ *clocks[i].clock = clk; ++ t = ktime_get(); ++ t = ktime_sub(t, dsi.measure_time); ++ us = (u32)ktime_to_us(t); ++ if (us == 0) ++ us = 1; ++ ++ total_bytes = dsi.update_region.w * ++ dsi.update_region.h * ++ dsi.update_region.bytespp; ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) { ++ DSSINFO("%s update: %d frames in %u us, %u frames/sec\n", ++ name, numframes, ++ us, ++ 1000*1000 / us); ++ } else { ++ DSSINFO("%s update in %u us (%u Hz), %u bytes, %u kbytes/sec\n", ++ name, ++ us, ++ 1000*1000 / us, ++ total_bytes, ++ total_bytes * 1000 / us); + } ++} ++#else ++#define start_measuring() ++#define end_measuring(x) ++#endif + -+ return 0; + -+err: -+ for (i = 0; i < num_clocks; i++) { -+ if (!IS_ERR(*clocks[i].clock)) -+ clk_put(*clocks[i].clock); -+ } + -+ return r; -+} + -+static void put_dss_clocks(void) ++static void print_irq_status(u32 status) +{ -+ if (dss.dss_96m_fck) -+ clk_put(dss.dss_96m_fck); -+ clk_put(dss.dss_54m_fck); -+ clk_put(dss.dss1_fck); -+ clk_put(dss.dss2_fck); -+ clk_put(dss.dss_ick); -+} ++#ifndef VERBOSE_IRQ ++ if ((status & ~DSI_IRQ_CHANNEL_MASK) == 0) ++ return; ++#endif ++ printk(KERN_DEBUG "DSI IRQ: 0x%x: ", status); + -+struct clk *get_dss_ick(void) -+{ -+ return dss.dss_ick; ++#define PIS(x) \ ++ if (status & DSI_IRQ_##x) \ ++ printk(#x " "); ++#ifdef VERBOSE_IRQ ++ PIS(VC0); ++ PIS(VC1); ++ PIS(VC2); ++ PIS(VC3); ++#endif ++ PIS(WAKEUP); ++ PIS(RESYNC); ++ PIS(PLL_LOCK); ++ PIS(PLL_UNLOCK); ++ PIS(PLL_RECALL); ++ PIS(COMPLEXIO_ERR); ++ PIS(HS_TX_TIMEOUT); ++ PIS(LP_RX_TIMEOUT); ++ PIS(TE_TRIGGER); ++ PIS(ACK_TRIGGER); ++ PIS(SYNC_LOST); ++ PIS(LDO_POWER_GOOD); ++ PIS(TA_TIMEOUT); ++#undef PIS ++ ++ printk("\n"); +} + -+struct clk *get_dss1_fck(void) ++static void print_irq_status_vc(int channel, u32 status) +{ -+ return dss.dss1_fck; -+} ++#ifndef VERBOSE_IRQ ++ if ((status & ~DSI_VC_IRQ_PACKET_SENT) == 0) ++ return; ++#endif ++ printk(KERN_DEBUG "DSI VC(%d) IRQ 0x%x: ", channel, status); + -+struct clk *get_dss2_fck(void) -+{ -+ return dss.dss2_fck; ++#define PIS(x) \ ++ if (status & DSI_VC_IRQ_##x) \ ++ printk(#x " "); ++ PIS(CS); ++ PIS(ECC_CORR); ++#ifdef VERBOSE_IRQ ++ PIS(PACKET_SENT); ++#endif ++ PIS(FIFO_TX_OVF); ++ PIS(FIFO_RX_OVF); ++ PIS(BTA); ++ PIS(ECC_NO_CORR); ++ PIS(FIFO_TX_UDF); ++ PIS(PP_BUSY_CHANGE); ++#undef PIS ++ printk("\n"); +} + -+struct clk *get_tv_fck(void) ++static void print_irq_status_cio(u32 status) +{ -+ return dss.dss_54m_fck; ++ printk(KERN_DEBUG "DSI CIO IRQ 0x%x: ", status); ++ ++#define PIS(x) \ ++ if (status & DSI_CIO_IRQ_##x) \ ++ printk(#x " "); ++ PIS(ERRSYNCESC1); ++ PIS(ERRSYNCESC2); ++ PIS(ERRSYNCESC3); ++ PIS(ERRESC1); ++ PIS(ERRESC2); ++ PIS(ERRESC3); ++ PIS(ERRCONTROL1); ++ PIS(ERRCONTROL2); ++ PIS(ERRCONTROL3); ++ PIS(STATEULPS1); ++ PIS(STATEULPS2); ++ PIS(STATEULPS3); ++ PIS(ERRCONTENTIONLP0_1); ++ PIS(ERRCONTENTIONLP1_1); ++ PIS(ERRCONTENTIONLP0_2); ++ PIS(ERRCONTENTIONLP1_2); ++ PIS(ERRCONTENTIONLP0_3); ++ PIS(ERRCONTENTIONLP1_3); ++ PIS(ULPSACTIVENOT_ALL0); ++ PIS(ULPSACTIVENOT_ALL1); ++#undef PIS ++ ++ printk("\n"); +} + -+struct clk *get_96m_fck(void) ++static int debug_irq; ++ ++/* called from dss */ ++void dsi_irq_handler(void) +{ -+ return dss.dss_96m_fck; ++ u32 irqstatus, vcstatus, ciostatus; ++ int i; ++ ++ irqstatus = dsi_read_reg(DSI_IRQSTATUS); ++ ++ if (irqstatus & DSI_IRQ_ERROR_MASK) { ++ DSSERR("DSI error, irqstatus %x\n", irqstatus); ++ print_irq_status(irqstatus); ++ } else if (debug_irq) { ++ print_irq_status(irqstatus); ++ } ++ ++ for (i = 0; i < 4; ++i) { ++ if ((irqstatus & (1< 30*1000*1000) ++ REG_FLD_MOD(DSI_CLK_CTRL, 1, 21, 21); /* LP_RX_SYNCHRO_ENABLE */ + -+ /* autoidle */ -+ REG_FLD_MOD(DSS_SYSCONFIG, 1, 0, 0); ++ return 0; ++} + -+ /* Select DPLL */ -+ REG_FLD_MOD(DSS_CONTROL, 0, 0, 0); + -+#ifdef CONFIG_OMAP2_DSS_VENC -+ REG_FLD_MOD(DSS_CONTROL, 1, 4, 4); /* venc dac demen */ -+ REG_FLD_MOD(DSS_CONTROL, 1, 3, 3); /* venc clock 4x enable */ -+ REG_FLD_MOD(DSS_CONTROL, 0, 2, 2); /* venc clock mode = normal */ -+#endif ++enum dsi_pll_power_state { ++ DSI_PLL_POWER_OFF = 0x0, ++ DSI_PLL_POWER_ON_HSCLK = 0x1, ++ DSI_PLL_POWER_ON_ALL = 0x2, ++ DSI_PLL_POWER_ON_DIV = 0x3, ++}; + -+ r = request_irq(INT_24XX_DSS_IRQ, dss_irq_handler, -+ 0, "OMAP DSS", NULL); ++static int dsi_pll_power(enum dsi_pll_power_state state) ++{ ++ int t = 0; + -+ if (r < 0) { -+ DSSERR("omap2 dss: request_irq failed\n"); -+ goto fail2; -+ } ++ REG_FLD_MOD(DSI_CLK_CTRL, state, 31, 30); /* PLL_PWR_CMD */ + -+ rev = dss_read_reg(DSS_REVISION); -+ printk(KERN_INFO "OMAP DSS rev %d.%d\n", -+ FLD_GET(rev, 7, 4), FLD_GET(rev, 3, 0)); ++ /* PLL_PWR_STATUS */ ++ while (FLD_GET(dsi_read_reg(DSI_CLK_CTRL), 29, 28) != state) { ++ udelay(1); ++ if (t++ > 1000) { ++ DSSERR("DSI: Failed to set DSI PLL power mode to %d\n", ++ state); ++ return -ENODEV; ++ } ++ } + -+ disable_dss_clocks(); + return 0; -+ -+fail2: -+ disable_dss_clocks(); -+ put_dss_clocks(); -+fail1: -+ iounmap(dss.base); -+fail0: -+ return r; +} + -+void dss_exit(void) ++int dsi_pll_calc_pck(int is_tft, unsigned long req_pck, ++ struct dsi_clock_info *cinfo) +{ -+ int c; ++ struct dsi_clock_info cur, best; ++ int min_fck_per_pck; ++ int match = 0; + -+ free_irq(INT_24XX_DSS_IRQ, NULL); ++ min_fck_per_pck = CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK; + -+ /* these should be removed at some point */ -+ c = clk_get_usecount(dss.dss_ick); -+ if (c > 0) { -+ DSSERR("warning: dss_ick usecount %d, disabling\n", c); -+ while (c-- > 0) -+ clk_disable(dss.dss_ick); ++ if (min_fck_per_pck && ++ req_pck * min_fck_per_pck > DISPC_MAX_FCK) { ++ DSSERR("Requested pixel clock not possible with the current " ++ "OMAP2_DSS_MIN_FCK_PER_PCK setting. Turning " ++ "the constraint off.\n"); ++ min_fck_per_pck = 0; + } + -+ c = clk_get_usecount(dss.dss1_fck); -+ if (c > 0) { -+ DSSERR("warning: dss1_fck usecount %d, disabling\n", c); -+ while (c-- > 0) -+ clk_disable(dss.dss1_fck); -+ } ++ DSSDBG("dsi_pll_calc\n"); + -+ c = clk_get_usecount(dss.dss2_fck); -+ if (c > 0) { -+ DSSERR("warning: dss2_fck usecount %d, disabling\n", c); -+ while (c-- > 0) -+ clk_disable(dss.dss2_fck); -+ } ++retry: ++ memset(&best, 0, sizeof(best)); + -+ c = clk_get_usecount(dss.dss_54m_fck); -+ if (c > 0) { -+ DSSERR("warning: dss_54m_fck usecount %d, disabling\n", c); -+ while (c-- > 0) -+ clk_disable(dss.dss_54m_fck); -+ } ++ memset(&cur, 0, sizeof(cur)); ++ cur.clkin = clk_get_rate(dsi.dss2_fck); ++ cur.use_dss2_fck = 1; ++ cur.highfreq = 0; + -+ if (dss.dss_96m_fck) { -+ c = clk_get_usecount(dss.dss_96m_fck); -+ if (c > 0) { -+ DSSERR("warning: dss_96m_fck usecount %d, disabling\n", -+ c); -+ while (c-- > 0) -+ clk_disable(dss.dss_96m_fck); -+ } -+ } ++ /* no highfreq: 0.75MHz < Fint = clkin / regn < 2.1MHz */ ++ /* highfreq: 0.75MHz < Fint = clkin / (2*regn) < 2.1MHz */ ++ /* To reduce PLL lock time, keep Fint high (around 2 MHz) */ ++ for (cur.regn = 1; cur.regn < REGN_MAX; ++cur.regn) { ++ if (cur.highfreq == 0) ++ cur.fint = cur.clkin / cur.regn; ++ else ++ cur.fint = cur.clkin / (2 * cur.regn); + -+ put_dss_clocks(); ++ if (cur.fint > FINT_MAX || cur.fint < FINT_MIN) ++ continue; + -+ iounmap(dss.base); -+} ++ /* DSIPHY(MHz) = (2 * regm / regn) * (clkin / (highfreq + 1)) */ ++ for (cur.regm = 1; cur.regm < REGM_MAX; ++cur.regm) { ++ unsigned long a, b; + ++ a = 2 * cur.regm * (cur.clkin/1000); ++ b = cur.regn * (cur.highfreq + 1); ++ cur.dsiphy = a / b * 1000; + ++ if (cur.dsiphy > 1800 * 1000 * 1000) ++ break; + -+static int omap_dss_probe(struct platform_device *pdev) -+{ -+ struct omap_dss_platform_data *pdata = pdev->dev.platform_data; ++ /* DSI1_PLL_FCLK(MHz) = DSIPHY(MHz) / regm3 < 173MHz */ ++ for (cur.regm3 = 1; cur.regm3 < REGM3_MAX; ++ ++cur.regm3) { ++ cur.dispc_fck = cur.dsiphy / cur.regm3; + -+ int r; ++ /* this will narrow down the search a bit, ++ * but still give pixclocks below what was ++ * requested */ ++ if (cur.dispc_fck < req_pck) ++ break; + -+ r = dss_init(); -+ if (r) { -+ DSSERR("Failed to initialize DSS\n"); -+ goto fail0; -+ } ++ if (cur.dispc_fck > DISPC_MAX_FCK) ++ continue; + -+#ifdef CONFIG_OMAP2_DSS_RFBI -+ r = rfbi_init(); -+ if (r) { -+ DSSERR("Failed to initialize rfbi\n"); -+ goto fail0; -+ } -+#endif ++ if (min_fck_per_pck && ++ cur.dispc_fck < req_pck * min_fck_per_pck) ++ continue; + -+ r = dpi_init(); -+ if (r) { -+ DSSERR("Failed to initialize dpi\n"); -+ goto fail0; -+ } ++ match = 1; ++ ++ find_lck_pck_divs(is_tft, req_pck, ++ cur.dispc_fck, ++ &cur.lck_div, ++ &cur.pck_div); ++ ++ cur.lck = cur.dispc_fck / cur.lck_div; ++ cur.pck = cur.lck / cur.pck_div; ++ ++ if (abs(cur.pck - req_pck) < abs(best.pck - req_pck)) { ++ best = cur; ++ ++ if (cur.pck == req_pck) ++ goto found; ++ } ++ } ++ } ++ } ++found: ++ if (!match) { ++ if (min_fck_per_pck) { ++ DSSERR("Could not find suitable clock settings.\n" ++ "Turning FCK/PCK constraint off and" ++ "trying again.\n"); ++ min_fck_per_pck = 0; ++ goto retry; ++ } ++ ++ DSSERR("Could not find suitable clock settings.\n"); ++ ++ return -EINVAL; ++ } ++ ++ /* DSI2_PLL_FCLK(MHz) = DSIPHY(MHz) / regm4 < 173MHz */ ++ /* hardcoded 48MHz for now. what should it be? */ ++ best.regm4 = best.dsiphy / 48000000; ++ if (best.regm4 > REGM4_MAX) ++ best.regm4 = REGM4_MAX; ++ best.dsi_fck = best.dsiphy / best.regm4; ++ ++ if (cinfo) ++ *cinfo = best; ++ ++ return 0; ++} ++ ++static int dsi_pll_calc_datafreq(unsigned long datafreq, ++ struct dsi_clock_info *cinfo) ++{ ++ struct dsi_clock_info cur, best; ++ const int use_dss2_fck = 1; ++ ++ DSSDBG("dsi_pll_calc_datarate\n"); ++ ++ memset(&best, 0, sizeof(best)); ++ ++ memset(&cur, 0, sizeof(cur)); ++ cur.use_dss2_fck = use_dss2_fck; ++ if (use_dss2_fck) { ++ cur.clkin = clk_get_rate(dsi.dss2_fck); ++ cur.highfreq = 0; ++ } else { ++ cur.clkin = dispc_pclk_rate(); ++ if (cur.clkin < 32000000) ++ cur.highfreq = 0; ++ else ++ cur.highfreq = 1; ++ } ++ ++ /* no highfreq: 0.75MHz < Fint = clkin / regn < 2.1MHz */ ++ /* highfreq: 0.75MHz < Fint = clkin / (2*regn) < 2.1MHz */ ++ /* To reduce PLL lock time, keep Fint high (around 2 MHz) */ ++ for (cur.regn = 1; cur.regn < REGN_MAX; ++cur.regn) { ++ if (cur.highfreq == 0) ++ cur.fint = cur.clkin / cur.regn; ++ else ++ cur.fint = cur.clkin / (2 * cur.regn); ++ ++ if (cur.fint > FINT_MAX || cur.fint < FINT_MIN) ++ continue; ++ ++ /* DSIPHY(MHz) = (2 * regm / regn) * (clkin / (highfreq + 1)) */ ++ for (cur.regm = 1; cur.regm < REGM_MAX; ++cur.regm) { ++ unsigned long a, b; ++ ++ a = 2 * cur.regm * (cur.clkin/1000); ++ b = cur.regn * (cur.highfreq + 1); ++ cur.dsiphy = a / b * 1000; ++ ++ if (cur.dsiphy > 1800 * 1000 * 1000) ++ break; ++ ++ if (abs(cur.dsiphy - datafreq) < ++ abs(best.dsiphy - datafreq)) { ++ best = cur; ++ /* DSSDBG("best %ld\n", best.dsiphy); */ ++ } ++ ++ if (cur.dsiphy == datafreq) ++ goto found; ++ } ++ } ++found: ++ /* DSI1_PLL_FCLK(MHz) = DSIPHY(MHz) / regm3 < 173MHz */ ++ /* hardcoded 48MHz for now. what should it be? */ ++ best.regm3 = best.dsiphy / (48000000); ++ if (best.regm3 > REGM3_MAX) ++ best.regm3 = REGM3_MAX; ++ best.dispc_fck = best.dsiphy / best.regm3; ++ ++ /* DSI2_PLL_FCLK(MHz) = DSIPHY(MHz) / regm4 < 173MHz */ ++ /* hardcoded 48MHz for now. what should it be? */ ++ best.regm4 = best.dsiphy / (48000000); ++ if (best.regm4 > REGM4_MAX) ++ best.regm4 = REGM4_MAX; ++ best.dsi_fck = best.dsiphy / best.regm4; ++ ++ if (cinfo) ++ *cinfo = best; ++ ++ return 0; ++} ++ ++int dsi_pll_program(struct dsi_clock_info *cinfo) ++{ ++ int r = 0; ++ u32 l; ++ ++ DSSDBG("dsi_pll_program\n"); ++ ++ enable_clocks(1); ++ ++ dsi.dsiphy = cinfo->dsiphy; ++ dsi.ddr_clk = dsi.dsiphy / 4; ++ dsi.dsi1_pll_fclk = cinfo->dispc_fck; ++ dsi.dsi2_pll_fclk = cinfo->dsi_fck; ++ ++ DSSDBG("DSI Fint %ld\n", cinfo->fint); ++ ++ DSSDBG("clkin (%s) rate %ld, highfreq %d\n", ++ cinfo->use_dss2_fck ? "dss2_fck" : "pclkfree", ++ cinfo->clkin, ++ cinfo->highfreq); ++ ++ /* DSIPHY == CLKIN4DDR */ ++ DSSDBG("DSIPHY = 2 * %d / %d * %lu / %d = %lu\n", ++ cinfo->regm, ++ cinfo->regn, ++ cinfo->clkin, ++ cinfo->highfreq + 1, ++ cinfo->dsiphy); ++ ++ DSSDBG("Data rate on 1 DSI lane %ld Mbps\n", ++ dsi.dsiphy / 1000 / 1000 / 2); ++ ++ DSSDBG("Clock lane freq %ld Hz\n", dsi.ddr_clk); ++ ++ DSSDBG("regm3 = %d, dsi1_pll_fclk = %lu\n", ++ cinfo->regm3, cinfo->dispc_fck); ++ DSSDBG("regm4 = %d, dsi2_pll_fclk = %lu\n", ++ cinfo->regm4, cinfo->dsi_fck); ++ ++ REG_FLD_MOD(DSI_PLL_CONTROL, 0, 0, 0); /* DSI_PLL_AUTOMODE = manual */ ++ ++ l = dsi_read_reg(DSI_PLL_CONFIGURATION1); ++ l = FLD_MOD(l, 1, 0, 0); /* DSI_PLL_STOPMODE */ ++ l = FLD_MOD(l, cinfo->regn - 1, 7, 1); /* DSI_PLL_REGN */ ++ l = FLD_MOD(l, cinfo->regm, 18, 8); /* DSI_PLL_REGM */ ++ l = FLD_MOD(l, cinfo->regm3 - 1, 22, 19); /* DSI_CLOCK_DIV */ ++ l = FLD_MOD(l, cinfo->regm4 - 1, 26, 23); /* DSIPROTO_CLOCK_DIV */ ++ dsi_write_reg(DSI_PLL_CONFIGURATION1, l); ++ ++ l = dsi_read_reg(DSI_PLL_CONFIGURATION2); ++ l = FLD_MOD(l, 7, 4, 1); /* DSI_PLL_FREQSEL */ ++ /* DSI_PLL_CLKSEL */ ++ l = FLD_MOD(l, cinfo->use_dss2_fck ? 0 : 1, 11, 11); ++ l = FLD_MOD(l, cinfo->highfreq, 12, 12); /* DSI_PLL_HIGHFREQ */ ++ l = FLD_MOD(l, 1, 13, 13); /* DSI_PLL_REFEN */ ++ l = FLD_MOD(l, 0, 14, 14); /* DSIPHY_CLKINEN */ ++ l = FLD_MOD(l, 1, 20, 20); /* DSI_HSDIVBYPASS */ ++ dsi_write_reg(DSI_PLL_CONFIGURATION2, l); ++ ++ REG_FLD_MOD(DSI_PLL_GO, 1, 0, 0); /* DSI_PLL_GO */ ++ ++ if (wait_for_bit_change(DSI_PLL_GO, 0, 0) != 0) { ++ DSSERR("dsi pll go bit not going down.\n"); ++ r = -EIO; ++ goto err; ++ } ++ ++ if (wait_for_bit_change(DSI_PLL_STATUS, 1, 1) != 1) { ++ DSSERR("DSI: cannot lock PLL\n"); ++ r = -EIO; ++ goto err; ++ } ++ ++ l = dsi_read_reg(DSI_PLL_CONFIGURATION2); ++ l = FLD_MOD(l, 0, 0, 0); /* DSI_PLL_IDLE */ ++ l = FLD_MOD(l, 0, 5, 5); /* DSI_PLL_PLLLPMODE */ ++ l = FLD_MOD(l, 0, 6, 6); /* DSI_PLL_LOWCURRSTBY */ ++ l = FLD_MOD(l, 0, 7, 7); /* DSI_PLL_TIGHTPHASELOCK */ ++ l = FLD_MOD(l, 0, 8, 8); /* DSI_PLL_DRIFTGUARDEN */ ++ l = FLD_MOD(l, 0, 10, 9); /* DSI_PLL_LOCKSEL */ ++ l = FLD_MOD(l, 1, 13, 13); /* DSI_PLL_REFEN */ ++ l = FLD_MOD(l, 1, 14, 14); /* DSIPHY_CLKINEN */ ++ l = FLD_MOD(l, 0, 15, 15); /* DSI_BYPASSEN */ ++ l = FLD_MOD(l, 1, 16, 16); /* DSS_CLOCK_EN */ ++ l = FLD_MOD(l, 0, 17, 17); /* DSS_CLOCK_PWDN */ ++ l = FLD_MOD(l, 1, 18, 18); /* DSI_PROTO_CLOCK_EN */ ++ l = FLD_MOD(l, 0, 19, 19); /* DSI_PROTO_CLOCK_PWDN */ ++ l = FLD_MOD(l, 0, 20, 20); /* DSI_HSDIVBYPASS */ ++ dsi_write_reg(DSI_PLL_CONFIGURATION2, l); ++ ++ DSSDBG("PLL config done\n"); ++err: ++ enable_clocks(0); ++ ++ return r; ++} ++ ++int dsi_pll_init(int enable_hsclk, int enable_hsdiv) ++{ ++ int r = 0; ++ enum dsi_pll_power_state pwstate; ++ struct dispc_clock_info cinfo; ++ ++ DSSDBG("PLL init\n"); ++ ++ enable_clocks(1); ++ dsi_enable_pll_clock(1); ++ ++ /* configure dispc fck and pixel clock to something sane */ ++ r = dispc_calc_clock_div(1, 48 * 1000 * 1000, &cinfo); ++ if (r) ++ return r; ++ ++ r = dispc_set_clock_div(&cinfo); ++ if (r) ++ return r; ++ ++ /* PLL does not come out of reset without this... */ ++ dispc_pck_free_enable(1); ++ ++ if (wait_for_bit_change(DSI_PLL_STATUS, 0, 1) != 1) { ++ DSSERR("DSI: PLL not coming out of reset.\n"); ++ r = -ENODEV; ++ goto err; ++ } ++ ++ /* ... but if left on, we get problems when planes do not ++ * fill the whole display. No idea about this XXX */ ++ dispc_pck_free_enable(0); ++ ++ if (enable_hsclk && enable_hsdiv) ++ pwstate = DSI_PLL_POWER_ON_ALL; ++ else if (enable_hsclk) ++ pwstate = DSI_PLL_POWER_ON_HSCLK; ++ else if (enable_hsdiv) ++ pwstate = DSI_PLL_POWER_ON_DIV; ++ else ++ pwstate = DSI_PLL_POWER_OFF; ++ ++ r = dsi_pll_power(pwstate); ++ ++ if (r) ++ goto err; ++ ++ enable_clocks(0); ++ ++ DSSDBG("PLL init done\n"); ++ ++ return 0; ++err: ++ enable_clocks(0); ++ dsi_enable_pll_clock(0); ++ return r; ++} ++ ++void dsi_pll_uninit(void) ++{ ++ dsi_pll_power(DSI_PLL_POWER_OFF); ++ dsi_enable_pll_clock(0); ++ DSSDBG("PLL uninit done\n"); ++} ++ ++unsigned long dsi_get_dsi1_pll_rate(void) ++{ ++ return dsi.dsi1_pll_fclk; ++} ++ ++unsigned long dsi_get_dsi2_pll_rate(void) ++{ ++ return dsi.dsi2_pll_fclk; ++} ++ ++ssize_t dsi_print_clocks(char *buf, ssize_t size) ++{ ++ ssize_t l = 0; ++ int clksel; ++ ++ enable_clocks(1); ++ ++ clksel = REG_GET(DSI_PLL_CONFIGURATION2, 11, 11); ++ ++ l += snprintf(buf + l, size - l, "- dsi -\n"); ++ ++ l += snprintf(buf + l, size - l, "dsi fclk source = %s\n", ++ dss_get_dsi_clk_source() == 0 ? ++ "dss1_alwon_fclk" : "dsi2_pll_fclk"); ++ ++ l += snprintf(buf + l, size - l, "dsi pll source = %s\n", ++ clksel == 0 ? ++ "dss2_alwon_fclk" : "pclkfree"); ++ ++ l += snprintf(buf + l, size - l, ++ "DSIPHY\t\t%lu\nDDR_CLK\t\t%lu\n", ++ dsi.dsiphy, dsi.ddr_clk); ++ ++ l += snprintf(buf + l, size - l, ++ "dsi1_pll_fck\t%lu (%s)\n" ++ "dsi2_pll_fck\t%lu (%s)\n", ++ dsi.dsi1_pll_fclk, ++ dss_get_dispc_clk_source() == 0 ? "off" : "on", ++ dsi.dsi2_pll_fclk, ++ dss_get_dsi_clk_source() == 0 ? "off" : "on"); ++ ++ enable_clocks(0); ++ ++ return l; ++} ++ ++ ++enum dsi_complexio_power_state { ++ DSI_COMPLEXIO_POWER_OFF = 0x0, ++ DSI_COMPLEXIO_POWER_ON = 0x1, ++ DSI_COMPLEXIO_POWER_ULPS = 0x2, ++}; ++ ++static int dsi_complexio_power(enum dsi_complexio_power_state state) ++{ ++ int t = 0; ++ ++ /* PWR_CMD */ ++ REG_FLD_MOD(DSI_COMPLEXIO_CFG1, state, 28, 27); ++ ++ /* PWR_STATUS */ ++ while (FLD_GET(dsi_read_reg(DSI_COMPLEXIO_CFG1), 26, 25) != state) { ++ udelay(1); ++ if (t++ > 1000) { ++ DSSERR("DSI: failed to set complexio power state to " ++ "%d\n", state); ++ return -ENODEV; ++ } ++ } ++ ++ return 0; ++} ++ ++static void dsi_complexio_config(struct omap_display *display) ++{ ++ u32 r; ++ ++ int clk_lane = display->hw_config.u.dsi.clk_lane; ++ int data1_lane = display->hw_config.u.dsi.data1_lane; ++ int data2_lane = display->hw_config.u.dsi.data2_lane; ++ int clk_pol = display->hw_config.u.dsi.clk_pol; ++ int data1_pol = display->hw_config.u.dsi.data1_pol; ++ int data2_pol = display->hw_config.u.dsi.data2_pol; ++ ++ r = dsi_read_reg(DSI_COMPLEXIO_CFG1); ++ r = FLD_MOD(r, clk_lane, 2, 0); ++ r = FLD_MOD(r, clk_pol, 3, 3); ++ r = FLD_MOD(r, data1_lane, 6, 4); ++ r = FLD_MOD(r, data1_pol, 7, 7); ++ r = FLD_MOD(r, data2_lane, 10, 8); ++ r = FLD_MOD(r, data2_pol, 11, 11); ++ dsi_write_reg(DSI_COMPLEXIO_CFG1, r); ++ ++ /* The configuration of the DSI complex I/O (number of data lanes, ++ position, differential order) should not be changed while ++ DSS.DSI_CLK_CRTRL[20] LP_CLK_ENABLE bit is set to 1. In order for ++ the hardware to take into account a new configuration of the complex ++ I/O (done in DSS.DSI_COMPLEXIO_CFG1 register), it is recommended to ++ follow this sequence: First set the DSS.DSI_CTRL[0] IF_EN bit to 1, ++ then reset the DSS.DSI_CTRL[0] IF_EN to 0, then set ++ DSS.DSI_CLK_CTRL[20] LP_CLK_ENABLE to 1 and finally set again the ++ DSS.DSI_CTRL[0] IF_EN bit to 1. If the sequence is not followed, the ++ DSI complex I/O configuration is unknown. */ ++ ++ /* ++ REG_FLD_MOD(DSI_CTRL, 1, 0, 0); ++ REG_FLD_MOD(DSI_CTRL, 0, 0, 0); ++ REG_FLD_MOD(DSI_CLK_CTRL, 1, 20, 20); ++ REG_FLD_MOD(DSI_CTRL, 1, 0, 0); ++ */ ++} ++ ++static inline int ns2ddr(int ns) ++{ ++ /* convert time in ns to ddr ticks, rounding up */ ++ return (ns * (dsi.ddr_clk/1000/1000) + 999) / 1000; ++} ++ ++static void dsi_complexio_timings(void) ++{ ++ u32 r; ++ u32 ths_prepare, ths_prepare_ths_zero, ths_trail, ths_exit; ++ u32 tlpx_half, tclk_trail, tclk_zero; ++ u32 tclk_prepare; ++ ++ /* calculate timings */ ++ ++ /* 1 * DDR_CLK = 2 * UI */ ++ ++ /* min 40ns + 4*UI max 85ns + 6*UI */ ++ ths_prepare = ns2ddr(59) + 2; ++ ++ /* min 145ns + 10*UI */ ++ ths_prepare_ths_zero = ns2ddr(145) + 5; ++ ++ /* min max(8*UI, 60ns+4*UI) */ ++ ths_trail = max(4, ns2ddr(60) + 2); ++ ++ /* min 100ns */ ++ ths_exit = ns2ddr(100); ++ ++ /* tlpx min 50n */ ++ tlpx_half = ns2ddr(25); ++ ++ /* min 60ns */ ++ tclk_trail = ns2ddr(60); ++ ++ /* min 38ns, max 95ns */ ++ tclk_prepare = ns2ddr(38); ++ ++ /* min tclk-prepare + tclk-zero = 300ns */ ++ tclk_zero = ns2ddr(300 - 38); ++ ++#ifdef VERBOSE ++ DSSDBG("ths_prepare %d, ths_prepare_ths_zero %d\n", ++ ths_prepare, ths_prepare_ths_zero); ++ DSSDBG("ths_trail %d, ths_exit %d\n", ths_trail, ths_exit); ++ ++ ++ DSSDBG("tlpx_half %d, tclk_trail %d, tclk_zero %d\n", tlpx_half, ++ tclk_trail, tclk_zero); ++ DSSDBG("tclk_prepare %d\n", tclk_prepare); ++#endif ++ ++ /* program timings */ ++ ++ r = dsi_read_reg(DSIPHY_CFG0); ++ r = FLD_MOD(r, ths_prepare, 31, 24); ++ r = FLD_MOD(r, ths_prepare_ths_zero, 23, 16); ++ r = FLD_MOD(r, ths_trail, 15, 8); ++ r = FLD_MOD(r, ths_exit, 7, 0); ++ dsi_write_reg(DSIPHY_CFG0, r); ++ ++ r = dsi_read_reg(DSIPHY_CFG1); ++ r = FLD_MOD(r, tlpx_half, 22, 16); ++ r = FLD_MOD(r, tclk_trail, 15, 8); ++ r = FLD_MOD(r, tclk_zero, 7, 0); ++ dsi_write_reg(DSIPHY_CFG1, r); ++ ++ r = dsi_read_reg(DSIPHY_CFG2); ++ r = FLD_MOD(r, tclk_prepare, 7, 0); ++ dsi_write_reg(DSIPHY_CFG2, r); ++} ++ ++ ++static int dsi_complexio_init(struct omap_display *display) ++{ ++ int r = 0; ++ ++ DSSDBG("dsi_complexio_init\n"); ++ ++ /* CIO_CLK_ICG, enable L3 clk to CIO */ ++ REG_FLD_MOD(DSI_CLK_CTRL, 1, 14, 14); ++ ++ if (wait_for_bit_change(DSIPHY_CFG5, 30, 1) != 1) { ++ DSSERR("DSI: ComplexIO PHY not coming out of reset.\n"); ++ r = -ENODEV; ++ goto err; ++ } ++ ++ dsi_complexio_config(display); ++ ++ r = dsi_complexio_power(DSI_COMPLEXIO_POWER_ON); ++ ++ if (r) ++ goto err; ++ ++ if (wait_for_bit_change(DSI_COMPLEXIO_CFG1, 29, 1) != 1) { ++ DSSERR("DSI: ComplexIO not coming out of reset.\n"); ++ r = -ENODEV; ++ goto err; ++ } ++ ++ if (wait_for_bit_change(DSI_COMPLEXIO_CFG1, 21, 1) != 1) { ++ DSSERR("DSI: ComplexIO LDO power down.\n"); ++ r = -ENODEV; ++ goto err; ++ } ++ ++ dsi_complexio_timings(); ++ ++ /* ++ The configuration of the DSI complex I/O (number of data lanes, ++ position, differential order) should not be changed while ++ DSS.DSI_CLK_CRTRL[20] LP_CLK_ENABLE bit is set to 1. For the ++ hardware to recognize a new configuration of the complex I/O (done ++ in DSS.DSI_COMPLEXIO_CFG1 register), it is recommended to follow ++ this sequence: First set the DSS.DSI_CTRL[0] IF_EN bit to 1, next ++ reset the DSS.DSI_CTRL[0] IF_EN to 0, then set DSS.DSI_CLK_CTRL[20] ++ LP_CLK_ENABLE to 1, and finally, set again the DSS.DSI_CTRL[0] IF_EN ++ bit to 1. If the sequence is not followed, the DSi complex I/O ++ configuration is undetermined. ++ */ ++ dsi_if_enable(1); ++ dsi_if_enable(0); ++ REG_FLD_MOD(DSI_CLK_CTRL, 1, 20, 20); /* LP_CLK_ENABLE */ ++ dsi_if_enable(1); ++ dsi_if_enable(0); ++ ++ DSSDBG("CIO init done\n"); ++err: ++ return r; ++} ++ ++static void dsi_complexio_uninit(void) ++{ ++ dsi_complexio_power(DSI_COMPLEXIO_POWER_OFF); ++} ++ ++ ++ ++static void dsi_config_tx_fifo(enum fifo_size size1, enum fifo_size size2, ++ enum fifo_size size3, enum fifo_size size4) ++{ ++ u32 r = 0; ++ int add = 0; ++ int i; ++ ++ dsi.vc[0].fifo_size = size1; ++ dsi.vc[1].fifo_size = size2; ++ dsi.vc[2].fifo_size = size3; ++ dsi.vc[3].fifo_size = size4; ++ ++ for (i = 0; i < 4; i++) { ++ u8 v; ++ int size = dsi.vc[i].fifo_size; ++ ++ if (add + size > 4) { ++ DSSERR("DSI: Illegal FIFO configuration\n"); ++ BUG(); ++ } ++ ++ v = FLD_VAL(add, 2, 0) | FLD_VAL(size, 7, 4); ++ r |= v << (8 * i); ++ /*DSSDBG("TX FIFO vc %d: size %d, add %d\n", i, size, add); */ ++ add += size; ++ } ++ ++ dsi_write_reg(DSI_TX_FIFO_VC_SIZE, r); ++} ++ ++static void dsi_config_rx_fifo(enum fifo_size size1, enum fifo_size size2, ++ enum fifo_size size3, enum fifo_size size4) ++{ ++ u32 r = 0; ++ int add = 0; ++ int i; ++ ++ dsi.vc[0].fifo_size = size1; ++ dsi.vc[1].fifo_size = size2; ++ dsi.vc[2].fifo_size = size3; ++ dsi.vc[3].fifo_size = size4; ++ ++ for (i = 0; i < 4; i++) { ++ u8 v; ++ int size = dsi.vc[i].fifo_size; ++ ++ if (add + size > 4) { ++ DSSERR("DSI: Illegal FIFO configuration\n"); ++ BUG(); ++ } ++ ++ v = FLD_VAL(add, 2, 0) | FLD_VAL(size, 7, 4); ++ r |= v << (8 * i); ++ /*DSSDBG("RX FIFO vc %d: size %d, add %d\n", i, size, add); */ ++ add += size; ++ } ++ ++ dsi_write_reg(DSI_RX_FIFO_VC_SIZE, r); ++} ++ ++static int dsi_force_tx_stop_mode_io(void) ++{ ++ u32 r; ++ ++ r = dsi_read_reg(DSI_TIMING1); ++ r = FLD_MOD(r, 1, 15, 15); /* FORCE_TX_STOP_MODE_IO */ ++ dsi_write_reg(DSI_TIMING1, r); ++ ++ if (wait_for_bit_change(DSI_TIMING1, 15, 0) != 0) { ++ DSSERR("TX_STOP bit not going down\n"); ++ return -EIO; ++ } ++ ++ return 0; ++} ++ ++static void dsi_vc_print_status(int channel) ++{ ++ u32 r; ++ ++ r = dsi_read_reg(DSI_VC_CTRL(channel)); ++ DSSDBG("vc %d: TX_FIFO_NOT_EMPTY %d, BTA_EN %d, VC_BUSY %d, " ++ "TX_FIFO_FULL %d, RX_FIFO_NOT_EMPTY %d, ", ++ channel, ++ FLD_GET(r, 5, 5), ++ FLD_GET(r, 6, 6), ++ FLD_GET(r, 15, 15), ++ FLD_GET(r, 16, 16), ++ FLD_GET(r, 20, 20)); ++ ++ r = dsi_read_reg(DSI_TX_FIFO_VC_EMPTINESS); ++ DSSDBG("EMPTINESS %d\n", (r >> (8 * channel)) & 0xff); ++} ++ ++static void dsi_vc_config(int channel) ++{ ++ u32 r; ++ ++ DSSDBG("dsi_vc_config %d\n", channel); ++ ++ r = dsi_read_reg(DSI_VC_CTRL(channel)); ++ ++ r = FLD_MOD(r, 0, 1, 1); /* SOURCE, 0 = L4 */ ++ r = FLD_MOD(r, 0, 2, 2); /* BTA_SHORT_EN */ ++ r = FLD_MOD(r, 0, 3, 3); /* BTA_LONG_EN */ ++ r = FLD_MOD(r, 0, 4, 4); /* MODE, 0 = command */ ++ r = FLD_MOD(r, 1, 7, 7); /* CS_TX_EN */ ++ r = FLD_MOD(r, 1, 8, 8); /* ECC_TX_EN */ ++ r = FLD_MOD(r, 0, 9, 9); /* MODE_SPEED, high speed on/off */ ++ ++ r = FLD_MOD(r, 4, 29, 27); /* DMA_RX_REQ_NB = no dma */ ++ r = FLD_MOD(r, 4, 23, 21); /* DMA_TX_REQ_NB = no dma */ ++ ++ dsi_write_reg(DSI_VC_CTRL(channel), r); ++} ++ ++static void dsi_vc_config_vp(int channel) ++{ ++ u32 r; ++ ++ DSSDBG("dsi_vc_config_vp\n"); ++ ++ r = dsi_read_reg(DSI_VC_CTRL(channel)); ++ ++ r = FLD_MOD(r, 1, 1, 1); /* SOURCE, 1 = video port */ ++ r = FLD_MOD(r, 0, 2, 2); /* BTA_SHORT_EN */ ++ r = FLD_MOD(r, 0, 3, 3); /* BTA_LONG_EN */ ++ r = FLD_MOD(r, 0, 4, 4); /* MODE, 0 = command */ ++ r = FLD_MOD(r, 1, 7, 7); /* CS_TX_EN */ ++ r = FLD_MOD(r, 1, 8, 8); /* ECC_TX_EN */ ++ r = FLD_MOD(r, 1, 9, 9); /* MODE_SPEED, high speed on/off */ ++ ++ r = FLD_MOD(r, 4, 29, 27); /* DMA_RX_REQ_NB = no dma */ ++ r = FLD_MOD(r, 4, 23, 21); /* DMA_TX_REQ_NB = no dma */ ++ ++ dsi_write_reg(DSI_VC_CTRL(channel), r); ++} ++ ++ ++static int dsi_vc_enable(int channel, int enable) ++{ ++ DSSDBG("dsi_vc_enable channel %d, enable %d\n", channel, enable); ++ ++ enable = enable ? 1 : 0; ++ ++ REG_FLD_MOD(DSI_VC_CTRL(channel), enable, 0, 0); ++ ++ if (wait_for_bit_change(DSI_VC_CTRL(channel), 0, enable) != enable) { ++ DSSERR("Failed to set dsi_vc_enable to %d\n", enable); ++ return -EIO; ++ } ++ ++ return 0; ++} ++ ++static void dsi_vc_enable_hs(int channel, int enable) ++{ ++ DSSDBG("dsi_vc_enable_hs(%d, %d)\n", channel, enable); ++ ++ dsi_vc_enable(channel, 0); ++ dsi_if_enable(0); ++ ++ REG_FLD_MOD(DSI_VC_CTRL(channel), enable, 9, 9); ++ ++ dsi_vc_enable(channel, 1); ++ dsi_if_enable(1); ++ ++ dsi_force_tx_stop_mode_io(); ++} ++ ++static void dsi_vc_flush_long_data(int channel) ++{ ++ while (REG_GET(DSI_VC_CTRL(channel), 20, 20)) { ++ u32 val; ++ val = dsi_read_reg(DSI_VC_SHORT_PACKET_HEADER(channel)); ++ DSSDBG("\t\tb1 %#02x b2 %#02x b3 %#02x b4 %#02x\n", ++ (val >> 0) & 0xff, ++ (val >> 8) & 0xff, ++ (val >> 16) & 0xff, ++ (val >> 24) & 0xff); ++ } ++} ++ ++static u16 dsi_vc_flush_receive_data(int channel) ++{ ++ /* RX_FIFO_NOT_EMPTY */ ++ while (REG_GET(DSI_VC_CTRL(channel), 20, 20)) { ++ u32 val; ++ u8 dt; ++ val = dsi_read_reg(DSI_VC_SHORT_PACKET_HEADER(channel)); ++ DSSDBG("\trawval %#08x\n", val); ++ dt = FLD_GET(val, 7, 0); ++ if (dt == DSI_DT_RX_ACK_WITH_ERR) { ++ u16 err = FLD_GET(val, 23, 8); ++ DSSERR("\tACK with ERROR: %#x\n", err); ++ if (err & (1 << 9)) ++ DSSERR("\t\tECC multibit\n"); ++ if (err & (1 << 11)) ++ DSSERR("\t\tData type not recognized\n"); ++ if (err & (1 << 12)) ++ DSSERR("\t\tInvalid VC ID\n"); ++ ++ } else if (dt == DSI_DT_RX_SHORT_READ_1) { ++ DSSDBG("\tDCS short response, 1 byte: %#x\n", ++ FLD_GET(val, 23, 8)); ++ return FLD_GET(val, 23, 8); ++ } else if (dt == DSI_DT_RX_SHORT_READ_2) { ++ DSSDBG("\tDCS short response, 2 byte: %#x\n", ++ FLD_GET(val, 23, 8)); ++ return FLD_GET(val, 23, 8); ++ } else if (dt == DSI_DT_RX_DCS_LONG_READ) { ++ DSSDBG("\tDCS long response, len %d\n", ++ FLD_GET(val, 23, 8)); ++ dsi_vc_flush_long_data(channel); ++ } else { ++ DSSERR("\tunknown datatype\n"); ++ } ++ } ++ return 0; ++} ++ ++static int dsi_vc_send_bta(int channel) ++{ ++ unsigned long tmo; ++ ++ /*DSSDBG("dsi_vc_send_bta_sync %d\n", channel); */ ++ ++ if (REG_GET(DSI_VC_CTRL(channel), 20, 20)) { /* RX_FIFO_NOT_EMPTY */ ++ DSSERR("rx fifo not empty when sending BTA, dumping data:\n"); ++ dsi_vc_flush_receive_data(channel); ++ } ++ ++ REG_FLD_MOD(DSI_VC_CTRL(channel), 1, 6, 6); /* BTA_EN */ ++ ++ tmo = jiffies + msecs_to_jiffies(10); ++ while (REG_GET(DSI_VC_CTRL(channel), 6, 6) == 1) { ++ if (time_after(jiffies, tmo)) { ++ DSSERR("Failed to send BTA\n"); ++ return -EIO; ++ } ++ } ++ ++ return 0; ++} ++ ++static int dsi_vc_send_bta_sync(int channel) ++{ ++ int r = 0; ++ ++ init_completion(&dsi.bta_completion); ++ ++ dsi_vc_enable_bta_irq(channel); ++ ++ r = dsi_vc_send_bta(channel); ++ if (r) ++ goto err; ++ ++ if (wait_for_completion_timeout(&dsi.bta_completion, ++ msecs_to_jiffies(500)) == 0) { ++ DSSERR("Failed to receive BTA\n"); ++ r = -EIO; ++ goto err; ++ } ++err: ++ dsi_vc_disable_bta_irq(channel); ++ ++ return r; ++} ++ ++static inline void dsi_vc_write_long_header(int channel, u8 data_type, ++ u16 len, u8 ecc) ++{ ++ u32 val; ++ u8 data_id; ++ ++ /*data_id = data_type | channel << 6; */ ++ data_id = data_type | dsi.vc[channel].dest_per << 6; ++ ++ val = FLD_VAL(data_id, 7, 0) | FLD_VAL(len, 23, 8) | ++ FLD_VAL(ecc, 31, 24); ++ ++ dsi_write_reg(DSI_VC_LONG_PACKET_HEADER(channel), val); ++} ++ ++static inline void dsi_vc_write_long_payload(int channel, ++ u8 b1, u8 b2, u8 b3, u8 b4) ++{ ++ u32 val; ++ ++ val = b4 << 24 | b3 << 16 | b2 << 8 | b1 << 0; ++ ++/* DSSDBG("\twriting %02x, %02x, %02x, %02x (%#010x)\n", ++ b1, b2, b3, b4, val); */ ++ ++ dsi_write_reg(DSI_VC_LONG_PACKET_PAYLOAD(channel), val); ++} ++ ++static int dsi_vc_send_long(int channel, u8 data_type, u8 *data, u16 len, ++ u8 ecc) ++{ ++ /*u32 val; */ ++ int i; ++ u8 *p; ++ int r = 0; ++ u8 b1, b2, b3, b4; ++ ++ /*DSSDBG("dsi_vc_send_long, %d bytes\n", len); */ ++ ++ /* len + header */ ++ if (dsi.vc[channel].fifo_size * 32 * 4 < len + 4) { ++ DSSERR("DSI: unable to send long packet: packet too long.\n"); ++ return -EINVAL; ++ } ++ ++ dsi_vc_write_long_header(channel, data_type, len, ecc); ++ ++ /*dsi_vc_print_status(0); */ ++ ++ p = data; ++ for (i = 0; i < len >> 2; i++) { ++ /*DSSDBG("\tsending full packet %d\n", i); */ ++ /*dsi_vc_print_status(0); */ ++ ++ b1 = *p++; ++ b2 = *p++; ++ b3 = *p++; ++ b4 = *p++; ++ ++ dsi_vc_write_long_payload(channel, b1, b2, b3, b4); ++ } ++ ++ i = len % 4; ++ if (i) { ++ b1 = 0; b2 = 0; b3 = 0; ++ ++ /*DSSDBG("\tsending remainder bytes %d\n", i); */ ++ ++ switch (i) { ++ case 3: ++ b1 = *p++; ++ b2 = *p++; ++ b3 = *p++; ++ break; ++ case 2: ++ b1 = *p++; ++ b2 = *p++; ++ break; ++ case 1: ++ b1 = *p++; ++ break; ++ } ++ ++ dsi_vc_write_long_payload(channel, b1, b2, b3, 0); ++ } ++ ++ return r; ++} ++ ++static int dsi_vc_send_short(int channel, u8 data_type, u16 data, u8 ecc) ++{ ++ u32 r; ++ u8 data_id; ++/* ++ DSSDBG("dsi_vc_send_short(ch%d, dt %#x, b1 %#x, b2 %#x)\n", ++ channel, ++ data_type, data & 0xff, (data >> 8) & 0xff); ++*/ ++ if (FLD_GET(dsi_read_reg(DSI_VC_CTRL(channel)), 16, 16)) { ++ DSSERR("ERROR FIFO FULL, aborting transfer\n"); ++ return -EINVAL; ++ } ++ ++ data_id = data_type | channel << 6; ++ ++ r = (data_id << 0) | (data << 8) | (ecc << 24); ++ ++ dsi_write_reg(DSI_VC_SHORT_PACKET_HEADER(channel), r); ++ ++ return 0; ++} ++ ++int dsi_vc_send_null(int channel) ++{ ++ u8 nullpkg[] = {0, 0, 0, 0}; ++ return dsi_vc_send_long(0, DSI_DT_NULL_PACKET, nullpkg, 4, 0); ++} ++EXPORT_SYMBOL(dsi_vc_send_null); ++ ++int dsi_vc_dcs_write_nosync(int channel, u8 *data, int len) ++{ ++ int r; ++ ++ BUG_ON(len == 0); ++ ++ if (len == 1) { ++ r = dsi_vc_send_short(channel, DSI_DT_DCS_SHORT_WRITE_0, ++ data[0], 0); ++ } else if (len == 2) { ++ r = dsi_vc_send_short(channel, DSI_DT_DCS_SHORT_WRITE_1, ++ data[0] | (data[1] << 8), 0); ++ } else { ++ /* 0x39 = DCS Long Write */ ++ r = dsi_vc_send_long(channel, DSI_DT_DCS_LONG_WRITE, ++ data, len, 0); ++ } ++ ++ return r; ++} ++EXPORT_SYMBOL(dsi_vc_dcs_write_nosync); ++ ++int dsi_vc_dcs_write(int channel, u8 *data, int len) ++{ ++ int r; ++ ++ r = dsi_vc_dcs_write_nosync(channel, data, len); ++ if (r) ++ return r; ++ ++ /* Some devices need time to process the msg in low power mode. ++ This also makes the write synchronous, and checks that ++ the peripheral is still alive */ ++ r = dsi_vc_send_bta_sync(channel); ++ ++ return r; ++} ++EXPORT_SYMBOL(dsi_vc_dcs_write); ++ ++int dsi_vc_dcs_read(int channel, u8 dcs_cmd, u8 *buf, int buflen) ++{ ++ u32 val; ++ u8 dt; ++ int debug = 0; ++ ++ if (debug) ++ DSSDBG("dsi_vc_dcs_read\n"); ++ ++ dsi_vc_send_short(channel, DSI_DT_DCS_READ, dcs_cmd, 0); ++ ++ dsi_vc_send_bta_sync(channel); ++ ++ val = dsi_read_reg(DSI_VC_SHORT_PACKET_HEADER(channel)); ++ if (debug) ++ DSSDBG("\trawval %#08x\n", val); ++ dt = FLD_GET(val, 7, 0); ++ if (dt == DSI_DT_RX_ACK_WITH_ERR) { ++ u16 err = FLD_GET(val, 23, 8); ++ DSSERR("\tACK with ERROR: %#x\n", err); ++ if (err & (1 << 9)) ++ DSSERR("\t\tECC multibit\n"); ++ if (err & (1 << 11)) ++ DSSERR("\t\tData type not recognized\n"); ++ if (err & (1 << 12)) ++ DSSERR("\t\tInvalid VC ID\n"); ++ return -1; ++ ++ } else if (dt == DSI_DT_RX_SHORT_READ_1) { ++ u8 data = FLD_GET(val, 15, 8); ++ if (debug) ++ DSSDBG("\tDCS short response, 1 byte: %#x\n", data); ++ ++ if (buflen < 1) ++ return -1; ++ ++ buf[0] = data; ++ ++ return 1; ++ } else if (dt == DSI_DT_RX_SHORT_READ_2) { ++ u16 data = FLD_GET(val, 23, 8); ++ if (debug) ++ DSSDBG("\tDCS short response, 2 byte: %#x\n", data); ++ ++ if (buflen < 2) ++ return -1; ++ ++ buf[0] = data & 0xff; ++ buf[1] = (data >> 8) & 0xff; ++ ++ return 2; ++ } else if (dt == DSI_DT_RX_DCS_LONG_READ) { ++ int x; ++ int len = FLD_GET(val, 23, 8); ++ if (debug) ++ DSSDBG("\tDCS long response, len %d\n", len); ++ ++ if (len > buflen) ++ return -1; ++ ++ x = 0; ++ while (x < len) { ++ val = dsi_read_reg(DSI_VC_SHORT_PACKET_HEADER(channel)); ++ if (debug) ++ DSSDBG("\t\tb1 %#02x b2 %#02x b3 %#02x b4 " ++ "%#02x\n", ++ (val >> 0) & 0xff, ++ (val >> 8) & 0xff, ++ (val >> 16) & 0xff, ++ (val >> 24) & 0xff); ++ ++ if (x < len) ++ buf[x++] = (val >> 0) & 0xff; ++ if (x < len) ++ buf[x++] = (val >> 8) & 0xff; ++ if (x < len) ++ buf[x++] = (val >> 16) & 0xff; ++ if (x < len) ++ buf[x++] = (val >> 24) & 0xff; ++ } ++ ++ return len; ++ } else { ++ DSSERR("\tunknown datatype\n"); ++ return -1; ++ } ++} ++EXPORT_SYMBOL(dsi_vc_dcs_read); ++ ++ ++int dsi_vc_set_max_rx_packet_size(int channel, u16 len) ++{ ++ return dsi_vc_send_short(channel, DSI_DT_SET_MAX_RET_PKG_SIZE, ++ len, 0); ++} ++EXPORT_SYMBOL(dsi_vc_set_max_rx_packet_size); ++ ++ ++static int dsi_set_lp_rx_timeout(int ns, int x4, int x16) ++{ ++ u32 r; ++ unsigned long fck; ++ int ticks; ++ ++ /* ticks in DSI_FCK */ ++ ++ fck = dsi_fclk_rate(); ++ ticks = (fck / 1000 / 1000) * ns / 1000; ++ ++ if (ticks > 0x1fff) { ++ DSSERR("LP_TX_TO too high\n"); ++ return -EINVAL; ++ } ++ ++ r = dsi_read_reg(DSI_TIMING2); ++ r = FLD_MOD(r, 1, 15, 15); /* LP_RX_TO */ ++ r = FLD_MOD(r, x16, 14, 14); /* LP_RX_TO_X16 */ ++ r = FLD_MOD(r, x4, 13, 13); /* LP_RX_TO_X4 */ ++ r = FLD_MOD(r, ticks, 12, 0); /* LP_RX_COUNTER */ ++ dsi_write_reg(DSI_TIMING2, r); ++ ++ DSSDBG("LP_RX_TO %ld ns (%#x ticks)\n", ++ (ticks * (x16 ? 16 : 1) * (x4 ? 4 : 1) * 1000) / ++ (fck / 1000 / 1000), ++ ticks); ++ ++ return 0; ++} ++ ++static int dsi_set_ta_timeout(int ns, int x8, int x16) ++{ ++ u32 r; ++ unsigned long fck; ++ int ticks; ++ ++ /* ticks in DSI_FCK */ ++ ++ fck = dsi_fclk_rate(); ++ ticks = (fck / 1000 / 1000) * ns / 1000; ++ ++ if (ticks > 0x1fff) { ++ DSSERR("TA_TO too high\n"); ++ return -EINVAL; ++ } ++ ++ r = dsi_read_reg(DSI_TIMING1); ++ r = FLD_MOD(r, 1, 31, 31); /* TA_TO */ ++ r = FLD_MOD(r, x16, 30, 30); /* TA_TO_X16 */ ++ r = FLD_MOD(r, x8, 29, 29); /* TA_TO_X8 */ ++ r = FLD_MOD(r, ticks, 28, 16); /* TA_TO_COUNTER */ ++ dsi_write_reg(DSI_TIMING1, r); ++ ++ DSSDBG("TA_TO %ld ns (%#x ticks)\n", ++ (ticks * (x16 ? 16 : 1) * (x8 ? 8 : 1) * 1000) / ++ (fck / 1000 / 1000), ++ ticks); ++ ++ return 0; ++} ++ ++static int dsi_set_stop_state_counter(int ns, int x4, int x16) ++{ ++ u32 r; ++ unsigned long fck; ++ int ticks; ++ ++ /* ticks in DSI_FCK */ ++ ++ fck = dsi_fclk_rate(); ++ ticks = (fck / 1000 / 1000) * ns / 1000; ++ ++ if (ticks > 0x1fff) { ++ DSSERR("STOP_STATE_COUNTER_IO too high\n"); ++ return -EINVAL; ++ } ++ ++ r = dsi_read_reg(DSI_TIMING1); ++ r = FLD_MOD(r, 1, 15, 15); /* FORCE_TX_STOP_MODE_IO */ ++ r = FLD_MOD(r, x16, 14, 14); /* STOP_STATE_X16_IO */ ++ r = FLD_MOD(r, x4, 13, 13); /* STOP_STATE_X4_IO */ ++ r = FLD_MOD(r, ticks, 12, 0); /* STOP_STATE_COUNTER_IO */ ++ dsi_write_reg(DSI_TIMING1, r); ++ ++ DSSDBG("STOP_STATE_COUNTER %ld ns (%#x ticks)\n", ++ (ticks * (x16 ? 16 : 1) * (x4 ? 4 : 1) * 1000) / ++ (fck / 1000 / 1000), ++ ticks); ++ ++ return 0; ++} ++ ++static int dsi_set_hs_tx_timeout(int ns, int x4, int x16) ++{ ++ u32 r; ++ unsigned long fck; ++ int ticks; ++ ++ /* ticks in TxByteClkHS */ ++ ++ fck = dsi.ddr_clk / 4; ++ ticks = (fck / 1000 / 1000) * ns / 1000; ++ ++ if (ticks > 0x1fff) { ++ DSSERR("HS_TX_TO too high\n"); ++ return -EINVAL; ++ } ++ ++ r = dsi_read_reg(DSI_TIMING2); ++ r = FLD_MOD(r, 1, 31, 31); /* HS_TX_TO */ ++ r = FLD_MOD(r, x16, 30, 30); /* HS_TX_TO_X16 */ ++ r = FLD_MOD(r, x4, 29, 29); /* HS_TX_TO_X8 (4 really) */ ++ r = FLD_MOD(r, ticks, 28, 16); /* HS_TX_TO_COUNTER */ ++ dsi_write_reg(DSI_TIMING2, r); ++ ++ DSSDBG("HS_TX_TO %ld ns (%#x ticks)\n", ++ (ticks * (x16 ? 16 : 1) * (x4 ? 4 : 1) * 1000) / ++ (fck / 1000 / 1000), ++ ticks); ++ ++ return 0; ++} ++static int dsi_proto_config(struct omap_display *display) ++{ ++ u32 r; ++ int buswidth = 0; ++ ++ dsi_config_tx_fifo(DSI_FIFO_SIZE_128, ++ DSI_FIFO_SIZE_0, ++ DSI_FIFO_SIZE_0, ++ DSI_FIFO_SIZE_0); ++ ++ dsi_config_rx_fifo(DSI_FIFO_SIZE_128, ++ DSI_FIFO_SIZE_0, ++ DSI_FIFO_SIZE_0, ++ DSI_FIFO_SIZE_0); ++ ++ /* XXX what values for the timeouts? */ ++ dsi_set_stop_state_counter(1000, 0, 0); ++ ++ dsi_set_ta_timeout(50000, 1, 1); ++ ++ /* 3000ns * 16 */ ++ dsi_set_lp_rx_timeout(3000, 0, 1); ++ ++ /* 10000ns * 4 */ ++ dsi_set_hs_tx_timeout(10000, 1, 0); ++ ++ switch (display->bpp) { ++ case 16: ++ buswidth = 0; ++ break; ++ case 18: ++ buswidth = 1; ++ break; ++ case 24: ++ buswidth = 2; ++ break; ++ default: ++ BUG(); ++ } ++ ++ r = dsi_read_reg(DSI_CTRL); ++ r = FLD_MOD(r, 1, 1, 1); /* CS_RX_EN */ ++ r = FLD_MOD(r, 1, 2, 2); /* ECC_RX_EN */ ++ r = FLD_MOD(r, 1, 3, 3); /* TX_FIFO_ARBITRATION */ ++ /* XXX what should the ratio be */ ++ r = FLD_MOD(r, 0, 4, 4); /* VP_CLK_RATIO, VP_PCLK = VP_CLK/2 */ ++ r = FLD_MOD(r, buswidth, 7, 6); /* VP_DATA_BUS_WIDTH */ ++ r = FLD_MOD(r, 0, 8, 8); /* VP_CLK_POL */ ++ r = FLD_MOD(r, 2, 13, 12); /* LINE_BUFFER, 2 lines */ ++ r = FLD_MOD(r, 1, 14, 14); /* TRIGGER_RESET_MODE */ ++ r = FLD_MOD(r, 1, 19, 19); /* EOT_ENABLE */ ++ r = FLD_MOD(r, 1, 24, 24); /* DCS_CMD_ENABLE */ ++ r = FLD_MOD(r, 0, 25, 25); /* DCS_CMD_CODE, 1=start, 0=continue */ ++ ++ dsi_write_reg(DSI_CTRL, r); ++ ++ /* we configure vc0 for L4 communication, and ++ * vc1 for dispc */ ++ dsi_vc_config(0); ++ dsi_vc_config_vp(1); ++ ++ /* set all vc targets to peripheral 0 */ ++ dsi.vc[0].dest_per = 0; ++ dsi.vc[1].dest_per = 0; ++ dsi.vc[2].dest_per = 0; ++ dsi.vc[3].dest_per = 0; ++ ++ return 0; ++} ++ ++static void dsi_proto_timings(void) ++{ ++ int tlpx_half, tclk_zero, tclk_prepare, tclk_trail; ++ int tclk_pre, tclk_post; ++ int ddr_clk_pre, ddr_clk_post; ++ u32 r; ++ ++ r = dsi_read_reg(DSIPHY_CFG1); ++ tlpx_half = FLD_GET(r, 22, 16); ++ tclk_trail = FLD_GET(r, 15, 8); ++ tclk_zero = FLD_GET(r, 7, 0); ++ ++ r = dsi_read_reg(DSIPHY_CFG2); ++ tclk_prepare = FLD_GET(r, 7, 0); ++ ++ /* min 8*UI */ ++ tclk_pre = 4; ++ /* min 60ns + 52*UI */ ++ tclk_post = ns2ddr(60) + 26; ++ ++ ddr_clk_pre = (tclk_pre + tlpx_half*2 + tclk_zero + tclk_prepare) / 4; ++ ddr_clk_post = (tclk_post + tclk_trail) / 4; ++ ++ r = dsi_read_reg(DSI_CLK_TIMING); ++ r = FLD_MOD(r, ddr_clk_pre, 15, 8); ++ r = FLD_MOD(r, ddr_clk_post, 7, 0); ++ dsi_write_reg(DSI_CLK_TIMING, r); ++ ++#ifdef VERBOSE ++ DSSDBG("ddr_clk_pre %d, ddr_clk_post %d\n", ++ ddr_clk_pre, ++ ddr_clk_post); ++#endif ++} ++ ++ ++#define DSI_DECL_VARS \ ++ int __dsi_cb = 0; u32 __dsi_cv = 0; ++ ++#define DSI_FLUSH(ch) \ ++ if (__dsi_cb > 0) { \ ++ /*DSSDBG("sending long packet %#010x\n", __dsi_cv);*/ \ ++ dsi_write_reg(DSI_VC_LONG_PACKET_PAYLOAD(ch), __dsi_cv); \ ++ __dsi_cb = __dsi_cv = 0; \ ++ } ++ ++#define DSI_PUSH(ch, data) \ ++ do { \ ++ __dsi_cv |= (data) << (__dsi_cb * 8); \ ++ /*DSSDBG("cv = %#010x, cb = %d\n", __dsi_cv, __dsi_cb);*/ \ ++ if (++__dsi_cb > 3) \ ++ DSI_FLUSH(ch); \ ++ } while (0) ++ ++static int dsi_update_screen_l4(struct omap_display *display, ++ int x, int y, int w, int h) ++{ ++ /* Note: supports only 24bit colors in 32bit container */ ++ int first = 1; ++ int fifo_stalls = 0; ++ int max_dsi_packet_size; ++ int max_data_per_packet; ++ int max_pixels_per_packet; ++ int pixels_left; ++ int bytespp = 3; ++ int scr_width; ++ u32 *data; ++ int start_offset; ++ int horiz_inc; ++ int current_x; ++ struct omap_overlay *ovl; ++ ++ debug_irq = 0; ++ ++ DSSDBG("dsi_update_screen_l4 (%d,%d %dx%d)\n", ++ x, y, w, h); ++ ++ ovl = &display->manager->overlays[0]; ++ ++ if (ovl->info.color_mode != OMAP_DSS_COLOR_RGB24U) ++ return -EINVAL; ++ ++ if (display->ctrl->bpp != 24) ++ return -EINVAL; ++ ++ enable_clocks(1); ++ ++ scr_width = ovl->info.screen_width; ++ data = ovl->info.vaddr; ++ ++ start_offset = scr_width * y + x; ++ horiz_inc = scr_width - w; ++ current_x = x; ++ ++ /* We need header(4) + DCSCMD(1) + pixels(numpix*bytespp) bytes ++ * in fifo */ ++ ++ /* When using CPU, max long packet size is TX buffer size */ ++ max_dsi_packet_size = dsi.vc[0].fifo_size * 32 * 4; ++ ++ /* we seem to get better perf if we divide the tx fifo to half, ++ and while the other half is being sent, we fill the other half ++ max_dsi_packet_size /= 2; */ ++ ++ max_data_per_packet = max_dsi_packet_size - 4 - 1; ++ ++ max_pixels_per_packet = max_data_per_packet / bytespp; ++ ++ DSSDBG("max_pixels_per_packet %d\n", max_pixels_per_packet); ++ ++ display->ctrl->setup_update(display, x, y, w, h); ++ ++ pixels_left = w * h; ++ ++ DSSDBG("total pixels %d\n", pixels_left); ++ ++ data += start_offset; ++ ++ dsi.update_region.x = x; ++ dsi.update_region.y = y; ++ dsi.update_region.w = w; ++ dsi.update_region.h = h; ++ dsi.update_region.bytespp = bytespp; ++ ++ start_measuring(); ++ ++ while (pixels_left > 0) { ++ /* 0x2c = write_memory_start */ ++ /* 0x3c = write_memory_continue */ ++ u8 dcs_cmd = first ? 0x2c : 0x3c; ++ int pixels; ++ DSI_DECL_VARS; ++ first = 0; ++ ++#if 1 ++ /* using fifo not empty */ ++ /* TX_FIFO_NOT_EMPTY */ ++ while (FLD_GET(dsi_read_reg(DSI_VC_CTRL(0)), 5, 5)) { ++ udelay(1); ++ fifo_stalls++; ++ if (fifo_stalls > 0xfffff) { ++ DSSERR("fifo stalls overflow, pixels left %d\n", ++ pixels_left); ++ dsi_if_enable(0); ++ enable_clocks(0); ++ return -EIO; ++ } ++ } ++#elif 1 ++ /* using fifo emptiness */ ++ while ((REG_GET(DSI_TX_FIFO_VC_EMPTINESS, 7, 0)+1)*4 < ++ max_dsi_packet_size) { ++ fifo_stalls++; ++ if (fifo_stalls > 0xfffff) { ++ DSSERR("fifo stalls overflow, pixels left %d\n", ++ pixels_left); ++ dsi_if_enable(0); ++ enable_clocks(0); ++ return -EIO; ++ } ++ } ++#else ++ while ((REG_GET(DSI_TX_FIFO_VC_EMPTINESS, 7, 0)+1)*4 == 0) { ++ fifo_stalls++; ++ if (fifo_stalls > 0xfffff) { ++ DSSERR("fifo stalls overflow, pixels left %d\n", ++ pixels_left); ++ dsi_if_enable(0); ++ enable_clocks(0); ++ return -EIO; ++ } ++ } ++#endif ++ pixels = min(max_pixels_per_packet, pixels_left); ++ ++ pixels_left -= pixels; ++ ++ dsi_vc_write_long_header(0, DSI_DT_DCS_LONG_WRITE, ++ 1 + pixels * bytespp, 0); ++ ++ DSI_PUSH(0, dcs_cmd); ++ ++ while (pixels-- > 0) { ++ u32 pix = *data++; ++ ++ DSI_PUSH(0, (pix >> 16) & 0xff); ++ DSI_PUSH(0, (pix >> 8) & 0xff); ++ DSI_PUSH(0, (pix >> 0) & 0xff); ++ ++ current_x++; ++ if (current_x == x+w) { ++ current_x = x; ++ data += horiz_inc; ++ } ++ } ++ ++ DSI_FLUSH(0); ++ } ++ ++ end_measuring("L4"); ++ ++ enable_clocks(0); ++ ++ return 0; ++} ++ ++#if 0 ++static void dsi_clear_screen_l4(struct omap_display *display, ++ int x, int y, int w, int h) ++{ ++ int first = 1; ++ int fifo_stalls = 0; ++ int max_dsi_packet_size; ++ int max_data_per_packet; ++ int max_pixels_per_packet; ++ int pixels_left; ++ int bytespp = 3; ++ int pixnum; ++ ++ debug_irq = 0; ++ ++ DSSDBG("dsi_clear_screen_l4 (%d,%d %dx%d)\n", ++ x, y, w, h); ++ ++ if (display->ctrl->bpp != 24) ++ return -EINVAL; ++ ++ /* We need header(4) + DCSCMD(1) + pixels(numpix*bytespp) ++ * bytes in fifo */ ++ ++ /* When using CPU, max long packet size is TX buffer size */ ++ max_dsi_packet_size = dsi.vc[0].fifo_size * 32 * 4; ++ ++ max_data_per_packet = max_dsi_packet_size - 4 - 1; ++ ++ max_pixels_per_packet = max_data_per_packet / bytespp; ++ ++ enable_clocks(1); ++ ++ display->ctrl->setup_update(display, x, y, w, h); ++ ++ pixels_left = w * h; ++ ++ dsi.update_region.x = x; ++ dsi.update_region.y = y; ++ dsi.update_region.w = w; ++ dsi.update_region.h = h; ++ dsi.update_region.bytespp = bytespp; ++ ++ start_measuring(); ++ ++ pixnum = 0; ++ ++ while (pixels_left > 0) { ++ /* 0x2c = write_memory_start */ ++ /* 0x3c = write_memory_continue */ ++ u8 dcs_cmd = first ? 0x2c : 0x3c; ++ int pixels; ++ DSI_DECL_VARS; ++ first = 0; ++ ++ /* TX_FIFO_NOT_EMPTY */ ++ while (FLD_GET(dsi_read_reg(DSI_VC_CTRL(0)), 5, 5)) { ++ fifo_stalls++; ++ if (fifo_stalls > 0xfffff) { ++ DSSERR("fifo stalls overflow\n"); ++ dsi_if_enable(0); ++ enable_clocks(0); ++ return; ++ } ++ } ++ ++ pixels = min(max_pixels_per_packet, pixels_left); ++ ++ pixels_left -= pixels; ++ ++ dsi_vc_write_long_header(0, DSI_DT_DCS_LONG_WRITE, ++ 1 + pixels * bytespp, 0); ++ ++ DSI_PUSH(0, dcs_cmd); ++ ++ while (pixels-- > 0) { ++ u32 pix; ++ ++ pix = 0x000000; ++ ++ DSI_PUSH(0, (pix >> 16) & 0xff); ++ DSI_PUSH(0, (pix >> 8) & 0xff); ++ DSI_PUSH(0, (pix >> 0) & 0xff); ++ } ++ ++ DSI_FLUSH(0); ++ } ++ ++ enable_clocks(0); ++ ++ end_measuring("L4 CLEAR"); ++} ++#endif ++ ++static int dsi_wait_for_framedone(void) ++{ ++ unsigned long flags; ++ ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ if (dsi.update_ongoing) { ++ long wait = msecs_to_jiffies(1000); ++ dsi.update_syncers++; ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ wait = wait_for_completion_timeout(&dsi.update_completion, ++ wait); ++ if (wait == 0) { ++ DSSERR("timeout waiting sync\n"); ++ return -ETIME; ++ } ++ } else { ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ } ++ ++ return 0; ++} ++ ++static void dsi_setup_update_dispc(struct omap_display *display, ++ int x, int y, int w, int h) ++{ ++ int bytespp = 3; ++ ++ DSSDBG("dsi_setup_update_dispc(%d,%d %dx%d)\n", ++ x, y, w, h); ++ ++ dsi.update_region.display = display; ++ dsi.update_region.x = x; ++ dsi.update_region.y = y; ++ dsi.update_region.w = w; ++ dsi.update_region.h = h; ++ dsi.update_region.bytespp = bytespp; ++ ++ enable_clocks(1); ++ ++ dispc_setup_partial_planes(display, &x, &y, &w, &h); ++ ++ dispc_set_lcd_size(w, h); ++ ++ enable_clocks(0); ++} ++ ++static void dsi_update_screen_dispc(struct omap_display *display) ++{ ++ int bytespp = 3; ++ int total_len; ++ int line_packet_len; ++ int x, y, w, h; ++ u32 l; ++ ++ x = dsi.update_region.x; ++ y = dsi.update_region.y; ++ w = dsi.update_region.w; ++ h = dsi.update_region.h; ++ ++ DSSDBG("dsi_update_screen_dispc(%d,%d %dx%d)\n", ++ x, y, w, h); ++ ++ enable_clocks(1); ++ ++ /* TODO: one packet could be longer, I think? Max is the line buffer */ ++ line_packet_len = w * bytespp + 1; /* 1 byte for DCS cmd */ ++ total_len = line_packet_len * h; ++ ++ display->ctrl->setup_update(display, x, y, w, h); ++ ++ if (0) ++ dsi_vc_print_status(1); ++ ++ start_measuring(); ++ ++ l = FLD_VAL(total_len, 23, 0); /* TE_SIZE */ ++ dsi_write_reg(DSI_VC_TE(1), l); ++ ++ dsi_vc_write_long_header(1, DSI_DT_DCS_LONG_WRITE, line_packet_len, 0); ++ ++ if (dsi.use_te) ++ l = FLD_MOD(l, 1, 30, 30); /* TE_EN */ ++ else ++ l = FLD_MOD(l, 1, 31, 31); /* TE_START */ ++ dsi_write_reg(DSI_VC_TE(1), l); ++ ++ dispc_enable_lcd_out(1); ++ ++ if (dsi.use_te) ++ dsi_vc_send_bta(1); ++} ++ ++static void framedone_callback(void *data, u32 mask) ++{ ++ if (dsi.framedone_scheduled) { ++ DSSERR("Framedone already scheduled. Bogus FRAMEDONE IRQ?\n"); ++ return; ++ } ++ ++ dsi.framedone_scheduled = 1; ++ ++ /* We get FRAMEDONE when DISPC has finished sending pixels and turns ++ * itself off. However, DSI still has the pixels in its buffers, and ++ * is sending the data. Thus we have to wait until we can do a new ++ * transfer or turn the clocks off. We do that in a separate work ++ * func. */ ++ schedule_work(&dsi.framedone_work); ++} ++ ++static void framedone_worker(struct work_struct *work) ++{ ++ unsigned long flags; ++ u32 l; ++ unsigned long tmo; ++ int i = 0; ++ ++ l = REG_GET(DSI_VC_TE(1), 23, 0); /* TE_SIZE */ ++ ++ /* There shouldn't be much stuff in DSI buffers, if any, so we'll ++ * just busyloop */ ++ if (l > 0) { ++ tmo = jiffies + msecs_to_jiffies(50); ++ while (REG_GET(DSI_VC_TE(1), 23, 0) > 0) { /* TE_SIZE */ ++ i++; ++ if (time_after(jiffies, tmo)) { ++ DSSERR("timeout waiting TE_SIZE to zero\n"); ++ break; ++ } ++ cpu_relax(); ++ } ++ } ++ ++ if (REG_GET(DSI_VC_TE(1), 30, 30)) ++ DSSERR("TE_EN not zero\n"); ++ ++ if (REG_GET(DSI_VC_TE(1), 31, 31)) ++ DSSERR("TE_START not zero\n"); ++ ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ if (dsi.update_ongoing == 0) { ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ DSSERR("framedone irq without update request\n"); ++ return; ++ } ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ ++ end_measuring("DISPC"); ++ ++ DSSDBG("FRAMEDONE\n"); ++ ++#if 0 ++ if (l) ++ DSSWARN("FRAMEDONE irq too early, %d bytes, %d loops\n", l, i); ++#else ++ if (l > 1024*3) ++ DSSWARN("FRAMEDONE irq too early, %d bytes, %d loops\n", l, i); ++#endif ++ ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ dsi.update_ongoing = 0; ++ while (dsi.update_syncers > 0) { ++ complete(&dsi.update_completion); ++ --dsi.update_syncers; ++ } ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ ++#ifdef CONFIG_OMAP2_DSS_FAKE_VSYNC ++ dispc_fake_vsync_irq(); ++#endif ++ enable_clocks(0); ++ ++ dsi.framedone_scheduled = 0; ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) { ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ dsi.update_ongoing = 1; ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ dsi_update_screen_dispc(dsi.update_region.display); ++ } ++} ++ ++static void dsi_start_auto_update(struct omap_display *display) ++{ ++ unsigned long flags; ++ int bytespp = 3; ++ ++ DSSDBG("starting auto update\n"); ++ ++ dsi.update_region.display = display; ++ dsi.update_region.x = 0; ++ dsi.update_region.y = 0; ++ dsi.update_region.w = display->x_res; ++ dsi.update_region.h = display->y_res; ++ dsi.update_region.bytespp = bytespp; ++ ++ enable_clocks(1); ++ ++ dispc_set_lcd_size(display->x_res, display->y_res); ++ ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ dsi.update_ongoing = 1; ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ dsi_update_screen_dispc(display); ++} ++ ++static void dsi_stop_auto_update(void) ++{ ++ dsi.update_mode = OMAP_DSS_UPDATE_DISABLED; ++ ++ DSSDBG("waiting for display to finish.\n"); ++ dsi_wait_for_framedone(); ++ DSSDBG("done waiting\n"); ++ enable_clocks(0); ++ ++ dsi.update_mode = OMAP_DSS_UPDATE_MANUAL; ++} ++ ++static int dsi_set_update_mode(struct omap_display *display, ++ enum omap_dss_update_mode mode) ++{ ++ if (mode == dsi.update_mode) ++ return 0; ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) ++ dsi_stop_auto_update(); ++ else if (dsi.update_mode == OMAP_DSS_UPDATE_MANUAL) ++ dsi_wait_for_framedone(); ++ ++ dsi.update_mode = mode; ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) ++ dsi_start_auto_update(display); ++ ++ return 0; ++} ++ ++/* Display funcs */ ++ ++static int dsi_display_enable(struct omap_display *display) ++{ ++ int r = 0; ++ struct dsi_clock_info cinfo; ++ ++ DSSDBG("dsi_display_enable\n"); ++ ++ mutex_lock(&dsi.lock); ++ ++ if (display->state != OMAP_DSS_DISPLAY_DISABLED) { ++ DSSERR("display already enabled\n"); ++ r = -EINVAL; ++ goto err0; ++ } ++ ++ enable_clocks(1); ++ ++ r = omap_dispc_register_isr(framedone_callback, NULL, ++ DISPC_IRQ_FRAMEDONE); ++ if (r) { ++ DSSERR("can't get FRAMEDONE irq\n"); ++ goto err1; ++ } ++ ++ dispc_set_lcd_display_type(OMAP_DSS_LCD_DISPLAY_TFT); ++ ++ dispc_set_parallel_interface_mode(OMAP_DSS_PARALLELMODE_DSI); ++ dispc_enable_fifohandcheck(1); ++ dispc_setup_plane_fifo(OMAP_DSS_GFX, 0); ++ dispc_setup_plane_fifo(OMAP_DSS_VIDEO1, 0); ++ dispc_setup_plane_fifo(OMAP_DSS_VIDEO2, 0); ++ dispc_set_tft_data_lines(display->bpp); ++ ++ { ++ struct omap_video_timings timings = { ++ .hsw = 1, ++ .hfp = 1, ++ .hbp = 1, ++ .vsw = 1, ++ .vfp = 0, ++ .vbp = 0, ++ }; ++ ++ dispc_set_lcd_timings(&timings); ++ } ++ ++ _dsi_print_reset_status(); ++ ++ r = dsi_pll_init(1, 0); ++ if (r) ++ goto err2; ++ ++ /* XXX hardcoded for 300Mbp/lane for now */ ++ r = dsi_pll_calc_datafreq(600 * 1000 * 1000, &cinfo); ++ if (r) ++ goto err3; ++ ++ r = dsi_pll_program(&cinfo); ++ if (r) ++ goto err3; ++ ++ DSSDBG("PLL OK\n"); ++ ++ r = dsi_complexio_init(display); ++ if (r) ++ goto err3; ++ ++ _dsi_print_reset_status(); ++ ++ dsi_proto_timings(); ++ dsi_set_lp_clk_divisor(); ++ ++ if (1) ++ _dsi_print_reset_status(); ++ ++ r = dsi_proto_config(display); ++ if (r) ++ goto err4; ++ ++ /* enable interface */ ++ dsi_vc_enable(0, 1); ++ dsi_vc_enable(1, 1); ++ dsi_if_enable(1); ++ dsi_force_tx_stop_mode_io(); ++ ++ ++ if (display->ctrl && display->ctrl->enable) { ++ r = display->ctrl->enable(display); ++ if (r) ++ goto err5; ++ } ++ ++ if (display->panel && display->panel->enable) { ++ r = display->panel->enable(display); ++ if (r) ++ goto err6; ++ } ++ ++ if (dsi.use_te) { ++ r = display->ctrl->enable_te(display, 1); ++ if (r) ++ goto err7; ++ } ++ ++ /* enable high-speed after initial config */ ++ dsi_vc_enable_hs(0, 1); ++ ++ display->state = OMAP_DSS_DISPLAY_ACTIVE; ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) ++ dsi_start_auto_update(display); ++ ++ enable_clocks(0); ++ mutex_unlock(&dsi.lock); ++ ++ return 0; ++err7: ++ if (display->panel && display->panel->disable) ++ display->panel->disable(display); ++err6: ++ if (display->ctrl && display->ctrl->disable) ++ display->ctrl->disable(display); ++err5: ++ dsi_if_enable(0); ++err4: ++ dsi_complexio_uninit(); ++err3: ++ dsi_pll_uninit(); ++err2: ++ omap_dispc_unregister_isr(framedone_callback); ++err1: ++ enable_clocks(0); ++err0: ++ mutex_unlock(&dsi.lock); ++ DSSDBG("dsi_display_enable FAILED\n"); ++ return r; ++} ++ ++static void dsi_display_disable(struct omap_display *display) ++{ ++ DSSDBG("dsi_display_disable\n"); ++ ++ mutex_lock(&dsi.lock); ++ ++ if (display->state == OMAP_DSS_DISPLAY_DISABLED) ++ goto end; ++ ++ enable_clocks(1); ++ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) ++ dsi_stop_auto_update(); ++ else if (dsi.update_mode == OMAP_DSS_UPDATE_MANUAL) ++ dsi_wait_for_framedone(); ++ ++ display->state = OMAP_DSS_DISPLAY_DISABLED; ++ ++ omap_dispc_unregister_isr(framedone_callback); ++ ++ if (display->panel && display->panel->disable) ++ display->panel->disable(display); ++ if (display->ctrl && display->ctrl->disable) ++ display->ctrl->disable(display); ++ ++ /* XXX sleep a bit to make sure all DSI buffers are sent. ++ * We should check it from somewhere, fifo fullness I guess */ ++ msleep(200); ++ ++ dsi_complexio_uninit(); ++ dsi_pll_uninit(); ++ ++ enable_clocks(0); ++ ++end: ++ mutex_unlock(&dsi.lock); ++} ++ ++static int dsi_display_suspend(struct omap_display *display) ++{ ++ if (display->state != OMAP_DSS_DISPLAY_ACTIVE) ++ return -EINVAL; ++ ++ if (display->panel->suspend) ++ display->panel->suspend(display); ++ ++ if (display->ctrl->suspend) ++ display->ctrl->suspend(display); ++ ++ display->state = OMAP_DSS_DISPLAY_SUSPENDED; ++ ++ return 0; ++} ++ ++static int dsi_display_resume(struct omap_display *display) ++{ ++ if (display->state != OMAP_DSS_DISPLAY_SUSPENDED) ++ return -EINVAL; ++ ++ if (display->panel->resume) ++ display->panel->resume(display); ++ ++ if (display->ctrl->resume) ++ display->ctrl->resume(display); ++ ++ display->state = OMAP_DSS_DISPLAY_ACTIVE; ++ ++ return 0; ++} ++ ++static void dsi_display_set_mode(struct omap_display *display, ++ int x_res, int y_res, int bpp) ++{ ++ DSSDBG("dsi_display_set_mode %dx%d, %dbpp\n", x_res, y_res, bpp); ++} ++ ++static int dsi_display_update(struct omap_display *display, ++ int x, int y, int w, int h) ++{ ++ unsigned long flags; ++ int r = 0; ++ ++ DSSDBG("dsi_display_update(%d,%d %dx%d)\n", x, y, w, h); ++ ++ if (w == 0 || h == 0) ++ return 0; ++ ++ mutex_lock(&dsi.lock); ++ ++ if (dsi.update_mode != OMAP_DSS_UPDATE_MANUAL) ++ goto end; /* XXX return error? */ ++ ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ ++ if (dsi.update_ongoing) { ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ DSSERR("DSI is busy\n"); ++ r = -EBUSY; ++ goto end; ++ } ++ ++ dsi.update_ongoing = 1; ++ ++ if (dsi.update_syncers > 0) ++ DSSERR("someone waiting for sync, and no update ongoing\n"); ++ ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ ++ if (display->manager->caps & OMAP_DSS_OVL_MGR_CAP_DISPC) { ++ dsi_setup_update_dispc(display, x, y, w, h); ++ dsi_update_screen_dispc(display); ++ } else { ++ r = dsi_update_screen_l4(display, x, y, w, h); ++ if (r) ++ goto end; ++ ++ spin_lock_irqsave(&dsi.update_lock, flags); ++ dsi.update_ongoing = 0; ++ while (dsi.update_syncers > 0) { ++ complete(&dsi.update_completion); ++ --dsi.update_syncers; ++ } ++ spin_unlock_irqrestore(&dsi.update_lock, flags); ++ } ++ ++end: ++ mutex_unlock(&dsi.lock); ++ return r; ++} ++ ++static int dsi_display_sync(struct omap_display *display) ++{ ++ int r = 0; ++ ++ DSSDBG("dsi_display_sync\n"); ++ ++ mutex_lock(&dsi.lock); ++ ++ if (dsi.update_mode != OMAP_DSS_UPDATE_MANUAL) ++ goto end; ++ ++ r = dsi_wait_for_framedone(); ++ ++end: ++ mutex_unlock(&dsi.lock); ++ return r; ++} ++ ++static int dsi_display_set_update_mode(struct omap_display *display, ++ enum omap_dss_update_mode mode) ++{ ++ int r; ++ ++ DSSDBG("dsi_display_set_update_mode\n"); ++ ++ mutex_lock(&dsi.lock); ++ ++ r = dsi_set_update_mode(display, mode); ++ ++ mutex_unlock(&dsi.lock); ++ ++ return r; ++} ++ ++static enum omap_dss_update_mode dsi_display_get_update_mode( ++ struct omap_display *display) ++{ ++ return dsi.update_mode; ++} ++ ++static int dsi_display_enable_te(struct omap_display *display, int enable) ++{ ++ enum omap_dss_update_mode mode; ++ ++ DSSDBG("dsi_display_enable_te\n"); ++ ++ mutex_lock(&dsi.lock); ++ ++ enable_clocks(1); ++ ++ mode = dsi.update_mode; ++ ++ /* XXX perhaps suspend or something would be better here */ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) ++ dsi_stop_auto_update(); ++ else if (dsi.update_mode == OMAP_DSS_UPDATE_MANUAL) ++ dsi_wait_for_framedone(); ++ ++ dsi.use_te = enable; ++ display->ctrl->enable_te(display, enable); ++ if (enable) { ++ /* disable LP_RX_TO, so that we can receive TE. ++ * Time to wait for TE is longer than the timer allows */ ++ REG_FLD_MOD(DSI_TIMING2, 0, 15, 15); /* LP_RX_TO */ ++ } else { ++ REG_FLD_MOD(DSI_TIMING2, 1, 15, 15); /* LP_RX_TO */ ++ } ++ ++ /* restore the old update mode */ ++ dsi_set_update_mode(display, mode); ++ ++ enable_clocks(0); ++ ++ mutex_unlock(&dsi.lock); ++ ++ return 0; ++} ++ ++static int dsi_display_get_te(struct omap_display *display) ++{ ++ return dsi.use_te; ++} ++ ++static int dsi_display_run_test(struct omap_display *display, int test_num) ++{ ++ enum omap_dss_update_mode mode; ++ int r = 0; ++ ++ DSSDBG("dsi_display_run_test %d\n", test_num); ++ ++ mutex_lock(&dsi.lock); ++ ++ enable_clocks(1); ++ ++ mode = dsi.update_mode; ++ ++ /* XXX perhaps suspend or something would be better here */ ++ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) ++ dsi_stop_auto_update(); ++ else if (dsi.update_mode == OMAP_DSS_UPDATE_MANUAL) ++ dsi_wait_for_framedone(); ++ ++ /* run test first in low speed mode */ ++ dsi_vc_enable_hs(0, 0); ++ ++ if (display->ctrl->run_test) { ++ r = display->ctrl->run_test(display, test_num); ++ if (r) ++ goto fail; ++ } ++ ++ if (display->panel->run_test) { ++ r = display->panel->run_test(display, test_num); ++ if (r) ++ goto fail; ++ } ++ ++ /* then in high speed */ ++ dsi_vc_enable_hs(0, 1); ++ ++ if (display->ctrl->run_test) { ++ r = display->ctrl->run_test(display, test_num); ++ if (r) ++ goto fail; ++ } ++ ++ if (display->panel->run_test) ++ r = display->panel->run_test(display, test_num); ++ ++fail: ++ dsi_vc_enable_hs(0, 1); ++ ++ /* restore the old update mode */ ++ dsi_set_update_mode(display, mode); ++ ++ enable_clocks(0); ++ ++ mutex_unlock(&dsi.lock); ++ ++ return r; ++} ++ ++void dsi_init_display(struct omap_display *display) ++{ ++ DSSDBG("DSI init\n"); ++ ++ display->enable = dsi_display_enable; ++ display->disable = dsi_display_disable; ++ display->suspend = dsi_display_suspend; ++ display->resume = dsi_display_resume; ++ display->set_mode = dsi_display_set_mode; ++ display->update = dsi_display_update; ++ display->sync = dsi_display_sync; ++ display->set_update_mode = dsi_display_set_update_mode; ++ display->get_update_mode = dsi_display_get_update_mode; ++ display->enable_te = dsi_display_enable_te; ++ display->get_te = dsi_display_get_te; ++ display->run_test = dsi_display_run_test; ++ ++ display->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE; ++} ++ ++int dsi_init(void) ++{ ++ u32 rev; ++ ++ init_completion(&dsi.bta_completion); ++ INIT_WORK(&dsi.framedone_work, framedone_worker); ++ ++ init_completion(&dsi.update_completion); ++ spin_lock_init(&dsi.update_lock); ++ dsi.update_ongoing = 0; ++ dsi.update_syncers = 0; ++ ++ mutex_init(&dsi.lock); ++ ++ dsi.base = ioremap(DSI_BASE, SZ_1K); ++ if (!dsi.base) { ++ DSSERR("can't ioremap DSI\n"); ++ return -ENOMEM; ++ } ++ ++ dsi.dss_ick = get_dss_ick(); ++ dsi.dss1_fck = get_dss1_fck(); ++ dsi.dss2_fck = get_dss2_fck(); ++ ++ enable_clocks(1); ++ ++ /* Autoidle */ ++ REG_FLD_MOD(DSI_SYSCONFIG, 1, 0, 0); ++ ++ /* ENWAKEUP */ ++ REG_FLD_MOD(DSI_SYSCONFIG, 1, 2, 2); ++ ++ /* SIDLEMODE smart-idle */ ++ REG_FLD_MOD(DSI_SYSCONFIG, 2, 4, 3); ++ ++ if (0) ++ _dsi_reset(); ++ ++ _dsi_initialize_irq(); ++ ++ rev = dsi_read_reg(DSI_REVISION); ++ printk(KERN_INFO "OMAP DSI rev %d.%d\n", ++ FLD_GET(rev, 7, 4), FLD_GET(rev, 3, 0)); ++ ++ enable_clocks(0); ++ ++ return 0; ++} ++ ++void dsi_exit(void) ++{ ++ iounmap(dsi.base); ++ ++ DSSDBG("omap_dsi_exit\n"); ++} ++ +diff --git a/arch/arm/plat-omap/dss/dss.c b/arch/arm/plat-omap/dss/dss.c +new file mode 100644 +index 0000000..da0364b +--- /dev/null ++++ b/arch/arm/plat-omap/dss/dss.c +@@ -0,0 +1,547 @@ ++/* ++ * linux/arch/arm/plat-omap/dss/dss.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#define DSS_SUBSYS_NAME "DSS" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include "dss.h" ++ ++#define DSS_BASE 0x48050000 ++ ++struct dss_reg { ++ u16 idx; ++}; ++ ++#define DSS_REG(idx) ((const struct dss_reg) { idx }) ++ ++#define DSS_REVISION DSS_REG(0x0000) ++#define DSS_SYSCONFIG DSS_REG(0x0010) ++#define DSS_SYSSTATUS DSS_REG(0x0014) ++#define DSS_IRQSTATUS DSS_REG(0x0018) ++#define DSS_CONTROL DSS_REG(0x0040) ++#define DSS_SDI_CONTROL DSS_REG(0x0044) ++#define DSS_PLL_CONTROL DSS_REG(0x0048) ++#define DSS_SDI_STATUS DSS_REG(0x005C) ++ ++#define REG_FLD_MOD(idx, val, start, end) \ ++ dss_write_reg(idx, FLD_MOD(dss_read_reg(idx), val, start, end)) ++ ++static struct { ++ void __iomem *base; ++ ++ struct clk *dss_ick; ++ struct clk *dss1_fck; ++ struct clk *dss2_fck; ++ struct clk *dss_54m_fck; ++ struct clk *dss_96m_fck; ++} dss; ++ ++static inline void dss_write_reg(const struct dss_reg idx, u32 val) ++{ ++ __raw_writel(val, dss.base + idx.idx); ++} ++ ++static inline u32 dss_read_reg(const struct dss_reg idx) ++{ ++ return __raw_readl(dss.base + idx.idx); ++} ++ ++void dss_sdi_init(int datapairs) ++{ ++ u32 l; ++ ++ BUG_ON(datapairs > 3 || datapairs < 1); ++ ++ l = dss_read_reg(DSS_SDI_CONTROL); ++ l = FLD_MOD(l, 0xf, 19, 15); /* SDI_PDIV */ ++ l = FLD_MOD(l, datapairs-1, 3, 2); /* SDI_PRSEL */ ++ l = FLD_MOD(l, 2, 1, 0); /* SDI_BWSEL */ ++ dss_write_reg(DSS_SDI_CONTROL, l); ++ ++ l = dss_read_reg(DSS_PLL_CONTROL); ++ l = FLD_MOD(l, 0x7, 25, 22); /* SDI_PLL_FREQSEL */ ++ l = FLD_MOD(l, 0xb, 16, 11); /* SDI_PLL_REGN */ ++ l = FLD_MOD(l, 0xb4, 10, 1); /* SDI_PLL_REGM */ ++ dss_write_reg(DSS_PLL_CONTROL, l); ++ ++ /* Reset SDI PLL */ ++ REG_FLD_MOD(DSS_PLL_CONTROL, 1, 18, 18); /* SDI_PLL_SYSRESET */ ++ udelay(1); /* wait 2x PCLK */ ++ ++ /* Lock SDI PLL */ ++ REG_FLD_MOD(DSS_PLL_CONTROL, 1, 28, 28); /* SDI_PLL_GOBIT */ ++ ++ /* Waiting for PLL lock request to complete */ ++ while (dss_read_reg(DSS_SDI_STATUS) & (1 << 6)) ++ ; ++ ++ /* Clearing PLL_GO bit */ ++ REG_FLD_MOD(DSS_PLL_CONTROL, 0, 28, 28); ++ ++ /* Waiting for PLL to lock */ ++ while (!(dss_read_reg(DSS_SDI_STATUS) & (1 << 5))) ++ ; ++ ++ dispc_lcd_enable_signal(1); ++ ++ /* Waiting for SDI reset to complete */ ++ while (!(dss_read_reg(DSS_SDI_STATUS) & (1 << 5))) ++ ; ++} ++ ++static int get_dss_clocks(void) ++{ ++ const struct { ++ struct clk **clock; ++ char *omap2_name; ++ char *omap3_name; ++ } clocks[5] = { ++ { &dss.dss_ick, "dss_ick", "dss_ick" }, /* L3 & L4 ick */ ++ { &dss.dss1_fck, "dss1_fck", "dss1_alwon_fck" }, ++ { &dss.dss2_fck, "dss2_fck", "dss2_alwon_fck" }, ++ { &dss.dss_54m_fck, "dss_54m_fck", "dss_tv_fck" }, ++ { &dss.dss_96m_fck, NULL, "dss_96m_fck" }, ++ }; ++ ++ int r = 0; ++ int i; ++ const int num_clocks = 5; ++ ++ for (i = 0; i < num_clocks; i++) ++ *clocks[i].clock = NULL; ++ ++ for (i = 0; i < num_clocks; i++) { ++ struct clk *clk; ++ const char *clk_name; ++ ++ clk_name = cpu_is_omap34xx() ? clocks[i].omap3_name ++ : clocks[i].omap2_name; ++ ++ if (!clk_name) ++ continue; ++ ++ clk = clk_get(NULL, clk_name); ++ ++ if (IS_ERR(clk)) { ++ DSSERR("can't get clock %s", clk_name); ++ r = PTR_ERR(clk); ++ goto err; ++ } ++ ++ DSSDBG("clk %s, rate %ld\n", ++ clk_name, clk_get_rate(clk)); ++ ++ *clocks[i].clock = clk; ++ } ++ ++ return 0; ++ ++err: ++ for (i = 0; i < num_clocks; i++) { ++ if (!IS_ERR(*clocks[i].clock)) ++ clk_put(*clocks[i].clock); ++ } ++ ++ return r; ++} ++ ++static void put_dss_clocks(void) ++{ ++ if (dss.dss_96m_fck) ++ clk_put(dss.dss_96m_fck); ++ clk_put(dss.dss_54m_fck); ++ clk_put(dss.dss1_fck); ++ clk_put(dss.dss2_fck); ++ clk_put(dss.dss_ick); ++} ++ ++struct clk *get_dss_ick(void) ++{ ++ return dss.dss_ick; ++} ++ ++struct clk *get_dss1_fck(void) ++{ ++ return dss.dss1_fck; ++} ++ ++struct clk *get_dss2_fck(void) ++{ ++ return dss.dss2_fck; ++} ++ ++struct clk *get_tv_fck(void) ++{ ++ return dss.dss_54m_fck; ++} ++ ++struct clk *get_96m_fck(void) ++{ ++ return dss.dss_96m_fck; ++} ++ ++static void enable_dss_clocks(void) ++{ ++ clk_enable(dss.dss_ick); ++ clk_enable(dss.dss1_fck); ++ clk_enable(dss.dss2_fck); ++ clk_enable(dss.dss_54m_fck); ++ if (dss.dss_96m_fck) ++ clk_enable(dss.dss_96m_fck); ++} ++ ++static void disable_dss_clocks(void) ++{ ++ clk_disable(dss.dss_ick); ++ clk_disable(dss.dss1_fck); ++ clk_disable(dss.dss2_fck); ++ clk_disable(dss.dss_54m_fck); ++ if (dss.dss_96m_fck) ++ clk_disable(dss.dss_96m_fck); ++} ++ ++void dss_select_clk_source(int dsi, int dispc) ++{ ++ u32 r; ++ r = dss_read_reg(DSS_CONTROL); ++ r = FLD_MOD(r, dsi, 1, 1); /* DSI_CLK_SWITCH */ ++ r = FLD_MOD(r, dispc, 0, 0); /* DISPC_CLK_SWITCH */ ++ dss_write_reg(DSS_CONTROL, r); ++} ++ ++int dss_get_dsi_clk_source(void) ++{ ++ return FLD_GET(dss_read_reg(DSS_CONTROL), 1, 1); ++} ++ ++int dss_get_dispc_clk_source(void) ++{ ++ return FLD_GET(dss_read_reg(DSS_CONTROL), 0, 0); ++} ++ ++static irqreturn_t dss_irq_handler(int irq, void *arg) ++{ ++#ifdef CONFIG_ARCH_OMAP3 ++ u32 irqstatus; ++ ++ clk_enable(dss.dss_ick); ++ clk_enable(dss.dss1_fck); ++ ++ irqstatus = dss_read_reg(DSS_IRQSTATUS); ++ ++ if (irqstatus & (1<<0)) /* DISPC_IRQ */ ++ dispc_irq_handler(); ++#ifdef CONFIG_OMAP2_DSS_DSI ++ if (irqstatus & (1<<1)) /* DSI_IRQ */ ++ dsi_irq_handler(); ++#endif ++#else /* OMAP2 */ ++ dispc_irq_handler(); ++#endif ++ ++ clk_disable(dss.dss1_fck); ++ clk_disable(dss.dss_ick); ++ ++ return IRQ_HANDLED; ++} ++ ++ ++static int _omap_dss_reset(void) ++{ ++ int timeout = 10000; ++ int r = 0; ++ ++ /* Soft reset */ ++ REG_FLD_MOD(DSS_SYSCONFIG, 1, 1, 1); ++ ++ while (!(dss_read_reg(DSS_SYSSTATUS) & 1)) { ++ if (!--timeout) { ++ DSSERR("soft reset failed\n"); ++ r = -ENODEV; ++ break; ++ } ++ } ++ ++ return r; ++} ++ ++void dss_set_venc_output(enum omap_dss_venc_type type) ++{ ++ int l = 0; ++ ++ if (type == OMAP_DSS_VENC_TYPE_COMPOSITE) ++ l = 0; ++ else if (type == OMAP_DSS_VENC_TYPE_SVIDEO) ++ l = 1; ++ else ++ BUG(); ++ ++ /* venc out selection. 0 = comp, 1 = svideo */ ++ REG_FLD_MOD(DSS_CONTROL, l, 6, 6); ++} ++ ++void dss_set_dac_pwrdn_bgz(int enable) ++{ ++ REG_FLD_MOD(DSS_CONTROL, enable, 5, 5); /* DAC Power-Down Control */ ++} ++ ++int dss_init(void) ++{ ++ int r; ++ u32 rev; ++ ++ dss.base = ioremap(DSS_BASE, SZ_512); ++ if (!dss.base) { ++ DSSERR("can't ioremap DSS\n"); ++ r = -ENOMEM; ++ goto fail0; ++ } ++ ++ r = get_dss_clocks(); ++ if (r) ++ goto fail1; ++ ++ enable_dss_clocks(); ++ ++ _omap_dss_reset(); ++ ++ /* autoidle */ ++ REG_FLD_MOD(DSS_SYSCONFIG, 1, 0, 0); ++ ++ /* Select DPLL */ ++ REG_FLD_MOD(DSS_CONTROL, 0, 0, 0); ++ ++#ifdef CONFIG_OMAP2_DSS_VENC ++ REG_FLD_MOD(DSS_CONTROL, 1, 4, 4); /* venc dac demen */ ++ REG_FLD_MOD(DSS_CONTROL, 1, 3, 3); /* venc clock 4x enable */ ++ REG_FLD_MOD(DSS_CONTROL, 0, 2, 2); /* venc clock mode = normal */ ++#endif ++ ++ r = request_irq(INT_24XX_DSS_IRQ, dss_irq_handler, ++ 0, "OMAP DSS", NULL); ++ ++ if (r < 0) { ++ DSSERR("omap2 dss: request_irq failed\n"); ++ goto fail2; ++ } ++ ++ rev = dss_read_reg(DSS_REVISION); ++ printk(KERN_INFO "OMAP DSS rev %d.%d\n", ++ FLD_GET(rev, 7, 4), FLD_GET(rev, 3, 0)); ++ ++ disable_dss_clocks(); ++ return 0; ++ ++fail2: ++ disable_dss_clocks(); ++ put_dss_clocks(); ++fail1: ++ iounmap(dss.base); ++fail0: ++ return r; ++} ++ ++void dss_exit(void) ++{ ++ int c; ++ ++ free_irq(INT_24XX_DSS_IRQ, NULL); ++ ++ /* these should be removed at some point */ ++ c = clk_get_usecount(dss.dss_ick); ++ if (c > 0) { ++ DSSERR("warning: dss_ick usecount %d, disabling\n", c); ++ while (c-- > 0) ++ clk_disable(dss.dss_ick); ++ } ++ ++ c = clk_get_usecount(dss.dss1_fck); ++ if (c > 0) { ++ DSSERR("warning: dss1_fck usecount %d, disabling\n", c); ++ while (c-- > 0) ++ clk_disable(dss.dss1_fck); ++ } ++ ++ c = clk_get_usecount(dss.dss2_fck); ++ if (c > 0) { ++ DSSERR("warning: dss2_fck usecount %d, disabling\n", c); ++ while (c-- > 0) ++ clk_disable(dss.dss2_fck); ++ } ++ ++ c = clk_get_usecount(dss.dss_54m_fck); ++ if (c > 0) { ++ DSSERR("warning: dss_54m_fck usecount %d, disabling\n", c); ++ while (c-- > 0) ++ clk_disable(dss.dss_54m_fck); ++ } ++ ++ if (dss.dss_96m_fck) { ++ c = clk_get_usecount(dss.dss_96m_fck); ++ if (c > 0) { ++ DSSERR("warning: dss_96m_fck usecount %d, disabling\n", ++ c); ++ while (c-- > 0) ++ clk_disable(dss.dss_96m_fck); ++ } ++ } ++ ++ put_dss_clocks(); ++ ++ iounmap(dss.base); ++} ++ ++ ++ ++static int omap_dss_probe(struct platform_device *pdev) ++{ ++ struct omap_dss_platform_data *pdata = pdev->dev.platform_data; ++ ++ int r; ++ ++ r = dss_init(); ++ if (r) { ++ DSSERR("Failed to initialize DSS\n"); ++ goto fail0; ++ } ++ ++#ifdef CONFIG_OMAP2_DSS_RFBI ++ r = rfbi_init(); ++ if (r) { ++ DSSERR("Failed to initialize rfbi\n"); ++ goto fail0; ++ } ++#endif ++ ++ r = dpi_init(); ++ if (r) { ++ DSSERR("Failed to initialize dpi\n"); ++ goto fail0; ++ } + + r = dispc_init(); + if (r) { + DSSERR("Failed to initialize dispc\n"); + goto fail0; + } -+#ifdef CONFIG_OMAP2_DSS_VENC -+ r = venc_init(); -+ if (r) { -+ DSSERR("Failed to initialize venc\n"); -+ goto fail0; ++#ifdef CONFIG_OMAP2_DSS_VENC ++ r = venc_init(); ++ if (r) { ++ DSSERR("Failed to initialize venc\n"); ++ goto fail0; ++ } ++#endif ++ if (cpu_is_omap34xx()) { ++#ifdef CONFIG_OMAP2_DSS_SDI ++ r = sdi_init(); ++ if (r) { ++ DSSERR("Failed to initialize SDI\n"); ++ goto fail0; ++ } ++#endif ++#ifdef CONFIG_OMAP2_DSS_DSI ++ r = dsi_init(); ++ if (r) { ++ DSSERR("Failed to initialize DSI\n"); ++ goto fail0; ++ } ++#endif ++ } ++ ++ initialize_displays(pdata); ++ ++ r = initialize_sysfs(&pdev->dev); ++ if (r) ++ goto fail0; ++ ++ initialize_overlays(); ++ ++ return 0; ++ ++fail0: ++ return r; ++} ++ ++static int omap_dss_remove(struct platform_device *pdev) ++{ ++ uninitialize_sysfs(&pdev->dev); ++ ++#ifdef CONFIG_OMAP2_DSS_VENC ++ venc_exit(); ++#endif ++ dispc_exit(); ++ dpi_exit(); ++#ifdef CONFIG_OMAP2_DSS_RFBI ++ rfbi_exit(); ++#endif ++ if (cpu_is_omap34xx()) { ++#ifdef CONFIG_OMAP2_DSS_DSI ++ dsi_exit(); ++#endif ++#ifdef CONFIG_OMAP2_DSS_SDI ++ sdi_exit(); ++#endif ++ } ++ ++ dss_exit(); ++ ++ return 0; ++} ++ ++ ++static struct platform_driver omap_dss_driver = { ++ .probe = omap_dss_probe, ++ .remove = omap_dss_remove, ++ .driver = { ++ .name = "omap-dss", ++ .owner = THIS_MODULE, ++ }, ++}; ++ ++static int __init omap_dss_init(void) ++{ ++ return platform_driver_register(&omap_dss_driver); ++} ++ ++static void __exit omap_dss_exit(void) ++{ ++ platform_driver_unregister(&omap_dss_driver); ++} ++ ++subsys_initcall(omap_dss_init); ++module_exit(omap_dss_exit); ++ ++ ++MODULE_AUTHOR("Tomi Valkeinen "); ++MODULE_DESCRIPTION("OMAP2/3 Display Subsystem"); ++MODULE_LICENSE("GPL v2"); ++ +diff --git a/arch/arm/plat-omap/dss/dss.h b/arch/arm/plat-omap/dss/dss.h +new file mode 100644 +index 0000000..28929b9 +--- /dev/null ++++ b/arch/arm/plat-omap/dss/dss.h +@@ -0,0 +1,254 @@ ++/* ++ * linux/arch/arm/plat-omap/dss/dss.h ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#ifndef __OMAP2_DSS_H ++#define __OMAP2_DSS_H ++ ++#ifdef CONFIG_OMAP2_DSS_DEBUG ++#define DEBUG ++#endif ++ ++#ifdef DEBUG ++#ifdef DSS_SUBSYS_NAME ++#define DSSDBG(format, ...) \ ++ printk(KERN_DEBUG "omap-dss " DSS_SUBSYS_NAME ": " format, \ ++ ## __VA_ARGS__) ++#else ++#define DSSDBG(format, ...) \ ++ printk(KERN_DEBUG "omap-dss: " format, ## __VA_ARGS__) ++#endif ++#else ++#define DSSDBG(format, ...) ++#endif ++ ++#ifdef DSS_SUBSYS_NAME ++#define DSSERR(format, ...) \ ++ printk(KERN_ERR "omap-dss " DSS_SUBSYS_NAME " error: " format, \ ++ ## __VA_ARGS__) ++#else ++#define DSSERR(format, ...) \ ++ printk(KERN_ERR "omap-dss error: " format, ## __VA_ARGS__) ++#endif ++ ++#ifdef DSS_SUBSYS_NAME ++#define DSSINFO(format, ...) \ ++ printk(KERN_INFO "omap-dss " DSS_SUBSYS_NAME ": " format, \ ++ ## __VA_ARGS__) ++#else ++#define DSSINFO(format, ...) \ ++ printk(KERN_INFO "omap-dss: " format, ## __VA_ARGS__) ++#endif ++ ++#ifdef DSS_SUBSYS_NAME ++#define DSSWARN(format, ...) \ ++ printk(KERN_WARNING "omap-dss " DSS_SUBSYS_NAME ": " format, \ ++ ## __VA_ARGS__) ++#else ++#define DSSWARN(format, ...) \ ++ printk(KERN_WARNING "omap-dss: " format, ## __VA_ARGS__) ++#endif ++ ++/* OMAP TRM gives bitfields as start:end, where start is the higher bit ++ number. For example 7:0 */ ++#define FLD_MASK(start, end) (((1 << (start - end + 1)) - 1) << (end)) ++#define FLD_VAL(val, start, end) (((val) << end) & FLD_MASK(start, end)) ++#define FLD_GET(val, start, end) (((val) & FLD_MASK(start, end)) >> (end)) ++#define FLD_MOD(orig, val, start, end) \ ++ (((orig) & ~FLD_MASK(start, end)) | FLD_VAL(val, start, end)) ++ ++#define DISPC_MAX_FCK 173000000 ++ ++enum omap_burst_size { ++ OMAP_DSS_BURST_4x32 = 0, ++ OMAP_DSS_BURST_8x32 = 1, ++ OMAP_DSS_BURST_16x32 = 2, ++}; ++ ++enum omap_parallel_interface_mode { ++ OMAP_DSS_PARALLELMODE_BYPASS, /* MIPI DPI */ ++ OMAP_DSS_PARALLELMODE_RFBI, /* MIPI DBI */ ++ OMAP_DSS_PARALLELMODE_DSI, ++}; ++ ++struct dispc_clock_info { ++ /* rates that we get with dividers below */ ++ unsigned long fck; ++ unsigned long lck; ++ unsigned long pck; ++ ++ /* dividers */ ++ int fck_div; ++ int lck_div; ++ int pck_div; ++}; ++ ++struct dsi_clock_info { ++ /* rates that we get with dividers below */ ++ unsigned long fint; ++ unsigned long dsiphy; ++ unsigned long clkin; /* input clk for DSI PLL */ ++ unsigned long dispc_fck; /* output clk, DSI1_PLL_FCLK */ ++ unsigned long dsi_fck; /* output clk, DSI2_PLL_FCLK */ ++ unsigned long lck; ++ unsigned long pck; ++ ++ /* dividers */ ++ int regn; ++ int regm; ++ int regm3; ++ int regm4; ++ ++ int lck_div; ++ int pck_div; ++ ++ int highfreq; ++ int use_dss2_fck; ++}; ++ ++int initialize_sysfs(struct device *dev); ++void uninitialize_sysfs(struct device *dev); ++void initialize_displays(struct omap_dss_platform_data *pdata); ++void initialize_overlays(void); ++ ++/* DSS */ ++int dss_init(void); ++void dss_exit(void); ++ ++void dss_sdi_init(int datapairs); ++void dss_select_clk_source(int dsi, int dispc); ++int dss_get_dsi_clk_source(void); ++int dss_get_dispc_clk_source(void); ++void dss_set_venc_output(enum omap_dss_venc_type type); ++void dss_set_dac_pwrdn_bgz(int enable); ++ ++struct clk *get_dss_ick(void); ++struct clk *get_dss1_fck(void); ++struct clk *get_dss2_fck(void); ++struct clk *get_tv_fck(void); ++struct clk *get_96m_fck(void); ++ ++/* SDI */ ++int sdi_init(void); ++void sdi_exit(void); ++void sdi_init_display(struct omap_display *display); ++ ++ ++/* DSI */ ++int dsi_init(void); ++void dsi_exit(void); ++void dsi_init_display(struct omap_display *display); ++void dsi_irq_handler(void); ++unsigned long dsi_get_dsi1_pll_rate(void); ++unsigned long dsi_get_dsi2_pll_rate(void); ++int dsi_pll_calc_pck(int is_tft, unsigned long req_pck, ++ struct dsi_clock_info *cinfo); ++int dsi_pll_program(struct dsi_clock_info *cinfo); ++int dsi_pll_init(int enable_hsclk, int enable_hsdiv); ++void dsi_pll_uninit(void); ++ssize_t dsi_print_clocks(char *buf, ssize_t size); ++ ++/* DPI */ ++int dpi_init(void); ++void dpi_exit(void); ++void dpi_init_display(struct omap_display *display); ++ ++/* DISPC */ ++int dispc_init(void); ++void dispc_exit(void); ++void dispc_irq_handler(void); ++void dispc_fake_vsync_irq(void); ++ ++void dispc_lcd_enable_signal_polarity(int act_high); ++void dispc_lcd_enable_signal(int enable); ++void dispc_pck_free_enable(int enable); ++void dispc_enable_fifohandcheck(int enable); ++ ++void dispc_set_lcd_size(int width, int height); ++void dispc_set_digit_size(int width, int height); ++void dispc_setup_plane_fifo(enum omap_plane plane, int ext_mode); ++ ++void dispc_set_plane_ba0(enum omap_plane plane, u32 paddr); ++void dispc_set_plane_ba1(enum omap_plane plane, u32 paddr); ++void dispc_set_plane_pos(enum omap_plane plane, int x, int y); ++void dispc_set_plane_size(enum omap_plane plane, int width, int height); ++void dispc_set_row_inc(enum omap_plane plane, int inc); ++ ++int dispc_setup_plane(enum omap_plane plane, enum omap_channel channel_out, ++ u32 paddr, int screen_width, ++ int pos_x, int pos_y, ++ int width, int height, ++ int out_width, int out_height, ++ enum omap_color_mode color_mode, ++ int ilace); ++ ++void dispc_go(enum omap_channel channel); ++void dispc_enable_lcd_out(int enable); ++void dispc_enable_digit_out(int enable); ++int dispc_enable_plane(enum omap_plane plane, int enable); ++ ++void dispc_set_parallel_interface_mode(enum omap_parallel_interface_mode mode); ++void dispc_set_tft_data_lines(int data_lines); ++void dispc_set_lcd_display_type(enum omap_lcd_display_type type); ++void dispc_set_loadmode(enum omap_dss_load_mode mode); ++ ++void dispc_set_default_color(enum omap_channel channel, u32 color); ++void dispc_set_trans_key(enum omap_channel ch, ++ enum omap_dss_color_key_type type, ++ u32 trans_key); ++void dispc_enable_trans_key(enum omap_channel ch, int enable); ++ ++void dispc_set_lcd_timings(struct omap_video_timings *timings); ++unsigned long dispc_fclk_rate(void); ++unsigned long dispc_pclk_rate(void); ++void dispc_set_pol_freq(struct omap_panel *panel); ++void find_lck_pck_divs(int is_tft, unsigned long req_pck, unsigned long fck, ++ int *lck_div, int *pck_div); ++int dispc_calc_clock_div(int is_tft, unsigned long req_pck, ++ struct dispc_clock_info *cinfo); ++int dispc_set_clock_div(struct dispc_clock_info *cinfo); ++void dispc_set_lcd_divisor(int lck_div, int pck_div); ++ ++void dispc_setup_partial_planes(struct omap_display *display, ++ int *x, int *y, int *w, int *h); ++void dispc_draw_partial_planes(struct omap_display *display); ++ ++ ++ssize_t dispc_print_clocks(char *buf, ssize_t size); ++ ++/* VENC */ ++int venc_init(void); ++void venc_exit(void); ++void venc_init_display(struct omap_display *display); ++ ++/* RFBI */ ++int rfbi_init(void); ++void rfbi_exit(void); ++ ++int rfbi_configure(int rfbi_module, int bpp, int lines); ++void rfbi_enable_rfbi(int enable); ++void rfbi_transfer_area(int width, int height, ++ void (callback)(void *data), void *data); ++void rfbi_set_timings(int rfbi_module, struct rfbi_timings *t); ++unsigned long rfbi_get_max_tx_rate(void); ++void rfbi_init_display(struct omap_display *display); ++ ++#endif +diff --git a/arch/arm/plat-omap/dss/rfbi.c b/arch/arm/plat-omap/dss/rfbi.c +new file mode 100644 +index 0000000..31ddd24 +--- /dev/null ++++ b/arch/arm/plat-omap/dss/rfbi.c +@@ -0,0 +1,1234 @@ ++/* ++ * linux/arch/arm/plat-omap/dss/rfbi.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#define DSS_SUBSYS_NAME "RFBI" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include "dss.h" ++ ++/*#define MEASURE_PERF*/ ++ ++#define RFBI_BASE 0x48050800 ++ ++struct rfbi_reg { u16 idx; }; ++ ++#define RFBI_REG(idx) ((const struct rfbi_reg) { idx }) ++ ++#define RFBI_REVISION RFBI_REG(0x0000) ++#define RFBI_SYSCONFIG RFBI_REG(0x0010) ++#define RFBI_SYSSTATUS RFBI_REG(0x0014) ++#define RFBI_CONTROL RFBI_REG(0x0040) ++#define RFBI_PIXEL_CNT RFBI_REG(0x0044) ++#define RFBI_LINE_NUMBER RFBI_REG(0x0048) ++#define RFBI_CMD RFBI_REG(0x004c) ++#define RFBI_PARAM RFBI_REG(0x0050) ++#define RFBI_DATA RFBI_REG(0x0054) ++#define RFBI_READ RFBI_REG(0x0058) ++#define RFBI_STATUS RFBI_REG(0x005c) ++ ++#define RFBI_CONFIG(n) RFBI_REG(0x0060 + (n)*0x18) ++#define RFBI_ONOFF_TIME(n) RFBI_REG(0x0064 + (n)*0x18) ++#define RFBI_CYCLE_TIME(n) RFBI_REG(0x0068 + (n)*0x18) ++#define RFBI_DATA_CYCLE1(n) RFBI_REG(0x006c + (n)*0x18) ++#define RFBI_DATA_CYCLE2(n) RFBI_REG(0x0070 + (n)*0x18) ++#define RFBI_DATA_CYCLE3(n) RFBI_REG(0x0074 + (n)*0x18) ++ ++#define RFBI_VSYNC_WIDTH RFBI_REG(0x0090) ++#define RFBI_HSYNC_WIDTH RFBI_REG(0x0094) ++ ++#define RFBI_CMD_FIFO_LEN_BYTES (16 * sizeof(struct update_param)) ++ ++#define REG_FLD_MOD(idx, val, start, end) \ ++ rfbi_write_reg(idx, FLD_MOD(rfbi_read_reg(idx), val, start, end)) ++ ++/* To work around an RFBI transfer rate limitation */ ++#define OMAP_RFBI_RATE_LIMIT 1 ++ ++enum omap_rfbi_cycleformat { ++ OMAP_DSS_RFBI_CYCLEFORMAT_1_1 = 0, ++ OMAP_DSS_RFBI_CYCLEFORMAT_2_1 = 1, ++ OMAP_DSS_RFBI_CYCLEFORMAT_3_1 = 2, ++ OMAP_DSS_RFBI_CYCLEFORMAT_3_2 = 3, ++}; ++ ++enum omap_rfbi_datatype { ++ OMAP_DSS_RFBI_DATATYPE_12 = 0, ++ OMAP_DSS_RFBI_DATATYPE_16 = 1, ++ OMAP_DSS_RFBI_DATATYPE_18 = 2, ++ OMAP_DSS_RFBI_DATATYPE_24 = 3, ++}; ++ ++enum omap_rfbi_parallelmode { ++ OMAP_DSS_RFBI_PARALLELMODE_8 = 0, ++ OMAP_DSS_RFBI_PARALLELMODE_9 = 1, ++ OMAP_DSS_RFBI_PARALLELMODE_12 = 2, ++ OMAP_DSS_RFBI_PARALLELMODE_16 = 3, ++}; ++ ++enum update_cmd { ++ RFBI_CMD_UPDATE = 0, ++ RFBI_CMD_SYNC = 1, ++}; ++ ++static int rfbi_convert_timings(struct rfbi_timings *t); ++static void rfbi_get_clk_info(u32 *clk_period, u32 *max_clk_div); ++static void process_cmd_fifo(void); ++ ++static struct { ++ void __iomem *base; ++ ++ struct clk *dss_ick; ++ struct clk *dss1_fck; ++ ++ unsigned long l4_khz; ++ ++ enum omap_rfbi_datatype datatype; ++ enum omap_rfbi_parallelmode parallelmode; ++ ++ enum omap_rfbi_te_mode te_mode; ++ int te_enabled; ++ ++ void (*framedone_callback)(void *data); ++ void *framedone_callback_data; ++ ++ struct omap_display *display[2]; ++ ++ struct kfifo *cmd_fifo; ++ spinlock_t cmd_lock; ++ struct completion cmd_done; ++ atomic_t cmd_fifo_full; ++ atomic_t cmd_pending; ++#ifdef MEASURE_PERF ++ ktime_t perf_time; ++#endif ++} rfbi; ++ ++struct update_region { ++ u16 x; ++ u16 y; ++ u16 w; ++ u16 h; ++}; ++ ++struct update_param { ++ u8 rfbi_module; ++ u8 cmd; ++ ++ union { ++ struct update_region r; ++ struct completion *sync; ++ } par; ++}; ++ ++static inline void rfbi_write_reg(const struct rfbi_reg idx, u32 val) ++{ ++ __raw_writel(val, rfbi.base + idx.idx); ++} ++ ++static inline u32 rfbi_read_reg(const struct rfbi_reg idx) ++{ ++ return __raw_readl(rfbi.base + idx.idx); ++} ++ ++static void rfbi_enable_clocks(int enable) ++{ ++ if (enable) { ++ clk_enable(rfbi.dss_ick); ++ clk_enable(rfbi.dss1_fck); ++ } else { ++ clk_disable(rfbi.dss1_fck); ++ clk_disable(rfbi.dss_ick); ++ } ++} ++ ++void omap_rfbi_write_command(const void *buf, u32 len) ++{ ++ rfbi_enable_clocks(1); ++ switch (rfbi.parallelmode) { ++ case OMAP_DSS_RFBI_PARALLELMODE_8: ++ { ++ const u8 *b = buf; ++ for (; len; len--) ++ rfbi_write_reg(RFBI_CMD, *b++); ++ break; ++ } ++ ++ case OMAP_DSS_RFBI_PARALLELMODE_16: ++ { ++ const u16 *w = buf; ++ BUG_ON(len & 1); ++ for (; len; len -= 2) ++ rfbi_write_reg(RFBI_CMD, *w++); ++ break; ++ } ++ ++ case OMAP_DSS_RFBI_PARALLELMODE_9: ++ case OMAP_DSS_RFBI_PARALLELMODE_12: ++ default: ++ BUG(); ++ } ++ rfbi_enable_clocks(0); ++} ++EXPORT_SYMBOL(omap_rfbi_write_command); ++ ++void omap_rfbi_read_data(void *buf, u32 len) ++{ ++ rfbi_enable_clocks(1); ++ switch (rfbi.parallelmode) { ++ case OMAP_DSS_RFBI_PARALLELMODE_8: ++ { ++ u8 *b = buf; ++ for (; len; len--) { ++ rfbi_write_reg(RFBI_READ, 0); ++ *b++ = rfbi_read_reg(RFBI_READ); ++ } ++ break; ++ } ++ ++ case OMAP_DSS_RFBI_PARALLELMODE_16: ++ { ++ u16 *w = buf; ++ BUG_ON(len & ~1); ++ for (; len; len -= 2) { ++ rfbi_write_reg(RFBI_READ, 0); ++ *w++ = rfbi_read_reg(RFBI_READ); ++ } ++ break; ++ } ++ ++ case OMAP_DSS_RFBI_PARALLELMODE_9: ++ case OMAP_DSS_RFBI_PARALLELMODE_12: ++ default: ++ BUG(); ++ } ++ rfbi_enable_clocks(0); ++} ++EXPORT_SYMBOL(omap_rfbi_read_data); ++ ++void omap_rfbi_write_data(const void *buf, u32 len) ++{ ++ rfbi_enable_clocks(1); ++ switch (rfbi.parallelmode) { ++ case OMAP_DSS_RFBI_PARALLELMODE_8: ++ { ++ const u8 *b = buf; ++ for (; len; len--) ++ rfbi_write_reg(RFBI_PARAM, *b++); ++ break; ++ } ++ ++ case OMAP_DSS_RFBI_PARALLELMODE_16: ++ { ++ const u16 *w = buf; ++ BUG_ON(len & 1); ++ for (; len; len -= 2) ++ rfbi_write_reg(RFBI_PARAM, *w++); ++ break; ++ } ++ ++ case OMAP_DSS_RFBI_PARALLELMODE_9: ++ case OMAP_DSS_RFBI_PARALLELMODE_12: ++ default: ++ BUG(); ++ ++ } ++ rfbi_enable_clocks(0); ++} ++EXPORT_SYMBOL(omap_rfbi_write_data); ++ ++void omap_rfbi_write_pixels(const void *buf, int scr_width, int x, int y, ++ int w, int h) ++{ ++ int start_offset = scr_width * y + x; ++ int horiz_offset = scr_width - w; ++ int i; ++ ++ rfbi_enable_clocks(1); ++ ++ if (rfbi.datatype == OMAP_DSS_RFBI_DATATYPE_16 && ++ rfbi.parallelmode == OMAP_DSS_RFBI_PARALLELMODE_8) { ++ const u16 *pd = buf; ++ pd += start_offset; ++ ++ for (; h; --h) { ++ for (i = 0; i < w; ++i) { ++ const u8 *b = (const u8 *)pd; ++ rfbi_write_reg(RFBI_PARAM, *(b+1)); ++ rfbi_write_reg(RFBI_PARAM, *(b+0)); ++ ++pd; ++ } ++ pd += horiz_offset; ++ } ++ } else if (rfbi.datatype == OMAP_DSS_RFBI_DATATYPE_24 && ++ rfbi.parallelmode == OMAP_DSS_RFBI_PARALLELMODE_8) { ++ const u32 *pd = buf; ++ pd += start_offset; ++ ++ for (; h; --h) { ++ for (i = 0; i < w; ++i) { ++ const u8 *b = (const u8 *)pd; ++ rfbi_write_reg(RFBI_PARAM, *(b+2)); ++ rfbi_write_reg(RFBI_PARAM, *(b+1)); ++ rfbi_write_reg(RFBI_PARAM, *(b+0)); ++ ++pd; ++ } ++ pd += horiz_offset; ++ } ++ } else if (rfbi.datatype == OMAP_DSS_RFBI_DATATYPE_16 && ++ rfbi.parallelmode == OMAP_DSS_RFBI_PARALLELMODE_16) { ++ const u16 *pd = buf; ++ pd += start_offset; ++ ++ for (; h; --h) { ++ for (i = 0; i < w; ++i) { ++ rfbi_write_reg(RFBI_PARAM, *pd); ++ ++pd; ++ } ++ pd += horiz_offset; ++ } ++ } else { ++ BUG(); ++ } ++ ++ rfbi_enable_clocks(0); ++} ++EXPORT_SYMBOL(omap_rfbi_write_pixels); ++ ++void rfbi_transfer_area(int width, int height, ++ void (callback)(void *data), void *data) ++{ ++ u32 l; ++ ++ /*BUG_ON(callback == 0);*/ ++ BUG_ON(rfbi.framedone_callback != NULL); ++ ++ DSSDBG("rfbi_transfer_area %dx%d\n", width, height); ++ ++ dispc_set_lcd_size(width, height); ++ ++ dispc_enable_lcd_out(1); ++ ++ rfbi.framedone_callback = callback; ++ rfbi.framedone_callback_data = data; ++ ++ rfbi_enable_clocks(1); ++ ++#ifdef MEASURE_PERF ++ rfbi.perf_time = ktime_get(); ++#endif ++ rfbi_write_reg(RFBI_PIXEL_CNT, width * height); ++ ++ l = rfbi_read_reg(RFBI_CONTROL); ++ l = FLD_MOD(l, 1, 0, 0); /* enable */ ++ if (!rfbi.te_enabled) ++ l = FLD_MOD(l, 1, 4, 4); /* ITE */ ++ ++ rfbi_write_reg(RFBI_CONTROL, l); ++} ++ ++static void framedone_callback(void *data, u32 mask) ++{ ++ void (*callback)(void *data); ++ ++#ifdef MEASURE_PERF ++ { ++ ktime_t t = ktime_get(); ++ t = ktime_sub(t, rfbi.perf_time); ++ DSSDBG("FRAMEDONE in %lld ns\n", ktime_to_ns(t)); ++ } ++#else ++ DSSDBG("FRAMEDONE\n"); ++#endif ++ ++ REG_FLD_MOD(RFBI_CONTROL, 0, 0, 0); ++ ++ rfbi_enable_clocks(0); ++ ++ callback = rfbi.framedone_callback; ++ rfbi.framedone_callback = NULL; ++ ++ /*callback(rfbi.framedone_callback_data);*/ ++ ++ atomic_set(&rfbi.cmd_pending, 0); ++ ++ process_cmd_fifo(); ++} ++ ++#if 1 /* VERBOSE */ ++static void rfbi_print_timings(void) ++{ ++ u32 l; ++ u32 time; ++ ++ l = rfbi_read_reg(RFBI_CONFIG(0)); ++ time = 1000000000 / rfbi.l4_khz; ++ if (l & (1 << 4)) ++ time *= 2; ++ ++ DSSDBG("Tick time %u ps\n", time); ++ l = rfbi_read_reg(RFBI_ONOFF_TIME(0)); ++ DSSDBG("CSONTIME %d, CSOFFTIME %d, WEONTIME %d, WEOFFTIME %d, " ++ "REONTIME %d, REOFFTIME %d\n", ++ l & 0x0f, (l >> 4) & 0x3f, (l >> 10) & 0x0f, (l >> 14) & 0x3f, ++ (l >> 20) & 0x0f, (l >> 24) & 0x3f); ++ ++ l = rfbi_read_reg(RFBI_CYCLE_TIME(0)); ++ DSSDBG("WECYCLETIME %d, RECYCLETIME %d, CSPULSEWIDTH %d, " ++ "ACCESSTIME %d\n", ++ (l & 0x3f), (l >> 6) & 0x3f, (l >> 12) & 0x3f, ++ (l >> 22) & 0x3f); ++} ++#else ++static void rfbi_print_timings(void) {} ++#endif ++ ++ ++ ++ ++static u32 extif_clk_period; ++ ++static inline unsigned long round_to_extif_ticks(unsigned long ps, int div) ++{ ++ int bus_tick = extif_clk_period * div; ++ return (ps + bus_tick - 1) / bus_tick * bus_tick; ++} ++ ++static int calc_reg_timing(struct rfbi_timings *t, int div) ++{ ++ t->clk_div = div; ++ ++ t->cs_on_time = round_to_extif_ticks(t->cs_on_time, div); ++ ++ t->we_on_time = round_to_extif_ticks(t->we_on_time, div); ++ t->we_off_time = round_to_extif_ticks(t->we_off_time, div); ++ t->we_cycle_time = round_to_extif_ticks(t->we_cycle_time, div); ++ ++ t->re_on_time = round_to_extif_ticks(t->re_on_time, div); ++ t->re_off_time = round_to_extif_ticks(t->re_off_time, div); ++ t->re_cycle_time = round_to_extif_ticks(t->re_cycle_time, div); ++ ++ t->access_time = round_to_extif_ticks(t->access_time, div); ++ t->cs_off_time = round_to_extif_ticks(t->cs_off_time, div); ++ t->cs_pulse_width = round_to_extif_ticks(t->cs_pulse_width, div); ++ ++ DSSDBG("[reg]cson %d csoff %d reon %d reoff %d\n", ++ t->cs_on_time, t->cs_off_time, t->re_on_time, t->re_off_time); ++ DSSDBG("[reg]weon %d weoff %d recyc %d wecyc %d\n", ++ t->we_on_time, t->we_off_time, t->re_cycle_time, ++ t->we_cycle_time); ++ DSSDBG("[reg]rdaccess %d cspulse %d\n", ++ t->access_time, t->cs_pulse_width); ++ ++ return rfbi_convert_timings(t); ++} ++ ++static int calc_extif_timings(struct rfbi_timings *t) ++{ ++ u32 max_clk_div; ++ int div; ++ ++ rfbi_get_clk_info(&extif_clk_period, &max_clk_div); ++ for (div = 1; div <= max_clk_div; div++) { ++ if (calc_reg_timing(t, div) == 0) ++ break; ++ } ++ ++ if (div <= max_clk_div) ++ return 0; ++ ++ DSSERR("can't setup timings\n"); ++ return -1; ++} ++ ++ ++void rfbi_set_timings(int rfbi_module, struct rfbi_timings *t) ++{ ++ int r; ++ ++ if (!t->converted) { ++ r = calc_extif_timings(t); ++ if (r < 0) ++ DSSERR("Failed to calc timings\n"); ++ } ++ ++ BUG_ON(!t->converted); ++ ++ rfbi_enable_clocks(1); ++ rfbi_write_reg(RFBI_ONOFF_TIME(rfbi_module), t->tim[0]); ++ rfbi_write_reg(RFBI_CYCLE_TIME(rfbi_module), t->tim[1]); ++ ++ /* TIMEGRANULARITY */ ++ REG_FLD_MOD(RFBI_CONFIG(rfbi_module), ++ (t->tim[2] ? 1 : 0), 4, 4); ++ ++ rfbi_print_timings(); ++ rfbi_enable_clocks(0); ++} ++ ++static int ps_to_rfbi_ticks(int time, int div) ++{ ++ unsigned long tick_ps; ++ int ret; ++ ++ /* Calculate in picosecs to yield more exact results */ ++ tick_ps = 1000000000 / (rfbi.l4_khz) * div; ++ ++ ret = (time + tick_ps - 1) / tick_ps; ++ ++ return ret; ++} ++ ++#ifdef OMAP_RFBI_RATE_LIMIT ++unsigned long rfbi_get_max_tx_rate(void) ++{ ++ unsigned long l4_rate, dss1_rate; ++ int min_l4_ticks = 0; ++ int i; ++ ++ /* According to TI this can't be calculated so make the ++ * adjustments for a couple of known frequencies and warn for ++ * others. ++ */ ++ static const struct { ++ unsigned long l4_clk; /* HZ */ ++ unsigned long dss1_clk; /* HZ */ ++ unsigned long min_l4_ticks; ++ } ftab[] = { ++ { 55, 132, 7, }, /* 7.86 MPix/s */ ++ { 110, 110, 12, }, /* 9.16 MPix/s */ ++ { 110, 132, 10, }, /* 11 Mpix/s */ ++ { 120, 120, 10, }, /* 12 Mpix/s */ ++ { 133, 133, 10, }, /* 13.3 Mpix/s */ ++ }; ++ ++ l4_rate = rfbi.l4_khz / 1000; ++ dss1_rate = clk_get_rate(rfbi.dss1_fck) / 1000000; ++ ++ for (i = 0; i < ARRAY_SIZE(ftab); i++) { ++ /* Use a window instead of an exact match, to account ++ * for different DPLL multiplier / divider pairs. ++ */ ++ if (abs(ftab[i].l4_clk - l4_rate) < 3 && ++ abs(ftab[i].dss1_clk - dss1_rate) < 3) { ++ min_l4_ticks = ftab[i].min_l4_ticks; ++ break; ++ } ++ } ++ if (i == ARRAY_SIZE(ftab)) { ++ /* Can't be sure, return anyway the maximum not ++ * rate-limited. This might cause a problem only for the ++ * tearing synchronisation. ++ */ ++ DSSERR("can't determine maximum RFBI transfer rate\n"); ++ return rfbi.l4_khz * 1000; ++ } ++ return rfbi.l4_khz * 1000 / min_l4_ticks; ++} ++#else ++int rfbi_get_max_tx_rate(void) ++{ ++ return rfbi.l4_khz * 1000; ++} ++#endif ++ ++static void rfbi_get_clk_info(u32 *clk_period, u32 *max_clk_div) ++{ ++ *clk_period = 1000000000 / rfbi.l4_khz; ++ *max_clk_div = 2; ++} ++ ++static int rfbi_convert_timings(struct rfbi_timings *t) ++{ ++ u32 l; ++ int reon, reoff, weon, weoff, cson, csoff, cs_pulse; ++ int actim, recyc, wecyc; ++ int div = t->clk_div; ++ ++ if (div <= 0 || div > 2) ++ return -1; ++ ++ /* Make sure that after conversion it still holds that: ++ * weoff > weon, reoff > reon, recyc >= reoff, wecyc >= weoff, ++ * csoff > cson, csoff >= max(weoff, reoff), actim > reon ++ */ ++ weon = ps_to_rfbi_ticks(t->we_on_time, div); ++ weoff = ps_to_rfbi_ticks(t->we_off_time, div); ++ if (weoff <= weon) ++ weoff = weon + 1; ++ if (weon > 0x0f) ++ return -1; ++ if (weoff > 0x3f) ++ return -1; ++ ++ reon = ps_to_rfbi_ticks(t->re_on_time, div); ++ reoff = ps_to_rfbi_ticks(t->re_off_time, div); ++ if (reoff <= reon) ++ reoff = reon + 1; ++ if (reon > 0x0f) ++ return -1; ++ if (reoff > 0x3f) ++ return -1; ++ ++ cson = ps_to_rfbi_ticks(t->cs_on_time, div); ++ csoff = ps_to_rfbi_ticks(t->cs_off_time, div); ++ if (csoff <= cson) ++ csoff = cson + 1; ++ if (csoff < max(weoff, reoff)) ++ csoff = max(weoff, reoff); ++ if (cson > 0x0f) ++ return -1; ++ if (csoff > 0x3f) ++ return -1; ++ ++ l = cson; ++ l |= csoff << 4; ++ l |= weon << 10; ++ l |= weoff << 14; ++ l |= reon << 20; ++ l |= reoff << 24; ++ ++ t->tim[0] = l; ++ ++ actim = ps_to_rfbi_ticks(t->access_time, div); ++ if (actim <= reon) ++ actim = reon + 1; ++ if (actim > 0x3f) ++ return -1; ++ ++ wecyc = ps_to_rfbi_ticks(t->we_cycle_time, div); ++ if (wecyc < weoff) ++ wecyc = weoff; ++ if (wecyc > 0x3f) ++ return -1; ++ ++ recyc = ps_to_rfbi_ticks(t->re_cycle_time, div); ++ if (recyc < reoff) ++ recyc = reoff; ++ if (recyc > 0x3f) ++ return -1; ++ ++ cs_pulse = ps_to_rfbi_ticks(t->cs_pulse_width, div); ++ if (cs_pulse > 0x3f) ++ return -1; ++ ++ l = wecyc; ++ l |= recyc << 6; ++ l |= cs_pulse << 12; ++ l |= actim << 22; ++ ++ t->tim[1] = l; ++ ++ t->tim[2] = div - 1; ++ ++ t->converted = 1; ++ ++ return 0; ++} ++ ++/* xxx FIX module selection missing */ ++int omap_rfbi_setup_te(enum omap_rfbi_te_mode mode, ++ unsigned hs_pulse_time, unsigned vs_pulse_time, ++ int hs_pol_inv, int vs_pol_inv, int extif_div) ++{ ++ int hs, vs; ++ int min; ++ u32 l; ++ ++ hs = ps_to_rfbi_ticks(hs_pulse_time, 1); ++ vs = ps_to_rfbi_ticks(vs_pulse_time, 1); ++ if (hs < 2) ++ return -EDOM; ++ if (mode == OMAP_DSS_RFBI_TE_MODE_2) ++ min = 2; ++ else /* OMAP_DSS_RFBI_TE_MODE_1 */ ++ min = 4; ++ if (vs < min) ++ return -EDOM; ++ if (vs == hs) ++ return -EINVAL; ++ rfbi.te_mode = mode; ++ DSSDBG("setup_te: mode %d hs %d vs %d hs_inv %d vs_inv %d\n", ++ mode, hs, vs, hs_pol_inv, vs_pol_inv); ++ ++ rfbi_enable_clocks(1); ++ rfbi_write_reg(RFBI_HSYNC_WIDTH, hs); ++ rfbi_write_reg(RFBI_VSYNC_WIDTH, vs); ++ ++ l = rfbi_read_reg(RFBI_CONFIG(0)); ++ if (hs_pol_inv) ++ l &= ~(1 << 21); ++ else ++ l |= 1 << 21; ++ if (vs_pol_inv) ++ l &= ~(1 << 20); ++ else ++ l |= 1 << 20; ++ rfbi_enable_clocks(0); ++ ++ return 0; ++} ++EXPORT_SYMBOL(omap_rfbi_setup_te); ++ ++/* xxx FIX module selection missing */ ++int omap_rfbi_enable_te(int enable, unsigned line) ++{ ++ u32 l; ++ ++ DSSDBG("te %d line %d mode %d\n", enable, line, rfbi.te_mode); ++ if (line > (1 << 11) - 1) ++ return -EINVAL; ++ ++ rfbi_enable_clocks(1); ++ l = rfbi_read_reg(RFBI_CONFIG(0)); ++ l &= ~(0x3 << 2); ++ if (enable) { ++ rfbi.te_enabled = 1; ++ l |= rfbi.te_mode << 2; ++ } else ++ rfbi.te_enabled = 0; ++ rfbi_write_reg(RFBI_CONFIG(0), l); ++ rfbi_write_reg(RFBI_LINE_NUMBER, line); ++ rfbi_enable_clocks(0); ++ ++ return 0; ++} ++EXPORT_SYMBOL(omap_rfbi_enable_te); ++ ++#if 0 ++static void rfbi_enable_config(int enable1, int enable2) ++{ ++ u32 l; ++ int cs = 0; ++ ++ if (enable1) ++ cs |= 1<<0; ++ if (enable2) ++ cs |= 1<<1; ++ ++ rfbi_enable_clocks(1); ++ ++ l = rfbi_read_reg(RFBI_CONTROL); ++ ++ l = FLD_MOD(l, cs, 3, 2); ++ l = FLD_MOD(l, 0, 1, 1); ++ ++ rfbi_write_reg(RFBI_CONTROL, l); ++ ++ ++ l = rfbi_read_reg(RFBI_CONFIG(0)); ++ l = FLD_MOD(l, 0, 3, 2); /* TRIGGERMODE: ITE */ ++ /*l |= FLD_VAL(2, 8, 7); */ /* L4FORMAT, 2pix/L4 */ ++ /*l |= FLD_VAL(0, 8, 7); */ /* L4FORMAT, 1pix/L4 */ ++ ++ l = FLD_MOD(l, 0, 16, 16); /* A0POLARITY */ ++ l = FLD_MOD(l, 1, 20, 20); /* TE_VSYNC_POLARITY */ ++ l = FLD_MOD(l, 1, 21, 21); /* HSYNCPOLARITY */ ++ ++ l = FLD_MOD(l, OMAP_DSS_RFBI_PARALLELMODE_8, 1, 0); ++ rfbi_write_reg(RFBI_CONFIG(0), l); ++ ++ rfbi_enable_clocks(0); ++} ++#endif ++ ++int rfbi_configure(int rfbi_module, int bpp, int lines) ++{ ++ u32 l; ++ int cycle1 = 0, cycle2 = 0, cycle3 = 0; ++ enum omap_rfbi_cycleformat cycleformat; ++ enum omap_rfbi_datatype datatype; ++ enum omap_rfbi_parallelmode parallelmode; ++ ++ switch (bpp) { ++ case 12: ++ datatype = OMAP_DSS_RFBI_DATATYPE_12; ++ break; ++ case 16: ++ datatype = OMAP_DSS_RFBI_DATATYPE_16; ++ break; ++ case 18: ++ datatype = OMAP_DSS_RFBI_DATATYPE_18; ++ break; ++ case 24: ++ datatype = OMAP_DSS_RFBI_DATATYPE_24; ++ break; ++ default: ++ BUG(); ++ return 1; ++ } ++ rfbi.datatype = datatype; ++ ++ switch (lines) { ++ case 8: ++ parallelmode = OMAP_DSS_RFBI_PARALLELMODE_8; ++ break; ++ case 9: ++ parallelmode = OMAP_DSS_RFBI_PARALLELMODE_9; ++ break; ++ case 12: ++ parallelmode = OMAP_DSS_RFBI_PARALLELMODE_12; ++ break; ++ case 16: ++ parallelmode = OMAP_DSS_RFBI_PARALLELMODE_16; ++ break; ++ default: ++ BUG(); ++ return 1; + } -+#endif -+ if (cpu_is_omap34xx()) { -+#ifdef CONFIG_OMAP2_DSS_SDI -+ r = sdi_init(); -+ if (r) { -+ DSSERR("Failed to initialize SDI\n"); -+ goto fail0; ++ rfbi.parallelmode = parallelmode; ++ ++ if ((bpp % lines) == 0) { ++ switch (bpp / lines) { ++ case 1: ++ cycleformat = OMAP_DSS_RFBI_CYCLEFORMAT_1_1; ++ break; ++ case 2: ++ cycleformat = OMAP_DSS_RFBI_CYCLEFORMAT_2_1; ++ break; ++ case 3: ++ cycleformat = OMAP_DSS_RFBI_CYCLEFORMAT_3_1; ++ break; ++ default: ++ BUG(); ++ return 1; + } -+#endif -+#ifdef CONFIG_OMAP2_DSS_DSI -+ r = dsi_init(); -+ if (r) { -+ DSSERR("Failed to initialize DSI\n"); -+ goto fail0; ++ } else if ((2 * bpp % lines) == 0) { ++ if ((2 * bpp / lines) == 3) ++ cycleformat = OMAP_DSS_RFBI_CYCLEFORMAT_3_2; ++ else { ++ BUG(); ++ return 1; + } -+#endif ++ } else { ++ BUG(); ++ return 1; + } + -+ initialize_displays(pdata); ++ switch (cycleformat) { ++ case OMAP_DSS_RFBI_CYCLEFORMAT_1_1: ++ cycle1 = lines; ++ break; + -+ r = initialize_sysfs(&pdev->dev); -+ if (r) -+ goto fail0; ++ case OMAP_DSS_RFBI_CYCLEFORMAT_2_1: ++ cycle1 = lines; ++ cycle2 = lines; ++ break; + -+ initialize_overlays(); ++ case OMAP_DSS_RFBI_CYCLEFORMAT_3_1: ++ cycle1 = lines; ++ cycle2 = lines; ++ cycle3 = lines; ++ break; ++ ++ case OMAP_DSS_RFBI_CYCLEFORMAT_3_2: ++ cycle1 = lines; ++ cycle2 = (lines / 2) | ((lines / 2) << 16); ++ cycle3 = (lines << 16); ++ break; ++ } ++ ++ rfbi_enable_clocks(1); ++ ++ REG_FLD_MOD(RFBI_CONTROL, 0, 3, 2); /* clear CS */ ++ ++ l = 0; ++ l |= FLD_VAL(parallelmode, 1, 0); ++ l |= FLD_VAL(0, 3, 2); /* TRIGGERMODE: ITE */ ++ l |= FLD_VAL(0, 4, 4); /* TIMEGRANULARITY */ ++ l |= FLD_VAL(datatype, 6, 5); ++ /* l |= FLD_VAL(2, 8, 7); */ /* L4FORMAT, 2pix/L4 */ ++ l |= FLD_VAL(0, 8, 7); /* L4FORMAT, 1pix/L4 */ ++ l |= FLD_VAL(cycleformat, 10, 9); ++ l |= FLD_VAL(0, 12, 11); /* UNUSEDBITS */ ++ l |= FLD_VAL(0, 16, 16); /* A0POLARITY */ ++ l |= FLD_VAL(0, 17, 17); /* REPOLARITY */ ++ l |= FLD_VAL(0, 18, 18); /* WEPOLARITY */ ++ l |= FLD_VAL(0, 19, 19); /* CSPOLARITY */ ++ l |= FLD_VAL(1, 20, 20); /* TE_VSYNC_POLARITY */ ++ l |= FLD_VAL(1, 21, 21); /* HSYNCPOLARITY */ ++ rfbi_write_reg(RFBI_CONFIG(rfbi_module), l); ++ ++ rfbi_write_reg(RFBI_DATA_CYCLE1(rfbi_module), cycle1); ++ rfbi_write_reg(RFBI_DATA_CYCLE2(rfbi_module), cycle2); ++ rfbi_write_reg(RFBI_DATA_CYCLE3(rfbi_module), cycle3); ++ ++ ++ l = rfbi_read_reg(RFBI_CONTROL); ++ l = FLD_MOD(l, rfbi_module+1, 3, 2); /* Select CSx */ ++ l = FLD_MOD(l, 0, 1, 1); /* clear bypass */ ++ rfbi_write_reg(RFBI_CONTROL, l); ++ ++ ++ DSSDBG("RFBI config: bpp %d, lines %d, cycles: 0x%x 0x%x 0x%x\n", ++ bpp, lines, cycle1, cycle2, cycle3); ++ ++ rfbi_enable_clocks(0); + + return 0; ++} + -+fail0: -+ return r; ++static int rfbi_find_display(struct omap_display *disp) ++{ ++ if (disp == rfbi.display[0]) ++ return 0; ++ ++ if (disp == rfbi.display[1]) ++ return 1; ++ ++ BUG(); ++ return -1; +} + -+static int omap_dss_remove(struct platform_device *pdev) ++ ++static void signal_fifo_waiters(void) +{ -+ uninitialize_sysfs(&pdev->dev); ++ if (atomic_read(&rfbi.cmd_fifo_full) > 0) { ++ /* DSSDBG("SIGNALING: Fifo not full for waiter!\n"); */ ++ complete(&rfbi.cmd_done); ++ atomic_dec(&rfbi.cmd_fifo_full); ++ } ++} + -+#ifdef CONFIG_OMAP2_DSS_VENC -+ venc_exit(); -+#endif -+ dispc_exit(); -+ dpi_exit(); -+#ifdef CONFIG_OMAP2_DSS_RFBI -+ rfbi_exit(); ++/* returns 1 for async op, and 0 for sync op */ ++static int do_update(struct omap_display *display, struct update_region *upd) ++{ ++ int x = upd->x; ++ int y = upd->y; ++ int w = upd->w; ++ int h = upd->h; ++ ++ if (display->manager->caps & OMAP_DSS_OVL_MGR_CAP_DISPC) { ++ /*display->ctrl->enable_te(display, 1); */ ++ ++ dispc_setup_partial_planes(display, &x, &y, &w, &h); ++ ++ display->ctrl->setup_update(display, x, y, w, h); ++ ++ rfbi_transfer_area(w, h, NULL, NULL); ++ ++ return 1; ++ } else { ++ struct omap_overlay *ovl; ++ void *addr; ++ int scr_width; ++#ifdef MEASURE_PERF ++ ktime_t t1, t2; +#endif -+ if (cpu_is_omap34xx()) { -+#ifdef CONFIG_OMAP2_DSS_DSI -+ dsi_exit(); ++ ovl = &display->manager->overlays[0]; ++ scr_width = ovl->info.screen_width; ++ addr = ovl->info.vaddr; ++ ++ display->ctrl->setup_update(display, x, y, w, h); ++ ++#ifdef MEASURE_PERF ++ t1 = ktime_get(); +#endif -+#ifdef CONFIG_OMAP2_DSS_SDI -+ sdi_exit(); ++ omap_rfbi_write_pixels(addr, scr_width, ++ x, y, w, h); ++#ifdef MEASURE_PERF ++ t2 = ktime_get(); ++ t1 = ktime_sub(t2, t1); ++ DSSDBG("L4 FRAMEDONE in %lld ns\n", ++ ktime_to_ns(t1)); +#endif ++ return 0; + } ++} + -+ dss_exit(); ++static void process_cmd_fifo(void) ++{ ++ int len; ++ struct update_param p; ++ struct omap_display *display; ++ unsigned long flags; + -+ return 0; -+} ++ if (atomic_inc_return(&rfbi.cmd_pending) != 1) ++ return; + ++ while (true) { ++ spin_lock_irqsave(rfbi.cmd_fifo->lock, flags); + -+static struct platform_driver omap_dss_driver = { -+ .probe = omap_dss_probe, -+ .remove = omap_dss_remove, -+ .driver = { -+ .name = "omap-dss", -+ .owner = THIS_MODULE, -+ }, -+}; ++ len = __kfifo_get(rfbi.cmd_fifo, (unsigned char *)&p, ++ sizeof(struct update_param)); ++ if (len == 0) { ++ DSSDBG("nothing more in fifo\n"); ++ atomic_set(&rfbi.cmd_pending, 0); ++ spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); ++ break; ++ } + -+static int __init omap_dss_init(void) ++ /* DSSDBG("fifo full %d\n", rfbi.cmd_fifo_full.counter);*/ ++ ++ spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); ++ ++ BUG_ON(len != sizeof(struct update_param)); ++ BUG_ON(p.rfbi_module > 1); ++ ++ display = rfbi.display[p.rfbi_module]; ++ ++ if (p.cmd == RFBI_CMD_UPDATE) { ++ if (do_update(display, &p.par.r)) ++ break; /* async op */ ++ } else if (p.cmd == RFBI_CMD_SYNC) { ++ DSSDBG("Signaling SYNC done!\n"); ++ complete(p.par.sync); ++ } else ++ BUG(); ++ } ++ ++ signal_fifo_waiters(); ++} ++ ++static void rfbi_push_cmd(struct update_param *p) +{ -+ return platform_driver_register(&omap_dss_driver); ++ int ret; ++ ++ while (1) { ++ unsigned long flags; ++ int available; ++ ++ spin_lock_irqsave(rfbi.cmd_fifo->lock, flags); ++ available = RFBI_CMD_FIFO_LEN_BYTES - ++ __kfifo_len(rfbi.cmd_fifo); ++ ++/* DSSDBG("%d bytes left in fifo\n", available); */ ++ if (available < sizeof(struct update_param)) { ++ DSSDBG("Going to wait because FIFO FULL..\n"); ++ spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); ++ atomic_inc(&rfbi.cmd_fifo_full); ++ wait_for_completion(&rfbi.cmd_done); ++ /*DSSDBG("Woke up because fifo not full anymore\n");*/ ++ continue; ++ } ++ ++ ret = __kfifo_put(rfbi.cmd_fifo, (unsigned char *)p, ++ sizeof(struct update_param)); ++/* DSSDBG("pushed %d bytes\n", ret);*/ ++ ++ spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); ++ ++ BUG_ON(ret != sizeof(struct update_param)); ++ ++ break; ++ } +} + -+static void __exit omap_dss_exit(void) ++static void rfbi_push_update(int rfbi_module, int x, int y, int w, int h) +{ -+ platform_driver_unregister(&omap_dss_driver); ++ struct update_param p; ++ ++ p.rfbi_module = rfbi_module; ++ p.cmd = RFBI_CMD_UPDATE; ++ ++ p.par.r.x = x; ++ p.par.r.y = y; ++ p.par.r.w = w; ++ p.par.r.h = h; ++ ++ DSSDBG("RFBI pushed %d,%d %dx%d\n", x, y, w, h); ++ ++ rfbi_push_cmd(&p); ++ ++ process_cmd_fifo(); +} + -+subsys_initcall(omap_dss_init); -+module_exit(omap_dss_exit); ++static void rfbi_push_sync(int rfbi_module, struct completion *sync_comp) ++{ ++ struct update_param p; + ++ p.rfbi_module = rfbi_module; ++ p.cmd = RFBI_CMD_SYNC; ++ p.par.sync = sync_comp; + -+MODULE_AUTHOR("Tomi Valkeinen "); -+MODULE_DESCRIPTION("OMAP2/3 Display Subsystem"); -+MODULE_LICENSE("GPL v2"); ++ rfbi_push_cmd(&p); + -diff --git a/arch/arm/plat-omap/dss/dss.h b/arch/arm/plat-omap/dss/dss.h -new file mode 100644 -index 0000000..4df7f67 ---- /dev/null -+++ b/arch/arm/plat-omap/dss/dss.h -@@ -0,0 +1,240 @@ -+/* -+ * linux/arch/arm/plat-omap/dss/dss.h -+ * -+ * Copyright (C) 2008 Nokia Corporation -+ * Author: Tomi Valkeinen -+ * -+ * Some code and ideas taken from drivers/video/omap/ driver -+ * by Imre Deak. -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ * 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 . -+ */ ++ DSSDBG("RFBI sync pushed to cmd fifo\n"); + -+#ifndef __OMAP2_DSS_H -+#define __OMAP2_DSS_H ++ process_cmd_fifo(); ++} + -+#ifdef CONFIG_OMAP2_DSS_DEBUG -+#define DEBUG -+#endif ++int rfbi_init(void) ++{ ++ u32 rev; ++ u32 l; + -+#ifdef DEBUG -+#ifdef DSS_SUBSYS_NAME -+#define DSSDBG(format, ...) \ -+ printk(KERN_DEBUG "omap-dss " DSS_SUBSYS_NAME ": " format, \ -+ ## __VA_ARGS__) -+#else -+#define DSSDBG(format, ...) \ -+ printk(KERN_DEBUG "omap-dss: " format, ## __VA_ARGS__) -+#endif -+#else -+#define DSSDBG(format, ...) -+#endif ++ spin_lock_init(&rfbi.cmd_lock); ++ rfbi.cmd_fifo = kfifo_alloc(RFBI_CMD_FIFO_LEN_BYTES, GFP_KERNEL, ++ &rfbi.cmd_lock); ++ if (IS_ERR(rfbi.cmd_fifo)) ++ return -ENOMEM; + -+#ifdef DSS_SUBSYS_NAME -+#define DSSERR(format, ...) \ -+ printk(KERN_ERR "omap-dss " DSS_SUBSYS_NAME " error: " format, \ -+ ## __VA_ARGS__) -+#else -+#define DSSERR(format, ...) \ -+ printk(KERN_ERR "omap-dss error: " format, ## __VA_ARGS__) -+#endif ++ init_completion(&rfbi.cmd_done); ++ atomic_set(&rfbi.cmd_fifo_full, 0); ++ atomic_set(&rfbi.cmd_pending, 0); + -+#ifdef DSS_SUBSYS_NAME -+#define DSSINFO(format, ...) \ -+ printk(KERN_INFO "omap-dss " DSS_SUBSYS_NAME ": " format, \ -+ ## __VA_ARGS__) -+#else -+#define DSSINFO(format, ...) \ -+ printk(KERN_INFO "omap-dss: " format, ## __VA_ARGS__) -+#endif ++ rfbi.base = ioremap(RFBI_BASE, SZ_256); ++ if (!rfbi.base) { ++ DSSERR("can't ioremap RFBI\n"); ++ return -ENOMEM; ++ } + -+#ifdef DSS_SUBSYS_NAME -+#define DSSWARN(format, ...) \ -+ printk(KERN_WARNING "omap-dss " DSS_SUBSYS_NAME ": " format, \ -+ ## __VA_ARGS__) -+#else -+#define DSSWARN(format, ...) \ -+ printk(KERN_WARNING "omap-dss: " format, ## __VA_ARGS__) -+#endif ++ rfbi.dss_ick = get_dss_ick(); ++ rfbi.dss1_fck = get_dss1_fck(); + -+/* OMAP TRM gives bitfields as start:end, where start is the higher bit -+ number. For example 7:0 */ -+#define FLD_MASK(start, end) (((1 << (start - end + 1)) - 1) << (end)) -+#define FLD_VAL(val, start, end) (((val) << end) & FLD_MASK(start, end)) -+#define FLD_GET(val, start, end) (((val) & FLD_MASK(start, end)) >> (end)) -+#define FLD_MOD(orig, val, start, end) \ -+ (((orig) & ~FLD_MASK(start, end)) | FLD_VAL(val, start, end)) ++ rfbi_enable_clocks(1); + -+#define DISPC_MAX_FCK 173000000 ++ msleep(10); + -+enum omap_burst_size { -+ OMAP_DSS_BURST_4x32 = 0, -+ OMAP_DSS_BURST_8x32 = 1, -+ OMAP_DSS_BURST_16x32 = 2, -+}; ++ rfbi.l4_khz = clk_get_rate(rfbi.dss_ick) / 1000; + -+enum omap_parallel_interface_mode { -+ OMAP_DSS_PARALLELMODE_BYPASS, /* MIPI DPI */ -+ OMAP_DSS_PARALLELMODE_RFBI, /* MIPI DBI */ -+ OMAP_DSS_PARALLELMODE_DSI, -+}; ++ /* Enable autoidle and smart-idle */ ++ l = rfbi_read_reg(RFBI_SYSCONFIG); ++ l |= (1 << 0) | (2 << 3); ++ rfbi_write_reg(RFBI_SYSCONFIG, l); + -+int initialize_sysfs(struct device *dev); -+void uninitialize_sysfs(struct device *dev); -+void initialize_displays(struct omap_dss_platform_data *pdata); -+void initialize_overlays(void); ++ rev = rfbi_read_reg(RFBI_REVISION); ++ printk(KERN_INFO "OMAP RFBI rev %d.%d\n", ++ FLD_GET(rev, 7, 4), FLD_GET(rev, 3, 0)); + -+/* DSS */ -+int dss_init(void); -+void dss_exit(void); ++ rfbi_enable_clocks(0); + -+void dss_sdi_init(int datapairs); -+void dss_select_clk_source(int dsi, int dispc); -+int dss_get_dsi_clk_source(void); -+int dss_get_dispc_clk_source(void); -+void dss_set_venc_output(enum omap_dss_venc_type type); -+void dss_set_dac_pwrdn_bgz(int enable); ++ return 0; ++} + -+struct clk *get_dss_ick(void); -+struct clk *get_dss1_fck(void); -+struct clk *get_dss2_fck(void); -+struct clk *get_tv_fck(void); -+struct clk *get_96m_fck(void); ++void rfbi_exit(void) ++{ ++ DSSDBG("rfbi_exit\n"); ++ ++ kfifo_free(rfbi.cmd_fifo); ++ ++ iounmap(rfbi.base); ++} ++ ++/* struct omap_display support */ ++static void rfbi_display_set_mode(struct omap_display *display, ++ int x_res, int y_res, int bpp) ++{ ++ display->bpp = bpp; + -+/* SDI */ -+int sdi_init(void); -+void sdi_exit(void); -+void sdi_init_display(struct omap_display *display); ++ dispc_set_tft_data_lines(display->bpp); + ++ if (rfbi_configure(display->hw_config.u.rfbi.channel, ++ display->bpp, ++ display->hw_config.u.rfbi.data_lines) != 0) { ++ DSSERR("can't configure rfbi\n"); ++ } + -+/* DSI */ -+struct dsi_clock_info { -+ /* rates that we get with dividers below */ -+ unsigned long fint; -+ unsigned long dsiphy; -+ unsigned long clkin; /* input clk for DSI PLL */ -+ unsigned long dispc_fck; /* output clk, DSI1_PLL_FCLK */ -+ unsigned long dsi_fck; /* output clk, DSI2_PLL_FCLK */ -+ unsigned long pck; /* dispc pixel clock */ ++ display->ctrl->set_mode(display, x_res, y_res, bpp); ++} + -+ /* dividers */ -+ int regn; -+ int regm; -+ int regm3; -+ int regm4; + -+ int lck_div; -+ int pck_div; ++static int rfbi_display_update(struct omap_display *display, ++ int x, int y, int w, int h) ++{ ++ int rfbi_module; + -+ int highfreq; -+ int use_dss2_fck; -+}; ++ if (w == 0 || h == 0) ++ return 0; + -+int dsi_init(void); -+void dsi_exit(void); -+void dsi_init_display(struct omap_display *display); -+void dsi_irq_handler(void); -+unsigned long dsi_get_dsi1_pll_rate(void); -+unsigned long dsi_get_dsi2_pll_rate(void); -+int dsi_pll_calc_pck(int is_tft, unsigned long pck, -+ struct dsi_clock_info *cinfo); -+int dsi_pll_program(struct dsi_clock_info *cinfo); -+int dsi_pll_init(int enable_hsclk, int enable_hsdiv); -+void dsi_pll_uninit(void); -+ssize_t dsi_print_clocks(char *buf, ssize_t size); ++ rfbi_module = rfbi_find_display(display); + -+/* DPI */ -+int dpi_init(void); -+void dpi_exit(void); -+void dpi_init_display(struct omap_display *display); ++ rfbi_push_update(rfbi_module, x, y, w, h); + -+/* DISPC */ -+int dispc_init(void); -+void dispc_exit(void); -+void dispc_irq_handler(void); -+void dispc_fake_vsync_irq(void); ++ return 0; ++} + -+void dispc_lcd_enable_signal_polarity(int act_high); -+void dispc_lcd_enable_signal(int enable); -+void dispc_pck_free_enable(int enable); -+void dispc_enable_fifohandcheck(int enable); ++static int rfbi_display_sync(struct omap_display *display) ++{ ++ struct completion sync_comp; ++ int rfbi_module; + -+void dispc_set_lcd_size(int width, int height); -+void dispc_set_digit_size(int width, int height); -+void dispc_setup_plane_fifo(enum omap_plane plane, int ext_mode); ++ rfbi_module = rfbi_find_display(display); + -+void dispc_set_plane_ba0(enum omap_plane plane, u32 paddr); -+void dispc_set_plane_ba1(enum omap_plane plane, u32 paddr); -+void dispc_set_plane_pos(enum omap_plane plane, int x, int y); -+void dispc_set_plane_size(enum omap_plane plane, int width, int height); -+void dispc_set_row_inc(enum omap_plane plane, int inc); ++ init_completion(&sync_comp); ++ rfbi_push_sync(rfbi_module, &sync_comp); ++ DSSDBG("Waiting for SYNC to happen...\n"); ++ wait_for_completion(&sync_comp); ++ DSSDBG("Released from SYNC\n"); ++ return 0; ++} + -+int dispc_setup_plane(enum omap_plane plane, enum omap_channel channel_out, -+ u32 paddr, int screen_width, -+ int pos_x, int pos_y, -+ int width, int height, -+ int out_width, int out_height, -+ enum omap_color_mode color_mode, -+ int ilace); ++static int rfbi_display_enable_te(struct omap_display *display, int enable) ++{ ++ display->ctrl->enable_te(display, enable); ++ return 0; ++} + -+void dispc_go(enum omap_channel channel); -+void dispc_enable_lcd_out(int enable); -+void dispc_enable_digit_out(int enable); -+int dispc_enable_plane(enum omap_plane plane, int enable); ++static int rfbi_display_enable(struct omap_display *display) ++{ ++ int r; + -+void dispc_set_parallel_interface_mode(enum omap_parallel_interface_mode mode); -+void dispc_set_tft_data_lines(int data_lines); -+void dispc_set_lcd_display_type(enum omap_lcd_display_type type); -+void dispc_set_loadmode(enum omap_dss_load_mode mode); ++ BUG_ON(display->panel == NULL || display->ctrl == NULL); + -+void dispc_set_default_color(enum omap_channel channel, u32 color); -+void dispc_set_trans_key(enum omap_channel ch, -+ enum omap_dss_color_key_type type, -+ u32 trans_key); -+void dispc_enable_trans_key(enum omap_channel ch, int enable); ++ r = omap_dispc_register_isr(framedone_callback, NULL, ++ DISPC_IRQ_FRAMEDONE); ++ if (r) { ++ DSSERR("can't get FRAMEDONE irq\n"); ++ return r; ++ } + -+void dispc_set_lcd_timings(struct omap_video_timings *timings); -+unsigned long dispc_fclk_rate(void); -+unsigned long dispc_pclk_rate(void); -+void dispc_set_pol_freq(struct omap_panel *panel); -+unsigned long dispc_calc_clock_div(int is_tft, int pck, int *fck_div, -+ int *lck_div, int *pck_div); -+void dispc_set_clock_div(int fck_div, int lck_div, int pck_div); -+void dispc_set_lcd_divisor(int lck_div, int pck_div); -+int dispc_pixel_clock_valid(int pixel_clock); ++ dispc_set_lcd_display_type(OMAP_DSS_LCD_DISPLAY_TFT); + -+void dispc_setup_partial_planes(struct omap_display *display, -+ int *x, int *y, int *w, int *h); -+void dispc_draw_partial_planes(struct omap_display *display); ++ dispc_set_parallel_interface_mode(OMAP_DSS_PARALLELMODE_RFBI); + ++ /* FIX select 16bpp as default */ ++ rfbi_configure(display->hw_config.u.rfbi.channel, ++ 16, ++ display->hw_config.u.rfbi.data_lines); + -+ssize_t dispc_print_clocks(char *buf, ssize_t size); ++ rfbi_set_timings(display->hw_config.u.rfbi.channel, ++ &display->ctrl->timings); + -+/* VENC */ -+int venc_init(void); -+void venc_exit(void); -+void venc_init_display(struct omap_display *display); ++ display->ctrl->enable(display); + -+/* RFBI */ -+int rfbi_init(void); -+void rfbi_exit(void); ++ return 0; ++} + -+int rfbi_configure(int rfbi_module, int bpp, int lines); -+void rfbi_enable_rfbi(int enable); -+void rfbi_transfer_area(int width, int height, -+ void (callback)(void *data), void *data); -+void rfbi_set_timings(int rfbi_module, struct rfbi_timings *t); -+unsigned long rfbi_get_max_tx_rate(void); -+void rfbi_init_display(struct omap_display *display); ++static void rfbi_display_disable(struct omap_display *display) ++{ ++ display->ctrl->disable(display); ++ omap_dispc_unregister_isr(framedone_callback); ++} + -+#endif ++void rfbi_init_display(struct omap_display *display) ++{ ++ display->enable = rfbi_display_enable; ++ display->disable = rfbi_display_disable; ++ display->set_mode = rfbi_display_set_mode; ++ display->update = rfbi_display_update; ++ display->sync = rfbi_display_sync; ++ display->enable_te = rfbi_display_enable_te; ++ ++ rfbi.display[display->hw_config.u.rfbi.channel] = display; ++ ++ display->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE; ++} diff --git a/arch/arm/plat-omap/dss/sdi.c b/arch/arm/plat-omap/dss/sdi.c new file mode 100644 -index 0000000..3f114f2 +index 0000000..de19d47 --- /dev/null +++ b/arch/arm/plat-omap/dss/sdi.c -@@ -0,0 +1,154 @@ +@@ -0,0 +1,157 @@ +/* + * linux/arch/arm/plat-omap/dss/sdi.c + * @@ -3749,7 +8102,8 @@ index 0000000..3f114f2 + +static int sdi_display_enable(struct omap_display *display) +{ -+ int fck_div, lck_div, pck_div; ++ struct dispc_clock_info cinfo; ++ int lck_div, pck_div; + unsigned long fck; + + struct omap_panel *panel = display->panel; @@ -3769,15 +8123,17 @@ index 0000000..3f114f2 + dispc_set_lcd_timings(&panel->timings); + dispc_set_pol_freq(panel); + -+ fck = dispc_calc_clock_div(1, panel->timings.pixel_clock*1000, -+ &fck_div, &lck_div, &pck_div); ++ dispc_calc_clock_div(1, panel->timings.pixel_clock * 1000, ++ &cinfo); + -+ if (fck == 0) { -+ DSSERR("Requested pixel clock is not possible\n"); ++ if (dispc_set_clock_div(&cinfo)) { ++ DSSERR("Failed to set DSS clocks\n"); + return -EINVAL; + } + -+ dispc_set_clock_div(fck_div, lck_div, pck_div); ++ fck = cinfo.fck; ++ lck_div = cinfo.lck_div; ++ pck_div = cinfo.pck_div; + + panel->timings.pixel_clock = fck / lck_div / pck_div / 1000; + @@ -3864,9 +8220,530 @@ index 0000000..3f114f2 +void sdi_exit(void) +{ +} +diff --git a/arch/arm/plat-omap/dss/venc.c b/arch/arm/plat-omap/dss/venc.c +new file mode 100644 +index 0000000..2ed68b5 +--- /dev/null ++++ b/arch/arm/plat-omap/dss/venc.c +@@ -0,0 +1,515 @@ ++/* ++ * linux/arch/arm/plat-omap/dss/venc.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * VENC settings from TI's DSS driver ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#define DSS_SUBSYS_NAME "VENC" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "dss.h" ++ ++#define VENC_BASE 0x48050C00 ++ ++/* Venc registers */ ++#define VENC_REV_ID 0x00 ++#define VENC_STATUS 0x04 ++#define VENC_F_CONTROL 0x08 ++#define VENC_VIDOUT_CTRL 0x10 ++#define VENC_SYNC_CTRL 0x14 ++#define VENC_LLEN 0x1C ++#define VENC_FLENS 0x20 ++#define VENC_HFLTR_CTRL 0x24 ++#define VENC_CC_CARR_WSS_CARR 0x28 ++#define VENC_C_PHASE 0x2C ++#define VENC_GAIN_U 0x30 ++#define VENC_GAIN_V 0x34 ++#define VENC_GAIN_Y 0x38 ++#define VENC_BLACK_LEVEL 0x3C ++#define VENC_BLANK_LEVEL 0x40 ++#define VENC_X_COLOR 0x44 ++#define VENC_M_CONTROL 0x48 ++#define VENC_BSTAMP_WSS_DATA 0x4C ++#define VENC_S_CARR 0x50 ++#define VENC_LINE21 0x54 ++#define VENC_LN_SEL 0x58 ++#define VENC_L21__WC_CTL 0x5C ++#define VENC_HTRIGGER_VTRIGGER 0x60 ++#define VENC_SAVID__EAVID 0x64 ++#define VENC_FLEN__FAL 0x68 ++#define VENC_LAL__PHASE_RESET 0x6C ++#define VENC_HS_INT_START_STOP_X 0x70 ++#define VENC_HS_EXT_START_STOP_X 0x74 ++#define VENC_VS_INT_START_X 0x78 ++#define VENC_VS_INT_STOP_X__VS_INT_START_Y 0x7C ++#define VENC_VS_INT_STOP_Y__VS_EXT_START_X 0x80 ++#define VENC_VS_EXT_STOP_X__VS_EXT_START_Y 0x84 ++#define VENC_VS_EXT_STOP_Y 0x88 ++#define VENC_AVID_START_STOP_X 0x90 ++#define VENC_AVID_START_STOP_Y 0x94 ++#define VENC_FID_INT_START_X__FID_INT_START_Y 0xA0 ++#define VENC_FID_INT_OFFSET_Y__FID_EXT_START_X 0xA4 ++#define VENC_FID_EXT_START_Y__FID_EXT_OFFSET_Y 0xA8 ++#define VENC_TVDETGP_INT_START_STOP_X 0xB0 ++#define VENC_TVDETGP_INT_START_STOP_Y 0xB4 ++#define VENC_GEN_CTRL 0xB8 ++#define VENC_OUTPUT_CONTROL 0xC4 ++#define VENC_DAC_B__DAC_C 0xC8 ++ ++struct venc_config { ++ u32 f_control; ++ u32 vidout_ctrl; ++ u32 sync_ctrl; ++ u32 llen; ++ u32 flens; ++ u32 hfltr_ctrl; ++ u32 cc_carr_wss_carr; ++ u32 c_phase; ++ u32 gain_u; ++ u32 gain_v; ++ u32 gain_y; ++ u32 black_level; ++ u32 blank_level; ++ u32 x_color; ++ u32 m_control; ++ u32 bstamp_wss_data; ++ u32 s_carr; ++ u32 line21; ++ u32 ln_sel; ++ u32 l21__wc_ctl; ++ u32 htrigger_vtrigger; ++ u32 savid__eavid; ++ u32 flen__fal; ++ u32 lal__phase_reset; ++ u32 hs_int_start_stop_x; ++ u32 hs_ext_start_stop_x; ++ u32 vs_int_start_x; ++ u32 vs_int_stop_x__vs_int_start_y; ++ u32 vs_int_stop_y__vs_ext_start_x; ++ u32 vs_ext_stop_x__vs_ext_start_y; ++ u32 vs_ext_stop_y; ++ u32 avid_start_stop_x; ++ u32 avid_start_stop_y; ++ u32 fid_int_start_x__fid_int_start_y; ++ u32 fid_int_offset_y__fid_ext_start_x; ++ u32 fid_ext_start_y__fid_ext_offset_y; ++ u32 tvdetgp_int_start_stop_x; ++ u32 tvdetgp_int_start_stop_y; ++ u32 gen_ctrl; ++ ++ int width; ++ int height; ++}; ++ ++/* from TRM */ ++static const struct venc_config venc_config_pal_trm = { ++ .f_control = 0, ++ .vidout_ctrl = 1, ++ .sync_ctrl = 0x40, ++ .llen = 0x35F, /* 863 */ ++ .flens = 0x270, /* 624 */ ++ .hfltr_ctrl = 0, ++ .cc_carr_wss_carr = 0x2F7225ED, ++ .c_phase = 0, ++ .gain_u = 0x111, ++ .gain_v = 0x181, ++ .gain_y = 0x140, ++ .black_level = 0x3B, ++ .blank_level = 0x3B, ++ .x_color = 0x7, ++ .m_control = 0x2, ++ .bstamp_wss_data = 0x3F, ++ .s_carr = 0x2A098ACB, ++ .line21 = 0, ++ .ln_sel = 0x01290015, ++ .l21__wc_ctl = 0x0000F603, ++ .htrigger_vtrigger = 0, ++ ++ .savid__eavid = 0x06A70108, ++ .flen__fal = 0x00180270, ++ .lal__phase_reset = 0x00180270, ++ .hs_int_start_stop_x = 0x00880358, ++ .hs_ext_start_stop_x = 0x000F035F, ++ .vs_int_start_x = 0x01A70000, ++ .vs_int_stop_x__vs_int_start_y = 0x000001A7, ++ .vs_int_stop_y__vs_ext_start_x = 0x01AF0000, ++ .vs_ext_stop_x__vs_ext_start_y = 0x000101AF, ++ .vs_ext_stop_y = 0x00000025, ++ .avid_start_stop_x = 0x03530083, ++ .avid_start_stop_y = 0x026C002E, ++ .fid_int_start_x__fid_int_start_y = 0x0001008A, ++ .fid_int_offset_y__fid_ext_start_x = 0x002E0138, ++ .fid_ext_start_y__fid_ext_offset_y = 0x01380001, ++ ++ .tvdetgp_int_start_stop_x = 0x00140001, ++ .tvdetgp_int_start_stop_y = 0x00010001, ++ .gen_ctrl = 0x00FF0000, ++ ++ .width = 720, ++ .height = 574, /* for some reason, this isn't 576 */ ++}; ++ ++/* from TRM */ ++static const struct venc_config venc_config_ntsc_trm = { ++ .f_control = 0, ++ .vidout_ctrl = 1, ++ .sync_ctrl = 0x8040, ++ .llen = 0x359, ++ .flens = 0x20C, ++ .hfltr_ctrl = 0, ++ .cc_carr_wss_carr = 0x043F2631, ++ .c_phase = 0, ++ .gain_u = 0x102, ++ .gain_v = 0x16C, ++ .gain_y = 0x12F, ++ .black_level = 0x43, ++ .blank_level = 0x38, ++ .x_color = 0x7, ++ .m_control = 0x1, ++ .bstamp_wss_data = 0x38, ++ .s_carr = 0x21F07C1F, ++ .line21 = 0, ++ .ln_sel = 0x01310011, ++ .l21__wc_ctl = 0x0000F003, ++ .htrigger_vtrigger = 0, ++ ++ .savid__eavid = 0x069300F4, ++ .flen__fal = 0x0016020C, ++ .lal__phase_reset = 0x00060107, ++ .hs_int_start_stop_x = 0x008E0350, ++ .hs_ext_start_stop_x = 0x000F0359, ++ .vs_int_start_x = 0x01A00000, ++ .vs_int_stop_x__vs_int_start_y = 0x020701A0, ++ .vs_int_stop_y__vs_ext_start_x = 0x01AC0024, ++ .vs_ext_stop_x__vs_ext_start_y = 0x020D01AC, ++ .vs_ext_stop_y = 0x00000006, ++ .avid_start_stop_x = 0x03480078, ++ .avid_start_stop_y = 0x02060024, ++ .fid_int_start_x__fid_int_start_y = 0x0001008A, ++ .fid_int_offset_y__fid_ext_start_x = 0x01AC0106, ++ .fid_ext_start_y__fid_ext_offset_y = 0x01060006, ++ ++ .tvdetgp_int_start_stop_x = 0x00140001, ++ .tvdetgp_int_start_stop_y = 0x00010001, ++ .gen_ctrl = 0x00F90000, ++ ++ .width = 720, ++ .height = 482, ++}; ++ ++static const struct venc_config venc_config_pal_bdghi = { ++ .f_control = 0, ++ .vidout_ctrl = 0, ++ .sync_ctrl = 0, ++ .hfltr_ctrl = 0, ++ .x_color = 0, ++ .line21 = 0, ++ .ln_sel = 21, ++ .htrigger_vtrigger = 0, ++ .tvdetgp_int_start_stop_x = 0x00140001, ++ .tvdetgp_int_start_stop_y = 0x00010001, ++ .gen_ctrl = 0x00FB0000, ++ ++ .llen = 864-1, ++ .flens = 625-1, ++ .cc_carr_wss_carr = 0x2F7625ED, ++ .c_phase = 0xDF, ++ .gain_u = 0x111, ++ .gain_v = 0x181, ++ .gain_y = 0x140, ++ .black_level = 0x3e, ++ .blank_level = 0x3e, ++ .m_control = 0<<2 | 1<<1, ++ .bstamp_wss_data = 0x42, ++ .s_carr = 0x2a098acb, ++ .l21__wc_ctl = 0<<13 | 0x16<<8 | 0<<0, ++ .savid__eavid = 0x06A70108, ++ .flen__fal = 23<<16 | 624<<0, ++ .lal__phase_reset = 2<<17 | 310<<0, ++ .hs_int_start_stop_x = 0x00920358, ++ .hs_ext_start_stop_x = 0x000F035F, ++ .vs_int_start_x = 0x1a7<<16, ++ .vs_int_stop_x__vs_int_start_y = 0x000601A7, ++ .vs_int_stop_y__vs_ext_start_x = 0x01AF0036, ++ .vs_ext_stop_x__vs_ext_start_y = 0x27101af, ++ .vs_ext_stop_y = 0x05, ++ .avid_start_stop_x = 0x03530082, ++ .avid_start_stop_y = 0x0270002E, ++ .fid_int_start_x__fid_int_start_y = 0x0005008A, ++ .fid_int_offset_y__fid_ext_start_x = 0x002E0138, ++ .fid_ext_start_y__fid_ext_offset_y = 0x01380005, ++ ++ .width = 720, ++ .height = 576, ++}; ++ ++static struct { ++ void __iomem *base; ++ struct clk *dss_54m_fck; ++ struct clk *dss_96m_fck; ++ struct clk *dss_ick; ++ struct clk *dss1_fck; ++ const struct venc_config *config; ++ struct mutex venc_lock; ++} venc; ++ ++static struct omap_panel venc_panel = { ++ .name = "tv-out", ++ .x_res = 0, ++ .y_res = 0, ++ .bpp = 24, ++}; ++ ++static inline void venc_write_reg(int idx, u32 val) ++{ ++ __raw_writel(val, venc.base + idx); ++} ++ ++static inline u32 venc_read_reg(int idx) ++{ ++ u32 l = __raw_readl(venc.base + idx); ++ return l; ++} ++ ++static void venc_write_config(const struct venc_config *config) ++{ ++ DSSDBG("write venc conf\n"); ++ ++ venc_write_reg(VENC_LLEN, config->llen); ++ venc_write_reg(VENC_FLENS, config->flens); ++ venc_write_reg(VENC_CC_CARR_WSS_CARR, config->cc_carr_wss_carr); ++ venc_write_reg(VENC_C_PHASE, config->c_phase); ++ venc_write_reg(VENC_GAIN_U, config->gain_u); ++ venc_write_reg(VENC_GAIN_V, config->gain_v); ++ venc_write_reg(VENC_GAIN_Y, config->gain_y); ++ venc_write_reg(VENC_BLACK_LEVEL, config->black_level); ++ venc_write_reg(VENC_BLANK_LEVEL, config->blank_level); ++ venc_write_reg(VENC_M_CONTROL, config->m_control); ++ venc_write_reg(VENC_BSTAMP_WSS_DATA, config->bstamp_wss_data); ++ venc_write_reg(VENC_S_CARR, config->s_carr); ++ venc_write_reg(VENC_L21__WC_CTL, config->l21__wc_ctl); ++ venc_write_reg(VENC_SAVID__EAVID, config->savid__eavid); ++ venc_write_reg(VENC_FLEN__FAL, config->flen__fal); ++ venc_write_reg(VENC_LAL__PHASE_RESET, config->lal__phase_reset); ++ venc_write_reg(VENC_HS_INT_START_STOP_X, config->hs_int_start_stop_x); ++ venc_write_reg(VENC_HS_EXT_START_STOP_X, config->hs_ext_start_stop_x); ++ venc_write_reg(VENC_VS_INT_START_X, config->vs_int_start_x); ++ venc_write_reg(VENC_VS_INT_STOP_X__VS_INT_START_Y, ++ config->vs_int_stop_x__vs_int_start_y); ++ venc_write_reg(VENC_VS_INT_STOP_Y__VS_EXT_START_X, ++ config->vs_int_stop_y__vs_ext_start_x); ++ venc_write_reg(VENC_VS_EXT_STOP_X__VS_EXT_START_Y, ++ config->vs_ext_stop_x__vs_ext_start_y); ++ venc_write_reg(VENC_VS_EXT_STOP_Y, config->vs_ext_stop_y); ++ venc_write_reg(VENC_AVID_START_STOP_X, config->avid_start_stop_x); ++ venc_write_reg(VENC_AVID_START_STOP_Y, config->avid_start_stop_y); ++ venc_write_reg(VENC_FID_INT_START_X__FID_INT_START_Y, ++ config->fid_int_start_x__fid_int_start_y); ++ venc_write_reg(VENC_FID_INT_OFFSET_Y__FID_EXT_START_X, ++ config->fid_int_offset_y__fid_ext_start_x); ++ venc_write_reg(VENC_FID_EXT_START_Y__FID_EXT_OFFSET_Y, ++ config->fid_ext_start_y__fid_ext_offset_y); ++ ++ venc_write_reg(VENC_DAC_B__DAC_C, venc_read_reg(VENC_DAC_B__DAC_C)); ++ venc_write_reg(VENC_VIDOUT_CTRL, config->vidout_ctrl); ++ venc_write_reg(VENC_HFLTR_CTRL, config->hfltr_ctrl); ++ venc_write_reg(VENC_X_COLOR, config->x_color); ++ venc_write_reg(VENC_LINE21, config->line21); ++ venc_write_reg(VENC_LN_SEL, config->ln_sel); ++ venc_write_reg(VENC_HTRIGGER_VTRIGGER, config->htrigger_vtrigger); ++ venc_write_reg(VENC_TVDETGP_INT_START_STOP_X, ++ config->tvdetgp_int_start_stop_x); ++ venc_write_reg(VENC_TVDETGP_INT_START_STOP_Y, ++ config->tvdetgp_int_start_stop_y); ++ venc_write_reg(VENC_GEN_CTRL, config->gen_ctrl); ++ venc_write_reg(VENC_F_CONTROL, config->f_control); ++ venc_write_reg(VENC_SYNC_CTRL, config->sync_ctrl); ++} ++ ++static void venc_reset(void) ++{ ++ int t = 1000; ++ ++ venc_write_reg(VENC_F_CONTROL, venc_read_reg(VENC_F_CONTROL) | (1<<8)); ++ while (venc_read_reg(VENC_F_CONTROL) & (1<<8)) { ++ if (--t == 0) { ++ DSSERR("Failed to reset venc\n"); ++ return; ++ } ++ } ++} ++ ++static void venc_enable_clocks(int enable) ++{ ++ if (enable) { ++ clk_enable(venc.dss_ick); ++ clk_enable(venc.dss1_fck); ++ clk_enable(venc.dss_54m_fck); ++ clk_enable(venc.dss_96m_fck); ++ } else { ++ clk_disable(venc.dss_96m_fck); ++ clk_disable(venc.dss_54m_fck); ++ clk_disable(venc.dss1_fck); ++ clk_disable(venc.dss_ick); ++ } ++} ++ ++int venc_init(void) ++{ ++ u8 rev_id; ++ int use_pal = 1; /* XXX */ ++ ++ mutex_init(&venc.venc_lock); ++ ++ if (use_pal) ++ venc.config = &venc_config_pal_trm; ++ else ++ venc.config = &venc_config_ntsc_trm; ++ ++ venc_panel.x_res = venc.config->width; ++ venc_panel.y_res = venc.config->height; ++ ++ venc.base = ioremap(VENC_BASE, SZ_1K); ++ if (!venc.base) { ++ DSSERR("can't ioremap VENC\n"); ++ return -ENOMEM; ++ } ++ ++ venc.dss_ick = get_dss_ick(); ++ venc.dss1_fck = get_dss1_fck(); ++ venc.dss_54m_fck = get_tv_fck(); ++ venc.dss_96m_fck = get_96m_fck(); ++ ++ /* enable clocks */ ++ venc_enable_clocks(1); ++ ++ /* configure venc */ ++ venc_reset(); ++ venc_write_config(venc.config); ++ ++ rev_id = (u8)(venc_read_reg(VENC_REV_ID) & 0xff); ++ printk(KERN_INFO "OMAP VENC rev %d\n", rev_id); ++ ++ venc_enable_clocks(0); ++ ++ return 0; ++} ++ ++void venc_exit(void) ++{ ++ iounmap(venc.base); ++} ++ ++static void venc_sync_lost_handler(void *arg, u32 mask) ++{ ++ /* we just catch SYNC_LOST_DIGIT here so that ++ * dispc doesn't take it as an error */ ++} ++ ++static int venc_enable_display(struct omap_display *display) ++{ ++ DSSDBG("venc_enable_display\n"); ++ ++ mutex_lock(&venc.venc_lock); ++ ++ if (display->state != OMAP_DSS_DISPLAY_DISABLED) { ++ mutex_unlock(&venc.venc_lock); ++ return -EINVAL; ++ } ++ ++ venc_enable_clocks(1); ++ ++ dss_set_venc_output(display->hw_config.u.venc.type); ++ dss_set_dac_pwrdn_bgz(1); ++ ++ if (display->hw_config.u.venc.type == OMAP_DSS_VENC_TYPE_COMPOSITE) { ++ if (cpu_is_omap24xx()) ++ venc_write_reg(VENC_OUTPUT_CONTROL, 0x2); ++ else ++ venc_write_reg(VENC_OUTPUT_CONTROL, 0xa); ++ } else { /* S-Video */ ++ venc_write_reg(VENC_OUTPUT_CONTROL, 0xd); ++ } ++ ++ venc_write_config(venc.config); ++ ++ dispc_set_digit_size(venc.config->width, venc.config->height/2); ++ ++ if (display->hw_config.panel_enable) ++ display->hw_config.panel_enable(display); ++ ++ dispc_go(OMAP_DSS_CHANNEL_DIGIT); ++ ++ omap_dispc_register_isr(venc_sync_lost_handler, 0, ++ DISPC_IRQ_SYNC_LOST_DIGIT); ++ ++ dispc_enable_digit_out(1); ++ ++ mdelay(20); ++ ++ omap_dispc_unregister_isr(venc_sync_lost_handler); ++ ++ display->state = OMAP_DSS_DISPLAY_ACTIVE; ++ ++ mutex_unlock(&venc.venc_lock); ++ ++ return 0; ++} ++ ++static void venc_disable_display(struct omap_display *display) ++{ ++ DSSDBG("venc_disable_display\n"); ++ ++ mutex_lock(&venc.venc_lock); ++ ++ if (display->state == OMAP_DSS_DISPLAY_DISABLED) { ++ mutex_unlock(&venc.venc_lock); ++ return; ++ } ++ ++ venc_write_reg(VENC_OUTPUT_CONTROL, 0); ++ dss_set_dac_pwrdn_bgz(0); ++ ++ dispc_enable_digit_out(0); ++ ++ if (display->hw_config.panel_disable) ++ display->hw_config.panel_disable(display); ++ ++ venc_enable_clocks(0); ++ ++ display->state = OMAP_DSS_DISPLAY_DISABLED; ++ ++ mutex_unlock(&venc.venc_lock); ++} ++ ++void venc_init_display(struct omap_display *display) ++{ ++ display->panel = &venc_panel; ++ display->enable = venc_enable_display; ++ display->disable = venc_disable_display; ++} diff --git a/arch/arm/plat-omap/include/mach/display.h b/arch/arm/plat-omap/include/mach/display.h new file mode 100644 -index 0000000..05e78de +index 0000000..2e55fae --- /dev/null +++ b/arch/arm/plat-omap/include/mach/display.h @@ -0,0 +1,458 @@ @@ -4259,7 +9136,7 @@ index 0000000..05e78de +}; + +struct omap_display { -+ //atomic_t ref_count; ++ /*atomic_t ref_count;*/ + int ref_count; + + enum omap_display_type type; diff --git a/packages/linux/linux-omap/0005-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch b/packages/linux/linux-omap/0005-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch new file mode 100644 index 0000000000..57a12c1a79 --- /dev/null +++ b/packages/linux/linux-omap/0005-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch @@ -0,0 +1,2850 @@ +From 538201a6cc52913c8165644d8c5ee1dd2c2b2a95 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Tue, 4 Nov 2008 15:12:21 +0200 +Subject: [PATCH] DSS: OMAPFB: fb driver for new display subsystem + +Signed-off-by: Tomi Valkeinen +--- + arch/arm/plat-omap/fb.c | 9 +- + arch/arm/plat-omap/include/mach/omapfb.h | 7 + + drivers/video/Kconfig | 1 + + drivers/video/Makefile | 1 + + drivers/video/omap/Kconfig | 5 +- + drivers/video/omap2/Kconfig | 29 + + drivers/video/omap2/Makefile | 2 + + drivers/video/omap2/omapfb-ioctl.c | 428 ++++++++++ + drivers/video/omap2/omapfb-main.c | 1276 ++++++++++++++++++++++++++++++ + drivers/video/omap2/omapfb-sysfs.c | 833 +++++++++++++++++++ + drivers/video/omap2/omapfb.h | 104 +++ + 11 files changed, 2692 insertions(+), 3 deletions(-) + create mode 100644 drivers/video/omap2/Kconfig + create mode 100644 drivers/video/omap2/Makefile + create mode 100644 drivers/video/omap2/omapfb-ioctl.c + create mode 100644 drivers/video/omap2/omapfb-main.c + create mode 100644 drivers/video/omap2/omapfb-sysfs.c + create mode 100644 drivers/video/omap2/omapfb.h + +diff --git a/arch/arm/plat-omap/fb.c b/arch/arm/plat-omap/fb.c +index 3746222..0ba1603 100644 +--- a/arch/arm/plat-omap/fb.c ++++ b/arch/arm/plat-omap/fb.c +@@ -36,7 +36,8 @@ + #include + #include + +-#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) ++#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) \ ++ || defined(CONFIG_FB_OMAP2) || defined(CONFIG_FB_OMAP2_MODULE) + + static struct omapfb_platform_data omapfb_config; + static int config_invalid; +@@ -298,14 +299,18 @@ unsigned long omapfb_reserve_sram(unsigned long sram_pstart, + return reserved; + } + ++#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) + void omapfb_set_ctrl_platform_data(void *data) + { + omapfb_config.ctrl_platform_data = data; + } ++#endif + + static inline int omap_init_fb(void) + { ++#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) + const struct omap_lcd_config *conf; ++#endif + + if (config_invalid) + return 0; +@@ -313,6 +318,7 @@ static inline int omap_init_fb(void) + printk(KERN_ERR "Invalid FB mem configuration entries\n"); + return 0; + } ++#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) + conf = omap_get_config(OMAP_TAG_LCD, struct omap_lcd_config); + if (conf == NULL) { + if (configured_regions) +@@ -321,6 +327,7 @@ static inline int omap_init_fb(void) + return 0; + } + omapfb_config.lcd = *conf; ++#endif + + return platform_device_register(&omap_fb_device); + } +diff --git a/arch/arm/plat-omap/include/mach/omapfb.h b/arch/arm/plat-omap/include/mach/omapfb.h +index 90d63c5..1e34304 100644 +--- a/arch/arm/plat-omap/include/mach/omapfb.h ++++ b/arch/arm/plat-omap/include/mach/omapfb.h +@@ -90,6 +90,13 @@ enum omapfb_color_format { + OMAPFB_COLOR_CLUT_1BPP, + OMAPFB_COLOR_RGB444, + OMAPFB_COLOR_YUY422, ++ ++ OMAPFB_COLOR_ARGB16, ++ OMAPFB_COLOR_RGB24U, /* RGB24, 32-bit container */ ++ OMAPFB_COLOR_RGB24P, /* RGB24, 24-bit container */ ++ OMAPFB_COLOR_ARGB32, ++ OMAPFB_COLOR_RGBA32, ++ OMAPFB_COLOR_RGBX32, + }; + + struct omapfb_update_window { +diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig +index 0f13448..4b45731 100644 +--- a/drivers/video/Kconfig ++++ b/drivers/video/Kconfig +@@ -2084,6 +2084,7 @@ config FB_METRONOME + and could also have been called by some vendors as PVI-nnnn. + + source "drivers/video/omap/Kconfig" ++source "drivers/video/omap2/Kconfig" + + source "drivers/video/backlight/Kconfig" + source "drivers/video/display/Kconfig" +diff --git a/drivers/video/Makefile b/drivers/video/Makefile +index 248bddc..4d69355 100644 +--- a/drivers/video/Makefile ++++ b/drivers/video/Makefile +@@ -120,6 +120,7 @@ obj-$(CONFIG_FB_SM501) += sm501fb.o + obj-$(CONFIG_FB_XILINX) += xilinxfb.o + obj-$(CONFIG_FB_SH_MOBILE_LCDC) += sh_mobile_lcdcfb.o + obj-$(CONFIG_FB_OMAP) += omap/ ++obj-$(CONFIG_OMAP2_DSS) += omap2/ + obj-$(CONFIG_XEN_FBDEV_FRONTEND) += xen-fbfront.o + obj-$(CONFIG_FB_CARMINE) += carminefb.o + +diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig +index c355b59..541fab3 100644 +--- a/drivers/video/omap/Kconfig ++++ b/drivers/video/omap/Kconfig +@@ -1,6 +1,7 @@ + config FB_OMAP + tristate "OMAP frame buffer support (EXPERIMENTAL)" +- depends on FB && ARCH_OMAP ++ depends on FB && ARCH_OMAP && (OMAP2_DSS = "n") ++ + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT +@@ -80,7 +81,7 @@ config FB_OMAP_BOOTLOADER_INIT + + config FB_OMAP_CONSISTENT_DMA_SIZE + int "Consistent DMA memory size (MB)" +- depends on FB_OMAP ++ depends on FB && ARCH_OMAP + range 1 14 + default 2 + help +diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig +new file mode 100644 +index 0000000..4b72479 +--- /dev/null ++++ b/drivers/video/omap2/Kconfig +@@ -0,0 +1,29 @@ ++config FB_OMAP2 ++ tristate "OMAP2/3 frame buffer support (EXPERIMENTAL)" ++ depends on FB && OMAP2_DSS ++ ++ select FB_CFB_FILLRECT ++ select FB_CFB_COPYAREA ++ select FB_CFB_IMAGEBLIT ++ help ++ Frame buffer driver for OMAP2/3 based boards. ++ ++config FB_OMAP2_DEBUG ++ bool "Debug output for OMAP2/3 FB" ++ depends on FB_OMAP2 ++ ++config FB_OMAP2_FORCE_AUTO_UPDATE ++ bool "Force main display to automatic update mode" ++ depends on FB_OMAP2 ++ help ++ Forces main display to automatic update mode (if possible), ++ and also enables tearsync (if possible). By default ++ displays that support manual update are started in manual ++ update mode. ++ ++menu "OMAP2/3 Display Device Drivers" ++ depends on OMAP2_DSS ++ ++ ++endmenu ++ +diff --git a/drivers/video/omap2/Makefile b/drivers/video/omap2/Makefile +new file mode 100644 +index 0000000..51c2e00 +--- /dev/null ++++ b/drivers/video/omap2/Makefile +@@ -0,0 +1,2 @@ ++obj-$(CONFIG_FB_OMAP2) += omapfb.o ++omapfb-y := omapfb-main.o omapfb-sysfs.o omapfb-ioctl.o +diff --git a/drivers/video/omap2/omapfb-ioctl.c b/drivers/video/omap2/omapfb-ioctl.c +new file mode 100644 +index 0000000..1ceb6b9 +--- /dev/null ++++ b/drivers/video/omap2/omapfb-ioctl.c +@@ -0,0 +1,428 @@ ++/* ++ * linux/drivers/video/omap2/omapfb-ioctl.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "omapfb.h" ++ ++static int omapfb_setup_plane(struct fb_info *fbi, struct omapfb_plane_info *pi) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ struct omap_overlay *ovl; ++ int r = 0; ++ ++ DBG("omapfb_setup_plane\n"); ++ ++ if (ofbi->num_overlays != 1) { ++ r = -EINVAL; ++ goto out; ++ } ++ ++ ovl = ofbi->overlays[0]; ++ ++ omapfb_lock(fbdev); ++ ++ if (display) { ++ if (pi->pos_x + pi->out_width > display->x_res || ++ pi->pos_y + pi->out_height > display->y_res) { ++ r = -EINVAL; ++ goto out; ++ } ++ } ++ ++ if (pi->enabled && !ofbi->region.size) { ++ /* ++ * This plane's memory was freed, can't enable it ++ * until it's reallocated. ++ */ ++ r = -EINVAL; ++ goto out; ++ } ++ ++ if (!ovl) { ++ r = -EINVAL; ++ goto out; ++ } ++ ++ r = omapfb_setup_overlay(fbi, ovl, pi->pos_x, pi->pos_y, ++ pi->out_width, pi->out_height); ++ if (r) ++ goto out; ++ ++ ovl->enable(ovl, pi->enabled); ++ ++ if (ovl->manager) ++ ovl->manager->apply(ovl->manager); ++ ++ if (display) { ++ if (display->sync) ++ display->sync(display); ++ ++ if (display->update) ++ display->update(display, 0, 0, ++ display->x_res, display->y_res); ++ } ++ ++out: ++ omapfb_unlock(fbdev); ++ if (r) ++ dev_err(fbdev->dev, "setup_plane failed\n"); ++ return r; ++} ++ ++static int omapfb_query_plane(struct fb_info *fbi, struct omapfb_plane_info *pi) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ ++ omapfb_lock(fbdev); ++ ++ if (ofbi->num_overlays != 1) { ++ memset(pi, 0, sizeof(*pi)); ++ } else { ++ struct omap_overlay_info *ovli; ++ struct omap_overlay *ovl; ++ ++ ovl = ofbi->overlays[0]; ++ ovli = &ovl->info; ++ ++ pi->pos_x = ovli->pos_x; ++ pi->pos_y = ovli->pos_y; ++ pi->enabled = ovli->enabled; ++ pi->channel_out = 0; /* xxx */ ++ pi->mirror = 0; ++ pi->out_width = ovli->out_width; ++ pi->out_height = ovli->out_height; ++ } ++ ++ omapfb_unlock(fbdev); ++ ++ return 0; ++} ++ ++static int omapfb_setup_mem(struct fb_info *fbi, struct omapfb_mem_info *mi) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omapfb_mem_region *rg; ++ int ret = -EINVAL; ++ ++ rg = &ofbi->region; ++ ++ omapfb_lock(fbdev); ++ if (mi->size > rg->size) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ ++ if (mi->type != rg->type) ++ goto out; ++ ++ ret = 0; ++out: ++ omapfb_unlock(fbdev); ++ ++ return ret; ++} ++ ++static int omapfb_query_mem(struct fb_info *fbi, struct omapfb_mem_info *mi) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omapfb_mem_region *rg; ++ ++ rg = &ofbi->region; ++ memset(mi, 0, sizeof(*mi)); ++ ++ omapfb_lock(fbdev); ++ mi->size = rg->size; ++ mi->type = rg->type; ++ omapfb_unlock(fbdev); ++ ++ return 0; ++} ++ ++static int omapfb_update_window(struct fb_info *fbi, ++ u32 x, u32 y, u32 w, u32 h) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ ++ if (!display) ++ return 0; ++ ++ if (w == 0 || h == 0) ++ return 0; ++ ++ if (x + w > display->x_res || y + h > display->y_res) ++ return -EINVAL; ++ ++ omapfb_lock(fbdev); ++ display->update(display, x, y, w, h); ++ omapfb_unlock(fbdev); ++ ++ return 0; ++} ++ ++static int omapfb_set_update_mode(struct fb_info *fbi, ++ enum omapfb_update_mode mode) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ enum omap_dss_update_mode um; ++ int r; ++ ++ if (!display || !display->set_update_mode) ++ return -EINVAL; ++ ++ switch (mode) { ++ case OMAPFB_UPDATE_DISABLED: ++ um = OMAP_DSS_UPDATE_DISABLED; ++ break; ++ ++ case OMAPFB_AUTO_UPDATE: ++ um = OMAP_DSS_UPDATE_AUTO; ++ break; ++ ++ case OMAPFB_MANUAL_UPDATE: ++ um = OMAP_DSS_UPDATE_MANUAL; ++ break; ++ ++ default: ++ return -EINVAL; ++ } ++ ++ omapfb_lock(fbdev); ++ r = display->set_update_mode(display, um); ++ omapfb_unlock(fbdev); ++ ++ return r; ++} ++ ++static int omapfb_get_update_mode(struct fb_info *fbi, ++ enum omapfb_update_mode *mode) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ enum omap_dss_update_mode m; ++ ++ if (!display || !display->get_update_mode) ++ return -EINVAL; ++ ++ omapfb_lock(fbdev); ++ m = display->get_update_mode(display); ++ omapfb_unlock(fbdev); ++ ++ switch (m) { ++ case OMAP_DSS_UPDATE_DISABLED: ++ *mode = OMAPFB_UPDATE_DISABLED; ++ break; ++ case OMAP_DSS_UPDATE_AUTO: ++ *mode = OMAPFB_AUTO_UPDATE; ++ break; ++ case OMAP_DSS_UPDATE_MANUAL: ++ *mode = OMAPFB_MANUAL_UPDATE; ++ break; ++ default: ++ BUG(); ++ } ++ ++ return 0; ++} ++ ++int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ ++ union { ++ struct omapfb_update_window_old uwnd_o; ++ struct omapfb_update_window uwnd; ++ struct omapfb_plane_info plane_info; ++ struct omapfb_caps caps; ++ struct omapfb_mem_info mem_info; ++ enum omapfb_update_mode update_mode; ++ int test_num; ++ } p; ++ ++ int r = 0; ++ ++ DBG("ioctl %x (%d)\n", cmd, cmd & 0xff); ++ ++ switch (cmd) { ++ case OMAPFB_SYNC_GFX: ++ if (!display || !display->sync) { ++ r = -EINVAL; ++ break; ++ } ++ ++ omapfb_lock(fbdev); ++ r = display->sync(display); ++ omapfb_unlock(fbdev); ++ break; ++ ++ case OMAPFB_UPDATE_WINDOW_OLD: ++ if (!display || !display->update) { ++ r = -EINVAL; ++ break; ++ } ++ ++ if (copy_from_user(&p.uwnd_o, ++ (void __user *)arg, ++ sizeof(p.uwnd_o))) { ++ r = -EFAULT; ++ break; ++ } ++ ++ r = omapfb_update_window(fbi, p.uwnd_o.x, p.uwnd_o.y, ++ p.uwnd_o.width, p.uwnd_o.height); ++ break; ++ ++ case OMAPFB_UPDATE_WINDOW: ++ if (!display || !display->update) { ++ r = -EINVAL; ++ break; ++ } ++ ++ if (copy_from_user(&p.uwnd, (void __user *)arg, ++ sizeof(p.uwnd))) { ++ r = -EFAULT; ++ break; ++ } ++ ++ r = omapfb_update_window(fbi, p.uwnd.x, p.uwnd.y, ++ p.uwnd.width, p.uwnd.height); ++ break; ++ ++ case OMAPFB_SETUP_PLANE: ++ if (copy_from_user(&p.plane_info, (void __user *)arg, ++ sizeof(p.plane_info))) ++ r = -EFAULT; ++ else ++ r = omapfb_setup_plane(fbi, &p.plane_info); ++ break; ++ ++ case OMAPFB_QUERY_PLANE: ++ r = omapfb_query_plane(fbi, &p.plane_info); ++ if (r < 0) ++ break; ++ if (copy_to_user((void __user *)arg, &p.plane_info, ++ sizeof(p.plane_info))) ++ r = -EFAULT; ++ break; ++ ++ case OMAPFB_SETUP_MEM: ++ if (copy_from_user(&p.mem_info, (void __user *)arg, ++ sizeof(p.mem_info))) ++ r = -EFAULT; ++ else ++ r = omapfb_setup_mem(fbi, &p.mem_info); ++ break; ++ ++ case OMAPFB_QUERY_MEM: ++ r = omapfb_query_mem(fbi, &p.mem_info); ++ if (r < 0) ++ break; ++ if (copy_to_user((void __user *)arg, &p.mem_info, ++ sizeof(p.mem_info))) ++ r = -EFAULT; ++ break; ++ ++ case OMAPFB_GET_CAPS: ++ if (!display) { ++ r = -EINVAL; ++ break; ++ } ++ ++ p.caps.ctrl = display->caps; ++ ++ if (copy_to_user((void __user *)arg, &p.caps, sizeof(p.caps))) ++ r = -EFAULT; ++ break; ++ ++ case OMAPFB_SET_UPDATE_MODE: ++ if (get_user(p.update_mode, (int __user *)arg)) ++ r = -EFAULT; ++ else ++ r = omapfb_set_update_mode(fbi, p.update_mode); ++ break; ++ ++ case OMAPFB_GET_UPDATE_MODE: ++ r = omapfb_get_update_mode(fbi, &p.update_mode); ++ if (r) ++ break; ++ if (put_user(p.update_mode, ++ (enum omapfb_update_mode __user *)arg)) ++ r = -EFAULT; ++ break; ++ ++ /* LCD and CTRL tests do the same thing for backward ++ * compatibility */ ++ case OMAPFB_LCD_TEST: ++ if (get_user(p.test_num, (int __user *)arg)) { ++ r = -EFAULT; ++ break; ++ } ++ if (!display || !display->run_test) { ++ r = -EINVAL; ++ break; ++ } ++ ++ r = display->run_test(display, p.test_num); ++ ++ break; ++ ++ case OMAPFB_CTRL_TEST: ++ if (get_user(p.test_num, (int __user *)arg)) { ++ r = -EFAULT; ++ break; ++ } ++ if (!display || !display->run_test) { ++ r = -EINVAL; ++ break; ++ } ++ ++ r = display->run_test(display, p.test_num); ++ ++ break; ++ ++ default: ++ DBG("ioctl unhandled\n"); ++ r = -EINVAL; ++ } ++ ++ return r; ++} ++ ++ +diff --git a/drivers/video/omap2/omapfb-main.c b/drivers/video/omap2/omapfb-main.c +new file mode 100644 +index 0000000..c0f1664 +--- /dev/null ++++ b/drivers/video/omap2/omapfb-main.c +@@ -0,0 +1,1276 @@ ++/* ++ * linux/drivers/video/omap2/omapfb-main.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "omapfb.h" ++ ++#define MODULE_NAME "omapfb" ++ ++#ifdef DEBUG ++static void fill_fb(void *addr, struct fb_info *fbi) ++{ ++ struct fb_var_screeninfo *var = &fbi->var; ++ ++ const short w = var->xres_virtual; ++ const short h = var->yres_virtual; ++ ++ int y, x; ++ u8 *p = addr; ++ ++ for (y = 0; y < h; y++) { ++ for (x = 0; x < w; x++) { ++ if (var->bits_per_pixel == 16) { ++ u16 *pw = (u16 *)p; ++ ++ if (x == 20 || x == w - 20 || ++ y == 20 || y == h - 20) ++ *pw = 0xffff; ++ else if (x == y || w - x == h - y) ++ *pw = ((1<<5)-1)<<11; ++ else if (w - x == y || x == h - y) ++ *pw = ((1<<6)-1)<<5; ++ else { ++ int t = x / (w/3); ++ if (t == 0) ++ *pw = y % 32; ++ else if (t == 1) ++ *pw = (y % 64) << 5; ++ else if (t == 2) ++ *pw = (y % 32) << 11; ++ } ++ } else if (var->bits_per_pixel == 24) { ++ u8 *pb = (u8 *)p; ++ ++ int r = 0, g = 0, b = 0; ++ ++ if (x == 20 || x == w - 20 || ++ y == 20 || y == h - 20) ++ r = g = b = 0xff; ++ else if (x == y || w - x == h - y) ++ r = 0xff; ++ else if (w - x == y || x == h - y) ++ g = 0xff; ++ else { ++ int q = x / (w / 3); ++ u8 base = 255 - (y % 256); ++ if (q == 0) ++ r = base; ++ else if (q == 1) ++ g = base; ++ else if (q == 2) ++ b = base; ++ } ++ ++ pb[0] = b; ++ pb[1] = g; ++ pb[2] = r; ++ ++ } else if (var->bits_per_pixel == 32) { ++ u32 *pd = (u32 *)p; ++ ++ if (x == 20 || x == w - 20 || ++ y == 20 || y == h - 20) ++ *pd = 0xffffff; ++ else if (x == y || w - x == h - y) ++ *pd = 0xff0000; ++ else if (w - x == y || x == h - y) ++ *pd = 0x00ff00; ++ else { ++ u8 base = 255 - (y % 256); ++ *pd = base << ((x / (w/3)) << 3); ++ } ++ } ++ ++ p += var->bits_per_pixel >> 3; ++ } ++ } ++} ++#endif ++ ++static enum omap_color_mode fb_mode_to_dss_mode(struct fb_var_screeninfo *var) ++{ ++ switch (var->nonstd) { ++ case 0: ++ break; ++ case OMAPFB_COLOR_YUV422: ++ return OMAP_DSS_COLOR_YUV2; ++ ++ case OMAPFB_COLOR_YUY422: ++ return OMAP_DSS_COLOR_UYVY; ++ ++ case OMAPFB_COLOR_ARGB16: ++ return OMAP_DSS_COLOR_ARGB16; ++ ++ case OMAPFB_COLOR_ARGB32: ++ return OMAP_DSS_COLOR_ARGB32; ++ ++ case OMAPFB_COLOR_RGBA32: ++ return OMAP_DSS_COLOR_RGBA32; ++ ++ case OMAPFB_COLOR_RGBX32: ++ return OMAP_DSS_COLOR_RGBX32; ++ ++ default: ++ return -EINVAL; ++ } ++ ++ switch (var->bits_per_pixel) { ++ case 1: ++ return OMAP_DSS_COLOR_CLUT1; ++ case 2: ++ return OMAP_DSS_COLOR_CLUT2; ++ case 4: ++ return OMAP_DSS_COLOR_CLUT4; ++ case 8: ++ return OMAP_DSS_COLOR_CLUT8; ++ case 12: ++ return OMAP_DSS_COLOR_RGB12U; ++ case 16: ++ return OMAP_DSS_COLOR_RGB16; ++ case 24: ++ return OMAP_DSS_COLOR_RGB24P; ++ case 32: ++ return OMAP_DSS_COLOR_RGB24U; ++ default: ++ return -EINVAL; ++ } ++ ++ return -EINVAL; ++} ++ ++static void set_fb_fix(struct fb_info *fbi) ++{ ++ struct fb_fix_screeninfo *fix = &fbi->fix; ++ struct fb_var_screeninfo *var = &fbi->var; ++ struct omapfb_mem_region *rg = &FB2OFB(fbi)->region; ++ ++ DBG("set_fb_fix\n"); ++ ++ /* used by open/write in fbmem.c */ ++ fbi->screen_base = (char __iomem *)rg->vaddr; ++ ++ /* used by mmap in fbmem.c */ ++ fix->smem_start = rg->paddr; ++ fix->smem_len = rg->size; ++ ++ fix->type = FB_TYPE_PACKED_PIXELS; ++ ++ if (var->nonstd) ++ fix->visual = FB_VISUAL_PSEUDOCOLOR; ++ else { ++ switch (var->bits_per_pixel) { ++ case 32: ++ case 24: ++ case 16: ++ case 12: ++ fix->visual = FB_VISUAL_TRUECOLOR; ++ /* 12bpp is stored in 16 bits */ ++ break; ++ case 1: ++ case 2: ++ case 4: ++ case 8: ++ fix->visual = FB_VISUAL_PSEUDOCOLOR; ++ break; ++ } ++ } ++ ++ fix->accel = FB_ACCEL_NONE; ++ fix->line_length = (var->xres_virtual * var->bits_per_pixel) >> 3; ++ ++ fix->xpanstep = 1; ++ fix->ypanstep = 1; ++} ++ ++/* check new var and possibly modify it to be ok */ ++static int check_fb_var(struct fb_info *fbi, struct fb_var_screeninfo *var) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omap_display *display = fb2display(fbi); ++ unsigned long max_frame_size; ++ unsigned long line_size; ++ int xres_min, xres_max; ++ int yres_min, yres_max; ++ enum omap_color_mode mode = 0; ++ struct omap_overlay *ovl; ++ ++ DBG("check_fb_var %d\n", ofbi->id); ++ ++ if (ofbi->num_overlays == 0) { ++ dev_err(ofbi->fbdev->dev, "no overlays, aborting\n"); ++ return -EINVAL; ++ } ++ ++ /* XXX: uses the first overlay */ ++ ovl = ofbi->overlays[0]; ++ ++ /* if we are using non standard mode, fix the bpp first */ ++ switch (var->nonstd) { ++ case 0: ++ break; ++ case OMAPFB_COLOR_YUV422: ++ case OMAPFB_COLOR_YUY422: ++ case OMAPFB_COLOR_ARGB16: ++ var->bits_per_pixel = 16; ++ break; ++ case OMAPFB_COLOR_ARGB32: ++ case OMAPFB_COLOR_RGBA32: ++ case OMAPFB_COLOR_RGBX32: ++ var->bits_per_pixel = 32; ++ break; ++ default: ++ DBG("invalid nonstd mode\n"); ++ return -EINVAL; ++ } ++ ++ mode = fb_mode_to_dss_mode(var); ++ if (mode < 0) { ++ DBG("cannot convert var to omap dss mode\n"); ++ return -EINVAL; ++ } ++ ++ if ((ovl->supported_modes & mode) == 0) { ++ DBG("invalid mode\n"); ++ return -EINVAL; ++ } ++ ++ xres_min = OMAPFB_PLANE_XRES_MIN; ++ xres_max = (display ? display->x_res : 2048) - ovl->info.pos_x; ++ yres_min = OMAPFB_PLANE_YRES_MIN; ++ yres_max = (display ? display->y_res : 2048) - ovl->info.pos_y; ++ ++ if (var->xres < xres_min) ++ var->xres = xres_min; ++ if (var->yres < yres_min) ++ var->yres = yres_min; ++ if (var->xres_virtual < var->xres) ++ var->xres_virtual = var->xres; ++ if (var->yres_virtual < var->yres) ++ var->yres_virtual = var->yres; ++ max_frame_size = ofbi->region.size; ++ line_size = (var->xres_virtual * var->bits_per_pixel) >> 3; ++ ++ if (line_size * var->yres_virtual > max_frame_size) { ++ /* Try to keep yres_virtual first */ ++ line_size = max_frame_size / var->yres_virtual; ++ var->xres_virtual = line_size * 8 / var->bits_per_pixel; ++ if (var->xres_virtual < var->xres) { ++ /* Still doesn't fit. Shrink yres_virtual too */ ++ var->xres_virtual = var->xres; ++ line_size = var->xres * var->bits_per_pixel / 8; ++ var->yres_virtual = max_frame_size / line_size; ++ } ++ /* Recheck this, as the virtual size changed. */ ++ if (var->xres_virtual < var->xres) ++ var->xres = var->xres_virtual; ++ if (var->yres_virtual < var->yres) ++ var->yres = var->yres_virtual; ++ if (var->xres < xres_min || var->yres < yres_min) { ++ DBG("Cannot fit FB to memory\n"); ++ return -EINVAL; ++ } ++ } ++ if (var->xres + var->xoffset > var->xres_virtual) ++ var->xoffset = var->xres_virtual - var->xres; ++ if (var->yres + var->yoffset > var->yres_virtual) ++ var->yoffset = var->yres_virtual - var->yres; ++ ++ if (var->bits_per_pixel == 16) { ++ var->red.offset = 11; var->red.length = 5; ++ var->red.msb_right = 0; ++ var->green.offset = 5; var->green.length = 6; ++ var->green.msb_right = 0; ++ var->blue.offset = 0; var->blue.length = 5; ++ var->blue.msb_right = 0; ++ } else if (var->bits_per_pixel == 24) { ++ var->red.offset = 16; var->red.length = 8; ++ var->red.msb_right = 0; ++ var->green.offset = 8; var->green.length = 8; ++ var->green.msb_right = 0; ++ var->blue.offset = 0; var->blue.length = 8; ++ var->blue.msb_right = 0; ++ var->transp.offset = 0; var->transp.length = 0; ++ } else if (var->bits_per_pixel == 32) { ++ var->red.offset = 16; var->red.length = 8; ++ var->red.msb_right = 0; ++ var->green.offset = 8; var->green.length = 8; ++ var->green.msb_right = 0; ++ var->blue.offset = 0; var->blue.length = 8; ++ var->blue.msb_right = 0; ++ var->transp.offset = 0; var->transp.length = 0; ++ } else { ++ DBG("failed to setup fb color mask\n"); ++ return -EINVAL; ++ } ++ ++ DBG("xres = %d, yres = %d, vxres = %d, vyres = %d\n", ++ var->xres, var->yres, ++ var->xres_virtual, var->yres_virtual); ++ ++ var->height = -1; ++ var->width = -1; ++ var->grayscale = 0; ++ ++ if (display && display->check_timings) { ++ struct omap_video_timings timings; ++ timings.pixel_clock = PICOS2KHZ(var->pixclock); ++ timings.hfp = var->left_margin; ++ timings.hbp = var->right_margin; ++ timings.vfp = var->upper_margin; ++ timings.vbp = var->lower_margin; ++ timings.hsw = var->hsync_len; ++ timings.vsw = var->vsync_len; ++ ++ if (display->check_timings(display, &timings)) { ++ DBG("illegal video timings\n"); ++ return -EINVAL; ++ } ++ ++ /* pixclock in ps, the rest in pixclock */ ++ var->pixclock = KHZ2PICOS(timings.pixel_clock); ++ var->left_margin = timings.hfp; ++ var->right_margin = timings.hbp; ++ var->upper_margin = timings.vfp; ++ var->lower_margin = timings.vbp; ++ var->hsync_len = timings.hsw; ++ var->vsync_len = timings.vsw; ++ } ++ ++ /* TODO: get these from panel->config */ ++ var->vmode = FB_VMODE_NONINTERLACED; ++ var->sync = 0; ++ ++ return 0; ++} ++ ++/* ++ * --------------------------------------------------------------------------- ++ * fbdev framework callbacks ++ * --------------------------------------------------------------------------- ++ */ ++static int omapfb_open(struct fb_info *fbi, int user) ++{ ++ return 0; ++} ++ ++static int omapfb_release(struct fb_info *fbi, int user) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ ++ DBG("Closing fb with plane index %d\n", ofbi->id); ++ ++ omapfb_lock(fbdev); ++#if 1 ++ if (display) { ++ /* XXX Is this really needed ? */ ++ if (display->sync) ++ display->sync(display); ++ ++ if (display->update) ++ display->update(display, ++ 0, 0, ++ display->x_res, display->y_res); ++ } ++#endif ++ ++ if (display && display->sync) ++ display->sync(display); ++ ++ omapfb_unlock(fbdev); ++ ++ return 0; ++} ++ ++/* setup overlay according to the fb */ ++int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl, ++ int posx, int posy, int outw, int outh) ++{ ++ int r = 0; ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct fb_var_screeninfo *var = &fbi->var; ++ enum omap_color_mode mode = 0; ++ int offset; ++ u32 data_start_p; ++ void *data_start_v; ++ ++ DBG("setup_overlay %d\n", ofbi->id); ++ ++ if ((ovl->caps & OMAP_DSS_OVL_CAP_SCALE) == 0 && ++ (outw != var->xres || outh != var->yres)) { ++ r = -EINVAL; ++ goto err; ++ } ++ ++ offset = ((var->yoffset * var->xres_virtual + ++ var->xoffset) * var->bits_per_pixel) >> 3; ++ ++ data_start_p = ofbi->region.paddr + offset; ++ data_start_v = ofbi->region.vaddr + offset; ++ ++ mode = fb_mode_to_dss_mode(var); ++ ++ if (mode == -EINVAL) { ++ r = -EINVAL; ++ goto err; ++ } ++ ++ r = ovl->setup_input(ovl, ++ data_start_p, data_start_v, ++ var->xres_virtual, ++ var->xres, var->yres, ++ mode); ++ ++ if (r) ++ goto err; ++ ++ r = ovl->setup_output(ovl, ++ posx, posy, ++ outw, outh); ++ ++ if (r) ++ goto err; ++ ++ return 0; ++ ++err: ++ DBG("setup_overlay failed\n"); ++ return r; ++} ++ ++/* apply var to the overlay */ ++int omapfb_apply_changes(struct fb_info *fbi, int init) ++{ ++ int r = 0; ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct fb_var_screeninfo *var = &fbi->var; ++ /*struct omap_display *display = fb2display(fbi);*/ ++ struct omap_overlay *ovl; ++ int posx, posy; ++ int outw, outh; ++ int i; ++ ++ for (i = 0; i < ofbi->num_overlays; i++) { ++ ovl = ofbi->overlays[i]; ++ ++ DBG("apply_changes, fb %d, ovl %d\n", ofbi->id, ovl->id); ++ ++ if (init || (ovl->caps & OMAP_DSS_OVL_CAP_SCALE) == 0) { ++ outw = var->xres; ++ outh = var->yres; ++ } else { ++ outw = ovl->info.out_width; ++ outh = ovl->info.out_height; ++ } ++ ++ if (init) { ++ posx = 0; ++ posy = 0; ++ } else { ++ posx = ovl->info.pos_x; ++ posy = ovl->info.pos_y; ++ } ++ ++ r = omapfb_setup_overlay(fbi, ovl, posx, posy, outw, outh); ++ if (r) ++ goto err; ++ ++ /* disabled for now. if the display has changed, var ++ * still contains the old timings. */ ++#if 0 ++ if (display && display->set_timings) { ++ struct omap_video_timings timings; ++ timings.pixel_clock = PICOS2KHZ(var->pixclock); ++ timings.hfp = var->left_margin; ++ timings.hbp = var->right_margin; ++ timings.vfp = var->upper_margin; ++ timings.vbp = var->lower_margin; ++ timings.hsw = var->hsync_len; ++ timings.vsw = var->vsync_len; ++ ++ display->set_timings(display, &timings); ++ } ++#endif ++ if (!init && ovl->manager) ++ ovl->manager->apply(ovl->manager); ++ } ++ return 0; ++err: ++ DBG("apply_changes failed\n"); ++ return r; ++} ++ ++/* checks var and eventually tweaks it to something supported, ++ * DO NOT MODIFY PAR */ ++static int omapfb_check_var(struct fb_var_screeninfo *var, struct fb_info *fbi) ++{ ++ int r; ++ ++ DBG("check_var(%d)\n", FB2OFB(fbi)->id); ++ ++ r = check_fb_var(fbi, var); ++ ++ return r; ++} ++ ++/* set the video mode according to info->var */ ++static int omapfb_set_par(struct fb_info *fbi) ++{ ++ int r; ++ ++ DBG("set_par(%d)\n", FB2OFB(fbi)->id); ++ ++ set_fb_fix(fbi); ++ r = omapfb_apply_changes(fbi, 0); ++ ++ return r; ++} ++ ++static void omapfb_rotate(struct fb_info *fbi, int rotate) ++{ ++ DBG("rotate(%d)\n", FB2OFB(fbi)->id); ++ return; ++} ++ ++static int omapfb_pan_display(struct fb_var_screeninfo *var, ++ struct fb_info *fbi) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ int r = 0; ++ ++ DBG("pan_display(%d)\n", ofbi->id); ++ ++ omapfb_lock(fbdev); ++ ++ if (var->xoffset != fbi->var.xoffset || ++ var->yoffset != fbi->var.yoffset) { ++ struct fb_var_screeninfo new_var; ++ ++ new_var = fbi->var; ++ new_var.xoffset = var->xoffset; ++ new_var.yoffset = var->yoffset; ++ ++ r = check_fb_var(fbi, &new_var); ++ ++ if (r == 0) { ++ fbi->var = new_var; ++ set_fb_fix(fbi); ++ r = omapfb_apply_changes(fbi, 0); ++ } ++ } ++ ++ omapfb_unlock(fbdev); ++ ++ return r; ++} ++ ++static int omapfb_mmap(struct fb_info *fbi, struct vm_area_struct *vma) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omapfb_mem_region *rg = &ofbi->region; ++ ++ return dma_mmap_writecombine(fbdev->dev, vma, ++ rg->vaddr, ++ rg->paddr, ++ rg->size); ++} ++ ++/* Store a single color palette entry into a pseudo palette or the hardware ++ * palette if one is available. For now we support only 16bpp and thus store ++ * the entry only to the pseudo palette. ++ */ ++static int _setcolreg(struct fb_info *fbi, u_int regno, u_int red, u_int green, ++ u_int blue, u_int transp, int update_hw_pal) ++{ ++ /*struct omapfb_info *ofbi = FB2OFB(fbi);*/ ++ /*struct omapfb2_device *fbdev = ofbi->fbdev;*/ ++ struct fb_var_screeninfo *var = &fbi->var; ++ int r = 0; ++ ++ enum omapfb_color_format mode = OMAPFB_COLOR_RGB24U; /* XXX */ ++ ++ /*switch (plane->color_mode) {*/ ++ switch (mode) { ++ case OMAPFB_COLOR_YUV422: ++ case OMAPFB_COLOR_YUV420: ++ case OMAPFB_COLOR_YUY422: ++ r = -EINVAL; ++ break; ++ case OMAPFB_COLOR_CLUT_8BPP: ++ case OMAPFB_COLOR_CLUT_4BPP: ++ case OMAPFB_COLOR_CLUT_2BPP: ++ case OMAPFB_COLOR_CLUT_1BPP: ++ /* ++ if (fbdev->ctrl->setcolreg) ++ r = fbdev->ctrl->setcolreg(regno, red, green, blue, ++ transp, update_hw_pal); ++ */ ++ /* Fallthrough */ ++ r = -EINVAL; ++ break; ++ case OMAPFB_COLOR_RGB565: ++ case OMAPFB_COLOR_RGB444: ++ case OMAPFB_COLOR_RGB24P: ++ case OMAPFB_COLOR_RGB24U: ++ if (r != 0) ++ break; ++ ++ if (regno < 0) { ++ r = -EINVAL; ++ break; ++ } ++ ++ if (regno < 16) { ++ u16 pal; ++ pal = ((red >> (16 - var->red.length)) << ++ var->red.offset) | ++ ((green >> (16 - var->green.length)) << ++ var->green.offset) | ++ (blue >> (16 - var->blue.length)); ++ ((u32 *)(fbi->pseudo_palette))[regno] = pal; ++ } ++ break; ++ default: ++ BUG(); ++ } ++ return r; ++} ++ ++static int omapfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, ++ u_int transp, struct fb_info *info) ++{ ++ DBG("setcolreg\n"); ++ ++ return _setcolreg(info, regno, red, green, blue, transp, 1); ++} ++ ++static int omapfb_setcmap(struct fb_cmap *cmap, struct fb_info *info) ++{ ++ int count, index, r; ++ u16 *red, *green, *blue, *transp; ++ u16 trans = 0xffff; ++ ++ DBG("setcmap\n"); ++ ++ red = cmap->red; ++ green = cmap->green; ++ blue = cmap->blue; ++ transp = cmap->transp; ++ index = cmap->start; ++ ++ for (count = 0; count < cmap->len; count++) { ++ if (transp) ++ trans = *transp++; ++ r = _setcolreg(info, index++, *red++, *green++, *blue++, trans, ++ count == cmap->len - 1); ++ if (r != 0) ++ return r; ++ } ++ ++ return 0; ++} ++ ++static int omapfb_blank(int blank, struct fb_info *fbi) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ struct omap_display *display = fb2display(fbi); ++ int do_update = 0; ++ int r = 0; ++ ++ omapfb_lock(fbdev); ++ ++ switch (blank) { ++ case VESA_NO_BLANKING: ++ if (display->state != OMAP_DSS_DISPLAY_SUSPENDED) { ++ r = -EINVAL; ++ goto exit; ++ } ++ ++ if (display->resume) ++ r = display->resume(display); ++ ++ if (r == 0 && display->get_update_mode && ++ display->get_update_mode(display) == ++ OMAP_DSS_UPDATE_MANUAL) ++ do_update = 1; ++ ++ break; ++ ++ case VESA_POWERDOWN: ++ if (display->state != OMAP_DSS_DISPLAY_ACTIVE) { ++ r = -EINVAL; ++ goto exit; ++ } ++ ++ if (display->suspend) ++ r = display->suspend(display); ++ ++ break; ++ ++ default: ++ r = -EINVAL; ++ } ++ ++exit: ++ omapfb_unlock(fbdev); ++ ++ if (r == 0 && do_update && display->update) ++ r = display->update(display, ++ 0, 0, ++ display->x_res, display->y_res); ++ ++ return r; ++} ++ ++static struct fb_ops omapfb_ops = { ++ .owner = THIS_MODULE, ++ .fb_open = omapfb_open, ++ .fb_release = omapfb_release, ++ .fb_fillrect = cfb_fillrect, ++ .fb_copyarea = cfb_copyarea, ++ .fb_imageblit = cfb_imageblit, ++ .fb_blank = omapfb_blank, ++ .fb_ioctl = omapfb_ioctl, ++ .fb_check_var = omapfb_check_var, ++ .fb_set_par = omapfb_set_par, ++ .fb_rotate = omapfb_rotate, ++ .fb_pan_display = omapfb_pan_display, ++ .fb_mmap = omapfb_mmap, ++ .fb_setcolreg = omapfb_setcolreg, ++ .fb_setcmap = omapfb_setcmap, ++}; ++ ++static int omapfb_free_fbmem(struct omapfb2_device *fbdev) ++{ ++ int i; ++ ++ DBG("free fbmem\n"); ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]); ++ struct omapfb_mem_region *rg; ++ ++ rg = &ofbi->region; ++ ++ if (rg->alloc) { ++ dma_free_writecombine(fbdev->dev, rg->size, ++ rg->vaddr, rg->paddr); ++ } ++ ++ rg->vaddr = NULL; ++ rg->paddr = 0; ++ rg->alloc = 0; ++ } ++ ++ fbdev->num_fbs = 0; ++ ++ return 0; ++} ++ ++static int omapfb_allocate_fbmem(struct omapfb2_device *fbdev) ++{ ++ int i; ++ struct omapfb_mem_desc *plat_mem_desc; ++ struct omapfb_platform_data *pdata = fbdev->dev->platform_data; ++ ++ plat_mem_desc = &pdata->mem_desc; ++ ++ DBG("omapfb: setup mem regions, %d regions\n", ++ plat_mem_desc->region_cnt); ++ ++ for (i = 0; i < plat_mem_desc->region_cnt; i++) { ++ struct omapfb_mem_region *plat_rg; ++ struct omapfb_mem_region *rg; ++ struct omapfb_info *ofb_info = FB2OFB(fbdev->fbs[i]); ++ ++ plat_rg = &plat_mem_desc->region[i]; ++ rg = &ofb_info->region; ++ ++ memset(rg, 0, sizeof(*rg)); ++ ++ DBG("platform region%d phys %08x virt %p size=%lu\n", ++ i, ++ plat_rg->paddr, ++ plat_rg->vaddr, ++ plat_rg->size); ++ ++ if (plat_rg->paddr == 0) { ++ u32 paddr; ++ void *vaddr; ++ ++ vaddr = dma_alloc_writecombine(fbdev->dev, ++ plat_rg->size, ++ &paddr, GFP_KERNEL); ++ ++ if (vaddr == NULL) { ++ dev_err(fbdev->dev, ++ "failed to allocate framebuffer\n"); ++ return -ENOMEM; ++ } ++ ++ rg->paddr = paddr; ++ rg->vaddr = vaddr; ++ rg->size = plat_rg->size; ++ rg->alloc = 1; ++ } else { ++ dev_err(fbdev->dev, ++ "Using preallocated fb not supported\n"); ++ return -EINVAL; ++ } ++ } ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ struct omapfb_info *ofb_info = FB2OFB(fbdev->fbs[i]); ++ struct omapfb_mem_region *rg; ++ rg = &ofb_info->region; ++ ++ DBG("region%d phys %08x virt %p size=%lu\n", ++ i, ++ rg->paddr, ++ rg->vaddr, ++ rg->size); ++ } ++ ++ return 0; ++} ++ ++/* initialize fb_info, var, fix to something sane based on the display */ ++static int fbinfo_init(struct omapfb2_device *fbdev, struct fb_info *fbi) ++{ ++ struct fb_var_screeninfo *var = &fbi->var; ++ struct fb_fix_screeninfo *fix = &fbi->fix; ++ struct omap_display *display = fb2display(fbi); ++ int r = 0; ++ ++ if (!display) { ++ dev_err(fbdev->dev, "cannot fbinfo_init, no display\n"); ++ return -EINVAL; ++ } ++ ++ fbi->fbops = &omapfb_ops; ++ fbi->flags = FBINFO_FLAG_DEFAULT; ++ fbi->pseudo_palette = fbdev->pseudo_palette; ++ ++ strncpy(fix->id, MODULE_NAME, sizeof(fix->id)); ++ ++ var->xres = display->x_res; ++ var->yres = display->y_res; ++ var->xres_virtual = var->xres; ++ var->yres_virtual = var->yres; ++ /* var->rotate = def_rotate; */ ++ ++ var->nonstd = 0; ++ ++ switch (display->bpp) { ++ case 16: ++ var->bits_per_pixel = 16; ++ break; ++ case 18: ++ var->bits_per_pixel = 16; ++ break; ++ case 24: ++ var->bits_per_pixel = 32; ++ break; ++ default: ++ dev_err(fbdev->dev, "illegal display bpp\n"); ++ return -EINVAL; ++ } ++ ++ if (display->get_timings) { ++ struct omap_video_timings timings; ++ display->get_timings(display, &timings); ++ ++ /* pixclock in ps, the rest in pixclock */ ++ var->pixclock = KHZ2PICOS(timings.pixel_clock); ++ var->left_margin = timings.hfp; ++ var->right_margin = timings.hbp; ++ var->upper_margin = timings.vfp; ++ var->lower_margin = timings.vbp; ++ var->hsync_len = timings.hsw; ++ var->vsync_len = timings.vsw; ++ } else { ++ var->pixclock = 0; ++ var->left_margin = 0; ++ var->right_margin = 0; ++ var->upper_margin = 0; ++ var->lower_margin = 0; ++ var->hsync_len = 0; ++ var->vsync_len = 0; ++ } ++ ++ r = check_fb_var(fbi, var); ++ if (r) ++ goto err; ++ ++ set_fb_fix(fbi); ++ ++#ifdef DEBUG ++ fill_fb(FB2OFB(fbi)->region.vaddr, fbi); ++#endif ++err: ++ return r; ++} ++ ++static void fbinfo_cleanup(struct omapfb2_device *fbdev, struct fb_info *fbi) ++{ ++ fb_dealloc_cmap(&fbi->cmap); ++} ++ ++ ++static void omapfb_free_resources(struct omapfb2_device *fbdev) ++{ ++ int i; ++ ++ DBG("free_resources\n"); ++ ++ if (fbdev == NULL) ++ return; ++ ++ for (i = 0; i < fbdev->num_fbs; i++) ++ unregister_framebuffer(fbdev->fbs[i]); ++ ++ /* free the reserved fbmem */ ++ omapfb_free_fbmem(fbdev); ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ fbinfo_cleanup(fbdev, fbdev->fbs[i]); ++ framebuffer_release(fbdev->fbs[i]); ++ } ++ ++ ++ for (i = 0; i < fbdev->num_displays; i++) { ++ if (fbdev->displays[i]->state != OMAP_DSS_DISPLAY_DISABLED) ++ fbdev->displays[i]->disable(fbdev->displays[i]); ++ ++ omap_dss_put_display(fbdev->displays[i]); ++ } ++ ++ dev_set_drvdata(fbdev->dev, NULL); ++ kfree(fbdev); ++} ++ ++static int omapfb_create_framebuffers(struct omapfb2_device *fbdev) ++{ ++ int r; ++ int i; ++ struct omapfb_mem_desc *plat_mem_desc; ++ struct omapfb_platform_data *pdata = fbdev->dev->platform_data; ++ ++ plat_mem_desc = &pdata->mem_desc; ++ ++ fbdev->num_fbs = 0; ++ ++ DBG("create %d framebuffers\n", plat_mem_desc->region_cnt); ++ ++ /* allocate fb_infos */ ++ for (i = 0; i < plat_mem_desc->region_cnt; i++) { ++ struct fb_info *fbi; ++ struct omapfb_info *ofbi; ++ ++ fbi = framebuffer_alloc(sizeof(struct omapfb_info), ++ fbdev->dev); ++ ++ if (fbi == NULL) { ++ dev_err(fbdev->dev, ++ "unable to allocate memory for plane info\n"); ++ return -ENOMEM; ++ } ++ ++ fbdev->fbs[i] = fbi; ++ ++ ofbi = FB2OFB(fbi); ++ ofbi->fbdev = fbdev; ++ /* XXX here we presume we have enough overlays */ ++ ofbi->overlays[0] = fbdev->overlays[i]; ++ ofbi->num_overlays = 1; ++ ofbi->id = i; ++ fbdev->num_fbs++; ++ } ++ ++ DBG("fb_infos allocated\n"); ++ ++ /* allocate fb memories */ ++ r = omapfb_allocate_fbmem(fbdev); ++ if (r) { ++ dev_err(fbdev->dev, "failed to allocate fbmem\n"); ++ return r; ++ } ++ ++ DBG("fbmems allocated\n"); ++ ++ /* setup fb_infos */ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ r = fbinfo_init(fbdev, fbdev->fbs[i]); ++ if (r) { ++ dev_err(fbdev->dev, "failed to setup fb_info\n"); ++ return r; ++ } ++ } ++ ++ DBG("fb_infos initialized\n"); ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ r = register_framebuffer(fbdev->fbs[i]); ++ if (r != 0) { ++ dev_err(fbdev->dev, ++ "registering framebuffer %d failed\n", i); ++ return r; ++ } ++ } ++ ++ DBG("framebuffers registered\n"); ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ r = omapfb_apply_changes(fbdev->fbs[i], 1); ++ if (r) ++ dev_err(fbdev->dev, "failed to change mode\n"); ++ } ++ ++ /* Enable the first framebuffer that has overlay that is connected ++ * to display. Usually this would be the GFX plane. */ ++ r = 0; ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]); ++ int t; ++ ++ for (t = 0; t < ofbi->num_overlays; t++) { ++ struct omap_overlay *ovl = ofbi->overlays[t]; ++ if (ovl->manager && ovl->manager->display) { ++ ovl->enable(ovl, 1); ++ r = 1; ++ break; ++ } ++ } ++ ++ if (r) ++ break; ++ } ++ ++ DBG("create_framebuffers done\n"); ++ ++ return 0; ++} ++ ++static int omapfb_probe(struct platform_device *pdev) ++{ ++ struct omapfb2_device *fbdev = NULL; ++ int r = 0; ++ int i, t; ++ struct omap_overlay *ovl; ++ struct omap_display *def_display; ++ ++ DBG("omapfb_probe\n"); ++ ++ if (pdev->num_resources != 0) { ++ dev_err(&pdev->dev, "probed for an unknown device\n"); ++ r = -ENODEV; ++ goto err0; ++ } ++ ++ if (pdev->dev.platform_data == NULL) { ++ dev_err(&pdev->dev, "missing platform data\n"); ++ r = -ENOENT; ++ goto err0; ++ } ++ ++ fbdev = kzalloc(sizeof(struct omapfb2_device), GFP_KERNEL); ++ if (fbdev == NULL) { ++ r = -ENOMEM; ++ goto err0; ++ } ++ ++ mutex_init(&fbdev->mtx); ++ ++ fbdev->dev = &pdev->dev; ++ platform_set_drvdata(pdev, fbdev); ++ ++ fbdev->num_displays = 0; ++ t = omap_dss_get_num_displays(); ++ for (i = 0; i < t; i++) { ++ struct omap_display *display; ++ display = omap_dss_get_display(i); ++ if (!display) { ++ dev_err(&pdev->dev, "can't get display %d\n", i); ++ r = -EINVAL; ++ goto cleanup; ++ } ++ ++ fbdev->displays[fbdev->num_displays++] = display; ++ } ++ ++ if (fbdev->num_displays == 0) { ++ dev_err(&pdev->dev, "no displays\n"); ++ r = -EINVAL; ++ goto cleanup; ++ } ++ ++ fbdev->num_overlays = omap_dss_get_num_overlays(); ++ for (i = 0; i < fbdev->num_overlays; i++) ++ fbdev->overlays[i] = omap_dss_get_overlay(i); ++ ++ fbdev->num_managers = omap_dss_get_num_overlay_managers(); ++ for (i = 0; i < fbdev->num_managers; i++) ++ fbdev->managers[i] = omap_dss_get_overlay_manager(i); ++ ++ ++ /* gfx overlay should be the default one. find a display ++ * connected to that, and use it as default display */ ++ ovl = omap_dss_get_overlay(0); ++ if (ovl->manager && ovl->manager->display) { ++ def_display = ovl->manager->display; ++ } else { ++ dev_err(&pdev->dev, "cannot find default display\n"); ++ r = -EINVAL; ++ goto cleanup; ++ } ++ ++ r = omapfb_create_framebuffers(fbdev); ++ if (r) ++ goto cleanup; ++ ++ for (i = 0; i < fbdev->num_managers; i++) { ++ struct omap_overlay_manager *mgr; ++ mgr = fbdev->managers[i]; ++ r = mgr->apply(mgr); ++ if (r) { ++ dev_err(fbdev->dev, "failed to apply dispc config\n"); ++ goto cleanup; ++ } ++ } ++ ++ DBG("mgr->apply'ed\n"); ++ ++ r = def_display->enable(def_display); ++ if (r) { ++ dev_err(fbdev->dev, "Failed to enable display '%s'\n", ++ def_display->name); ++ goto cleanup; ++ } ++ ++ /* set the update mode */ ++ if (def_display->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) { ++#ifdef CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE ++ if (def_display->set_update_mode) ++ def_display->set_update_mode(def_display, ++ OMAP_DSS_UPDATE_AUTO); ++ if (def_display->enable_te) ++ def_display->enable_te(def_display, 1); ++#else ++ if (def_display->set_update_mode) ++ def_display->set_update_mode(def_display, ++ OMAP_DSS_UPDATE_MANUAL); ++ if (def_display->enable_te) ++ def_display->enable_te(def_display, 0); ++#endif ++ } else { ++ if (def_display->set_update_mode) ++ def_display->set_update_mode(def_display, ++ OMAP_DSS_UPDATE_AUTO); ++ } ++ ++ for (i = 0; i < fbdev->num_displays; i++) { ++ struct omap_display *display = fbdev->displays[i]; ++ ++ if (display->update) ++ display->update(display, ++ 0, 0, ++ display->x_res, display->y_res); ++ } ++ ++ DBG("display->updated\n"); ++ ++ omapfb_create_sysfs(fbdev); ++ DBG("sysfs created\n"); ++ ++ return 0; ++ ++cleanup: ++ omapfb_free_resources(fbdev); ++err0: ++ dev_err(&pdev->dev, "failed to setup omapfb\n"); ++ return r; ++} ++ ++static int omapfb_remove(struct platform_device *pdev) ++{ ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ ++ /* FIXME: wait till completion of pending events */ ++ ++ omapfb_remove_sysfs(fbdev); ++ ++ omapfb_free_resources(fbdev); ++ ++ return 0; ++} ++ ++static struct platform_driver omapfb_driver = { ++ .probe = omapfb_probe, ++ .remove = omapfb_remove, ++ .driver = { ++ .name = "omapfb", ++ .owner = THIS_MODULE, ++ }, ++}; ++ ++static int __init omapfb_init(void) ++{ ++ DBG("omapfb_init\n"); ++ ++ if (platform_driver_register(&omapfb_driver)) { ++ printk(KERN_ERR "failed to register omapfb driver\n"); ++ return -ENODEV; ++ } ++ ++ return 0; ++} ++ ++static void __exit omapfb_exit(void) ++{ ++ DBG("omapfb_exit\n"); ++ platform_driver_unregister(&omapfb_driver); ++} ++ ++/* late_initcall to let panel/ctrl drivers loaded first. ++ * I guess better option would be a more dynamic approach, ++ * so that omapfb reacts to new panels when they are loaded */ ++late_initcall(omapfb_init); ++/*module_init(omapfb_init);*/ ++module_exit(omapfb_exit); ++ ++MODULE_AUTHOR("Tomi Valkeinen "); ++MODULE_DESCRIPTION("OMAP2/3 Framebuffer"); ++MODULE_LICENSE("GPL v2"); +diff --git a/drivers/video/omap2/omapfb-sysfs.c b/drivers/video/omap2/omapfb-sysfs.c +new file mode 100644 +index 0000000..e01edd1 +--- /dev/null ++++ b/drivers/video/omap2/omapfb-sysfs.c +@@ -0,0 +1,833 @@ ++/* ++ * linux/drivers/video/omap2/omapfb-sysfs.c ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "omapfb.h" ++ ++static int omapfb_attach_framebuffer(struct fb_info *fbi, ++ struct omap_overlay *ovl) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ int i, t; ++ int r; ++ ++ if (ofbi->num_overlays >= OMAPFB_MAX_OVL_PER_FB) { ++ dev_err(fbdev->dev, "fb has max number of overlays already\n"); ++ return -EINVAL; ++ } ++ ++ for (i = 0; i < ofbi->num_overlays; i++) { ++ if (ofbi->overlays[i] == ovl) { ++ dev_err(fbdev->dev, "fb already attached to overlay\n"); ++ return -EINVAL; ++ } ++ } ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ struct omapfb_info *ofbi2 = FB2OFB(fbdev->fbs[i]); ++ for (t = 0; t < ofbi2->num_overlays; t++) { ++ if (ofbi2->overlays[t] == ovl) { ++ dev_err(fbdev->dev, "overlay already in use\n"); ++ return -EINVAL; ++ } ++ } ++ } ++ ++ ofbi->overlays[ofbi->num_overlays++] = ovl; ++ ++/* ++ if (ovl->manager && ovl->manager->display) ++ omapfb_adjust_fb(fbi, ovl, 0, 0); ++*/ ++ r = omapfb_apply_changes(fbi, 1); ++ if (r) ++ return r; ++ ++ if (ovl->manager) ++ ovl->manager->apply(ovl->manager); ++ ++ return 0; ++} ++ ++static int omapfb_detach_framebuffer(struct fb_info *fbi, ++ struct omap_overlay *ovl) ++{ ++ int i; ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ struct omapfb2_device *fbdev = ofbi->fbdev; ++ ++ for (i = 0; i < ofbi->num_overlays; i++) { ++ if (ofbi->overlays[i] == ovl) ++ break; ++ } ++ ++ if (i == ofbi->num_overlays) { ++ dev_err(fbdev->dev, "cannot detach fb, overlay not attached\n"); ++ return -EINVAL; ++ } ++ ++ ovl->enable(ovl, 0); ++ ++ if (ovl->manager) ++ ovl->manager->apply(ovl->manager); ++ ++ for (i = i + 1; i < ofbi->num_overlays; i++) ++ ofbi->overlays[i-1] = ofbi->overlays[i]; ++ ++ ofbi->num_overlays--; ++ ++ return 0; ++} ++ ++ ++static ssize_t show_framebuffers(struct device *dev, ++ struct device_attribute *attr, ++ char *buf) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ ssize_t l = 0, size = PAGE_SIZE; ++ int i, t; ++ ++ omapfb_lock(fbdev); ++ ++ for (i = 0; i < fbdev->num_fbs; i++) { ++ struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]); ++ ++ l += snprintf(buf + l, size - l, "%d t:", ofbi->id); ++ ++ if (ofbi->num_overlays == 0) ++ l += snprintf(buf + l, size - l, "none"); ++ ++ for (t = 0; t < ofbi->num_overlays; t++) { ++ struct omap_overlay *ovl; ++ ovl = ofbi->overlays[t]; ++ ++ l += snprintf(buf + l, size - l, "%s%s", ++ t == 0 ? "" : ",", ++ ovl->name); ++ } ++ ++ l += snprintf(buf + l, size - l, "\n"); ++ } ++ ++ omapfb_unlock(fbdev); ++ ++ return l; ++} ++ ++static struct omap_overlay *find_overlay_by_name(struct omapfb2_device *fbdev, ++ char *name) ++{ ++ int i; ++ ++ for (i = 0; i < fbdev->num_overlays; i++) ++ if (strcmp(name, fbdev->overlays[i]->name) == 0) ++ return fbdev->overlays[i]; ++ ++ return NULL; ++} ++ ++static struct omap_display *find_display_by_name(struct omapfb2_device *fbdev, ++ char *name) ++{ ++ int i; ++ ++ for (i = 0; i < fbdev->num_displays; i++) ++ if (strcmp(name, fbdev->displays[i]->name) == 0) ++ return fbdev->displays[i]; ++ ++ return NULL; ++} ++ ++static struct omap_overlay_manager *find_manager_by_name( ++ struct omapfb2_device *fbdev, ++ char *name) ++{ ++ int i; ++ ++ for (i = 0; i < fbdev->num_managers; i++) ++ if (strcmp(name, fbdev->managers[i]->name) == 0) ++ return fbdev->managers[i]; ++ ++ return NULL; ++} ++ ++static int parse_overlays(struct omapfb2_device *fbdev, char *str, ++ struct omap_overlay *ovls[]) ++{ ++ int num_ovls = 0; ++ int s, e = 0; ++ char ovlname[10]; ++ ++ while (1) { ++ struct omap_overlay *ovl; ++ ++ s = e; ++ ++ while (e < strlen(str) && str[e] != ',') ++ e++; ++ ++ strncpy(ovlname, str + s, e - s); ++ ovlname[e-s] = 0; ++ ++ DBG("searching for '%s'\n", ovlname); ++ ovl = find_overlay_by_name(fbdev, ovlname); ++ ++ if (ovl) { ++ DBG("found an overlay\n"); ++ ovls[num_ovls] = ovl; ++ num_ovls++; ++ } else { ++ DBG("unknown overlay %s\n", str); ++ return 0; ++ } ++ ++ if (e == strlen(str)) ++ break; ++ ++ e++; ++ } ++ ++ return num_ovls; ++} ++ ++static ssize_t store_framebuffers(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ int idx; ++ char fbname[3]; ++ unsigned long fbnum; ++ char ovlnames[40]; ++ int num_ovls = 0; ++ struct omap_overlay *ovls[OMAPFB_MAX_OVL_PER_FB]; ++ struct fb_info *fbi; ++ struct omapfb_info *ofbi; ++ int r, i; ++ ++ idx = 0; ++ while (idx < count && buf[idx] != ' ') ++ ++idx; ++ ++ if (idx == count) ++ return -EINVAL; ++ ++ if (idx >= sizeof(fbname)) ++ return -EINVAL; ++ ++ strncpy(fbname, buf, idx); ++ fbname[idx] = 0; ++ idx++; ++ ++ if (strict_strtoul(fbname, 10, &fbnum)) ++ return -EINVAL; ++ ++ r = sscanf(buf + idx, "t:%39s", ovlnames); ++ ++ if (r != 1) { ++ r = -EINVAL; ++ goto err; ++ } ++ ++ omapfb_lock(fbdev); ++ ++ if (fbnum >= fbdev->num_fbs) { ++ dev_err(dev, "fb not found\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ fbi = fbdev->fbs[fbnum]; ++ ofbi = FB2OFB(fbi); ++ ++ if (strcmp(ovlnames, "none") == 0) { ++ num_ovls = 0; ++ } else { ++ num_ovls = parse_overlays(fbdev, ovlnames, ovls); ++ ++ if (num_ovls == 0) { ++ dev_err(dev, "overlays not found\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ } ++ ++ for (i = 0; i < ofbi->num_overlays; i++) { ++ r = omapfb_detach_framebuffer(fbi, ofbi->overlays[i]); ++ if (r) { ++ dev_err(dev, "detach failed\n"); ++ goto err; ++ } ++ } ++ ++ if (num_ovls > 0) { ++ for (i = 0; i < num_ovls; i++) { ++ r = omapfb_attach_framebuffer(fbi, ovls[i]); ++ if (r) { ++ dev_err(dev, "attach failed\n"); ++ goto err; ++ } ++ } ++ } ++ ++ omapfb_unlock(fbdev); ++ return count; ++ ++err: ++ omapfb_unlock(fbdev); ++ return r; ++} ++ ++static ssize_t show_overlays(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ ssize_t l = 0, size = PAGE_SIZE; ++ int i, mgr_num; ++ ++ omapfb_lock(fbdev); ++ ++ for (i = 0; i < fbdev->num_overlays; i++) { ++ struct omap_overlay *ovl; ++ struct omap_overlay_manager *mgr; ++ ++ ovl = fbdev->overlays[i]; ++ mgr = ovl->manager; ++ ++ for (mgr_num = 0; mgr_num < fbdev->num_managers; mgr_num++) ++ if (fbdev->managers[mgr_num] == mgr) ++ break; ++ ++ l += snprintf(buf + l, size - l, ++ "%s t:%s x:%d y:%d iw:%d ih:%d w: %d h: %d e:%d\n", ++ ovl->name, ++ mgr ? mgr->name : "none", ++ ovl->info.pos_x, ++ ovl->info.pos_y, ++ ovl->info.width, ++ ovl->info.height, ++ ovl->info.out_width, ++ ovl->info.out_height, ++ ovl->info.enabled); ++ } ++ ++ omapfb_unlock(fbdev); ++ ++ return l; ++} ++ ++static ssize_t store_overlays(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ int idx; ++ struct omap_overlay *ovl = NULL; ++ struct omap_overlay_manager *mgr; ++ int r; ++ char ovlname[10]; ++ int posx, posy, outw, outh; ++ int enabled; ++ ++ idx = 0; ++ while (idx < count && buf[idx] != ' ') ++ ++idx; ++ ++ if (idx == count) ++ return -EINVAL; ++ ++ if (idx >= sizeof(ovlname)) ++ return -EINVAL; ++ ++ strncpy(ovlname, buf, idx); ++ ovlname[idx] = 0; ++ idx++; ++ ++ omapfb_lock(fbdev); ++ ++ ovl = find_overlay_by_name(fbdev, ovlname); ++ ++ if (!ovl) { ++ dev_err(dev, "ovl not found\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ DBG("ovl %s found\n", ovl->name); ++ ++ mgr = ovl->manager; ++ ++ posx = ovl->info.pos_x; ++ posy = ovl->info.pos_y; ++ outw = ovl->info.out_width; ++ outh = ovl->info.out_height; ++ enabled = ovl->info.enabled; ++ ++ while (idx < count) { ++ char c; ++ int val; ++ int len; ++ char sval[10]; ++ ++ r = sscanf(buf + idx, "%c:%d%n", &c, &val, &len); ++ ++ if (r != 2) { ++ val = 0; ++ ++ r = sscanf(buf + idx, "%c:%9s%n", &c, sval, &len); ++ ++ if (r != 2) { ++ dev_err(dev, "sscanf failed, aborting\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ } else { ++ sval[0] = 0; ++ } ++ ++ switch (c) { ++ case 't': ++ if (strcmp(sval, "none") == 0) { ++ mgr = NULL; ++ } else { ++ mgr = find_manager_by_name(fbdev, sval); ++ ++ if (mgr == NULL) { ++ dev_err(dev, "no such manager\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ DBG("manager %s found\n", mgr->name); ++ } ++ ++ break; ++ ++ case 'x': ++ posx = val; ++ break; ++ ++ case 'y': ++ posy = val; ++ break; ++ ++ case 'w': ++ if (ovl->caps & OMAP_DSS_OVL_CAP_SCALE) ++ outw = val; ++ break; ++ ++ case 'h': ++ if (ovl->caps & OMAP_DSS_OVL_CAP_SCALE) ++ outh = val; ++ break; ++ ++ case 'e': ++ enabled = val; ++ break; ++ ++ default: ++ dev_err(dev, "unknown option %c\n", c); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ idx += len + 1; ++ } ++ ++ r = ovl->setup_output(ovl, posx, posy, outw, outh); ++ ++ if (r) { ++ dev_err(dev, "setup overlay failed\n"); ++ goto err; ++ } ++ ++ if (mgr != ovl->manager) { ++ /* detach old manager */ ++ if (ovl->manager) { ++ r = ovl->unset_manager(ovl); ++ if (r) { ++ dev_err(dev, "detach failed\n"); ++ goto err; ++ } ++ } ++ ++ if (mgr) { ++ r = ovl->set_manager(ovl, mgr); ++ if (r) { ++ dev_err(dev, "Failed to attach overlay\n"); ++ goto err; ++ } ++ } ++ } ++ ++ r = ovl->enable(ovl, enabled); ++ ++ if (r) { ++ dev_err(dev, "enable overlay failed\n"); ++ goto err; ++ } ++ ++ if (mgr) { ++ r = mgr->apply(mgr); ++ if (r) { ++ dev_err(dev, "failed to apply dispc config\n"); ++ goto err; ++ } ++ } else { ++ ovl->enable(ovl, 0); ++ } ++ ++ if (mgr && mgr->display && mgr->display->update) ++ mgr->display->update(mgr->display, ++ 0, 0, ++ mgr->display->x_res, mgr->display->y_res); ++ ++ omapfb_unlock(fbdev); ++ return count; ++ ++err: ++ omapfb_unlock(fbdev); ++ return r; ++} ++ ++static ssize_t show_managers(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ ssize_t l = 0, size = PAGE_SIZE; ++ int i; ++ ++ omapfb_lock(fbdev); ++ ++ for (i = 0; i < fbdev->num_managers; i++) { ++ struct omap_display *display; ++ struct omap_overlay_manager *mgr; ++ ++ mgr = fbdev->managers[i]; ++ display = mgr->display; ++ ++ l += snprintf(buf + l, size - l, "%s t:%s\n", ++ mgr->name, display ? display->name : "none"); ++ } ++ ++ omapfb_unlock(fbdev); ++ ++ return l; ++} ++ ++static ssize_t store_managers(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ int idx; ++ struct omap_overlay_manager *mgr; ++ struct omap_display *display; ++ char mgrname[10]; ++ char displayname[10]; ++ int r; ++ ++ idx = 0; ++ while (idx < count && buf[idx] != ' ') ++ ++idx; ++ ++ if (idx == count) ++ return -EINVAL; ++ ++ if (idx >= sizeof(mgrname)) ++ return -EINVAL; ++ ++ strncpy(mgrname, buf, idx); ++ mgrname[idx] = 0; ++ idx++; ++ ++ omapfb_lock(fbdev); ++ ++ mgr = find_manager_by_name(fbdev, mgrname); ++ ++ if (!mgr) { ++ dev_err(dev, "manager not found\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ r = sscanf(buf + idx, "t:%9s", displayname); ++ ++ if (r != 1) { ++ r = -EINVAL; ++ goto err; ++ } ++ ++ if (strcmp(displayname, "none") == 0) { ++ display = NULL; ++ } else { ++ display = find_display_by_name(fbdev, displayname); ++ ++ if (!display) { ++ dev_err(dev, "display not found\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ } ++ ++ if (mgr->display) { ++ r = mgr->unset_display(mgr); ++ if (r) { ++ dev_err(dev, "failed to unset display\n"); ++ goto err; ++ } ++ } ++ ++ if (display) { ++ r = mgr->set_display(mgr, display); ++ if (r) { ++ dev_err(dev, "failed to set manager\n"); ++ goto err; ++ } ++ ++ r = mgr->apply(mgr); ++ if (r) { ++ dev_err(dev, "failed to apply dispc config\n"); ++ goto err; ++ } ++ } ++ ++ omapfb_unlock(fbdev); ++ return count; ++ ++err: ++ omapfb_unlock(fbdev); ++ return r; ++} ++ ++static ssize_t show_displays(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ ssize_t l = 0, size = PAGE_SIZE; ++ int i; ++ ++ omapfb_lock(fbdev); ++ ++ for (i = 0; i < fbdev->num_displays; i++) { ++ struct omap_display *display; ++ enum omap_dss_update_mode mode = -1; ++ int te = 0; ++ ++ display = fbdev->displays[i]; ++ ++ if (display->get_update_mode) ++ mode = display->get_update_mode(display); ++ ++ if (display->get_te) ++ te = display->get_te(display); ++ ++ l += snprintf(buf + l, size - l, ++ "%s w:%d h:%d e:%d u:%d t:%d\n", ++ display->name, ++ display->x_res, ++ display->y_res, ++ display->state != OMAP_DSS_DISPLAY_DISABLED, ++ mode, te); ++ } ++ ++ omapfb_unlock(fbdev); ++ ++ return l; ++} ++ ++static ssize_t store_displays(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); ++ int idx; ++ int enable, width, height; ++ enum omap_dss_update_mode mode; ++ struct omap_display *display = NULL; ++ int r; ++ char displayname[10]; ++ int te; ++ ++ idx = 0; ++ while (idx < count && buf[idx] != ' ') ++ ++idx; ++ ++ if (idx == count) ++ return -EINVAL; ++ ++ if (idx >= sizeof(displayname)) ++ return -EINVAL; ++ ++ strncpy(displayname, buf, idx); ++ displayname[idx] = 0; ++ idx++; ++ ++ omapfb_lock(fbdev); ++ ++ display = find_display_by_name(fbdev, displayname); ++ ++ if (!display) { ++ dev_err(dev, "display not found\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ width = display->x_res; ++ height = display->y_res; ++ enable = display->state != OMAP_DSS_DISPLAY_DISABLED; ++ if (display->get_update_mode) ++ mode = display->get_update_mode(display); ++ else ++ mode = 0; ++ ++ if (display->get_te) ++ te = display->get_te(display); ++ else ++ te = 0; ++ ++ while (idx < count) { ++ char c; ++ int val; ++ int len; ++ ++ r = sscanf(buf + idx, "%c:%d%n", &c, &val, &len); ++ ++ if (r != 2) { ++ dev_err(dev, "sscanf failed, aborting\n"); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ switch (c) { ++ case 'w': ++ width = val; ++ break; ++ ++ case 'h': ++ height = val; ++ break; ++ ++ case 'e': ++ enable = val; ++ break; ++ ++ case 'u': ++ mode = val; ++ break; ++ ++ case 't': ++ te = val; ++ break; ++ ++ default: ++ dev_err(dev, "unknown option %c\n", c); ++ r = -EINVAL; ++ goto err; ++ } ++ ++ idx += len + 1; ++ } ++ ++ /* XXX: setmode */ ++ if (enable != (display->state != OMAP_DSS_DISPLAY_DISABLED)) { ++ if (enable) { ++ r = display->enable(display); ++ if (r) ++ dev_err(dev, "failed to enable display\n"); ++ } else { ++ display->disable(display); ++ } ++ } ++ ++ if (display->set_update_mode && display->get_update_mode) { ++ if (mode != display->get_update_mode(display)) ++ display->set_update_mode(display, mode); ++ } ++ ++ if (display->enable_te && display->get_te) { ++ if (te != display->get_te(display)) ++ display->enable_te(display, te); ++ } ++ ++ omapfb_unlock(fbdev); ++ return count; ++ ++err: ++ omapfb_unlock(fbdev); ++ return r; ++} ++ ++ ++static DEVICE_ATTR(framebuffers, S_IRUGO | S_IWUSR, ++ show_framebuffers, store_framebuffers); ++static DEVICE_ATTR(overlays, S_IRUGO | S_IWUSR, ++ show_overlays, store_overlays); ++static DEVICE_ATTR(managers, S_IRUGO | S_IWUSR, ++ show_managers, store_managers); ++static DEVICE_ATTR(displays, S_IRUGO | S_IWUSR, ++ show_displays, store_displays); ++ ++static struct attribute *omapfb_attrs[] = { ++ &dev_attr_framebuffers.attr, ++ &dev_attr_overlays.attr, ++ &dev_attr_managers.attr, ++ &dev_attr_displays.attr, ++ NULL, ++}; ++ ++static struct attribute_group omapfb_attr_group = { ++ .attrs = omapfb_attrs, ++}; ++ ++void omapfb_create_sysfs(struct omapfb2_device *fbdev) ++{ ++ int r; ++ ++ r = sysfs_create_group(&fbdev->dev->kobj, &omapfb_attr_group); ++ if (r) ++ dev_err(fbdev->dev, "failed to create sysfs clk file\n"); ++} ++ ++void omapfb_remove_sysfs(struct omapfb2_device *fbdev) ++{ ++ sysfs_remove_group(&fbdev->dev->kobj, &omapfb_attr_group); ++} ++ +diff --git a/drivers/video/omap2/omapfb.h b/drivers/video/omap2/omapfb.h +new file mode 100644 +index 0000000..04ca444 +--- /dev/null ++++ b/drivers/video/omap2/omapfb.h +@@ -0,0 +1,104 @@ ++/* ++ * linux/drivers/video/omap2/omapfb.h ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Some code and ideas taken from drivers/video/omap/ driver ++ * by Imre Deak. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#ifndef __DRIVERS_VIDEO_OMAP2_OMAPFB_H__ ++#define __DRIVERS_VIDEO_OMAP2_OMAPFB_H__ ++ ++#ifdef CONFIG_FB_OMAP2_DEBUG ++#define DEBUG ++#endif ++ ++#ifdef DEBUG ++#define DBG(format, ...) printk(KERN_DEBUG "OMAPFB: " format, ## __VA_ARGS__) ++#else ++#define DBG(format, ...) ++#endif ++ ++#define FB2OFB(fb_info) ((struct omapfb_info *)(fb_info->par)) ++ ++/* max number of overlays to which a framebuffer data can be direct */ ++#define OMAPFB_MAX_OVL_PER_FB 3 ++ ++/* appended to fb_info */ ++struct omapfb_info { ++ int id; ++ struct omapfb_mem_region region; ++ int num_overlays; ++ struct omap_overlay *overlays[OMAPFB_MAX_OVL_PER_FB]; ++ struct omapfb2_device *fbdev; ++}; ++ ++struct omapfb2_device { ++ struct device *dev; ++ struct mutex mtx; ++ ++ u32 pseudo_palette[17]; ++ ++ int state; ++ ++ int num_fbs; ++ struct fb_info *fbs[10]; ++ ++ int num_displays; ++ struct omap_display *displays[10]; ++ int num_overlays; ++ struct omap_overlay *overlays[10]; ++ int num_managers; ++ struct omap_overlay_manager *managers[10]; ++}; ++ ++int omapfb_apply_changes(struct fb_info *fbi, int init); ++int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl, ++ int posx, int posy, int outw, int outh); ++ ++void omapfb_create_sysfs(struct omapfb2_device *fbdev); ++void omapfb_remove_sysfs(struct omapfb2_device *fbdev); ++ ++int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg); ++ ++/* find the display connected to this fb, if any */ ++static inline struct omap_display *fb2display(struct fb_info *fbi) ++{ ++ struct omapfb_info *ofbi = FB2OFB(fbi); ++ int i; ++ ++ /* XXX: returns the display connected to first attached overlay */ ++ for (i = 0; i < ofbi->num_overlays; i++) { ++ if (ofbi->overlays[i]->manager) ++ return ofbi->overlays[i]->manager->display; ++ } ++ ++ return NULL; ++} ++ ++static inline void omapfb_lock(struct omapfb2_device *fbdev) ++{ ++ mutex_lock(&fbdev->mtx); ++} ++ ++static inline void omapfb_unlock(struct omapfb2_device *fbdev) ++{ ++ mutex_unlock(&fbdev->mtx); ++} ++ ++ ++#endif +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0005-DSS-RFBI-support-for-OMAP2-3-DSS.patch b/packages/linux/linux-omap/0005-DSS-RFBI-support-for-OMAP2-3-DSS.patch deleted file mode 100644 index de376e6bd8..0000000000 --- a/packages/linux/linux-omap/0005-DSS-RFBI-support-for-OMAP2-3-DSS.patch +++ /dev/null @@ -1,1254 +0,0 @@ -From 029f985ead9e1ea4f5d26c5ee1a234c144d2b418 Mon Sep 17 00:00:00 2001 -From: Tomi Valkeinen -Date: Tue, 4 Nov 2008 16:53:02 +0200 -Subject: [PATCH] DSS: RFBI support for OMAP2/3 DSS - -Signed-off-by: Tomi Valkeinen ---- - arch/arm/plat-omap/dss/rfbi.c | 1234 +++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 1234 insertions(+), 0 deletions(-) - create mode 100644 arch/arm/plat-omap/dss/rfbi.c - -diff --git a/arch/arm/plat-omap/dss/rfbi.c b/arch/arm/plat-omap/dss/rfbi.c -new file mode 100644 -index 0000000..31ddd24 ---- /dev/null -+++ b/arch/arm/plat-omap/dss/rfbi.c -@@ -0,0 +1,1234 @@ -+/* -+ * linux/arch/arm/plat-omap/dss/rfbi.c -+ * -+ * Copyright (C) 2008 Nokia Corporation -+ * Author: Tomi Valkeinen -+ * -+ * Some code and ideas taken from drivers/video/omap/ driver -+ * by Imre Deak. -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ * 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 . -+ */ -+ -+#define DSS_SUBSYS_NAME "RFBI" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include "dss.h" -+ -+/*#define MEASURE_PERF*/ -+ -+#define RFBI_BASE 0x48050800 -+ -+struct rfbi_reg { u16 idx; }; -+ -+#define RFBI_REG(idx) ((const struct rfbi_reg) { idx }) -+ -+#define RFBI_REVISION RFBI_REG(0x0000) -+#define RFBI_SYSCONFIG RFBI_REG(0x0010) -+#define RFBI_SYSSTATUS RFBI_REG(0x0014) -+#define RFBI_CONTROL RFBI_REG(0x0040) -+#define RFBI_PIXEL_CNT RFBI_REG(0x0044) -+#define RFBI_LINE_NUMBER RFBI_REG(0x0048) -+#define RFBI_CMD RFBI_REG(0x004c) -+#define RFBI_PARAM RFBI_REG(0x0050) -+#define RFBI_DATA RFBI_REG(0x0054) -+#define RFBI_READ RFBI_REG(0x0058) -+#define RFBI_STATUS RFBI_REG(0x005c) -+ -+#define RFBI_CONFIG(n) RFBI_REG(0x0060 + (n)*0x18) -+#define RFBI_ONOFF_TIME(n) RFBI_REG(0x0064 + (n)*0x18) -+#define RFBI_CYCLE_TIME(n) RFBI_REG(0x0068 + (n)*0x18) -+#define RFBI_DATA_CYCLE1(n) RFBI_REG(0x006c + (n)*0x18) -+#define RFBI_DATA_CYCLE2(n) RFBI_REG(0x0070 + (n)*0x18) -+#define RFBI_DATA_CYCLE3(n) RFBI_REG(0x0074 + (n)*0x18) -+ -+#define RFBI_VSYNC_WIDTH RFBI_REG(0x0090) -+#define RFBI_HSYNC_WIDTH RFBI_REG(0x0094) -+ -+#define RFBI_CMD_FIFO_LEN_BYTES (16 * sizeof(struct update_param)) -+ -+#define REG_FLD_MOD(idx, val, start, end) \ -+ rfbi_write_reg(idx, FLD_MOD(rfbi_read_reg(idx), val, start, end)) -+ -+/* To work around an RFBI transfer rate limitation */ -+#define OMAP_RFBI_RATE_LIMIT 1 -+ -+enum omap_rfbi_cycleformat { -+ OMAP_DSS_RFBI_CYCLEFORMAT_1_1 = 0, -+ OMAP_DSS_RFBI_CYCLEFORMAT_2_1 = 1, -+ OMAP_DSS_RFBI_CYCLEFORMAT_3_1 = 2, -+ OMAP_DSS_RFBI_CYCLEFORMAT_3_2 = 3, -+}; -+ -+enum omap_rfbi_datatype { -+ OMAP_DSS_RFBI_DATATYPE_12 = 0, -+ OMAP_DSS_RFBI_DATATYPE_16 = 1, -+ OMAP_DSS_RFBI_DATATYPE_18 = 2, -+ OMAP_DSS_RFBI_DATATYPE_24 = 3, -+}; -+ -+enum omap_rfbi_parallelmode { -+ OMAP_DSS_RFBI_PARALLELMODE_8 = 0, -+ OMAP_DSS_RFBI_PARALLELMODE_9 = 1, -+ OMAP_DSS_RFBI_PARALLELMODE_12 = 2, -+ OMAP_DSS_RFBI_PARALLELMODE_16 = 3, -+}; -+ -+enum update_cmd { -+ RFBI_CMD_UPDATE = 0, -+ RFBI_CMD_SYNC = 1, -+}; -+ -+static int rfbi_convert_timings(struct rfbi_timings *t); -+static void rfbi_get_clk_info(u32 *clk_period, u32 *max_clk_div); -+static void process_cmd_fifo(void); -+ -+static struct { -+ void __iomem *base; -+ -+ struct clk *dss_ick; -+ struct clk *dss1_fck; -+ -+ unsigned long l4_khz; -+ -+ enum omap_rfbi_datatype datatype; -+ enum omap_rfbi_parallelmode parallelmode; -+ -+ enum omap_rfbi_te_mode te_mode; -+ int te_enabled; -+ -+ void (*framedone_callback)(void *data); -+ void *framedone_callback_data; -+ -+ struct omap_display *display[2]; -+ -+ struct kfifo *cmd_fifo; -+ spinlock_t cmd_lock; -+ struct completion cmd_done; -+ atomic_t cmd_fifo_full; -+ atomic_t cmd_pending; -+#ifdef MEASURE_PERF -+ ktime_t perf_time; -+#endif -+} rfbi; -+ -+struct update_region { -+ u16 x; -+ u16 y; -+ u16 w; -+ u16 h; -+}; -+ -+struct update_param { -+ u8 rfbi_module; -+ u8 cmd; -+ -+ union { -+ struct update_region r; -+ struct completion *sync; -+ } par; -+}; -+ -+static inline void rfbi_write_reg(const struct rfbi_reg idx, u32 val) -+{ -+ __raw_writel(val, rfbi.base + idx.idx); -+} -+ -+static inline u32 rfbi_read_reg(const struct rfbi_reg idx) -+{ -+ return __raw_readl(rfbi.base + idx.idx); -+} -+ -+static void rfbi_enable_clocks(int enable) -+{ -+ if (enable) { -+ clk_enable(rfbi.dss_ick); -+ clk_enable(rfbi.dss1_fck); -+ } else { -+ clk_disable(rfbi.dss1_fck); -+ clk_disable(rfbi.dss_ick); -+ } -+} -+ -+void omap_rfbi_write_command(const void *buf, u32 len) -+{ -+ rfbi_enable_clocks(1); -+ switch (rfbi.parallelmode) { -+ case OMAP_DSS_RFBI_PARALLELMODE_8: -+ { -+ const u8 *b = buf; -+ for (; len; len--) -+ rfbi_write_reg(RFBI_CMD, *b++); -+ break; -+ } -+ -+ case OMAP_DSS_RFBI_PARALLELMODE_16: -+ { -+ const u16 *w = buf; -+ BUG_ON(len & 1); -+ for (; len; len -= 2) -+ rfbi_write_reg(RFBI_CMD, *w++); -+ break; -+ } -+ -+ case OMAP_DSS_RFBI_PARALLELMODE_9: -+ case OMAP_DSS_RFBI_PARALLELMODE_12: -+ default: -+ BUG(); -+ } -+ rfbi_enable_clocks(0); -+} -+EXPORT_SYMBOL(omap_rfbi_write_command); -+ -+void omap_rfbi_read_data(void *buf, u32 len) -+{ -+ rfbi_enable_clocks(1); -+ switch (rfbi.parallelmode) { -+ case OMAP_DSS_RFBI_PARALLELMODE_8: -+ { -+ u8 *b = buf; -+ for (; len; len--) { -+ rfbi_write_reg(RFBI_READ, 0); -+ *b++ = rfbi_read_reg(RFBI_READ); -+ } -+ break; -+ } -+ -+ case OMAP_DSS_RFBI_PARALLELMODE_16: -+ { -+ u16 *w = buf; -+ BUG_ON(len & ~1); -+ for (; len; len -= 2) { -+ rfbi_write_reg(RFBI_READ, 0); -+ *w++ = rfbi_read_reg(RFBI_READ); -+ } -+ break; -+ } -+ -+ case OMAP_DSS_RFBI_PARALLELMODE_9: -+ case OMAP_DSS_RFBI_PARALLELMODE_12: -+ default: -+ BUG(); -+ } -+ rfbi_enable_clocks(0); -+} -+EXPORT_SYMBOL(omap_rfbi_read_data); -+ -+void omap_rfbi_write_data(const void *buf, u32 len) -+{ -+ rfbi_enable_clocks(1); -+ switch (rfbi.parallelmode) { -+ case OMAP_DSS_RFBI_PARALLELMODE_8: -+ { -+ const u8 *b = buf; -+ for (; len; len--) -+ rfbi_write_reg(RFBI_PARAM, *b++); -+ break; -+ } -+ -+ case OMAP_DSS_RFBI_PARALLELMODE_16: -+ { -+ const u16 *w = buf; -+ BUG_ON(len & 1); -+ for (; len; len -= 2) -+ rfbi_write_reg(RFBI_PARAM, *w++); -+ break; -+ } -+ -+ case OMAP_DSS_RFBI_PARALLELMODE_9: -+ case OMAP_DSS_RFBI_PARALLELMODE_12: -+ default: -+ BUG(); -+ -+ } -+ rfbi_enable_clocks(0); -+} -+EXPORT_SYMBOL(omap_rfbi_write_data); -+ -+void omap_rfbi_write_pixels(const void *buf, int scr_width, int x, int y, -+ int w, int h) -+{ -+ int start_offset = scr_width * y + x; -+ int horiz_offset = scr_width - w; -+ int i; -+ -+ rfbi_enable_clocks(1); -+ -+ if (rfbi.datatype == OMAP_DSS_RFBI_DATATYPE_16 && -+ rfbi.parallelmode == OMAP_DSS_RFBI_PARALLELMODE_8) { -+ const u16 *pd = buf; -+ pd += start_offset; -+ -+ for (; h; --h) { -+ for (i = 0; i < w; ++i) { -+ const u8 *b = (const u8 *)pd; -+ rfbi_write_reg(RFBI_PARAM, *(b+1)); -+ rfbi_write_reg(RFBI_PARAM, *(b+0)); -+ ++pd; -+ } -+ pd += horiz_offset; -+ } -+ } else if (rfbi.datatype == OMAP_DSS_RFBI_DATATYPE_24 && -+ rfbi.parallelmode == OMAP_DSS_RFBI_PARALLELMODE_8) { -+ const u32 *pd = buf; -+ pd += start_offset; -+ -+ for (; h; --h) { -+ for (i = 0; i < w; ++i) { -+ const u8 *b = (const u8 *)pd; -+ rfbi_write_reg(RFBI_PARAM, *(b+2)); -+ rfbi_write_reg(RFBI_PARAM, *(b+1)); -+ rfbi_write_reg(RFBI_PARAM, *(b+0)); -+ ++pd; -+ } -+ pd += horiz_offset; -+ } -+ } else if (rfbi.datatype == OMAP_DSS_RFBI_DATATYPE_16 && -+ rfbi.parallelmode == OMAP_DSS_RFBI_PARALLELMODE_16) { -+ const u16 *pd = buf; -+ pd += start_offset; -+ -+ for (; h; --h) { -+ for (i = 0; i < w; ++i) { -+ rfbi_write_reg(RFBI_PARAM, *pd); -+ ++pd; -+ } -+ pd += horiz_offset; -+ } -+ } else { -+ BUG(); -+ } -+ -+ rfbi_enable_clocks(0); -+} -+EXPORT_SYMBOL(omap_rfbi_write_pixels); -+ -+void rfbi_transfer_area(int width, int height, -+ void (callback)(void *data), void *data) -+{ -+ u32 l; -+ -+ /*BUG_ON(callback == 0);*/ -+ BUG_ON(rfbi.framedone_callback != NULL); -+ -+ DSSDBG("rfbi_transfer_area %dx%d\n", width, height); -+ -+ dispc_set_lcd_size(width, height); -+ -+ dispc_enable_lcd_out(1); -+ -+ rfbi.framedone_callback = callback; -+ rfbi.framedone_callback_data = data; -+ -+ rfbi_enable_clocks(1); -+ -+#ifdef MEASURE_PERF -+ rfbi.perf_time = ktime_get(); -+#endif -+ rfbi_write_reg(RFBI_PIXEL_CNT, width * height); -+ -+ l = rfbi_read_reg(RFBI_CONTROL); -+ l = FLD_MOD(l, 1, 0, 0); /* enable */ -+ if (!rfbi.te_enabled) -+ l = FLD_MOD(l, 1, 4, 4); /* ITE */ -+ -+ rfbi_write_reg(RFBI_CONTROL, l); -+} -+ -+static void framedone_callback(void *data, u32 mask) -+{ -+ void (*callback)(void *data); -+ -+#ifdef MEASURE_PERF -+ { -+ ktime_t t = ktime_get(); -+ t = ktime_sub(t, rfbi.perf_time); -+ DSSDBG("FRAMEDONE in %lld ns\n", ktime_to_ns(t)); -+ } -+#else -+ DSSDBG("FRAMEDONE\n"); -+#endif -+ -+ REG_FLD_MOD(RFBI_CONTROL, 0, 0, 0); -+ -+ rfbi_enable_clocks(0); -+ -+ callback = rfbi.framedone_callback; -+ rfbi.framedone_callback = NULL; -+ -+ /*callback(rfbi.framedone_callback_data);*/ -+ -+ atomic_set(&rfbi.cmd_pending, 0); -+ -+ process_cmd_fifo(); -+} -+ -+#if 1 /* VERBOSE */ -+static void rfbi_print_timings(void) -+{ -+ u32 l; -+ u32 time; -+ -+ l = rfbi_read_reg(RFBI_CONFIG(0)); -+ time = 1000000000 / rfbi.l4_khz; -+ if (l & (1 << 4)) -+ time *= 2; -+ -+ DSSDBG("Tick time %u ps\n", time); -+ l = rfbi_read_reg(RFBI_ONOFF_TIME(0)); -+ DSSDBG("CSONTIME %d, CSOFFTIME %d, WEONTIME %d, WEOFFTIME %d, " -+ "REONTIME %d, REOFFTIME %d\n", -+ l & 0x0f, (l >> 4) & 0x3f, (l >> 10) & 0x0f, (l >> 14) & 0x3f, -+ (l >> 20) & 0x0f, (l >> 24) & 0x3f); -+ -+ l = rfbi_read_reg(RFBI_CYCLE_TIME(0)); -+ DSSDBG("WECYCLETIME %d, RECYCLETIME %d, CSPULSEWIDTH %d, " -+ "ACCESSTIME %d\n", -+ (l & 0x3f), (l >> 6) & 0x3f, (l >> 12) & 0x3f, -+ (l >> 22) & 0x3f); -+} -+#else -+static void rfbi_print_timings(void) {} -+#endif -+ -+ -+ -+ -+static u32 extif_clk_period; -+ -+static inline unsigned long round_to_extif_ticks(unsigned long ps, int div) -+{ -+ int bus_tick = extif_clk_period * div; -+ return (ps + bus_tick - 1) / bus_tick * bus_tick; -+} -+ -+static int calc_reg_timing(struct rfbi_timings *t, int div) -+{ -+ t->clk_div = div; -+ -+ t->cs_on_time = round_to_extif_ticks(t->cs_on_time, div); -+ -+ t->we_on_time = round_to_extif_ticks(t->we_on_time, div); -+ t->we_off_time = round_to_extif_ticks(t->we_off_time, div); -+ t->we_cycle_time = round_to_extif_ticks(t->we_cycle_time, div); -+ -+ t->re_on_time = round_to_extif_ticks(t->re_on_time, div); -+ t->re_off_time = round_to_extif_ticks(t->re_off_time, div); -+ t->re_cycle_time = round_to_extif_ticks(t->re_cycle_time, div); -+ -+ t->access_time = round_to_extif_ticks(t->access_time, div); -+ t->cs_off_time = round_to_extif_ticks(t->cs_off_time, div); -+ t->cs_pulse_width = round_to_extif_ticks(t->cs_pulse_width, div); -+ -+ DSSDBG("[reg]cson %d csoff %d reon %d reoff %d\n", -+ t->cs_on_time, t->cs_off_time, t->re_on_time, t->re_off_time); -+ DSSDBG("[reg]weon %d weoff %d recyc %d wecyc %d\n", -+ t->we_on_time, t->we_off_time, t->re_cycle_time, -+ t->we_cycle_time); -+ DSSDBG("[reg]rdaccess %d cspulse %d\n", -+ t->access_time, t->cs_pulse_width); -+ -+ return rfbi_convert_timings(t); -+} -+ -+static int calc_extif_timings(struct rfbi_timings *t) -+{ -+ u32 max_clk_div; -+ int div; -+ -+ rfbi_get_clk_info(&extif_clk_period, &max_clk_div); -+ for (div = 1; div <= max_clk_div; div++) { -+ if (calc_reg_timing(t, div) == 0) -+ break; -+ } -+ -+ if (div <= max_clk_div) -+ return 0; -+ -+ DSSERR("can't setup timings\n"); -+ return -1; -+} -+ -+ -+void rfbi_set_timings(int rfbi_module, struct rfbi_timings *t) -+{ -+ int r; -+ -+ if (!t->converted) { -+ r = calc_extif_timings(t); -+ if (r < 0) -+ DSSERR("Failed to calc timings\n"); -+ } -+ -+ BUG_ON(!t->converted); -+ -+ rfbi_enable_clocks(1); -+ rfbi_write_reg(RFBI_ONOFF_TIME(rfbi_module), t->tim[0]); -+ rfbi_write_reg(RFBI_CYCLE_TIME(rfbi_module), t->tim[1]); -+ -+ /* TIMEGRANULARITY */ -+ REG_FLD_MOD(RFBI_CONFIG(rfbi_module), -+ (t->tim[2] ? 1 : 0), 4, 4); -+ -+ rfbi_print_timings(); -+ rfbi_enable_clocks(0); -+} -+ -+static int ps_to_rfbi_ticks(int time, int div) -+{ -+ unsigned long tick_ps; -+ int ret; -+ -+ /* Calculate in picosecs to yield more exact results */ -+ tick_ps = 1000000000 / (rfbi.l4_khz) * div; -+ -+ ret = (time + tick_ps - 1) / tick_ps; -+ -+ return ret; -+} -+ -+#ifdef OMAP_RFBI_RATE_LIMIT -+unsigned long rfbi_get_max_tx_rate(void) -+{ -+ unsigned long l4_rate, dss1_rate; -+ int min_l4_ticks = 0; -+ int i; -+ -+ /* According to TI this can't be calculated so make the -+ * adjustments for a couple of known frequencies and warn for -+ * others. -+ */ -+ static const struct { -+ unsigned long l4_clk; /* HZ */ -+ unsigned long dss1_clk; /* HZ */ -+ unsigned long min_l4_ticks; -+ } ftab[] = { -+ { 55, 132, 7, }, /* 7.86 MPix/s */ -+ { 110, 110, 12, }, /* 9.16 MPix/s */ -+ { 110, 132, 10, }, /* 11 Mpix/s */ -+ { 120, 120, 10, }, /* 12 Mpix/s */ -+ { 133, 133, 10, }, /* 13.3 Mpix/s */ -+ }; -+ -+ l4_rate = rfbi.l4_khz / 1000; -+ dss1_rate = clk_get_rate(rfbi.dss1_fck) / 1000000; -+ -+ for (i = 0; i < ARRAY_SIZE(ftab); i++) { -+ /* Use a window instead of an exact match, to account -+ * for different DPLL multiplier / divider pairs. -+ */ -+ if (abs(ftab[i].l4_clk - l4_rate) < 3 && -+ abs(ftab[i].dss1_clk - dss1_rate) < 3) { -+ min_l4_ticks = ftab[i].min_l4_ticks; -+ break; -+ } -+ } -+ if (i == ARRAY_SIZE(ftab)) { -+ /* Can't be sure, return anyway the maximum not -+ * rate-limited. This might cause a problem only for the -+ * tearing synchronisation. -+ */ -+ DSSERR("can't determine maximum RFBI transfer rate\n"); -+ return rfbi.l4_khz * 1000; -+ } -+ return rfbi.l4_khz * 1000 / min_l4_ticks; -+} -+#else -+int rfbi_get_max_tx_rate(void) -+{ -+ return rfbi.l4_khz * 1000; -+} -+#endif -+ -+static void rfbi_get_clk_info(u32 *clk_period, u32 *max_clk_div) -+{ -+ *clk_period = 1000000000 / rfbi.l4_khz; -+ *max_clk_div = 2; -+} -+ -+static int rfbi_convert_timings(struct rfbi_timings *t) -+{ -+ u32 l; -+ int reon, reoff, weon, weoff, cson, csoff, cs_pulse; -+ int actim, recyc, wecyc; -+ int div = t->clk_div; -+ -+ if (div <= 0 || div > 2) -+ return -1; -+ -+ /* Make sure that after conversion it still holds that: -+ * weoff > weon, reoff > reon, recyc >= reoff, wecyc >= weoff, -+ * csoff > cson, csoff >= max(weoff, reoff), actim > reon -+ */ -+ weon = ps_to_rfbi_ticks(t->we_on_time, div); -+ weoff = ps_to_rfbi_ticks(t->we_off_time, div); -+ if (weoff <= weon) -+ weoff = weon + 1; -+ if (weon > 0x0f) -+ return -1; -+ if (weoff > 0x3f) -+ return -1; -+ -+ reon = ps_to_rfbi_ticks(t->re_on_time, div); -+ reoff = ps_to_rfbi_ticks(t->re_off_time, div); -+ if (reoff <= reon) -+ reoff = reon + 1; -+ if (reon > 0x0f) -+ return -1; -+ if (reoff > 0x3f) -+ return -1; -+ -+ cson = ps_to_rfbi_ticks(t->cs_on_time, div); -+ csoff = ps_to_rfbi_ticks(t->cs_off_time, div); -+ if (csoff <= cson) -+ csoff = cson + 1; -+ if (csoff < max(weoff, reoff)) -+ csoff = max(weoff, reoff); -+ if (cson > 0x0f) -+ return -1; -+ if (csoff > 0x3f) -+ return -1; -+ -+ l = cson; -+ l |= csoff << 4; -+ l |= weon << 10; -+ l |= weoff << 14; -+ l |= reon << 20; -+ l |= reoff << 24; -+ -+ t->tim[0] = l; -+ -+ actim = ps_to_rfbi_ticks(t->access_time, div); -+ if (actim <= reon) -+ actim = reon + 1; -+ if (actim > 0x3f) -+ return -1; -+ -+ wecyc = ps_to_rfbi_ticks(t->we_cycle_time, div); -+ if (wecyc < weoff) -+ wecyc = weoff; -+ if (wecyc > 0x3f) -+ return -1; -+ -+ recyc = ps_to_rfbi_ticks(t->re_cycle_time, div); -+ if (recyc < reoff) -+ recyc = reoff; -+ if (recyc > 0x3f) -+ return -1; -+ -+ cs_pulse = ps_to_rfbi_ticks(t->cs_pulse_width, div); -+ if (cs_pulse > 0x3f) -+ return -1; -+ -+ l = wecyc; -+ l |= recyc << 6; -+ l |= cs_pulse << 12; -+ l |= actim << 22; -+ -+ t->tim[1] = l; -+ -+ t->tim[2] = div - 1; -+ -+ t->converted = 1; -+ -+ return 0; -+} -+ -+/* xxx FIX module selection missing */ -+int omap_rfbi_setup_te(enum omap_rfbi_te_mode mode, -+ unsigned hs_pulse_time, unsigned vs_pulse_time, -+ int hs_pol_inv, int vs_pol_inv, int extif_div) -+{ -+ int hs, vs; -+ int min; -+ u32 l; -+ -+ hs = ps_to_rfbi_ticks(hs_pulse_time, 1); -+ vs = ps_to_rfbi_ticks(vs_pulse_time, 1); -+ if (hs < 2) -+ return -EDOM; -+ if (mode == OMAP_DSS_RFBI_TE_MODE_2) -+ min = 2; -+ else /* OMAP_DSS_RFBI_TE_MODE_1 */ -+ min = 4; -+ if (vs < min) -+ return -EDOM; -+ if (vs == hs) -+ return -EINVAL; -+ rfbi.te_mode = mode; -+ DSSDBG("setup_te: mode %d hs %d vs %d hs_inv %d vs_inv %d\n", -+ mode, hs, vs, hs_pol_inv, vs_pol_inv); -+ -+ rfbi_enable_clocks(1); -+ rfbi_write_reg(RFBI_HSYNC_WIDTH, hs); -+ rfbi_write_reg(RFBI_VSYNC_WIDTH, vs); -+ -+ l = rfbi_read_reg(RFBI_CONFIG(0)); -+ if (hs_pol_inv) -+ l &= ~(1 << 21); -+ else -+ l |= 1 << 21; -+ if (vs_pol_inv) -+ l &= ~(1 << 20); -+ else -+ l |= 1 << 20; -+ rfbi_enable_clocks(0); -+ -+ return 0; -+} -+EXPORT_SYMBOL(omap_rfbi_setup_te); -+ -+/* xxx FIX module selection missing */ -+int omap_rfbi_enable_te(int enable, unsigned line) -+{ -+ u32 l; -+ -+ DSSDBG("te %d line %d mode %d\n", enable, line, rfbi.te_mode); -+ if (line > (1 << 11) - 1) -+ return -EINVAL; -+ -+ rfbi_enable_clocks(1); -+ l = rfbi_read_reg(RFBI_CONFIG(0)); -+ l &= ~(0x3 << 2); -+ if (enable) { -+ rfbi.te_enabled = 1; -+ l |= rfbi.te_mode << 2; -+ } else -+ rfbi.te_enabled = 0; -+ rfbi_write_reg(RFBI_CONFIG(0), l); -+ rfbi_write_reg(RFBI_LINE_NUMBER, line); -+ rfbi_enable_clocks(0); -+ -+ return 0; -+} -+EXPORT_SYMBOL(omap_rfbi_enable_te); -+ -+#if 0 -+static void rfbi_enable_config(int enable1, int enable2) -+{ -+ u32 l; -+ int cs = 0; -+ -+ if (enable1) -+ cs |= 1<<0; -+ if (enable2) -+ cs |= 1<<1; -+ -+ rfbi_enable_clocks(1); -+ -+ l = rfbi_read_reg(RFBI_CONTROL); -+ -+ l = FLD_MOD(l, cs, 3, 2); -+ l = FLD_MOD(l, 0, 1, 1); -+ -+ rfbi_write_reg(RFBI_CONTROL, l); -+ -+ -+ l = rfbi_read_reg(RFBI_CONFIG(0)); -+ l = FLD_MOD(l, 0, 3, 2); /* TRIGGERMODE: ITE */ -+ /*l |= FLD_VAL(2, 8, 7); */ /* L4FORMAT, 2pix/L4 */ -+ /*l |= FLD_VAL(0, 8, 7); */ /* L4FORMAT, 1pix/L4 */ -+ -+ l = FLD_MOD(l, 0, 16, 16); /* A0POLARITY */ -+ l = FLD_MOD(l, 1, 20, 20); /* TE_VSYNC_POLARITY */ -+ l = FLD_MOD(l, 1, 21, 21); /* HSYNCPOLARITY */ -+ -+ l = FLD_MOD(l, OMAP_DSS_RFBI_PARALLELMODE_8, 1, 0); -+ rfbi_write_reg(RFBI_CONFIG(0), l); -+ -+ rfbi_enable_clocks(0); -+} -+#endif -+ -+int rfbi_configure(int rfbi_module, int bpp, int lines) -+{ -+ u32 l; -+ int cycle1 = 0, cycle2 = 0, cycle3 = 0; -+ enum omap_rfbi_cycleformat cycleformat; -+ enum omap_rfbi_datatype datatype; -+ enum omap_rfbi_parallelmode parallelmode; -+ -+ switch (bpp) { -+ case 12: -+ datatype = OMAP_DSS_RFBI_DATATYPE_12; -+ break; -+ case 16: -+ datatype = OMAP_DSS_RFBI_DATATYPE_16; -+ break; -+ case 18: -+ datatype = OMAP_DSS_RFBI_DATATYPE_18; -+ break; -+ case 24: -+ datatype = OMAP_DSS_RFBI_DATATYPE_24; -+ break; -+ default: -+ BUG(); -+ return 1; -+ } -+ rfbi.datatype = datatype; -+ -+ switch (lines) { -+ case 8: -+ parallelmode = OMAP_DSS_RFBI_PARALLELMODE_8; -+ break; -+ case 9: -+ parallelmode = OMAP_DSS_RFBI_PARALLELMODE_9; -+ break; -+ case 12: -+ parallelmode = OMAP_DSS_RFBI_PARALLELMODE_12; -+ break; -+ case 16: -+ parallelmode = OMAP_DSS_RFBI_PARALLELMODE_16; -+ break; -+ default: -+ BUG(); -+ return 1; -+ } -+ rfbi.parallelmode = parallelmode; -+ -+ if ((bpp % lines) == 0) { -+ switch (bpp / lines) { -+ case 1: -+ cycleformat = OMAP_DSS_RFBI_CYCLEFORMAT_1_1; -+ break; -+ case 2: -+ cycleformat = OMAP_DSS_RFBI_CYCLEFORMAT_2_1; -+ break; -+ case 3: -+ cycleformat = OMAP_DSS_RFBI_CYCLEFORMAT_3_1; -+ break; -+ default: -+ BUG(); -+ return 1; -+ } -+ } else if ((2 * bpp % lines) == 0) { -+ if ((2 * bpp / lines) == 3) -+ cycleformat = OMAP_DSS_RFBI_CYCLEFORMAT_3_2; -+ else { -+ BUG(); -+ return 1; -+ } -+ } else { -+ BUG(); -+ return 1; -+ } -+ -+ switch (cycleformat) { -+ case OMAP_DSS_RFBI_CYCLEFORMAT_1_1: -+ cycle1 = lines; -+ break; -+ -+ case OMAP_DSS_RFBI_CYCLEFORMAT_2_1: -+ cycle1 = lines; -+ cycle2 = lines; -+ break; -+ -+ case OMAP_DSS_RFBI_CYCLEFORMAT_3_1: -+ cycle1 = lines; -+ cycle2 = lines; -+ cycle3 = lines; -+ break; -+ -+ case OMAP_DSS_RFBI_CYCLEFORMAT_3_2: -+ cycle1 = lines; -+ cycle2 = (lines / 2) | ((lines / 2) << 16); -+ cycle3 = (lines << 16); -+ break; -+ } -+ -+ rfbi_enable_clocks(1); -+ -+ REG_FLD_MOD(RFBI_CONTROL, 0, 3, 2); /* clear CS */ -+ -+ l = 0; -+ l |= FLD_VAL(parallelmode, 1, 0); -+ l |= FLD_VAL(0, 3, 2); /* TRIGGERMODE: ITE */ -+ l |= FLD_VAL(0, 4, 4); /* TIMEGRANULARITY */ -+ l |= FLD_VAL(datatype, 6, 5); -+ /* l |= FLD_VAL(2, 8, 7); */ /* L4FORMAT, 2pix/L4 */ -+ l |= FLD_VAL(0, 8, 7); /* L4FORMAT, 1pix/L4 */ -+ l |= FLD_VAL(cycleformat, 10, 9); -+ l |= FLD_VAL(0, 12, 11); /* UNUSEDBITS */ -+ l |= FLD_VAL(0, 16, 16); /* A0POLARITY */ -+ l |= FLD_VAL(0, 17, 17); /* REPOLARITY */ -+ l |= FLD_VAL(0, 18, 18); /* WEPOLARITY */ -+ l |= FLD_VAL(0, 19, 19); /* CSPOLARITY */ -+ l |= FLD_VAL(1, 20, 20); /* TE_VSYNC_POLARITY */ -+ l |= FLD_VAL(1, 21, 21); /* HSYNCPOLARITY */ -+ rfbi_write_reg(RFBI_CONFIG(rfbi_module), l); -+ -+ rfbi_write_reg(RFBI_DATA_CYCLE1(rfbi_module), cycle1); -+ rfbi_write_reg(RFBI_DATA_CYCLE2(rfbi_module), cycle2); -+ rfbi_write_reg(RFBI_DATA_CYCLE3(rfbi_module), cycle3); -+ -+ -+ l = rfbi_read_reg(RFBI_CONTROL); -+ l = FLD_MOD(l, rfbi_module+1, 3, 2); /* Select CSx */ -+ l = FLD_MOD(l, 0, 1, 1); /* clear bypass */ -+ rfbi_write_reg(RFBI_CONTROL, l); -+ -+ -+ DSSDBG("RFBI config: bpp %d, lines %d, cycles: 0x%x 0x%x 0x%x\n", -+ bpp, lines, cycle1, cycle2, cycle3); -+ -+ rfbi_enable_clocks(0); -+ -+ return 0; -+} -+ -+static int rfbi_find_display(struct omap_display *disp) -+{ -+ if (disp == rfbi.display[0]) -+ return 0; -+ -+ if (disp == rfbi.display[1]) -+ return 1; -+ -+ BUG(); -+ return -1; -+} -+ -+ -+static void signal_fifo_waiters(void) -+{ -+ if (atomic_read(&rfbi.cmd_fifo_full) > 0) { -+ /* DSSDBG("SIGNALING: Fifo not full for waiter!\n"); */ -+ complete(&rfbi.cmd_done); -+ atomic_dec(&rfbi.cmd_fifo_full); -+ } -+} -+ -+/* returns 1 for async op, and 0 for sync op */ -+static int do_update(struct omap_display *display, struct update_region *upd) -+{ -+ int x = upd->x; -+ int y = upd->y; -+ int w = upd->w; -+ int h = upd->h; -+ -+ if (display->manager->caps & OMAP_DSS_OVL_MGR_CAP_DISPC) { -+ /*display->ctrl->enable_te(display, 1); */ -+ -+ dispc_setup_partial_planes(display, &x, &y, &w, &h); -+ -+ display->ctrl->setup_update(display, x, y, w, h); -+ -+ rfbi_transfer_area(w, h, NULL, NULL); -+ -+ return 1; -+ } else { -+ struct omap_overlay *ovl; -+ void *addr; -+ int scr_width; -+#ifdef MEASURE_PERF -+ ktime_t t1, t2; -+#endif -+ ovl = &display->manager->overlays[0]; -+ scr_width = ovl->info.screen_width; -+ addr = ovl->info.vaddr; -+ -+ display->ctrl->setup_update(display, x, y, w, h); -+ -+#ifdef MEASURE_PERF -+ t1 = ktime_get(); -+#endif -+ omap_rfbi_write_pixels(addr, scr_width, -+ x, y, w, h); -+#ifdef MEASURE_PERF -+ t2 = ktime_get(); -+ t1 = ktime_sub(t2, t1); -+ DSSDBG("L4 FRAMEDONE in %lld ns\n", -+ ktime_to_ns(t1)); -+#endif -+ return 0; -+ } -+} -+ -+static void process_cmd_fifo(void) -+{ -+ int len; -+ struct update_param p; -+ struct omap_display *display; -+ unsigned long flags; -+ -+ if (atomic_inc_return(&rfbi.cmd_pending) != 1) -+ return; -+ -+ while (true) { -+ spin_lock_irqsave(rfbi.cmd_fifo->lock, flags); -+ -+ len = __kfifo_get(rfbi.cmd_fifo, (unsigned char *)&p, -+ sizeof(struct update_param)); -+ if (len == 0) { -+ DSSDBG("nothing more in fifo\n"); -+ atomic_set(&rfbi.cmd_pending, 0); -+ spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); -+ break; -+ } -+ -+ /* DSSDBG("fifo full %d\n", rfbi.cmd_fifo_full.counter);*/ -+ -+ spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); -+ -+ BUG_ON(len != sizeof(struct update_param)); -+ BUG_ON(p.rfbi_module > 1); -+ -+ display = rfbi.display[p.rfbi_module]; -+ -+ if (p.cmd == RFBI_CMD_UPDATE) { -+ if (do_update(display, &p.par.r)) -+ break; /* async op */ -+ } else if (p.cmd == RFBI_CMD_SYNC) { -+ DSSDBG("Signaling SYNC done!\n"); -+ complete(p.par.sync); -+ } else -+ BUG(); -+ } -+ -+ signal_fifo_waiters(); -+} -+ -+static void rfbi_push_cmd(struct update_param *p) -+{ -+ int ret; -+ -+ while (1) { -+ unsigned long flags; -+ int available; -+ -+ spin_lock_irqsave(rfbi.cmd_fifo->lock, flags); -+ available = RFBI_CMD_FIFO_LEN_BYTES - -+ __kfifo_len(rfbi.cmd_fifo); -+ -+/* DSSDBG("%d bytes left in fifo\n", available); */ -+ if (available < sizeof(struct update_param)) { -+ DSSDBG("Going to wait because FIFO FULL..\n"); -+ spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); -+ atomic_inc(&rfbi.cmd_fifo_full); -+ wait_for_completion(&rfbi.cmd_done); -+ /*DSSDBG("Woke up because fifo not full anymore\n");*/ -+ continue; -+ } -+ -+ ret = __kfifo_put(rfbi.cmd_fifo, (unsigned char *)p, -+ sizeof(struct update_param)); -+/* DSSDBG("pushed %d bytes\n", ret);*/ -+ -+ spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); -+ -+ BUG_ON(ret != sizeof(struct update_param)); -+ -+ break; -+ } -+} -+ -+static void rfbi_push_update(int rfbi_module, int x, int y, int w, int h) -+{ -+ struct update_param p; -+ -+ p.rfbi_module = rfbi_module; -+ p.cmd = RFBI_CMD_UPDATE; -+ -+ p.par.r.x = x; -+ p.par.r.y = y; -+ p.par.r.w = w; -+ p.par.r.h = h; -+ -+ DSSDBG("RFBI pushed %d,%d %dx%d\n", x, y, w, h); -+ -+ rfbi_push_cmd(&p); -+ -+ process_cmd_fifo(); -+} -+ -+static void rfbi_push_sync(int rfbi_module, struct completion *sync_comp) -+{ -+ struct update_param p; -+ -+ p.rfbi_module = rfbi_module; -+ p.cmd = RFBI_CMD_SYNC; -+ p.par.sync = sync_comp; -+ -+ rfbi_push_cmd(&p); -+ -+ DSSDBG("RFBI sync pushed to cmd fifo\n"); -+ -+ process_cmd_fifo(); -+} -+ -+int rfbi_init(void) -+{ -+ u32 rev; -+ u32 l; -+ -+ spin_lock_init(&rfbi.cmd_lock); -+ rfbi.cmd_fifo = kfifo_alloc(RFBI_CMD_FIFO_LEN_BYTES, GFP_KERNEL, -+ &rfbi.cmd_lock); -+ if (IS_ERR(rfbi.cmd_fifo)) -+ return -ENOMEM; -+ -+ init_completion(&rfbi.cmd_done); -+ atomic_set(&rfbi.cmd_fifo_full, 0); -+ atomic_set(&rfbi.cmd_pending, 0); -+ -+ rfbi.base = ioremap(RFBI_BASE, SZ_256); -+ if (!rfbi.base) { -+ DSSERR("can't ioremap RFBI\n"); -+ return -ENOMEM; -+ } -+ -+ rfbi.dss_ick = get_dss_ick(); -+ rfbi.dss1_fck = get_dss1_fck(); -+ -+ rfbi_enable_clocks(1); -+ -+ msleep(10); -+ -+ rfbi.l4_khz = clk_get_rate(rfbi.dss_ick) / 1000; -+ -+ /* Enable autoidle and smart-idle */ -+ l = rfbi_read_reg(RFBI_SYSCONFIG); -+ l |= (1 << 0) | (2 << 3); -+ rfbi_write_reg(RFBI_SYSCONFIG, l); -+ -+ rev = rfbi_read_reg(RFBI_REVISION); -+ printk(KERN_INFO "OMAP RFBI rev %d.%d\n", -+ FLD_GET(rev, 7, 4), FLD_GET(rev, 3, 0)); -+ -+ rfbi_enable_clocks(0); -+ -+ return 0; -+} -+ -+void rfbi_exit(void) -+{ -+ DSSDBG("rfbi_exit\n"); -+ -+ kfifo_free(rfbi.cmd_fifo); -+ -+ iounmap(rfbi.base); -+} -+ -+/* struct omap_display support */ -+static void rfbi_display_set_mode(struct omap_display *display, -+ int x_res, int y_res, int bpp) -+{ -+ display->bpp = bpp; -+ -+ dispc_set_tft_data_lines(display->bpp); -+ -+ if (rfbi_configure(display->hw_config.u.rfbi.channel, -+ display->bpp, -+ display->hw_config.u.rfbi.data_lines) != 0) { -+ DSSERR("can't configure rfbi\n"); -+ } -+ -+ display->ctrl->set_mode(display, x_res, y_res, bpp); -+} -+ -+ -+static int rfbi_display_update(struct omap_display *display, -+ int x, int y, int w, int h) -+{ -+ int rfbi_module; -+ -+ if (w == 0 || h == 0) -+ return 0; -+ -+ rfbi_module = rfbi_find_display(display); -+ -+ rfbi_push_update(rfbi_module, x, y, w, h); -+ -+ return 0; -+} -+ -+static int rfbi_display_sync(struct omap_display *display) -+{ -+ struct completion sync_comp; -+ int rfbi_module; -+ -+ rfbi_module = rfbi_find_display(display); -+ -+ init_completion(&sync_comp); -+ rfbi_push_sync(rfbi_module, &sync_comp); -+ DSSDBG("Waiting for SYNC to happen...\n"); -+ wait_for_completion(&sync_comp); -+ DSSDBG("Released from SYNC\n"); -+ return 0; -+} -+ -+static int rfbi_display_enable_te(struct omap_display *display, int enable) -+{ -+ display->ctrl->enable_te(display, enable); -+ return 0; -+} -+ -+static int rfbi_display_enable(struct omap_display *display) -+{ -+ int r; -+ -+ BUG_ON(display->panel == NULL || display->ctrl == NULL); -+ -+ r = omap_dispc_register_isr(framedone_callback, NULL, -+ DISPC_IRQ_FRAMEDONE); -+ if (r) { -+ DSSERR("can't get FRAMEDONE irq\n"); -+ return r; -+ } -+ -+ dispc_set_lcd_display_type(OMAP_DSS_LCD_DISPLAY_TFT); -+ -+ dispc_set_parallel_interface_mode(OMAP_DSS_PARALLELMODE_RFBI); -+ -+ /* FIX select 16bpp as default */ -+ rfbi_configure(display->hw_config.u.rfbi.channel, -+ 16, -+ display->hw_config.u.rfbi.data_lines); -+ -+ rfbi_set_timings(display->hw_config.u.rfbi.channel, -+ &display->ctrl->timings); -+ -+ display->ctrl->enable(display); -+ -+ return 0; -+} -+ -+static void rfbi_display_disable(struct omap_display *display) -+{ -+ display->ctrl->disable(display); -+ omap_dispc_unregister_isr(framedone_callback); -+} -+ -+void rfbi_init_display(struct omap_display *display) -+{ -+ display->enable = rfbi_display_enable; -+ display->disable = rfbi_display_disable; -+ display->set_mode = rfbi_display_set_mode; -+ display->update = rfbi_display_update; -+ display->sync = rfbi_display_sync; -+ display->enable_te = rfbi_display_enable_te; -+ -+ rfbi.display[display->hw_config.u.rfbi.channel] = display; -+ -+ display->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE; -+} --- -1.5.6.3 - diff --git a/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch b/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch new file mode 100644 index 0000000000..790cada121 --- /dev/null +++ b/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch @@ -0,0 +1,219 @@ +From 36e83ecf4db86b61cec3bc9817d658d3ef218967 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Tue, 11 Nov 2008 13:52:56 +0200 +Subject: [PATCH] DSS: Add generic DVI panel + +For some reason we can't allocate enough mem for 1280x1024x24bpp, even if +there should be enough continuous mem. So 1280x1024 mode defaults to +16bpp for now. + +You also need DSI PLL to generate pix clock for 1280x1024. +--- + drivers/video/omap2/Kconfig | 23 ++++++ + drivers/video/omap2/Makefile | 2 + + drivers/video/omap2/panel-dvi.c | 150 +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 175 insertions(+), 0 deletions(-) + create mode 100644 drivers/video/omap2/panel-dvi.c + +diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig +index 4b72479..996f047 100644 +--- a/drivers/video/omap2/Kconfig ++++ b/drivers/video/omap2/Kconfig +@@ -24,6 +24,29 @@ config FB_OMAP2_FORCE_AUTO_UPDATE + menu "OMAP2/3 Display Device Drivers" + depends on OMAP2_DSS + ++config PANEL_DVI ++ tristate "DVI Panel" ++ help ++ DVI output, for Beagle and OMAP3 SDP ++ ++choice ++ prompt "Default DVI Mode" ++ depends on PANEL_DVI ++ default PANEL_DVI_HIGHRES ++ ++config PANEL_DVI_LOWLOWRES ++ bool "640 x 480 @ 60" ++ ++config PANEL_DVI_LOWRES ++ bool "800 x 600 @ 60" ++ ++config PANEL_DVI_HIGHRES ++ bool "1024 x 768 @ 60" ++ ++config PANEL_DVI_VERYHIGHRES ++ bool "1280 x 1024 @ 57" ++ ++endchoice + + endmenu + +diff --git a/drivers/video/omap2/Makefile b/drivers/video/omap2/Makefile +index 51c2e00..7c75340 100644 +--- a/drivers/video/omap2/Makefile ++++ b/drivers/video/omap2/Makefile +@@ -1,2 +1,4 @@ + obj-$(CONFIG_FB_OMAP2) += omapfb.o + omapfb-y := omapfb-main.o omapfb-sysfs.o omapfb-ioctl.o ++ ++obj-$(CONFIG_PANEL_DVI) += panel-dvi.o +diff --git a/drivers/video/omap2/panel-dvi.c b/drivers/video/omap2/panel-dvi.c +new file mode 100644 +index 0000000..541f588 +--- /dev/null ++++ b/drivers/video/omap2/panel-dvi.c +@@ -0,0 +1,150 @@ ++/* ++ * DVI panel support ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++ ++#include ++ ++static int dvi_panel_init(struct omap_display *display) ++{ ++ return 0; ++} ++ ++static int dvi_panel_enable(struct omap_display *display) ++{ ++ int r = 0; ++ ++ if (display->hw_config.panel_enable) ++ r = display->hw_config.panel_enable(display); ++ ++ return r; ++} ++ ++static void dvi_panel_disable(struct omap_display *display) ++{ ++ if (display->hw_config.panel_disable) ++ display->hw_config.panel_disable(display); ++} ++ ++static int dvi_panel_suspend(struct omap_display *display) ++{ ++ dvi_panel_disable(display); ++ return 0; ++} ++ ++static int dvi_panel_resume(struct omap_display *display) ++{ ++ return dvi_panel_enable(display); ++} ++ ++static struct omap_panel dvi_panel = { ++ .owner = THIS_MODULE, ++ .name = "panel-dvi", ++ .init = dvi_panel_init, ++ /*.remove = dvi_cleanup, */ ++ .enable = dvi_panel_enable, ++ .disable = dvi_panel_disable, ++ .suspend = dvi_panel_suspend, ++ .resume = dvi_panel_resume, ++ /*.set_mode = dvi_set_mode, */ ++ ++#if defined(CONFIG_PANEL_DVI_LOWLOWRES) ++ .timings = { ++ /* 640 x 480 @ 60 hz reduced blanking vesa ++ * (dunno if these are correct) */ ++ .pixel_clock = 23500, ++ .hfp = 48, ++ .hsw = 32, ++ .hbp = 80, ++ .vfp = 3, ++ .vsw = 4, ++ .vbp = 11, ++ }, ++ ++ .x_res = 640, ++ .y_res = 480, ++ .bpp = 24, ++#elif defined(CONFIG_PANEL_DVI_LOWRES) ++ .timings = { ++ /* 800 x 600 @ 60 hz reduced blanking vesa cvt 0.48m3-r */ ++ .pixel_clock = 35500, ++ .hfp = 48, ++ .hsw = 32, ++ .hbp = 80, ++ .vfp = 3, ++ .vsw = 4, ++ .vbp = 11, ++ }, ++ ++ .x_res = 800, ++ .y_res = 600, ++ .bpp = 24, ++#elif defined(CONFIG_PANEL_DVI_HIGHRES) ++ .timings = { ++ /* 1024 x 768 @ 60 Hz Reduced blanking */ ++ .pixel_clock = 56000, ++ .hfp = 48, ++ .hsw = 32, ++ .hbp = 80, ++ .vfp = 3, ++ .vsw = 4, ++ .vbp = 15, ++ }, ++ ++ .x_res = 1024, ++ .y_res = 768, ++ .bpp = 24, ++#elif defined(CONFIG_PANEL_DVI_VERYHIGHRES) ++ .timings = { ++ /* 1280 x 1024 @ 57 Hz Reduced blanking */ ++ .pixel_clock = 86500, ++ .hfp = 48, ++ .hsw = 32, ++ .hbp = 80, ++ .vfp = 3, ++ .vsw = 4, ++ .vbp = 15, ++ }, ++ ++ .x_res = 1280, ++ .y_res = 1024, ++ .bpp = 16, ++#else ++#error Undefined default mode ++#endif ++ ++ .config = OMAP_DSS_LCD_TFT, ++}; ++ ++ ++static int __init dvi_panel_drv_init(void) ++{ ++ omap_dss_register_panel(&dvi_panel); ++ return 0; ++} ++ ++static void __exit dvi_panel_drv_exit(void) ++{ ++ omap_dss_unregister_panel(&dvi_panel); ++} ++ ++module_init(dvi_panel_drv_init); ++module_exit(dvi_panel_drv_exit); ++MODULE_LICENSE("GPL"); +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0006-DSS-TV-out-support-for-OMAP2-3-DSS.patch b/packages/linux/linux-omap/0006-DSS-TV-out-support-for-OMAP2-3-DSS.patch deleted file mode 100644 index 0a28867e98..0000000000 --- a/packages/linux/linux-omap/0006-DSS-TV-out-support-for-OMAP2-3-DSS.patch +++ /dev/null @@ -1,519 +0,0 @@ -From fc7030b395c21d051de16719751efc75e954c590 Mon Sep 17 00:00:00 2001 -From: Tomi Valkeinen -Date: Tue, 4 Nov 2008 16:53:54 +0200 -Subject: [PATCH] DSS: TV-out support for OMAP2/3 DSS - -Signed-off-by: Tomi Valkeinen ---- - arch/arm/plat-omap/dss/venc.c | 499 +++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 499 insertions(+), 0 deletions(-) - create mode 100644 arch/arm/plat-omap/dss/venc.c - -diff --git a/arch/arm/plat-omap/dss/venc.c b/arch/arm/plat-omap/dss/venc.c -new file mode 100644 -index 0000000..a9739ad ---- /dev/null -+++ b/arch/arm/plat-omap/dss/venc.c -@@ -0,0 +1,499 @@ -+/* -+ * linux/arch/arm/plat-omap/dss/venc.c -+ * -+ * Copyright (C) 2008 Nokia Corporation -+ * Author: Tomi Valkeinen -+ * -+ * VENC settings from TI's DSS driver -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ * 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 . -+ */ -+ -+#define DSS_SUBSYS_NAME "VENC" -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include "dss.h" -+ -+#define VENC_BASE 0x48050C00 -+ -+/* Venc registers */ -+#define VENC_REV_ID 0x00 -+#define VENC_STATUS 0x04 -+#define VENC_F_CONTROL 0x08 -+#define VENC_VIDOUT_CTRL 0x10 -+#define VENC_SYNC_CTRL 0x14 -+#define VENC_LLEN 0x1C -+#define VENC_FLENS 0x20 -+#define VENC_HFLTR_CTRL 0x24 -+#define VENC_CC_CARR_WSS_CARR 0x28 -+#define VENC_C_PHASE 0x2C -+#define VENC_GAIN_U 0x30 -+#define VENC_GAIN_V 0x34 -+#define VENC_GAIN_Y 0x38 -+#define VENC_BLACK_LEVEL 0x3C -+#define VENC_BLANK_LEVEL 0x40 -+#define VENC_X_COLOR 0x44 -+#define VENC_M_CONTROL 0x48 -+#define VENC_BSTAMP_WSS_DATA 0x4C -+#define VENC_S_CARR 0x50 -+#define VENC_LINE21 0x54 -+#define VENC_LN_SEL 0x58 -+#define VENC_L21__WC_CTL 0x5C -+#define VENC_HTRIGGER_VTRIGGER 0x60 -+#define VENC_SAVID__EAVID 0x64 -+#define VENC_FLEN__FAL 0x68 -+#define VENC_LAL__PHASE_RESET 0x6C -+#define VENC_HS_INT_START_STOP_X 0x70 -+#define VENC_HS_EXT_START_STOP_X 0x74 -+#define VENC_VS_INT_START_X 0x78 -+#define VENC_VS_INT_STOP_X__VS_INT_START_Y 0x7C -+#define VENC_VS_INT_STOP_Y__VS_EXT_START_X 0x80 -+#define VENC_VS_EXT_STOP_X__VS_EXT_START_Y 0x84 -+#define VENC_VS_EXT_STOP_Y 0x88 -+#define VENC_AVID_START_STOP_X 0x90 -+#define VENC_AVID_START_STOP_Y 0x94 -+#define VENC_FID_INT_START_X__FID_INT_START_Y 0xA0 -+#define VENC_FID_INT_OFFSET_Y__FID_EXT_START_X 0xA4 -+#define VENC_FID_EXT_START_Y__FID_EXT_OFFSET_Y 0xA8 -+#define VENC_TVDETGP_INT_START_STOP_X 0xB0 -+#define VENC_TVDETGP_INT_START_STOP_Y 0xB4 -+#define VENC_GEN_CTRL 0xB8 -+#define VENC_OUTPUT_CONTROL 0xC4 -+#define VENC_DAC_B__DAC_C 0xC8 -+ -+static DECLARE_MUTEX(venc_lock); -+ -+struct venc_config { -+ u32 f_control; -+ u32 vidout_ctrl; -+ u32 sync_ctrl; -+ u32 llen; -+ u32 flens; -+ u32 hfltr_ctrl; -+ u32 cc_carr_wss_carr; -+ u32 c_phase; -+ u32 gain_u; -+ u32 gain_v; -+ u32 gain_y; -+ u32 black_level; -+ u32 blank_level; -+ u32 x_color; -+ u32 m_control; -+ u32 bstamp_wss_data; -+ u32 s_carr; -+ u32 line21; -+ u32 ln_sel; -+ u32 l21__wc_ctl; -+ u32 htrigger_vtrigger; -+ u32 savid__eavid; -+ u32 flen__fal; -+ u32 lal__phase_reset; -+ u32 hs_int_start_stop_x; -+ u32 hs_ext_start_stop_x; -+ u32 vs_int_start_x; -+ u32 vs_int_stop_x__vs_int_start_y; -+ u32 vs_int_stop_y__vs_ext_start_x; -+ u32 vs_ext_stop_x__vs_ext_start_y; -+ u32 vs_ext_stop_y; -+ u32 avid_start_stop_x; -+ u32 avid_start_stop_y; -+ u32 fid_int_start_x__fid_int_start_y; -+ u32 fid_int_offset_y__fid_ext_start_x; -+ u32 fid_ext_start_y__fid_ext_offset_y; -+ u32 tvdetgp_int_start_stop_x; -+ u32 tvdetgp_int_start_stop_y; -+ u32 gen_ctrl; -+ -+ int width; -+ int height; -+}; -+ -+/* from TRM */ -+static const struct venc_config venc_config_pal_trm = { -+ .f_control = 0, -+ .vidout_ctrl = 1, -+ .sync_ctrl = 0x40, -+ .llen = 0x35F, /* 863 */ -+ .flens = 0x270, /* 624 */ -+ .hfltr_ctrl = 0, -+ .cc_carr_wss_carr = 0x2F7225ED, -+ .c_phase = 0, -+ .gain_u = 0x111, -+ .gain_v = 0x181, -+ .gain_y = 0x140, -+ .black_level = 0x3B, -+ .blank_level = 0x3B, -+ .x_color = 0x7, -+ .m_control = 0x2, -+ .bstamp_wss_data = 0x3F, -+ .s_carr = 0x2A098ACB, -+ .line21 = 0, -+ .ln_sel = 0x01290015, -+ .l21__wc_ctl = 0x0000F603, -+ .htrigger_vtrigger = 0, -+ -+ .savid__eavid = 0x06A70108, -+ .flen__fal = 0x00180270, -+ .lal__phase_reset = 0x00180270, -+ .hs_int_start_stop_x = 0x00880358, -+ .hs_ext_start_stop_x = 0x000F035F, -+ .vs_int_start_x = 0x01A70000, -+ .vs_int_stop_x__vs_int_start_y = 0x000001A7, -+ .vs_int_stop_y__vs_ext_start_x = 0x01AF0000, -+ .vs_ext_stop_x__vs_ext_start_y = 0x000101AF, -+ .vs_ext_stop_y = 0x00000025, -+ .avid_start_stop_x = 0x03530083, -+ .avid_start_stop_y = 0x026C002E, -+ .fid_int_start_x__fid_int_start_y = 0x0001008A, -+ .fid_int_offset_y__fid_ext_start_x = 0x002E0138, -+ .fid_ext_start_y__fid_ext_offset_y = 0x01380001, -+ -+ .tvdetgp_int_start_stop_x = 0x00140001, -+ .tvdetgp_int_start_stop_y = 0x00010001, -+ .gen_ctrl = 0x00FF0000, -+ -+ .width = 720, -+ .height = 574, /* for some reason, this isn't 576 */ -+}; -+ -+/* from TRM */ -+static const struct venc_config venc_config_ntsc_trm = { -+ .f_control = 0, -+ .vidout_ctrl = 1, -+ .sync_ctrl = 0x8040, -+ .llen = 0x359, -+ .flens = 0x20C, -+ .hfltr_ctrl = 0, -+ .cc_carr_wss_carr = 0x043F2631, -+ .c_phase = 0, -+ .gain_u = 0x102, -+ .gain_v = 0x16C, -+ .gain_y = 0x12F, -+ .black_level = 0x43, -+ .blank_level = 0x38, -+ .x_color = 0x7, -+ .m_control = 0x1, -+ .bstamp_wss_data = 0x38, -+ .s_carr = 0x21F07C1F, -+ .line21 = 0, -+ .ln_sel = 0x01310011, -+ .l21__wc_ctl = 0x0000F003, -+ .htrigger_vtrigger = 0, -+ -+ .savid__eavid = 0x069300F4, -+ .flen__fal = 0x0016020C, -+ .lal__phase_reset = 0x00060107, -+ .hs_int_start_stop_x = 0x008E0350, -+ .hs_ext_start_stop_x = 0x000F0359, -+ .vs_int_start_x = 0x01A00000, -+ .vs_int_stop_x__vs_int_start_y = 0x020701A0, -+ .vs_int_stop_y__vs_ext_start_x = 0x01AC0024, -+ .vs_ext_stop_x__vs_ext_start_y = 0x020D01AC, -+ .vs_ext_stop_y = 0x00000006, -+ .avid_start_stop_x = 0x03480078, -+ .avid_start_stop_y = 0x02060024, -+ .fid_int_start_x__fid_int_start_y = 0x0001008A, -+ .fid_int_offset_y__fid_ext_start_x = 0x01AC0106, -+ .fid_ext_start_y__fid_ext_offset_y = 0x01060006, -+ -+ .tvdetgp_int_start_stop_x = 0x00140001, -+ .tvdetgp_int_start_stop_y = 0x00010001, -+ .gen_ctrl = 0x00F90000, -+ -+ .width = 720, -+ .height = 482, -+}; -+ -+static const struct venc_config venc_config_pal_bdghi = { -+ .f_control = 0, -+ .vidout_ctrl = 0, -+ .sync_ctrl = 0, -+ .hfltr_ctrl = 0, -+ .x_color = 0, -+ .line21 = 0, -+ .ln_sel = 21, -+ .htrigger_vtrigger = 0, -+ .tvdetgp_int_start_stop_x = 0x00140001, -+ .tvdetgp_int_start_stop_y = 0x00010001, -+ .gen_ctrl = 0x00FB0000, -+ -+ .llen = 864-1, -+ .flens = 625-1, -+ .cc_carr_wss_carr = 0x2F7625ED, -+ .c_phase = 0xDF, -+ .gain_u = 0x111, -+ .gain_v = 0x181, -+ .gain_y = 0x140, -+ .black_level = 0x3e, -+ .blank_level = 0x3e, -+ .m_control = 0<<2 | 1<<1, -+ .bstamp_wss_data = 0x42, -+ .s_carr = 0x2a098acb, -+ .l21__wc_ctl = 0<<13 | 0x16<<8 | 0<<0, -+ .savid__eavid = 0x06A70108, -+ .flen__fal = 23<<16 | 624<<0, -+ .lal__phase_reset = 2<<17 | 310<<0, -+ .hs_int_start_stop_x = 0x00920358, -+ .hs_ext_start_stop_x = 0x000F035F, -+ .vs_int_start_x = 0x1a7<<16, -+ .vs_int_stop_x__vs_int_start_y = 0x000601A7, -+ .vs_int_stop_y__vs_ext_start_x = 0x01AF0036, -+ .vs_ext_stop_x__vs_ext_start_y = 0x27101af, -+ .vs_ext_stop_y = 0x05, -+ .avid_start_stop_x = 0x03530082, -+ .avid_start_stop_y = 0x0270002E, -+ .fid_int_start_x__fid_int_start_y = 0x0005008A, -+ .fid_int_offset_y__fid_ext_start_x = 0x002E0138, -+ .fid_ext_start_y__fid_ext_offset_y = 0x01380005, -+ -+ .width = 720, -+ .height = 576, -+}; -+ -+static struct { -+ void __iomem *base; -+ struct clk *dss_54m_fck; -+ struct clk *dss_96m_fck; -+ struct clk *dss_ick; -+ struct clk *dss1_fck; -+ const struct venc_config *config; -+} venc; -+ -+static struct omap_panel venc_panel = { -+ .name = "tv-out", -+ .x_res = 0, -+ .y_res = 0, -+ .bpp = 24, -+}; -+ -+static inline void venc_write_reg(int idx, u32 val) -+{ -+ __raw_writel(val, venc.base + idx); -+} -+ -+static inline u32 venc_read_reg(int idx) -+{ -+ u32 l = __raw_readl(venc.base + idx); -+ return l; -+} -+ -+static void venc_write_config(const struct venc_config *config) -+{ -+ DSSDBG("write venc conf\n"); -+ -+ venc_write_reg(VENC_LLEN, config->llen); -+ venc_write_reg(VENC_FLENS, config->flens); -+ venc_write_reg(VENC_CC_CARR_WSS_CARR, config->cc_carr_wss_carr); -+ venc_write_reg(VENC_C_PHASE, config->c_phase); -+ venc_write_reg(VENC_GAIN_U, config->gain_u); -+ venc_write_reg(VENC_GAIN_V, config->gain_v); -+ venc_write_reg(VENC_GAIN_Y, config->gain_y); -+ venc_write_reg(VENC_BLACK_LEVEL, config->black_level); -+ venc_write_reg(VENC_BLANK_LEVEL, config->blank_level); -+ venc_write_reg(VENC_M_CONTROL, config->m_control); -+ venc_write_reg(VENC_BSTAMP_WSS_DATA, config->bstamp_wss_data); -+ venc_write_reg(VENC_S_CARR, config->s_carr); -+ venc_write_reg(VENC_L21__WC_CTL, config->l21__wc_ctl); -+ venc_write_reg(VENC_SAVID__EAVID, config->savid__eavid); -+ venc_write_reg(VENC_FLEN__FAL, config->flen__fal); -+ venc_write_reg(VENC_LAL__PHASE_RESET, config->lal__phase_reset); -+ venc_write_reg(VENC_HS_INT_START_STOP_X, config->hs_int_start_stop_x); -+ venc_write_reg(VENC_HS_EXT_START_STOP_X, config->hs_ext_start_stop_x); -+ venc_write_reg(VENC_VS_INT_START_X, config->vs_int_start_x); -+ venc_write_reg(VENC_VS_INT_STOP_X__VS_INT_START_Y, -+ config->vs_int_stop_x__vs_int_start_y); -+ venc_write_reg(VENC_VS_INT_STOP_Y__VS_EXT_START_X, -+ config->vs_int_stop_y__vs_ext_start_x); -+ venc_write_reg(VENC_VS_EXT_STOP_X__VS_EXT_START_Y, -+ config->vs_ext_stop_x__vs_ext_start_y); -+ venc_write_reg(VENC_VS_EXT_STOP_Y, config->vs_ext_stop_y); -+ venc_write_reg(VENC_AVID_START_STOP_X, config->avid_start_stop_x); -+ venc_write_reg(VENC_AVID_START_STOP_Y, config->avid_start_stop_y); -+ venc_write_reg(VENC_FID_INT_START_X__FID_INT_START_Y, -+ config->fid_int_start_x__fid_int_start_y); -+ venc_write_reg(VENC_FID_INT_OFFSET_Y__FID_EXT_START_X, -+ config->fid_int_offset_y__fid_ext_start_x); -+ venc_write_reg(VENC_FID_EXT_START_Y__FID_EXT_OFFSET_Y, -+ config->fid_ext_start_y__fid_ext_offset_y); -+ -+ venc_write_reg(VENC_DAC_B__DAC_C, venc_read_reg(VENC_DAC_B__DAC_C)); -+ venc_write_reg(VENC_VIDOUT_CTRL, config->vidout_ctrl); -+ venc_write_reg(VENC_HFLTR_CTRL, config->hfltr_ctrl); -+ venc_write_reg(VENC_X_COLOR, config->x_color); -+ venc_write_reg(VENC_LINE21, config->line21); -+ venc_write_reg(VENC_LN_SEL, config->ln_sel); -+ venc_write_reg(VENC_HTRIGGER_VTRIGGER, config->htrigger_vtrigger); -+ venc_write_reg(VENC_TVDETGP_INT_START_STOP_X, -+ config->tvdetgp_int_start_stop_x); -+ venc_write_reg(VENC_TVDETGP_INT_START_STOP_Y, -+ config->tvdetgp_int_start_stop_y); -+ venc_write_reg(VENC_GEN_CTRL, config->gen_ctrl); -+ venc_write_reg(VENC_F_CONTROL, config->f_control); -+ venc_write_reg(VENC_SYNC_CTRL, config->sync_ctrl); -+} -+ -+static void venc_reset(void) -+{ -+ int t = 1000; -+ -+ venc_write_reg(VENC_F_CONTROL, venc_read_reg(VENC_F_CONTROL) | (1<<8)); -+ while (venc_read_reg(VENC_F_CONTROL) & (1<<8)) { -+ if (--t == 0) { -+ DSSERR("Failed to reset venc\n"); -+ return; -+ } -+ } -+} -+ -+static void venc_enable_clocks(int enable) -+{ -+ if (enable) { -+ clk_enable(venc.dss_ick); -+ clk_enable(venc.dss1_fck); -+ clk_enable(venc.dss_54m_fck); -+ clk_enable(venc.dss_96m_fck); -+ } else { -+ clk_disable(venc.dss_96m_fck); -+ clk_disable(venc.dss_54m_fck); -+ clk_disable(venc.dss1_fck); -+ clk_disable(venc.dss_ick); -+ } -+} -+ -+int venc_init(void) -+{ -+ u8 rev_id; -+ int use_pal = 1; /* XXX */ -+ -+ if (use_pal) -+ venc.config = &venc_config_pal_trm; -+ else -+ venc.config = &venc_config_ntsc_trm; -+ -+ venc_panel.x_res = venc.config->width; -+ venc_panel.y_res = venc.config->height; -+ -+ venc.base = ioremap(VENC_BASE, SZ_1K); -+ if (!venc.base) { -+ DSSERR("can't ioremap VENC\n"); -+ return -ENOMEM; -+ } -+ -+ venc.dss_ick = get_dss_ick(); -+ venc.dss1_fck = get_dss1_fck(); -+ venc.dss_54m_fck = get_tv_fck(); -+ venc.dss_96m_fck = get_96m_fck(); -+ -+ /* enable clocks */ -+ venc_enable_clocks(1); -+ -+ /* configure venc */ -+ venc_reset(); -+ venc_write_config(venc.config); -+ -+ rev_id = (u8)(venc_read_reg(VENC_REV_ID) & 0xff); -+ printk(KERN_INFO "OMAP VENC rev %d\n", rev_id); -+ -+ venc_enable_clocks(0); -+ -+ return 0; -+} -+ -+void venc_exit(void) -+{ -+ iounmap(venc.base); -+} -+ -+static int venc_enable_display(struct omap_display *display) -+{ -+ DSSDBG("venc_enable_display\n"); -+ -+ down(&venc_lock); -+ -+ if (display->state != OMAP_DSS_DISPLAY_DISABLED) { -+ up(&venc_lock); -+ return -EINVAL; -+ } -+ -+ venc_enable_clocks(1); -+ -+ dss_set_venc_output(display->hw_config.u.venc.type); -+ dss_set_dac_pwrdn_bgz(1); -+ -+ venc_write_config(venc.config); -+ -+ if (display->hw_config.u.venc.type == OMAP_DSS_VENC_TYPE_COMPOSITE) { -+ if (cpu_is_omap24xx()) -+ venc_write_reg(VENC_OUTPUT_CONTROL, 0x2); -+ else -+ venc_write_reg(VENC_OUTPUT_CONTROL, 0xa); -+ } else { /* S-Video */ -+ venc_write_reg(VENC_OUTPUT_CONTROL, 0xd); -+ } -+ -+ dispc_set_digit_size(venc.config->width, venc.config->height/2); -+ -+ if (display->hw_config.panel_enable) -+ display->hw_config.panel_enable(display); -+ -+ dispc_enable_digit_out(1); -+ -+ display->state = OMAP_DSS_DISPLAY_ACTIVE; -+ -+ up(&venc_lock); -+ -+ return 0; -+} -+ -+static void venc_disable_display(struct omap_display *display) -+{ -+ DSSDBG("venc_disable_display\n"); -+ -+ down(&venc_lock); -+ -+ if (display->state == OMAP_DSS_DISPLAY_DISABLED) { -+ up(&venc_lock); -+ return; -+ } -+ -+ venc_write_reg(VENC_OUTPUT_CONTROL, 0); -+ dss_set_dac_pwrdn_bgz(0); -+ -+ dispc_enable_digit_out(0); -+ -+ if (display->hw_config.panel_disable) -+ display->hw_config.panel_disable(display); -+ -+ venc_enable_clocks(0); -+ -+ display->state = OMAP_DSS_DISPLAY_DISABLED; -+ -+ up(&venc_lock); -+} -+ -+void venc_init_display(struct omap_display *display) -+{ -+ display->panel = &venc_panel; -+ display->enable = venc_enable_display; -+ display->disable = venc_disable_display; -+} --- -1.5.6.3 - diff --git a/packages/linux/linux-omap/0007-DSS-DSI-support-for-OMAP2-3-DSS.patch b/packages/linux/linux-omap/0007-DSS-DSI-support-for-OMAP2-3-DSS.patch deleted file mode 100644 index e1c92b289a..0000000000 --- a/packages/linux/linux-omap/0007-DSS-DSI-support-for-OMAP2-3-DSS.patch +++ /dev/null @@ -1,3047 +0,0 @@ -From 421c7dc28a0b9b2ee0c8514045a8ee1af7b002de Mon Sep 17 00:00:00 2001 -From: Tomi Valkeinen -Date: Tue, 4 Nov 2008 15:18:25 +0200 -Subject: [PATCH] DSS: DSI support for OMAP2/3 DSS - -Signed-off-by: Tomi Valkeinen ---- - arch/arm/plat-omap/dss/dsi.c | 3027 ++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 3027 insertions(+), 0 deletions(-) - create mode 100644 arch/arm/plat-omap/dss/dsi.c - -diff --git a/arch/arm/plat-omap/dss/dsi.c b/arch/arm/plat-omap/dss/dsi.c -new file mode 100644 -index 0000000..47e5628 ---- /dev/null -+++ b/arch/arm/plat-omap/dss/dsi.c -@@ -0,0 +1,3027 @@ -+/* -+ * linux/arch/arm/plat-omap/dss/dsi.c -+ * -+ * Copyright (C) 2008 Nokia Corporation -+ * Author: Tomi Valkeinen -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ * 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 . -+ */ -+ -+#define DSS_SUBSYS_NAME "DSI" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include "dss.h" -+ -+/*#define VERBOSE*/ -+/*#define VERBOSE_IRQ*/ -+/*#define MEASURE_PERF*/ -+ -+#define DSI_BASE 0x4804FC00 -+ -+struct dsi_reg { u16 idx; }; -+ -+#define DSI_REG(idx) ((const struct dsi_reg) { idx }) -+ -+/* DSI Protocol Engine */ -+ -+#define DSI_REVISION DSI_REG(0x0000) -+#define DSI_SYSCONFIG DSI_REG(0x0010) -+#define DSI_SYSSTATUS DSI_REG(0x0014) -+#define DSI_IRQSTATUS DSI_REG(0x0018) -+#define DSI_IRQENABLE DSI_REG(0x001C) -+#define DSI_CTRL DSI_REG(0x0040) -+#define DSI_COMPLEXIO_CFG1 DSI_REG(0x0048) -+#define DSI_COMPLEXIO_IRQ_STATUS DSI_REG(0x004C) -+#define DSI_COMPLEXIO_IRQ_ENABLE DSI_REG(0x0050) -+#define DSI_CLK_CTRL DSI_REG(0x0054) -+#define DSI_TIMING1 DSI_REG(0x0058) -+#define DSI_TIMING2 DSI_REG(0x005C) -+#define DSI_VM_TIMING1 DSI_REG(0x0060) -+#define DSI_VM_TIMING2 DSI_REG(0x0064) -+#define DSI_VM_TIMING3 DSI_REG(0x0068) -+#define DSI_CLK_TIMING DSI_REG(0x006C) -+#define DSI_TX_FIFO_VC_SIZE DSI_REG(0x0070) -+#define DSI_RX_FIFO_VC_SIZE DSI_REG(0x0074) -+#define DSI_COMPLEXIO_CFG2 DSI_REG(0x0078) -+#define DSI_RX_FIFO_VC_FULLNESS DSI_REG(0x007C) -+#define DSI_VM_TIMING4 DSI_REG(0x0080) -+#define DSI_TX_FIFO_VC_EMPTINESS DSI_REG(0x0084) -+#define DSI_VM_TIMING5 DSI_REG(0x0088) -+#define DSI_VM_TIMING6 DSI_REG(0x008C) -+#define DSI_VM_TIMING7 DSI_REG(0x0090) -+#define DSI_STOPCLK_TIMING DSI_REG(0x0094) -+#define DSI_VC_CTRL(n) DSI_REG(0x0100 + (n * 0x20)) -+#define DSI_VC_TE(n) DSI_REG(0x0104 + (n * 0x20)) -+#define DSI_VC_LONG_PACKET_HEADER(n) DSI_REG(0x0108 + (n * 0x20)) -+#define DSI_VC_LONG_PACKET_PAYLOAD(n) DSI_REG(0x010C + (n * 0x20)) -+#define DSI_VC_SHORT_PACKET_HEADER(n) DSI_REG(0x0110 + (n * 0x20)) -+#define DSI_VC_IRQSTATUS(n) DSI_REG(0x0118 + (n * 0x20)) -+#define DSI_VC_IRQENABLE(n) DSI_REG(0x011C + (n * 0x20)) -+ -+/* DSIPHY_SCP */ -+ -+#define DSIPHY_CFG0 DSI_REG(0x200 + 0x0000) -+#define DSIPHY_CFG1 DSI_REG(0x200 + 0x0004) -+#define DSIPHY_CFG2 DSI_REG(0x200 + 0x0008) -+#define DSIPHY_CFG5 DSI_REG(0x200 + 0x0014) -+ -+/* DSI_PLL_CTRL_SCP */ -+ -+#define DSI_PLL_CONTROL DSI_REG(0x300 + 0x0000) -+#define DSI_PLL_STATUS DSI_REG(0x300 + 0x0004) -+#define DSI_PLL_GO DSI_REG(0x300 + 0x0008) -+#define DSI_PLL_CONFIGURATION1 DSI_REG(0x300 + 0x000C) -+#define DSI_PLL_CONFIGURATION2 DSI_REG(0x300 + 0x0010) -+ -+#define REG_GET(idx, start, end) \ -+ FLD_GET(dsi_read_reg(idx), start, end) -+ -+#define REG_FLD_MOD(idx, val, start, end) \ -+ dsi_write_reg(idx, FLD_MOD(dsi_read_reg(idx), val, start, end)) -+ -+/* Global interrupts */ -+#define DSI_IRQ_VC0 (1 << 0) -+#define DSI_IRQ_VC1 (1 << 1) -+#define DSI_IRQ_VC2 (1 << 2) -+#define DSI_IRQ_VC3 (1 << 3) -+#define DSI_IRQ_WAKEUP (1 << 4) -+#define DSI_IRQ_RESYNC (1 << 5) -+#define DSI_IRQ_PLL_LOCK (1 << 7) -+#define DSI_IRQ_PLL_UNLOCK (1 << 8) -+#define DSI_IRQ_PLL_RECALL (1 << 9) -+#define DSI_IRQ_COMPLEXIO_ERR (1 << 10) -+#define DSI_IRQ_HS_TX_TIMEOUT (1 << 14) -+#define DSI_IRQ_LP_RX_TIMEOUT (1 << 15) -+#define DSI_IRQ_TE_TRIGGER (1 << 16) -+#define DSI_IRQ_ACK_TRIGGER (1 << 17) -+#define DSI_IRQ_SYNC_LOST (1 << 18) -+#define DSI_IRQ_LDO_POWER_GOOD (1 << 19) -+#define DSI_IRQ_TA_TIMEOUT (1 << 20) -+#define DSI_IRQ_ERROR_MASK \ -+ (DSI_IRQ_HS_TX_TIMEOUT | DSI_IRQ_LP_RX_TIMEOUT | DSI_IRQ_SYNC_LOST | \ -+ DSI_IRQ_TA_TIMEOUT) -+#define DSI_IRQ_CHANNEL_MASK 0xf -+ -+/* Virtual channel interrupts */ -+#define DSI_VC_IRQ_CS (1 << 0) -+#define DSI_VC_IRQ_ECC_CORR (1 << 1) -+#define DSI_VC_IRQ_PACKET_SENT (1 << 2) -+#define DSI_VC_IRQ_FIFO_TX_OVF (1 << 3) -+#define DSI_VC_IRQ_FIFO_RX_OVF (1 << 4) -+#define DSI_VC_IRQ_BTA (1 << 5) -+#define DSI_VC_IRQ_ECC_NO_CORR (1 << 6) -+#define DSI_VC_IRQ_FIFO_TX_UDF (1 << 7) -+#define DSI_VC_IRQ_PP_BUSY_CHANGE (1 << 8) -+#define DSI_VC_IRQ_ERROR_MASK \ -+ (DSI_VC_IRQ_CS | DSI_VC_IRQ_ECC_CORR | DSI_VC_IRQ_FIFO_TX_OVF | \ -+ DSI_VC_IRQ_FIFO_RX_OVF | DSI_VC_IRQ_ECC_NO_CORR | \ -+ DSI_VC_IRQ_FIFO_TX_UDF) -+ -+/* ComplexIO interrupts */ -+#define DSI_CIO_IRQ_ERRSYNCESC1 (1 << 0) -+#define DSI_CIO_IRQ_ERRSYNCESC2 (1 << 1) -+#define DSI_CIO_IRQ_ERRSYNCESC3 (1 << 2) -+#define DSI_CIO_IRQ_ERRESC1 (1 << 5) -+#define DSI_CIO_IRQ_ERRESC2 (1 << 6) -+#define DSI_CIO_IRQ_ERRESC3 (1 << 7) -+#define DSI_CIO_IRQ_ERRCONTROL1 (1 << 10) -+#define DSI_CIO_IRQ_ERRCONTROL2 (1 << 11) -+#define DSI_CIO_IRQ_ERRCONTROL3 (1 << 12) -+#define DSI_CIO_IRQ_STATEULPS1 (1 << 15) -+#define DSI_CIO_IRQ_STATEULPS2 (1 << 16) -+#define DSI_CIO_IRQ_STATEULPS3 (1 << 17) -+#define DSI_CIO_IRQ_ERRCONTENTIONLP0_1 (1 << 20) -+#define DSI_CIO_IRQ_ERRCONTENTIONLP1_1 (1 << 21) -+#define DSI_CIO_IRQ_ERRCONTENTIONLP0_2 (1 << 22) -+#define DSI_CIO_IRQ_ERRCONTENTIONLP1_2 (1 << 23) -+#define DSI_CIO_IRQ_ERRCONTENTIONLP0_3 (1 << 24) -+#define DSI_CIO_IRQ_ERRCONTENTIONLP1_3 (1 << 25) -+#define DSI_CIO_IRQ_ULPSACTIVENOT_ALL0 (1 << 30) -+#define DSI_CIO_IRQ_ULPSACTIVENOT_ALL1 (1 << 31) -+ -+#define DSI_DT_DCS_SHORT_WRITE_0 0x05 -+#define DSI_DT_DCS_SHORT_WRITE_1 0x15 -+#define DSI_DT_DCS_READ 0x06 -+#define DSI_DT_SET_MAX_RET_PKG_SIZE 0x37 -+#define DSI_DT_NULL_PACKET 0x09 -+#define DSI_DT_DCS_LONG_WRITE 0x39 -+ -+#define DSI_DT_RX_ACK_WITH_ERR 0x02 -+#define DSI_DT_RX_DCS_LONG_READ 0x1c -+#define DSI_DT_RX_SHORT_READ_1 0x21 -+#define DSI_DT_RX_SHORT_READ_2 0x22 -+ -+#define FINT_MAX 2100000 -+#define FINT_MIN 750000 -+#define REGN_MAX (1 << 7) -+#define REGM_MAX ((1 << 11) - 1) -+#define REGM3_MAX (1 << 4) -+#define REGM4_MAX (1 << 4) -+ -+enum fifo_size { -+ DSI_FIFO_SIZE_0 = 0, -+ DSI_FIFO_SIZE_32 = 1, -+ DSI_FIFO_SIZE_64 = 2, -+ DSI_FIFO_SIZE_96 = 3, -+ DSI_FIFO_SIZE_128 = 4, -+}; -+ -+static struct -+{ -+ void __iomem *base; -+ -+ struct clk *dss_ick; -+ struct clk *dss1_fck; -+ struct clk *dss2_fck; -+ -+ unsigned long dsi1_pll_fclk; /* Hz */ -+ unsigned long dsi2_pll_fclk; /* Hz */ -+ unsigned long dsiphy; /* Hz */ -+ unsigned long ddr_clk; /* Hz */ -+ -+ struct { -+ enum fifo_size fifo_size; -+ int dest_per; /* destination peripheral 0-3 */ -+ } vc[4]; -+ -+ struct mutex lock; -+ -+ struct completion bta_completion; -+ -+ spinlock_t update_lock; -+ int update_ongoing; -+ int update_syncers; -+ struct completion update_completion; -+ struct work_struct framedone_work; -+ -+ enum omap_dss_update_mode update_mode; -+ int use_te; -+ int framedone_scheduled; /* helps to catch strange framedone bugs */ -+ -+ struct { -+ struct omap_display *display; -+ int x, y, w, h; -+ int bytespp; -+ } update_region; -+ -+#ifdef MEASURE_PERF -+ ktime_t measure_time; -+ int measure_frames; -+#endif -+} dsi; -+ -+ -+static inline void dsi_write_reg(const struct dsi_reg idx, u32 val) -+{ -+ __raw_writel(val, dsi.base + idx.idx); -+} -+ -+static inline u32 dsi_read_reg(const struct dsi_reg idx) -+{ -+ return __raw_readl(dsi.base + idx.idx); -+} -+ -+static inline int wait_for_bit_change(const struct dsi_reg idx, int bitnum, -+ int value) -+{ -+ int t = 1000; -+ -+ while (REG_GET(idx, bitnum, bitnum) != value) { -+ if (--t == 0) -+ return !value; -+ } -+ -+ return value; -+} -+ -+ -+#ifdef MEASURE_PERF -+static void start_measuring(void) -+{ -+ dsi.measure_time = ktime_get(); -+} -+ -+static void end_measuring(const char *name) -+{ -+ ktime_t t; -+ u32 total_bytes; -+ u32 us; -+ const int numframes = 100; -+ -+ if (dsi.update_mode == OMAP_DSS_UPDATE_DISABLED) -+ return; -+ -+ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) { -+ dsi.measure_frames++; -+ if (dsi.measure_frames < numframes) -+ return; -+ dsi.measure_frames = 0; -+ } -+ -+ t = ktime_get(); -+ t = ktime_sub(t, dsi.measure_time); -+ us = (u32)ktime_to_us(t); -+ if (us == 0) -+ us = 1; -+ -+ total_bytes = dsi.update_region.w * -+ dsi.update_region.h * -+ dsi.update_region.bytespp; -+ -+ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) { -+ DSSINFO("%s update: %d frames in %u us, %u frames/sec\n", -+ name, numframes, -+ us, -+ 1000*1000 / us); -+ } else { -+ DSSINFO("%s update in %u us (%u Hz), %u bytes, %u kbytes/sec\n", -+ name, -+ us, -+ 1000*1000 / us, -+ total_bytes, -+ total_bytes * 1000 / us); -+ } -+} -+#else -+#define start_measuring() -+#define end_measuring(x) -+#endif -+ -+ -+ -+ -+static void print_irq_status(u32 status) -+{ -+#ifndef VERBOSE_IRQ -+ if ((status & ~DSI_IRQ_CHANNEL_MASK) == 0) -+ return; -+#endif -+ printk(KERN_DEBUG "DSI IRQ: 0x%x: ", status); -+ -+#define PIS(x) \ -+ if (status & DSI_IRQ_##x) \ -+ printk(#x " "); -+#ifdef VERBOSE_IRQ -+ PIS(VC0); -+ PIS(VC1); -+ PIS(VC2); -+ PIS(VC3); -+#endif -+ PIS(WAKEUP); -+ PIS(RESYNC); -+ PIS(PLL_LOCK); -+ PIS(PLL_UNLOCK); -+ PIS(PLL_RECALL); -+ PIS(COMPLEXIO_ERR); -+ PIS(HS_TX_TIMEOUT); -+ PIS(LP_RX_TIMEOUT); -+ PIS(TE_TRIGGER); -+ PIS(ACK_TRIGGER); -+ PIS(SYNC_LOST); -+ PIS(LDO_POWER_GOOD); -+ PIS(TA_TIMEOUT); -+#undef PIS -+ -+ printk("\n"); -+} -+ -+static void print_irq_status_vc(int channel, u32 status) -+{ -+#ifndef VERBOSE_IRQ -+ if ((status & ~DSI_VC_IRQ_PACKET_SENT) == 0) -+ return; -+#endif -+ printk(KERN_DEBUG "DSI VC(%d) IRQ 0x%x: ", channel, status); -+ -+#define PIS(x) \ -+ if (status & DSI_VC_IRQ_##x) \ -+ printk(#x " "); -+ PIS(CS); -+ PIS(ECC_CORR); -+#ifdef VERBOSE_IRQ -+ PIS(PACKET_SENT); -+#endif -+ PIS(FIFO_TX_OVF); -+ PIS(FIFO_RX_OVF); -+ PIS(BTA); -+ PIS(ECC_NO_CORR); -+ PIS(FIFO_TX_UDF); -+ PIS(PP_BUSY_CHANGE); -+#undef PIS -+ printk("\n"); -+} -+ -+static void print_irq_status_cio(u32 status) -+{ -+ printk(KERN_DEBUG "DSI CIO IRQ 0x%x: ", status); -+ -+#define PIS(x) \ -+ if (status & DSI_CIO_IRQ_##x) \ -+ printk(#x " "); -+ PIS(ERRSYNCESC1); -+ PIS(ERRSYNCESC2); -+ PIS(ERRSYNCESC3); -+ PIS(ERRESC1); -+ PIS(ERRESC2); -+ PIS(ERRESC3); -+ PIS(ERRCONTROL1); -+ PIS(ERRCONTROL2); -+ PIS(ERRCONTROL3); -+ PIS(STATEULPS1); -+ PIS(STATEULPS2); -+ PIS(STATEULPS3); -+ PIS(ERRCONTENTIONLP0_1); -+ PIS(ERRCONTENTIONLP1_1); -+ PIS(ERRCONTENTIONLP0_2); -+ PIS(ERRCONTENTIONLP1_2); -+ PIS(ERRCONTENTIONLP0_3); -+ PIS(ERRCONTENTIONLP1_3); -+ PIS(ULPSACTIVENOT_ALL0); -+ PIS(ULPSACTIVENOT_ALL1); -+#undef PIS -+ -+ printk("\n"); -+} -+ -+static int debug_irq; -+ -+/* called from dss */ -+void dsi_irq_handler(void) -+{ -+ u32 irqstatus, vcstatus, ciostatus; -+ int i; -+ -+ irqstatus = dsi_read_reg(DSI_IRQSTATUS); -+ -+ if (irqstatus & DSI_IRQ_ERROR_MASK) { -+ DSSERR("DSI error, irqstatus %x\n", irqstatus); -+ print_irq_status(irqstatus); -+ } else if (debug_irq) { -+ print_irq_status(irqstatus); -+ } -+ -+ for (i = 0; i < 4; ++i) { -+ if ((irqstatus & (1< 30*1000*1000) -+ REG_FLD_MOD(DSI_CLK_CTRL, 1, 21, 21); /* LP_RX_SYNCHRO_ENABLE */ -+ -+ return 0; -+} -+ -+ -+enum dsi_pll_power_state { -+ DSI_PLL_POWER_OFF = 0x0, -+ DSI_PLL_POWER_ON_HSCLK = 0x1, -+ DSI_PLL_POWER_ON_ALL = 0x2, -+ DSI_PLL_POWER_ON_DIV = 0x3, -+}; -+ -+static int dsi_pll_power(enum dsi_pll_power_state state) -+{ -+ int t = 0; -+ -+ REG_FLD_MOD(DSI_CLK_CTRL, state, 31, 30); /* PLL_PWR_CMD */ -+ -+ /* PLL_PWR_STATUS */ -+ while (FLD_GET(dsi_read_reg(DSI_CLK_CTRL), 29, 28) != state) { -+ udelay(1); -+ if (t++ > 1000) { -+ DSSERR("DSI: Failed to set DSI PLL power mode to %d\n", -+ state); -+ return -ENODEV; -+ } -+ } -+ -+ return 0; -+} -+ -+/* return 1 for exact match */ -+static int iterate_dispc_divs(int is_tft, unsigned long pck, -+ struct dsi_clock_info *cur, struct dsi_clock_info *best) -+{ -+ int pcd_min = is_tft ? 2 : 3; -+ -+ for (cur->lck_div = 1; cur->lck_div <= 255; ++cur->lck_div) { -+ unsigned long lck = cur->dispc_fck / cur->lck_div; -+ -+ for (cur->pck_div = pcd_min; cur->pck_div <= 255; -+ ++cur->pck_div) { -+ -+ cur->pck = lck / cur->pck_div; -+ -+ if (abs(cur->pck - pck) < abs(best->pck - pck)) { -+ *best = *cur; -+ /* -+ DSSDBG("best match fck %ld, pck %ld, regn %d, " -+ "regm %d, regm3 %d, ld %d, pd %d\n", -+ best->dispc_fck, -+ best->pck, -+ best->regn, best->regm, -+ best->regm3, -+ best->lck_div, best->pck_div); -+ */ -+ } -+ -+ if (cur->pck == pck) -+ return 1; -+ -+ if (cur->pck < pck) -+ break; -+ } -+ -+ if (lck / pcd_min < cur->pck) -+ break; -+ } -+ -+ return 0; -+} -+ -+int dsi_pll_calc_pck(int is_tft, unsigned long pck, -+ struct dsi_clock_info *cinfo) -+{ -+ struct dsi_clock_info cur, best; -+ -+ DSSDBG("dsi_pll_calc\n"); -+ -+ memset(&best, 0, sizeof(best)); -+ -+ memset(&cur, 0, sizeof(cur)); -+ cur.clkin = clk_get_rate(dsi.dss2_fck); -+ cur.use_dss2_fck = 1; -+ cur.highfreq = 0; -+ -+ /* no highfreq: 0.75MHz < Fint = clkin / regn < 2.1MHz */ -+ /* highfreq: 0.75MHz < Fint = clkin / (2*regn) < 2.1MHz */ -+ /* To reduce PLL lock time, keep Fint high (around 2 MHz) */ -+ for (cur.regn = 1; cur.regn < REGN_MAX; ++cur.regn) { -+ if (cur.highfreq == 0) -+ cur.fint = cur.clkin / cur.regn; -+ else -+ cur.fint = cur.clkin / (2 * cur.regn); -+ -+ if (cur.fint > FINT_MAX || cur.fint < FINT_MIN) -+ continue; -+ -+ /* DSIPHY(MHz) = (2 * regm / regn) * (clkin / (highfreq + 1)) */ -+ for (cur.regm = 1; cur.regm < REGM_MAX; ++cur.regm) { -+ unsigned long a, b; -+ -+ a = 2 * cur.regm * (cur.clkin/1000); -+ b = cur.regn * (cur.highfreq + 1); -+ cur.dsiphy = a / b * 1000; -+ -+ if (cur.dsiphy > 1800 * 1000 * 1000) -+ break; -+ -+ /* DSI1_PLL_FCLK(MHz) = DSIPHY(MHz) / regm3 < 173MHz */ -+ for (cur.regm3 = 1; cur.regm3 < REGM3_MAX; -+ ++cur.regm3) { -+ int r; -+ -+ cur.dispc_fck = cur.dsiphy / cur.regm3; -+ -+ /* this will narrow down the search a bit, -+ * but still give pixclocks below what was -+ * requested */ -+ if (cur.dispc_fck < pck) -+ break; -+ -+ if (cur.dispc_fck > DISPC_MAX_FCK) -+ continue; -+ -+#ifdef CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK -+ if (cur.dispc_fck < -+ pck * CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK) -+ continue; -+#endif -+ r = iterate_dispc_divs(is_tft, pck, -+ &cur, &best); -+ if (r == 1) -+ goto found; -+ -+ } -+ } -+ } -+found: -+ -+ /* DSI2_PLL_FCLK(MHz) = DSIPHY(MHz) / regm4 < 173MHz */ -+ /* hardcoded 48MHz for now. what should it be? */ -+ best.regm4 = best.dsiphy / (48000000); -+ if (best.regm4 > REGM4_MAX) -+ best.regm4 = REGM4_MAX; -+ best.dsi_fck = best.dsiphy / best.regm4; -+ -+ *cinfo = best; -+ -+ return 0; -+} -+ -+static int dsi_pll_calc_datafreq(unsigned long datafreq, -+ struct dsi_clock_info *cinfo) -+{ -+ struct dsi_clock_info cur, best; -+ const int use_dss2_fck = 1; -+ -+ DSSDBG("dsi_pll_calc_datarate\n"); -+ -+ memset(&best, 0, sizeof(best)); -+ -+ memset(&cur, 0, sizeof(cur)); -+ cur.use_dss2_fck = use_dss2_fck; -+ if (use_dss2_fck) { -+ cur.clkin = clk_get_rate(dsi.dss2_fck); -+ cur.highfreq = 0; -+ } else { -+ cur.clkin = dispc_pclk_rate(); -+ if (cur.clkin < 32000000) -+ cur.highfreq = 0; -+ else -+ cur.highfreq = 1; -+ } -+ -+ /* no highfreq: 0.75MHz < Fint = clkin / regn < 2.1MHz */ -+ /* highfreq: 0.75MHz < Fint = clkin / (2*regn) < 2.1MHz */ -+ /* To reduce PLL lock time, keep Fint high (around 2 MHz) */ -+ for (cur.regn = 1; cur.regn < REGN_MAX; ++cur.regn) { -+ if (cur.highfreq == 0) -+ cur.fint = cur.clkin / cur.regn; -+ else -+ cur.fint = cur.clkin / (2 * cur.regn); -+ -+ if (cur.fint > FINT_MAX || cur.fint < FINT_MIN) -+ continue; -+ -+ /* DSIPHY(MHz) = (2 * regm / regn) * (clkin / (highfreq + 1)) */ -+ for (cur.regm = 1; cur.regm < REGM_MAX; ++cur.regm) { -+ unsigned long a, b; -+ -+ a = 2 * cur.regm * (cur.clkin/1000); -+ b = cur.regn * (cur.highfreq + 1); -+ cur.dsiphy = a / b * 1000; -+ -+ if (cur.dsiphy > 1800 * 1000 * 1000) -+ break; -+ -+ if (abs(cur.dsiphy - datafreq) < -+ abs(best.dsiphy - datafreq)) { -+ best = cur; -+ /* DSSDBG("best %ld\n", best.dsiphy); */ -+ } -+ -+ if (cur.dsiphy == datafreq) -+ goto found; -+ } -+ } -+found: -+ /* DSI1_PLL_FCLK(MHz) = DSIPHY(MHz) / regm3 < 173MHz */ -+ /* hardcoded 48MHz for now. what should it be? */ -+ best.regm3 = best.dsiphy / (48000000); -+ if (best.regm3 > REGM3_MAX) -+ best.regm3 = REGM3_MAX; -+ best.dispc_fck = best.dsiphy / best.regm3; -+ -+ /* DSI2_PLL_FCLK(MHz) = DSIPHY(MHz) / regm4 < 173MHz */ -+ /* hardcoded 48MHz for now. what should it be? */ -+ best.regm4 = best.dsiphy / (48000000); -+ if (best.regm4 > REGM4_MAX) -+ best.regm4 = REGM4_MAX; -+ best.dsi_fck = best.dsiphy / best.regm4; -+ -+ *cinfo = best; -+ -+ return 0; -+} -+ -+int dsi_pll_program(struct dsi_clock_info *cinfo) -+{ -+ int r = 0; -+ u32 l; -+ -+ DSSDBG("dsi_pll_program\n"); -+ -+ enable_clocks(1); -+ -+ dsi.dsiphy = cinfo->dsiphy; -+ dsi.ddr_clk = dsi.dsiphy / 4; -+ dsi.dsi1_pll_fclk = cinfo->dispc_fck; -+ dsi.dsi2_pll_fclk = cinfo->dsi_fck; -+ -+ DSSDBG("DSI Fint %ld\n", cinfo->fint); -+ -+ DSSDBG("clkin (%s) rate %ld, highfreq %d\n", -+ cinfo->use_dss2_fck ? "dss2_fck" : "pclkfree", -+ cinfo->clkin, -+ cinfo->highfreq); -+ -+ /* DSIPHY == CLKIN4DDR */ -+ DSSDBG("DSIPHY = 2 * %d / %d * %lu / %d = %lu\n", -+ cinfo->regm, -+ cinfo->regn, -+ cinfo->clkin, -+ cinfo->highfreq + 1, -+ cinfo->dsiphy); -+ -+ DSSDBG("Data rate on 1 DSI lane %ld Mbps\n", -+ dsi.dsiphy / 1000 / 1000 / 2); -+ -+ DSSDBG("Clock lane freq %ld Hz\n", dsi.ddr_clk); -+ -+ DSSDBG("regm3 = %d, dsi1_pll_fclk = %lu\n", -+ cinfo->regm3, cinfo->dispc_fck); -+ DSSDBG("regm4 = %d, dsi2_pll_fclk = %lu\n", -+ cinfo->regm4, cinfo->dsi_fck); -+ -+ REG_FLD_MOD(DSI_PLL_CONTROL, 0, 0, 0); /* DSI_PLL_AUTOMODE = manual */ -+ -+ l = dsi_read_reg(DSI_PLL_CONFIGURATION1); -+ l = FLD_MOD(l, 1, 0, 0); /* DSI_PLL_STOPMODE */ -+ l = FLD_MOD(l, cinfo->regn - 1, 7, 1); /* DSI_PLL_REGN */ -+ l = FLD_MOD(l, cinfo->regm, 18, 8); /* DSI_PLL_REGM */ -+ l = FLD_MOD(l, cinfo->regm3 - 1, 22, 19); /* DSI_CLOCK_DIV */ -+ l = FLD_MOD(l, cinfo->regm4 - 1, 26, 23); /* DSIPROTO_CLOCK_DIV */ -+ dsi_write_reg(DSI_PLL_CONFIGURATION1, l); -+ -+ l = dsi_read_reg(DSI_PLL_CONFIGURATION2); -+ l = FLD_MOD(l, 7, 4, 1); /* DSI_PLL_FREQSEL */ -+ /* DSI_PLL_CLKSEL */ -+ l = FLD_MOD(l, cinfo->use_dss2_fck ? 0 : 1, 11, 11); -+ l = FLD_MOD(l, cinfo->highfreq, 12, 12); /* DSI_PLL_HIGHFREQ */ -+ l = FLD_MOD(l, 1, 13, 13); /* DSI_PLL_REFEN */ -+ l = FLD_MOD(l, 0, 14, 14); /* DSIPHY_CLKINEN */ -+ l = FLD_MOD(l, 1, 20, 20); /* DSI_HSDIVBYPASS */ -+ dsi_write_reg(DSI_PLL_CONFIGURATION2, l); -+ -+ REG_FLD_MOD(DSI_PLL_GO, 1, 0, 0); /* DSI_PLL_GO */ -+ -+ if (wait_for_bit_change(DSI_PLL_GO, 0, 0) != 0) { -+ DSSERR("dsi pll go bit not going down.\n"); -+ r = -EIO; -+ goto err; -+ } -+ -+ if (wait_for_bit_change(DSI_PLL_STATUS, 1, 1) != 1) { -+ DSSERR("DSI: cannot lock PLL\n"); -+ r = -EIO; -+ goto err; -+ } -+ -+ l = dsi_read_reg(DSI_PLL_CONFIGURATION2); -+ l = FLD_MOD(l, 0, 0, 0); /* DSI_PLL_IDLE */ -+ l = FLD_MOD(l, 0, 5, 5); /* DSI_PLL_PLLLPMODE */ -+ l = FLD_MOD(l, 0, 6, 6); /* DSI_PLL_LOWCURRSTBY */ -+ l = FLD_MOD(l, 0, 7, 7); /* DSI_PLL_TIGHTPHASELOCK */ -+ l = FLD_MOD(l, 0, 8, 8); /* DSI_PLL_DRIFTGUARDEN */ -+ l = FLD_MOD(l, 0, 10, 9); /* DSI_PLL_LOCKSEL */ -+ l = FLD_MOD(l, 1, 13, 13); /* DSI_PLL_REFEN */ -+ l = FLD_MOD(l, 1, 14, 14); /* DSIPHY_CLKINEN */ -+ l = FLD_MOD(l, 0, 15, 15); /* DSI_BYPASSEN */ -+ l = FLD_MOD(l, 1, 16, 16); /* DSS_CLOCK_EN */ -+ l = FLD_MOD(l, 0, 17, 17); /* DSS_CLOCK_PWDN */ -+ l = FLD_MOD(l, 1, 18, 18); /* DSI_PROTO_CLOCK_EN */ -+ l = FLD_MOD(l, 0, 19, 19); /* DSI_PROTO_CLOCK_PWDN */ -+ l = FLD_MOD(l, 0, 20, 20); /* DSI_HSDIVBYPASS */ -+ dsi_write_reg(DSI_PLL_CONFIGURATION2, l); -+ -+ DSSDBG("PLL config done\n"); -+err: -+ enable_clocks(0); -+ -+ return r; -+} -+ -+int dsi_pll_init(int enable_hsclk, int enable_hsdiv) -+{ -+ int r = 0; -+ int fck_div, lck_div, pck_div; -+ unsigned long fck; -+ enum dsi_pll_power_state pwstate; -+ -+ DSSDBG("PLL init\n"); -+ -+ enable_clocks(1); -+ dsi_enable_pll_clock(1); -+ -+ /* configure dispc fck and pixel clock to something sane */ -+ fck = dispc_calc_clock_div(1, 48 * 1000 * 1000, -+ &fck_div, &lck_div, &pck_div); -+ if (fck == 0) -+ return -EINVAL; -+ -+ dispc_set_clock_div(fck_div, lck_div, pck_div); -+ -+ /* PLL does not come out of reset without this... */ -+ dispc_pck_free_enable(1); -+ -+ if (wait_for_bit_change(DSI_PLL_STATUS, 0, 1) != 1) { -+ DSSERR("DSI: PLL not coming out of reset.\n"); -+ r = -ENODEV; -+ goto err; -+ } -+ -+ /* ... but if left on, we get problems when planes do not -+ * fill the whole display. No idea about this XXX */ -+ dispc_pck_free_enable(0); -+ -+ if (enable_hsclk && enable_hsdiv) -+ pwstate = DSI_PLL_POWER_ON_ALL; -+ else if (enable_hsclk) -+ pwstate = DSI_PLL_POWER_ON_HSCLK; -+ else if (enable_hsdiv) -+ pwstate = DSI_PLL_POWER_ON_DIV; -+ else -+ pwstate = DSI_PLL_POWER_OFF; -+ -+ r = dsi_pll_power(pwstate); -+ -+ if (r) -+ goto err; -+ -+ enable_clocks(0); -+ -+ DSSDBG("PLL init done\n"); -+ -+ return 0; -+err: -+ enable_clocks(0); -+ dsi_enable_pll_clock(0); -+ return r; -+} -+ -+void dsi_pll_uninit(void) -+{ -+ dsi_pll_power(DSI_PLL_POWER_OFF); -+ dsi_enable_pll_clock(0); -+ DSSDBG("PLL uninit done\n"); -+} -+ -+unsigned long dsi_get_dsi1_pll_rate(void) -+{ -+ return dsi.dsi1_pll_fclk; -+} -+ -+unsigned long dsi_get_dsi2_pll_rate(void) -+{ -+ return dsi.dsi2_pll_fclk; -+} -+ -+ssize_t dsi_print_clocks(char *buf, ssize_t size) -+{ -+ ssize_t l = 0; -+ int clksel; -+ -+ enable_clocks(1); -+ -+ clksel = REG_GET(DSI_PLL_CONFIGURATION2, 11, 11); -+ -+ l += snprintf(buf + l, size - l, "- dsi -\n"); -+ -+ l += snprintf(buf + l, size - l, "dsi fclk source = %s\n", -+ dss_get_dsi_clk_source() == 0 ? -+ "dss1_alwon_fclk" : "dsi2_pll_fclk"); -+ -+ l += snprintf(buf + l, size - l, "dsi pll source = %s\n", -+ clksel == 0 ? -+ "dss2_alwon_fclk" : "pclkfree"); -+ -+ l += snprintf(buf + l, size - l, -+ "DSIPHY\t\t%lu\nDDR_CLK\t\t%lu\n", -+ dsi.dsiphy, dsi.ddr_clk); -+ -+ l += snprintf(buf + l, size - l, -+ "dsi1_pll_fck\t%lu (%s)\n" -+ "dsi2_pll_fck\t%lu (%s)\n", -+ dsi.dsi1_pll_fclk, -+ dss_get_dispc_clk_source() == 0 ? "off" : "on", -+ dsi.dsi2_pll_fclk, -+ dss_get_dsi_clk_source() == 0 ? "off" : "on"); -+ -+ enable_clocks(0); -+ -+ return l; -+} -+ -+ -+enum dsi_complexio_power_state { -+ DSI_COMPLEXIO_POWER_OFF = 0x0, -+ DSI_COMPLEXIO_POWER_ON = 0x1, -+ DSI_COMPLEXIO_POWER_ULPS = 0x2, -+}; -+ -+static int dsi_complexio_power(enum dsi_complexio_power_state state) -+{ -+ int t = 0; -+ -+ /* PWR_CMD */ -+ REG_FLD_MOD(DSI_COMPLEXIO_CFG1, state, 28, 27); -+ -+ /* PWR_STATUS */ -+ while (FLD_GET(dsi_read_reg(DSI_COMPLEXIO_CFG1), 26, 25) != state) { -+ udelay(1); -+ if (t++ > 1000) { -+ DSSERR("DSI: failed to set complexio power state to " -+ "%d\n", state); -+ return -ENODEV; -+ } -+ } -+ -+ return 0; -+} -+ -+static void dsi_complexio_config(struct omap_display *display) -+{ -+ u32 r; -+ -+ int clk_lane = display->hw_config.u.dsi.clk_lane; -+ int data1_lane = display->hw_config.u.dsi.data1_lane; -+ int data2_lane = display->hw_config.u.dsi.data2_lane; -+ int clk_pol = display->hw_config.u.dsi.clk_pol; -+ int data1_pol = display->hw_config.u.dsi.data1_pol; -+ int data2_pol = display->hw_config.u.dsi.data2_pol; -+ -+ r = dsi_read_reg(DSI_COMPLEXIO_CFG1); -+ r = FLD_MOD(r, clk_lane, 2, 0); -+ r = FLD_MOD(r, clk_pol, 3, 3); -+ r = FLD_MOD(r, data1_lane, 6, 4); -+ r = FLD_MOD(r, data1_pol, 7, 7); -+ r = FLD_MOD(r, data2_lane, 10, 8); -+ r = FLD_MOD(r, data2_pol, 11, 11); -+ dsi_write_reg(DSI_COMPLEXIO_CFG1, r); -+ -+ /* The configuration of the DSI complex I/O (number of data lanes, -+ position, differential order) should not be changed while -+ DSS.DSI_CLK_CRTRL[20] LP_CLK_ENABLE bit is set to 1. In order for -+ the hardware to take into account a new configuration of the complex -+ I/O (done in DSS.DSI_COMPLEXIO_CFG1 register), it is recommended to -+ follow this sequence: First set the DSS.DSI_CTRL[0] IF_EN bit to 1, -+ then reset the DSS.DSI_CTRL[0] IF_EN to 0, then set -+ DSS.DSI_CLK_CTRL[20] LP_CLK_ENABLE to 1 and finally set again the -+ DSS.DSI_CTRL[0] IF_EN bit to 1. If the sequence is not followed, the -+ DSI complex I/O configuration is unknown. */ -+ -+ /* -+ REG_FLD_MOD(DSI_CTRL, 1, 0, 0); -+ REG_FLD_MOD(DSI_CTRL, 0, 0, 0); -+ REG_FLD_MOD(DSI_CLK_CTRL, 1, 20, 20); -+ REG_FLD_MOD(DSI_CTRL, 1, 0, 0); -+ */ -+} -+ -+static inline int ns2ddr(int ns) -+{ -+ /* convert time in ns to ddr ticks, rounding up */ -+ return (ns * (dsi.ddr_clk/1000/1000) + 999) / 1000; -+} -+ -+static void dsi_complexio_timings(void) -+{ -+ u32 r; -+ u32 ths_prepare, ths_prepare_ths_zero, ths_trail, ths_exit; -+ u32 tlpx_half, tclk_trail, tclk_zero; -+ u32 tclk_prepare; -+ -+ /* calculate timings */ -+ -+ /* 1 * DDR_CLK = 2 * UI */ -+ -+ /* min 40ns + 4*UI max 85ns + 6*UI */ -+ ths_prepare = ns2ddr(59) + 2; -+ -+ /* min 145ns + 10*UI */ -+ ths_prepare_ths_zero = ns2ddr(145) + 5; -+ -+ /* min max(8*UI, 60ns+4*UI) */ -+ ths_trail = max(4, ns2ddr(60) + 2); -+ -+ /* min 100ns */ -+ ths_exit = ns2ddr(100); -+ -+ /* tlpx min 50n */ -+ tlpx_half = ns2ddr(25); -+ -+ /* min 60ns */ -+ tclk_trail = ns2ddr(60); -+ -+ /* min 38ns, max 95ns */ -+ tclk_prepare = ns2ddr(38); -+ -+ /* min tclk-prepare + tclk-zero = 300ns */ -+ tclk_zero = ns2ddr(300 - 38); -+ -+#ifdef VERBOSE -+ DSSDBG("ths_prepare %d, ths_prepare_ths_zero %d\n", -+ ths_prepare, ths_prepare_ths_zero); -+ DSSDBG("ths_trail %d, ths_exit %d\n", ths_trail, ths_exit); -+ -+ -+ DSSDBG("tlpx_half %d, tclk_trail %d, tclk_zero %d\n", tlpx_half, -+ tclk_trail, tclk_zero); -+ DSSDBG("tclk_prepare %d\n", tclk_prepare); -+#endif -+ -+ /* program timings */ -+ -+ r = dsi_read_reg(DSIPHY_CFG0); -+ r = FLD_MOD(r, ths_prepare, 31, 24); -+ r = FLD_MOD(r, ths_prepare_ths_zero, 23, 16); -+ r = FLD_MOD(r, ths_trail, 15, 8); -+ r = FLD_MOD(r, ths_exit, 7, 0); -+ dsi_write_reg(DSIPHY_CFG0, r); -+ -+ r = dsi_read_reg(DSIPHY_CFG1); -+ r = FLD_MOD(r, tlpx_half, 22, 16); -+ r = FLD_MOD(r, tclk_trail, 15, 8); -+ r = FLD_MOD(r, tclk_zero, 7, 0); -+ dsi_write_reg(DSIPHY_CFG1, r); -+ -+ r = dsi_read_reg(DSIPHY_CFG2); -+ r = FLD_MOD(r, tclk_prepare, 7, 0); -+ dsi_write_reg(DSIPHY_CFG2, r); -+} -+ -+ -+static int dsi_complexio_init(struct omap_display *display) -+{ -+ int r = 0; -+ -+ DSSDBG("dsi_complexio_init\n"); -+ -+ /* CIO_CLK_ICG, enable L3 clk to CIO */ -+ REG_FLD_MOD(DSI_CLK_CTRL, 1, 14, 14); -+ -+ if (wait_for_bit_change(DSIPHY_CFG5, 30, 1) != 1) { -+ DSSERR("DSI: ComplexIO PHY not coming out of reset.\n"); -+ r = -ENODEV; -+ goto err; -+ } -+ -+ dsi_complexio_config(display); -+ -+ r = dsi_complexio_power(DSI_COMPLEXIO_POWER_ON); -+ -+ if (r) -+ goto err; -+ -+ if (wait_for_bit_change(DSI_COMPLEXIO_CFG1, 29, 1) != 1) { -+ DSSERR("DSI: ComplexIO not coming out of reset.\n"); -+ r = -ENODEV; -+ goto err; -+ } -+ -+ if (wait_for_bit_change(DSI_COMPLEXIO_CFG1, 21, 1) != 1) { -+ DSSERR("DSI: ComplexIO LDO power down.\n"); -+ r = -ENODEV; -+ goto err; -+ } -+ -+ dsi_complexio_timings(); -+ -+ /* -+ The configuration of the DSI complex I/O (number of data lanes, -+ position, differential order) should not be changed while -+ DSS.DSI_CLK_CRTRL[20] LP_CLK_ENABLE bit is set to 1. For the -+ hardware to recognize a new configuration of the complex I/O (done -+ in DSS.DSI_COMPLEXIO_CFG1 register), it is recommended to follow -+ this sequence: First set the DSS.DSI_CTRL[0] IF_EN bit to 1, next -+ reset the DSS.DSI_CTRL[0] IF_EN to 0, then set DSS.DSI_CLK_CTRL[20] -+ LP_CLK_ENABLE to 1, and finally, set again the DSS.DSI_CTRL[0] IF_EN -+ bit to 1. If the sequence is not followed, the DSi complex I/O -+ configuration is undetermined. -+ */ -+ dsi_if_enable(1); -+ dsi_if_enable(0); -+ REG_FLD_MOD(DSI_CLK_CTRL, 1, 20, 20); /* LP_CLK_ENABLE */ -+ dsi_if_enable(1); -+ dsi_if_enable(0); -+ -+ DSSDBG("CIO init done\n"); -+err: -+ return r; -+} -+ -+static void dsi_complexio_uninit(void) -+{ -+ dsi_complexio_power(DSI_COMPLEXIO_POWER_OFF); -+} -+ -+ -+ -+static void dsi_config_tx_fifo(enum fifo_size size1, enum fifo_size size2, -+ enum fifo_size size3, enum fifo_size size4) -+{ -+ u32 r = 0; -+ int add = 0; -+ int i; -+ -+ dsi.vc[0].fifo_size = size1; -+ dsi.vc[1].fifo_size = size2; -+ dsi.vc[2].fifo_size = size3; -+ dsi.vc[3].fifo_size = size4; -+ -+ for (i = 0; i < 4; i++) { -+ u8 v; -+ int size = dsi.vc[i].fifo_size; -+ -+ if (add + size > 4) { -+ DSSERR("DSI: Illegal FIFO configuration\n"); -+ BUG(); -+ } -+ -+ v = FLD_VAL(add, 2, 0) | FLD_VAL(size, 7, 4); -+ r |= v << (8 * i); -+ /*DSSDBG("TX FIFO vc %d: size %d, add %d\n", i, size, add); */ -+ add += size; -+ } -+ -+ dsi_write_reg(DSI_TX_FIFO_VC_SIZE, r); -+} -+ -+static void dsi_config_rx_fifo(enum fifo_size size1, enum fifo_size size2, -+ enum fifo_size size3, enum fifo_size size4) -+{ -+ u32 r = 0; -+ int add = 0; -+ int i; -+ -+ dsi.vc[0].fifo_size = size1; -+ dsi.vc[1].fifo_size = size2; -+ dsi.vc[2].fifo_size = size3; -+ dsi.vc[3].fifo_size = size4; -+ -+ for (i = 0; i < 4; i++) { -+ u8 v; -+ int size = dsi.vc[i].fifo_size; -+ -+ if (add + size > 4) { -+ DSSERR("DSI: Illegal FIFO configuration\n"); -+ BUG(); -+ } -+ -+ v = FLD_VAL(add, 2, 0) | FLD_VAL(size, 7, 4); -+ r |= v << (8 * i); -+ /*DSSDBG("RX FIFO vc %d: size %d, add %d\n", i, size, add); */ -+ add += size; -+ } -+ -+ dsi_write_reg(DSI_RX_FIFO_VC_SIZE, r); -+} -+ -+static int dsi_force_tx_stop_mode_io(void) -+{ -+ u32 r; -+ -+ r = dsi_read_reg(DSI_TIMING1); -+ r = FLD_MOD(r, 1, 15, 15); /* FORCE_TX_STOP_MODE_IO */ -+ dsi_write_reg(DSI_TIMING1, r); -+ -+ if (wait_for_bit_change(DSI_TIMING1, 15, 0) != 0) { -+ DSSERR("TX_STOP bit not going down\n"); -+ return -EIO; -+ } -+ -+ return 0; -+} -+ -+static void dsi_vc_print_status(int channel) -+{ -+ u32 r; -+ -+ r = dsi_read_reg(DSI_VC_CTRL(channel)); -+ DSSDBG("vc %d: TX_FIFO_NOT_EMPTY %d, BTA_EN %d, VC_BUSY %d, " -+ "TX_FIFO_FULL %d, RX_FIFO_NOT_EMPTY %d, ", -+ channel, -+ FLD_GET(r, 5, 5), -+ FLD_GET(r, 6, 6), -+ FLD_GET(r, 15, 15), -+ FLD_GET(r, 16, 16), -+ FLD_GET(r, 20, 20)); -+ -+ r = dsi_read_reg(DSI_TX_FIFO_VC_EMPTINESS); -+ DSSDBG("EMPTINESS %d\n", (r >> (8 * channel)) & 0xff); -+} -+ -+static void dsi_vc_config(int channel) -+{ -+ u32 r; -+ -+ DSSDBG("dsi_vc_config %d\n", channel); -+ -+ r = dsi_read_reg(DSI_VC_CTRL(channel)); -+ -+ r = FLD_MOD(r, 0, 1, 1); /* SOURCE, 0 = L4 */ -+ r = FLD_MOD(r, 0, 2, 2); /* BTA_SHORT_EN */ -+ r = FLD_MOD(r, 0, 3, 3); /* BTA_LONG_EN */ -+ r = FLD_MOD(r, 0, 4, 4); /* MODE, 0 = command */ -+ r = FLD_MOD(r, 1, 7, 7); /* CS_TX_EN */ -+ r = FLD_MOD(r, 1, 8, 8); /* ECC_TX_EN */ -+ r = FLD_MOD(r, 0, 9, 9); /* MODE_SPEED, high speed on/off */ -+ -+ r = FLD_MOD(r, 4, 29, 27); /* DMA_RX_REQ_NB = no dma */ -+ r = FLD_MOD(r, 4, 23, 21); /* DMA_TX_REQ_NB = no dma */ -+ -+ dsi_write_reg(DSI_VC_CTRL(channel), r); -+} -+ -+static void dsi_vc_config_vp(int channel) -+{ -+ u32 r; -+ -+ DSSDBG("dsi_vc_config_vp\n"); -+ -+ r = dsi_read_reg(DSI_VC_CTRL(channel)); -+ -+ r = FLD_MOD(r, 1, 1, 1); /* SOURCE, 1 = video port */ -+ r = FLD_MOD(r, 0, 2, 2); /* BTA_SHORT_EN */ -+ r = FLD_MOD(r, 0, 3, 3); /* BTA_LONG_EN */ -+ r = FLD_MOD(r, 0, 4, 4); /* MODE, 0 = command */ -+ r = FLD_MOD(r, 1, 7, 7); /* CS_TX_EN */ -+ r = FLD_MOD(r, 1, 8, 8); /* ECC_TX_EN */ -+ r = FLD_MOD(r, 1, 9, 9); /* MODE_SPEED, high speed on/off */ -+ -+ r = FLD_MOD(r, 4, 29, 27); /* DMA_RX_REQ_NB = no dma */ -+ r = FLD_MOD(r, 4, 23, 21); /* DMA_TX_REQ_NB = no dma */ -+ -+ dsi_write_reg(DSI_VC_CTRL(channel), r); -+} -+ -+ -+static int dsi_vc_enable(int channel, int enable) -+{ -+ DSSDBG("dsi_vc_enable channel %d, enable %d\n", channel, enable); -+ -+ enable = enable ? 1 : 0; -+ -+ REG_FLD_MOD(DSI_VC_CTRL(channel), enable, 0, 0); -+ -+ if (wait_for_bit_change(DSI_VC_CTRL(channel), 0, enable) != enable) { -+ DSSERR("Failed to set dsi_vc_enable to %d\n", enable); -+ return -EIO; -+ } -+ -+ return 0; -+} -+ -+static void dsi_vc_enable_hs(int channel, int enable) -+{ -+ DSSDBG("dsi_vc_enable_hs(%d, %d)\n", channel, enable); -+ -+ dsi_vc_enable(channel, 0); -+ dsi_if_enable(0); -+ -+ REG_FLD_MOD(DSI_VC_CTRL(channel), enable, 9, 9); -+ -+ dsi_vc_enable(channel, 1); -+ dsi_if_enable(1); -+ -+ dsi_force_tx_stop_mode_io(); -+} -+ -+static void dsi_vc_flush_long_data(int channel) -+{ -+ while (REG_GET(DSI_VC_CTRL(channel), 20, 20)) { -+ u32 val; -+ val = dsi_read_reg(DSI_VC_SHORT_PACKET_HEADER(channel)); -+ DSSDBG("\t\tb1 %#02x b2 %#02x b3 %#02x b4 %#02x\n", -+ (val >> 0) & 0xff, -+ (val >> 8) & 0xff, -+ (val >> 16) & 0xff, -+ (val >> 24) & 0xff); -+ } -+} -+ -+static u16 dsi_vc_flush_receive_data(int channel) -+{ -+ /* RX_FIFO_NOT_EMPTY */ -+ while (REG_GET(DSI_VC_CTRL(channel), 20, 20)) { -+ u32 val; -+ u8 dt; -+ val = dsi_read_reg(DSI_VC_SHORT_PACKET_HEADER(channel)); -+ DSSDBG("\trawval %#08x\n", val); -+ dt = FLD_GET(val, 7, 0); -+ if (dt == DSI_DT_RX_ACK_WITH_ERR) { -+ u16 err = FLD_GET(val, 23, 8); -+ DSSERR("\tACK with ERROR: %#x\n", err); -+ if (err & (1 << 9)) -+ DSSERR("\t\tECC multibit\n"); -+ if (err & (1 << 11)) -+ DSSERR("\t\tData type not recognized\n"); -+ if (err & (1 << 12)) -+ DSSERR("\t\tInvalid VC ID\n"); -+ -+ } else if (dt == DSI_DT_RX_SHORT_READ_1) { -+ DSSDBG("\tDCS short response, 1 byte: %#x\n", -+ FLD_GET(val, 23, 8)); -+ return FLD_GET(val, 23, 8); -+ } else if (dt == DSI_DT_RX_SHORT_READ_2) { -+ DSSDBG("\tDCS short response, 2 byte: %#x\n", -+ FLD_GET(val, 23, 8)); -+ return FLD_GET(val, 23, 8); -+ } else if (dt == DSI_DT_RX_DCS_LONG_READ) { -+ DSSDBG("\tDCS long response, len %d\n", -+ FLD_GET(val, 23, 8)); -+ dsi_vc_flush_long_data(channel); -+ } else { -+ DSSERR("\tunknown datatype\n"); -+ } -+ } -+ return 0; -+} -+ -+static int dsi_vc_send_bta(int channel) -+{ -+ unsigned long tmo; -+ -+ /*DSSDBG("dsi_vc_send_bta_sync %d\n", channel); */ -+ -+ if (REG_GET(DSI_VC_CTRL(channel), 20, 20)) { /* RX_FIFO_NOT_EMPTY */ -+ DSSERR("rx fifo not empty when sending BTA, dumping data:\n"); -+ dsi_vc_flush_receive_data(channel); -+ } -+ -+ REG_FLD_MOD(DSI_VC_CTRL(channel), 1, 6, 6); /* BTA_EN */ -+ -+ tmo = jiffies + msecs_to_jiffies(10); -+ while (REG_GET(DSI_VC_CTRL(channel), 6, 6) == 1) { -+ if (time_after(jiffies, tmo)) { -+ DSSERR("Failed to send BTA\n"); -+ return -EIO; -+ } -+ } -+ -+ return 0; -+} -+ -+static int dsi_vc_send_bta_sync(int channel) -+{ -+ int r = 0; -+ -+ init_completion(&dsi.bta_completion); -+ -+ dsi_vc_enable_bta_irq(channel); -+ -+ r = dsi_vc_send_bta(channel); -+ if (r) -+ goto err; -+ -+ if (wait_for_completion_timeout(&dsi.bta_completion, -+ msecs_to_jiffies(500)) == 0) { -+ DSSERR("Failed to receive BTA\n"); -+ r = -EIO; -+ goto err; -+ } -+err: -+ dsi_vc_disable_bta_irq(channel); -+ -+ return r; -+} -+ -+static inline void dsi_vc_write_long_header(int channel, u8 data_type, -+ u16 len, u8 ecc) -+{ -+ u32 val; -+ u8 data_id; -+ -+ /*data_id = data_type | channel << 6; */ -+ data_id = data_type | dsi.vc[channel].dest_per << 6; -+ -+ val = FLD_VAL(data_id, 7, 0) | FLD_VAL(len, 23, 8) | -+ FLD_VAL(ecc, 31, 24); -+ -+ dsi_write_reg(DSI_VC_LONG_PACKET_HEADER(channel), val); -+} -+ -+static inline void dsi_vc_write_long_payload(int channel, -+ u8 b1, u8 b2, u8 b3, u8 b4) -+{ -+ u32 val; -+ -+ val = b4 << 24 | b3 << 16 | b2 << 8 | b1 << 0; -+ -+/* DSSDBG("\twriting %02x, %02x, %02x, %02x (%#010x)\n", -+ b1, b2, b3, b4, val); */ -+ -+ dsi_write_reg(DSI_VC_LONG_PACKET_PAYLOAD(channel), val); -+} -+ -+static int dsi_vc_send_long(int channel, u8 data_type, u8 *data, u16 len, -+ u8 ecc) -+{ -+ /*u32 val; */ -+ int i; -+ u8 *p; -+ int r = 0; -+ u8 b1, b2, b3, b4; -+ -+ /*DSSDBG("dsi_vc_send_long, %d bytes\n", len); */ -+ -+ /* len + header */ -+ if (dsi.vc[channel].fifo_size * 32 * 4 < len + 4) { -+ DSSERR("DSI: unable to send long packet: packet too long.\n"); -+ return -EINVAL; -+ } -+ -+ dsi_vc_write_long_header(channel, data_type, len, ecc); -+ -+ /*dsi_vc_print_status(0); */ -+ -+ p = data; -+ for (i = 0; i < len >> 2; i++) { -+ /*DSSDBG("\tsending full packet %d\n", i); */ -+ /*dsi_vc_print_status(0); */ -+ -+ b1 = *p++; -+ b2 = *p++; -+ b3 = *p++; -+ b4 = *p++; -+ -+ dsi_vc_write_long_payload(channel, b1, b2, b3, b4); -+ } -+ -+ i = len % 4; -+ if (i) { -+ b1 = 0; b2 = 0; b3 = 0; -+ -+ /*DSSDBG("\tsending remainder bytes %d\n", i); */ -+ -+ switch (i) { -+ case 3: -+ b1 = *p++; -+ b2 = *p++; -+ b3 = *p++; -+ break; -+ case 2: -+ b1 = *p++; -+ b2 = *p++; -+ break; -+ case 1: -+ b1 = *p++; -+ break; -+ } -+ -+ dsi_vc_write_long_payload(channel, b1, b2, b3, 0); -+ } -+ -+ return r; -+} -+ -+static int dsi_vc_send_short(int channel, u8 data_type, u16 data, u8 ecc) -+{ -+ u32 r; -+ u8 data_id; -+/* -+ DSSDBG("dsi_vc_send_short(ch%d, dt %#x, b1 %#x, b2 %#x)\n", -+ channel, -+ data_type, data & 0xff, (data >> 8) & 0xff); -+*/ -+ if (FLD_GET(dsi_read_reg(DSI_VC_CTRL(channel)), 16, 16)) { -+ DSSERR("ERROR FIFO FULL, aborting transfer\n"); -+ return -EINVAL; -+ } -+ -+ data_id = data_type | channel << 6; -+ -+ r = (data_id << 0) | (data << 8) | (ecc << 24); -+ -+ dsi_write_reg(DSI_VC_SHORT_PACKET_HEADER(channel), r); -+ -+ return 0; -+} -+ -+int dsi_vc_send_null(int channel) -+{ -+ u8 nullpkg[] = {0, 0, 0, 0}; -+ return dsi_vc_send_long(0, DSI_DT_NULL_PACKET, nullpkg, 4, 0); -+} -+EXPORT_SYMBOL(dsi_vc_send_null); -+ -+int dsi_vc_dcs_write_nosync(int channel, u8 *data, int len) -+{ -+ int r; -+ -+ BUG_ON(len == 0); -+ -+ if (len == 1) { -+ r = dsi_vc_send_short(channel, DSI_DT_DCS_SHORT_WRITE_0, -+ data[0], 0); -+ } else if (len == 2) { -+ r = dsi_vc_send_short(channel, DSI_DT_DCS_SHORT_WRITE_1, -+ data[0] | (data[1] << 8), 0); -+ } else { -+ /* 0x39 = DCS Long Write */ -+ r = dsi_vc_send_long(channel, DSI_DT_DCS_LONG_WRITE, -+ data, len, 0); -+ } -+ -+ return r; -+} -+EXPORT_SYMBOL(dsi_vc_dcs_write_nosync); -+ -+int dsi_vc_dcs_write(int channel, u8 *data, int len) -+{ -+ int r; -+ -+ r = dsi_vc_dcs_write_nosync(channel, data, len); -+ if (r) -+ return r; -+ -+ /* Some devices need time to process the msg in low power mode. -+ This also makes the write synchronous, and checks that -+ the peripheral is still alive */ -+ r = dsi_vc_send_bta_sync(channel); -+ -+ return r; -+} -+EXPORT_SYMBOL(dsi_vc_dcs_write); -+ -+int dsi_vc_dcs_read(int channel, u8 dcs_cmd, u8 *buf, int buflen) -+{ -+ u32 val; -+ u8 dt; -+ int debug = 0; -+ -+ if (debug) -+ DSSDBG("dsi_vc_dcs_read\n"); -+ -+ dsi_vc_send_short(channel, DSI_DT_DCS_READ, dcs_cmd, 0); -+ -+ dsi_vc_send_bta_sync(channel); -+ -+ val = dsi_read_reg(DSI_VC_SHORT_PACKET_HEADER(channel)); -+ if (debug) -+ DSSDBG("\trawval %#08x\n", val); -+ dt = FLD_GET(val, 7, 0); -+ if (dt == DSI_DT_RX_ACK_WITH_ERR) { -+ u16 err = FLD_GET(val, 23, 8); -+ DSSERR("\tACK with ERROR: %#x\n", err); -+ if (err & (1 << 9)) -+ DSSERR("\t\tECC multibit\n"); -+ if (err & (1 << 11)) -+ DSSERR("\t\tData type not recognized\n"); -+ if (err & (1 << 12)) -+ DSSERR("\t\tInvalid VC ID\n"); -+ return -1; -+ -+ } else if (dt == DSI_DT_RX_SHORT_READ_1) { -+ u8 data = FLD_GET(val, 15, 8); -+ if (debug) -+ DSSDBG("\tDCS short response, 1 byte: %#x\n", data); -+ -+ if (buflen < 1) -+ return -1; -+ -+ buf[0] = data; -+ -+ return 1; -+ } else if (dt == DSI_DT_RX_SHORT_READ_2) { -+ u16 data = FLD_GET(val, 23, 8); -+ if (debug) -+ DSSDBG("\tDCS short response, 2 byte: %#x\n", data); -+ -+ if (buflen < 2) -+ return -1; -+ -+ buf[0] = data & 0xff; -+ buf[1] = (data >> 8) & 0xff; -+ -+ return 2; -+ } else if (dt == DSI_DT_RX_DCS_LONG_READ) { -+ int x; -+ int len = FLD_GET(val, 23, 8); -+ if (debug) -+ DSSDBG("\tDCS long response, len %d\n", len); -+ -+ if (len > buflen) -+ return -1; -+ -+ x = 0; -+ while (x < len) { -+ val = dsi_read_reg(DSI_VC_SHORT_PACKET_HEADER(channel)); -+ if (debug) -+ DSSDBG("\t\tb1 %#02x b2 %#02x b3 %#02x b4 " -+ "%#02x\n", -+ (val >> 0) & 0xff, -+ (val >> 8) & 0xff, -+ (val >> 16) & 0xff, -+ (val >> 24) & 0xff); -+ -+ if (x < len) -+ buf[x++] = (val >> 0) & 0xff; -+ if (x < len) -+ buf[x++] = (val >> 8) & 0xff; -+ if (x < len) -+ buf[x++] = (val >> 16) & 0xff; -+ if (x < len) -+ buf[x++] = (val >> 24) & 0xff; -+ } -+ -+ return len; -+ } else { -+ DSSERR("\tunknown datatype\n"); -+ return -1; -+ } -+} -+EXPORT_SYMBOL(dsi_vc_dcs_read); -+ -+ -+int dsi_vc_set_max_rx_packet_size(int channel, u16 len) -+{ -+ return dsi_vc_send_short(channel, DSI_DT_SET_MAX_RET_PKG_SIZE, -+ len, 0); -+} -+EXPORT_SYMBOL(dsi_vc_set_max_rx_packet_size); -+ -+ -+static int dsi_set_lp_rx_timeout(int ns, int x4, int x16) -+{ -+ u32 r; -+ unsigned long fck; -+ int ticks; -+ -+ /* ticks in DSI_FCK */ -+ -+ fck = dsi_fclk_rate(); -+ ticks = (fck / 1000 / 1000) * ns / 1000; -+ -+ if (ticks > 0x1fff) { -+ DSSERR("LP_TX_TO too high\n"); -+ return -EINVAL; -+ } -+ -+ r = dsi_read_reg(DSI_TIMING2); -+ r = FLD_MOD(r, 1, 15, 15); /* LP_RX_TO */ -+ r = FLD_MOD(r, x16, 14, 14); /* LP_RX_TO_X16 */ -+ r = FLD_MOD(r, x4, 13, 13); /* LP_RX_TO_X4 */ -+ r = FLD_MOD(r, ticks, 12, 0); /* LP_RX_COUNTER */ -+ dsi_write_reg(DSI_TIMING2, r); -+ -+ DSSDBG("LP_RX_TO %ld ns (%#x ticks)\n", -+ (ticks * (x16 ? 16 : 1) * (x4 ? 4 : 1) * 1000) / -+ (fck / 1000 / 1000), -+ ticks); -+ -+ return 0; -+} -+ -+static int dsi_set_ta_timeout(int ns, int x8, int x16) -+{ -+ u32 r; -+ unsigned long fck; -+ int ticks; -+ -+ /* ticks in DSI_FCK */ -+ -+ fck = dsi_fclk_rate(); -+ ticks = (fck / 1000 / 1000) * ns / 1000; -+ -+ if (ticks > 0x1fff) { -+ DSSERR("TA_TO too high\n"); -+ return -EINVAL; -+ } -+ -+ r = dsi_read_reg(DSI_TIMING1); -+ r = FLD_MOD(r, 1, 31, 31); /* TA_TO */ -+ r = FLD_MOD(r, x16, 30, 30); /* TA_TO_X16 */ -+ r = FLD_MOD(r, x8, 29, 29); /* TA_TO_X8 */ -+ r = FLD_MOD(r, ticks, 28, 16); /* TA_TO_COUNTER */ -+ dsi_write_reg(DSI_TIMING1, r); -+ -+ DSSDBG("TA_TO %ld ns (%#x ticks)\n", -+ (ticks * (x16 ? 16 : 1) * (x8 ? 8 : 1) * 1000) / -+ (fck / 1000 / 1000), -+ ticks); -+ -+ return 0; -+} -+ -+static int dsi_set_stop_state_counter(int ns, int x4, int x16) -+{ -+ u32 r; -+ unsigned long fck; -+ int ticks; -+ -+ /* ticks in DSI_FCK */ -+ -+ fck = dsi_fclk_rate(); -+ ticks = (fck / 1000 / 1000) * ns / 1000; -+ -+ if (ticks > 0x1fff) { -+ DSSERR("STOP_STATE_COUNTER_IO too high\n"); -+ return -EINVAL; -+ } -+ -+ r = dsi_read_reg(DSI_TIMING1); -+ r = FLD_MOD(r, 1, 15, 15); /* FORCE_TX_STOP_MODE_IO */ -+ r = FLD_MOD(r, x16, 14, 14); /* STOP_STATE_X16_IO */ -+ r = FLD_MOD(r, x4, 13, 13); /* STOP_STATE_X4_IO */ -+ r = FLD_MOD(r, ticks, 12, 0); /* STOP_STATE_COUNTER_IO */ -+ dsi_write_reg(DSI_TIMING1, r); -+ -+ DSSDBG("STOP_STATE_COUNTER %ld ns (%#x ticks)\n", -+ (ticks * (x16 ? 16 : 1) * (x4 ? 4 : 1) * 1000) / -+ (fck / 1000 / 1000), -+ ticks); -+ -+ return 0; -+} -+ -+static int dsi_set_hs_tx_timeout(int ns, int x4, int x16) -+{ -+ u32 r; -+ unsigned long fck; -+ int ticks; -+ -+ /* ticks in TxByteClkHS */ -+ -+ fck = dsi.ddr_clk / 4; -+ ticks = (fck / 1000 / 1000) * ns / 1000; -+ -+ if (ticks > 0x1fff) { -+ DSSERR("HS_TX_TO too high\n"); -+ return -EINVAL; -+ } -+ -+ r = dsi_read_reg(DSI_TIMING2); -+ r = FLD_MOD(r, 1, 31, 31); /* HS_TX_TO */ -+ r = FLD_MOD(r, x16, 30, 30); /* HS_TX_TO_X16 */ -+ r = FLD_MOD(r, x4, 29, 29); /* HS_TX_TO_X8 (4 really) */ -+ r = FLD_MOD(r, ticks, 28, 16); /* HS_TX_TO_COUNTER */ -+ dsi_write_reg(DSI_TIMING2, r); -+ -+ DSSDBG("HS_TX_TO %ld ns (%#x ticks)\n", -+ (ticks * (x16 ? 16 : 1) * (x4 ? 4 : 1) * 1000) / -+ (fck / 1000 / 1000), -+ ticks); -+ -+ return 0; -+} -+static int dsi_proto_config(struct omap_display *display) -+{ -+ u32 r; -+ int buswidth = 0; -+ -+ dsi_config_tx_fifo(DSI_FIFO_SIZE_128, -+ DSI_FIFO_SIZE_0, -+ DSI_FIFO_SIZE_0, -+ DSI_FIFO_SIZE_0); -+ -+ dsi_config_rx_fifo(DSI_FIFO_SIZE_128, -+ DSI_FIFO_SIZE_0, -+ DSI_FIFO_SIZE_0, -+ DSI_FIFO_SIZE_0); -+ -+ /* XXX what values for the timeouts? */ -+ dsi_set_stop_state_counter(1000, 0, 0); -+ -+ dsi_set_ta_timeout(50000, 1, 1); -+ -+ /* 3000ns * 16 */ -+ dsi_set_lp_rx_timeout(3000, 0, 1); -+ -+ /* 10000ns * 4 */ -+ dsi_set_hs_tx_timeout(10000, 1, 0); -+ -+ switch (display->bpp) { -+ case 16: -+ buswidth = 0; -+ break; -+ case 18: -+ buswidth = 1; -+ break; -+ case 24: -+ buswidth = 2; -+ break; -+ default: -+ BUG(); -+ } -+ -+ r = dsi_read_reg(DSI_CTRL); -+ r = FLD_MOD(r, 1, 1, 1); /* CS_RX_EN */ -+ r = FLD_MOD(r, 1, 2, 2); /* ECC_RX_EN */ -+ r = FLD_MOD(r, 1, 3, 3); /* TX_FIFO_ARBITRATION */ -+ /* XXX what should the ratio be */ -+ r = FLD_MOD(r, 0, 4, 4); /* VP_CLK_RATIO, VP_PCLK = VP_CLK/2 */ -+ r = FLD_MOD(r, buswidth, 7, 6); /* VP_DATA_BUS_WIDTH */ -+ r = FLD_MOD(r, 0, 8, 8); /* VP_CLK_POL */ -+ r = FLD_MOD(r, 2, 13, 12); /* LINE_BUFFER, 2 lines */ -+ r = FLD_MOD(r, 1, 14, 14); /* TRIGGER_RESET_MODE */ -+ r = FLD_MOD(r, 1, 19, 19); /* EOT_ENABLE */ -+ r = FLD_MOD(r, 1, 24, 24); /* DCS_CMD_ENABLE */ -+ r = FLD_MOD(r, 0, 25, 25); /* DCS_CMD_CODE, 1=start, 0=continue */ -+ -+ dsi_write_reg(DSI_CTRL, r); -+ -+ /* we configure vc0 for L4 communication, and -+ * vc1 for dispc */ -+ dsi_vc_config(0); -+ dsi_vc_config_vp(1); -+ -+ /* set all vc targets to peripheral 0 */ -+ dsi.vc[0].dest_per = 0; -+ dsi.vc[1].dest_per = 0; -+ dsi.vc[2].dest_per = 0; -+ dsi.vc[3].dest_per = 0; -+ -+ return 0; -+} -+ -+static void dsi_proto_timings(void) -+{ -+ int tlpx_half, tclk_zero, tclk_prepare, tclk_trail; -+ int tclk_pre, tclk_post; -+ int ddr_clk_pre, ddr_clk_post; -+ u32 r; -+ -+ r = dsi_read_reg(DSIPHY_CFG1); -+ tlpx_half = FLD_GET(r, 22, 16); -+ tclk_trail = FLD_GET(r, 15, 8); -+ tclk_zero = FLD_GET(r, 7, 0); -+ -+ r = dsi_read_reg(DSIPHY_CFG2); -+ tclk_prepare = FLD_GET(r, 7, 0); -+ -+ /* min 8*UI */ -+ tclk_pre = 4; -+ /* min 60ns + 52*UI */ -+ tclk_post = ns2ddr(60) + 26; -+ -+ ddr_clk_pre = (tclk_pre + tlpx_half*2 + tclk_zero + tclk_prepare) / 4; -+ ddr_clk_post = (tclk_post + tclk_trail) / 4; -+ -+ r = dsi_read_reg(DSI_CLK_TIMING); -+ r = FLD_MOD(r, ddr_clk_pre, 15, 8); -+ r = FLD_MOD(r, ddr_clk_post, 7, 0); -+ dsi_write_reg(DSI_CLK_TIMING, r); -+ -+#ifdef VERBOSE -+ DSSDBG("ddr_clk_pre %d, ddr_clk_post %d\n", -+ ddr_clk_pre, -+ ddr_clk_post); -+#endif -+} -+ -+ -+#define DSI_DECL_VARS \ -+ int __dsi_cb = 0; u32 __dsi_cv = 0; -+ -+#define DSI_FLUSH(ch) \ -+ if (__dsi_cb > 0) { \ -+ /*DSSDBG("sending long packet %#010x\n", __dsi_cv);*/ \ -+ dsi_write_reg(DSI_VC_LONG_PACKET_PAYLOAD(ch), __dsi_cv); \ -+ __dsi_cb = __dsi_cv = 0; \ -+ } -+ -+#define DSI_PUSH(ch, data) \ -+ do { \ -+ __dsi_cv |= (data) << (__dsi_cb * 8); \ -+ /*DSSDBG("cv = %#010x, cb = %d\n", __dsi_cv, __dsi_cb);*/ \ -+ if (++__dsi_cb > 3) \ -+ DSI_FLUSH(ch); \ -+ } while (0) -+ -+static int dsi_update_screen_l4(struct omap_display *display, -+ int x, int y, int w, int h) -+{ -+ /* Note: supports only 24bit colors in 32bit container */ -+ int first = 1; -+ int fifo_stalls = 0; -+ int max_dsi_packet_size; -+ int max_data_per_packet; -+ int max_pixels_per_packet; -+ int pixels_left; -+ int bytespp = 3; -+ int scr_width; -+ u32 *data; -+ int start_offset; -+ int horiz_inc; -+ int current_x; -+ struct omap_overlay *ovl; -+ -+ debug_irq = 0; -+ -+ DSSDBG("dsi_update_screen_l4 (%d,%d %dx%d)\n", -+ x, y, w, h); -+ -+ ovl = &display->manager->overlays[0]; -+ -+ if (ovl->info.color_mode != OMAP_DSS_COLOR_RGB24U) -+ return -EINVAL; -+ -+ if (display->ctrl->bpp != 24) -+ return -EINVAL; -+ -+ enable_clocks(1); -+ -+ scr_width = ovl->info.screen_width; -+ data = ovl->info.vaddr; -+ -+ start_offset = scr_width * y + x; -+ horiz_inc = scr_width - w; -+ current_x = x; -+ -+ /* We need header(4) + DCSCMD(1) + pixels(numpix*bytespp) bytes -+ * in fifo */ -+ -+ /* When using CPU, max long packet size is TX buffer size */ -+ max_dsi_packet_size = dsi.vc[0].fifo_size * 32 * 4; -+ -+ /* we seem to get better perf if we divide the tx fifo to half, -+ and while the other half is being sent, we fill the other half -+ max_dsi_packet_size /= 2; */ -+ -+ max_data_per_packet = max_dsi_packet_size - 4 - 1; -+ -+ max_pixels_per_packet = max_data_per_packet / bytespp; -+ -+ DSSDBG("max_pixels_per_packet %d\n", max_pixels_per_packet); -+ -+ display->ctrl->setup_update(display, x, y, w, h); -+ -+ pixels_left = w * h; -+ -+ DSSDBG("total pixels %d\n", pixels_left); -+ -+ data += start_offset; -+ -+ dsi.update_region.x = x; -+ dsi.update_region.y = y; -+ dsi.update_region.w = w; -+ dsi.update_region.h = h; -+ dsi.update_region.bytespp = bytespp; -+ -+ start_measuring(); -+ -+ while (pixels_left > 0) { -+ /* 0x2c = write_memory_start */ -+ /* 0x3c = write_memory_continue */ -+ u8 dcs_cmd = first ? 0x2c : 0x3c; -+ int pixels; -+ DSI_DECL_VARS; -+ first = 0; -+ -+#if 1 -+ /* using fifo not empty */ -+ /* TX_FIFO_NOT_EMPTY */ -+ while (FLD_GET(dsi_read_reg(DSI_VC_CTRL(0)), 5, 5)) { -+ udelay(1); -+ fifo_stalls++; -+ if (fifo_stalls > 0xfffff) { -+ DSSERR("fifo stalls overflow, pixels left %d\n", -+ pixels_left); -+ dsi_if_enable(0); -+ enable_clocks(0); -+ return -EIO; -+ } -+ } -+#elif 1 -+ /* using fifo emptiness */ -+ while ((REG_GET(DSI_TX_FIFO_VC_EMPTINESS, 7, 0)+1)*4 < -+ max_dsi_packet_size) { -+ fifo_stalls++; -+ if (fifo_stalls > 0xfffff) { -+ DSSERR("fifo stalls overflow, pixels left %d\n", -+ pixels_left); -+ dsi_if_enable(0); -+ enable_clocks(0); -+ return -EIO; -+ } -+ } -+#else -+ while ((REG_GET(DSI_TX_FIFO_VC_EMPTINESS, 7, 0)+1)*4 == 0) { -+ fifo_stalls++; -+ if (fifo_stalls > 0xfffff) { -+ DSSERR("fifo stalls overflow, pixels left %d\n", -+ pixels_left); -+ dsi_if_enable(0); -+ enable_clocks(0); -+ return -EIO; -+ } -+ } -+#endif -+ pixels = min(max_pixels_per_packet, pixels_left); -+ -+ pixels_left -= pixels; -+ -+ dsi_vc_write_long_header(0, DSI_DT_DCS_LONG_WRITE, -+ 1 + pixels * bytespp, 0); -+ -+ DSI_PUSH(0, dcs_cmd); -+ -+ while (pixels-- > 0) { -+ u32 pix = *data++; -+ -+ DSI_PUSH(0, (pix >> 16) & 0xff); -+ DSI_PUSH(0, (pix >> 8) & 0xff); -+ DSI_PUSH(0, (pix >> 0) & 0xff); -+ -+ current_x++; -+ if (current_x == x+w) { -+ current_x = x; -+ data += horiz_inc; -+ } -+ } -+ -+ DSI_FLUSH(0); -+ } -+ -+ end_measuring("L4"); -+ -+ enable_clocks(0); -+ -+ return 0; -+} -+ -+#if 0 -+static void dsi_clear_screen_l4(struct omap_display *display, -+ int x, int y, int w, int h) -+{ -+ int first = 1; -+ int fifo_stalls = 0; -+ int max_dsi_packet_size; -+ int max_data_per_packet; -+ int max_pixels_per_packet; -+ int pixels_left; -+ int bytespp = 3; -+ int pixnum; -+ -+ debug_irq = 0; -+ -+ DSSDBG("dsi_clear_screen_l4 (%d,%d %dx%d)\n", -+ x, y, w, h); -+ -+ if (display->ctrl->bpp != 24) -+ return -EINVAL; -+ -+ /* We need header(4) + DCSCMD(1) + pixels(numpix*bytespp) -+ * bytes in fifo */ -+ -+ /* When using CPU, max long packet size is TX buffer size */ -+ max_dsi_packet_size = dsi.vc[0].fifo_size * 32 * 4; -+ -+ max_data_per_packet = max_dsi_packet_size - 4 - 1; -+ -+ max_pixels_per_packet = max_data_per_packet / bytespp; -+ -+ enable_clocks(1); -+ -+ display->ctrl->setup_update(display, x, y, w, h); -+ -+ pixels_left = w * h; -+ -+ dsi.update_region.x = x; -+ dsi.update_region.y = y; -+ dsi.update_region.w = w; -+ dsi.update_region.h = h; -+ dsi.update_region.bytespp = bytespp; -+ -+ start_measuring(); -+ -+ pixnum = 0; -+ -+ while (pixels_left > 0) { -+ /* 0x2c = write_memory_start */ -+ /* 0x3c = write_memory_continue */ -+ u8 dcs_cmd = first ? 0x2c : 0x3c; -+ int pixels; -+ DSI_DECL_VARS; -+ first = 0; -+ -+ /* TX_FIFO_NOT_EMPTY */ -+ while (FLD_GET(dsi_read_reg(DSI_VC_CTRL(0)), 5, 5)) { -+ fifo_stalls++; -+ if (fifo_stalls > 0xfffff) { -+ DSSERR("fifo stalls overflow\n"); -+ dsi_if_enable(0); -+ enable_clocks(0); -+ return; -+ } -+ } -+ -+ pixels = min(max_pixels_per_packet, pixels_left); -+ -+ pixels_left -= pixels; -+ -+ dsi_vc_write_long_header(0, DSI_DT_DCS_LONG_WRITE, -+ 1 + pixels * bytespp, 0); -+ -+ DSI_PUSH(0, dcs_cmd); -+ -+ while (pixels-- > 0) { -+ u32 pix; -+ -+ pix = 0x000000; -+ -+ DSI_PUSH(0, (pix >> 16) & 0xff); -+ DSI_PUSH(0, (pix >> 8) & 0xff); -+ DSI_PUSH(0, (pix >> 0) & 0xff); -+ } -+ -+ DSI_FLUSH(0); -+ } -+ -+ enable_clocks(0); -+ -+ end_measuring("L4 CLEAR"); -+} -+#endif -+ -+static int dsi_wait_for_framedone(void) -+{ -+ unsigned long flags; -+ -+ spin_lock_irqsave(&dsi.update_lock, flags); -+ if (dsi.update_ongoing) { -+ long wait = msecs_to_jiffies(1000); -+ dsi.update_syncers++; -+ spin_unlock_irqrestore(&dsi.update_lock, flags); -+ wait = wait_for_completion_timeout(&dsi.update_completion, -+ wait); -+ if (wait == 0) { -+ DSSERR("timeout waiting sync\n"); -+ return -ETIME; -+ } -+ } else { -+ spin_unlock_irqrestore(&dsi.update_lock, flags); -+ } -+ -+ return 0; -+} -+ -+static void dsi_setup_update_dispc(struct omap_display *display, -+ int x, int y, int w, int h) -+{ -+ int bytespp = 3; -+ -+ DSSDBG("dsi_setup_update_dispc(%d,%d %dx%d)\n", -+ x, y, w, h); -+ -+ dsi.update_region.display = display; -+ dsi.update_region.x = x; -+ dsi.update_region.y = y; -+ dsi.update_region.w = w; -+ dsi.update_region.h = h; -+ dsi.update_region.bytespp = bytespp; -+ -+ enable_clocks(1); -+ -+ dispc_setup_partial_planes(display, &x, &y, &w, &h); -+ -+ dispc_set_lcd_size(w, h); -+ -+ enable_clocks(0); -+} -+ -+static void dsi_update_screen_dispc(struct omap_display *display) -+{ -+ int bytespp = 3; -+ int total_len; -+ int line_packet_len; -+ int x, y, w, h; -+ u32 l; -+ -+ x = dsi.update_region.x; -+ y = dsi.update_region.y; -+ w = dsi.update_region.w; -+ h = dsi.update_region.h; -+ -+ DSSDBG("dsi_update_screen_dispc(%d,%d %dx%d)\n", -+ x, y, w, h); -+ -+ enable_clocks(1); -+ -+ /* TODO: one packet could be longer, I think? Max is the line buffer */ -+ line_packet_len = w * bytespp + 1; /* 1 byte for DCS cmd */ -+ total_len = line_packet_len * h; -+ -+ display->ctrl->setup_update(display, x, y, w, h); -+ -+ if (0) -+ dsi_vc_print_status(1); -+ -+ start_measuring(); -+ -+ l = FLD_VAL(total_len, 23, 0); /* TE_SIZE */ -+ dsi_write_reg(DSI_VC_TE(1), l); -+ -+ dsi_vc_write_long_header(1, DSI_DT_DCS_LONG_WRITE, line_packet_len, 0); -+ -+ if (dsi.use_te) -+ l = FLD_MOD(l, 1, 30, 30); /* TE_EN */ -+ else -+ l = FLD_MOD(l, 1, 31, 31); /* TE_START */ -+ dsi_write_reg(DSI_VC_TE(1), l); -+ -+ dispc_enable_lcd_out(1); -+ -+ if (dsi.use_te) -+ dsi_vc_send_bta(1); -+} -+ -+static void framedone_callback(void *data, u32 mask) -+{ -+ if (dsi.framedone_scheduled) { -+ DSSERR("Framedone already scheduled. Bogus FRAMEDONE IRQ?\n"); -+ return; -+ } -+ -+ dsi.framedone_scheduled = 1; -+ -+ /* We get FRAMEDONE when DISPC has finished sending pixels and turns -+ * itself off. However, DSI still has the pixels in its buffers, and -+ * is sending the data. Thus we have to wait until we can do a new -+ * transfer or turn the clocks off. We do that in a separate work -+ * func. */ -+ schedule_work(&dsi.framedone_work); -+} -+ -+static void framedone_worker(struct work_struct *work) -+{ -+ unsigned long flags; -+ u32 l; -+ unsigned long tmo; -+ int i = 0; -+ -+ l = REG_GET(DSI_VC_TE(1), 23, 0); /* TE_SIZE */ -+ -+ /* There shouldn't be much stuff in DSI buffers, if any, so we'll -+ * just busyloop */ -+ if (l > 0) { -+ tmo = jiffies + msecs_to_jiffies(50); -+ while (REG_GET(DSI_VC_TE(1), 23, 0) > 0) { /* TE_SIZE */ -+ i++; -+ if (time_after(jiffies, tmo)) { -+ DSSERR("timeout waiting TE_SIZE to zero\n"); -+ break; -+ } -+ cpu_relax(); -+ } -+ } -+ -+ if (REG_GET(DSI_VC_TE(1), 30, 30)) -+ DSSERR("TE_EN not zero\n"); -+ -+ if (REG_GET(DSI_VC_TE(1), 31, 31)) -+ DSSERR("TE_START not zero\n"); -+ -+ spin_lock_irqsave(&dsi.update_lock, flags); -+ if (dsi.update_ongoing == 0) { -+ spin_unlock_irqrestore(&dsi.update_lock, flags); -+ DSSERR("framedone irq without update request\n"); -+ return; -+ } -+ spin_unlock_irqrestore(&dsi.update_lock, flags); -+ -+ end_measuring("DISPC"); -+ -+ DSSDBG("FRAMEDONE\n"); -+ -+#if 0 -+ if (l) -+ DSSWARN("FRAMEDONE irq too early, %d bytes, %d loops\n", l, i); -+#else -+ if (l > 1024*3) -+ DSSWARN("FRAMEDONE irq too early, %d bytes, %d loops\n", l, i); -+#endif -+ -+ spin_lock_irqsave(&dsi.update_lock, flags); -+ dsi.update_ongoing = 0; -+ while (dsi.update_syncers > 0) { -+ complete(&dsi.update_completion); -+ --dsi.update_syncers; -+ } -+ spin_unlock_irqrestore(&dsi.update_lock, flags); -+ -+#ifdef CONFIG_OMAP2_DSS_FAKE_VSYNC -+ dispc_fake_vsync_irq(); -+#endif -+ enable_clocks(0); -+ -+ dsi.framedone_scheduled = 0; -+ -+ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) { -+ spin_lock_irqsave(&dsi.update_lock, flags); -+ dsi.update_ongoing = 1; -+ spin_unlock_irqrestore(&dsi.update_lock, flags); -+ dsi_update_screen_dispc(dsi.update_region.display); -+ } -+} -+ -+static void dsi_start_auto_update(struct omap_display *display) -+{ -+ unsigned long flags; -+ int bytespp = 3; -+ -+ DSSDBG("starting auto update\n"); -+ -+ dsi.update_region.display = display; -+ dsi.update_region.x = 0; -+ dsi.update_region.y = 0; -+ dsi.update_region.w = display->x_res; -+ dsi.update_region.h = display->y_res; -+ dsi.update_region.bytespp = bytespp; -+ -+ enable_clocks(1); -+ -+ dispc_set_lcd_size(display->x_res, display->y_res); -+ -+ spin_lock_irqsave(&dsi.update_lock, flags); -+ dsi.update_ongoing = 1; -+ spin_unlock_irqrestore(&dsi.update_lock, flags); -+ dsi_update_screen_dispc(display); -+} -+ -+static void dsi_stop_auto_update(void) -+{ -+ dsi.update_mode = OMAP_DSS_UPDATE_DISABLED; -+ -+ DSSDBG("waiting for display to finish.\n"); -+ dsi_wait_for_framedone(); -+ DSSDBG("done waiting\n"); -+ enable_clocks(0); -+ -+ dsi.update_mode = OMAP_DSS_UPDATE_MANUAL; -+} -+ -+static int dsi_set_update_mode(struct omap_display *display, -+ enum omap_dss_update_mode mode) -+{ -+ if (mode == dsi.update_mode) -+ return 0; -+ -+ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) -+ dsi_stop_auto_update(); -+ else if (dsi.update_mode == OMAP_DSS_UPDATE_MANUAL) -+ dsi_wait_for_framedone(); -+ -+ dsi.update_mode = mode; -+ -+ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) -+ dsi_start_auto_update(display); -+ -+ return 0; -+} -+ -+/* Display funcs */ -+ -+static int dsi_display_enable(struct omap_display *display) -+{ -+ int r = 0; -+ struct dsi_clock_info cinfo; -+ -+ DSSDBG("dsi_display_enable\n"); -+ -+ mutex_lock(&dsi.lock); -+ -+ if (display->state != OMAP_DSS_DISPLAY_DISABLED) { -+ DSSERR("display already enabled\n"); -+ r = -EINVAL; -+ goto err0; -+ } -+ -+ enable_clocks(1); -+ -+ r = omap_dispc_register_isr(framedone_callback, NULL, -+ DISPC_IRQ_FRAMEDONE); -+ if (r) { -+ DSSERR("can't get FRAMEDONE irq\n"); -+ goto err1; -+ } -+ -+ dispc_set_lcd_display_type(OMAP_DSS_LCD_DISPLAY_TFT); -+ -+ dispc_set_parallel_interface_mode(OMAP_DSS_PARALLELMODE_DSI); -+ dispc_enable_fifohandcheck(1); -+ dispc_setup_plane_fifo(OMAP_DSS_GFX, 0); -+ dispc_setup_plane_fifo(OMAP_DSS_VIDEO1, 0); -+ dispc_setup_plane_fifo(OMAP_DSS_VIDEO2, 0); -+ dispc_set_tft_data_lines(display->bpp); -+ -+ { -+ struct omap_video_timings timings = { -+ .hsw = 1, -+ .hfp = 1, -+ .hbp = 1, -+ .vsw = 1, -+ .vfp = 0, -+ .vbp = 0, -+ }; -+ -+ dispc_set_lcd_timings(&timings); -+ } -+ -+ _dsi_print_reset_status(); -+ -+ r = dsi_pll_init(1, 0); -+ if (r) -+ goto err2; -+ -+ /* XXX hardcoded for 300Mbp/lane for now */ -+ r = dsi_pll_calc_datafreq(600 * 1000 * 1000, &cinfo); -+ if (r) -+ goto err3; -+ -+ r = dsi_pll_program(&cinfo); -+ if (r) -+ goto err3; -+ -+ DSSDBG("PLL OK\n"); -+ -+ r = dsi_complexio_init(display); -+ if (r) -+ goto err3; -+ -+ _dsi_print_reset_status(); -+ -+ dsi_proto_timings(); -+ dsi_set_lp_clk_divisor(); -+ -+ if (1) -+ _dsi_print_reset_status(); -+ -+ r = dsi_proto_config(display); -+ if (r) -+ goto err4; -+ -+ /* enable interface */ -+ dsi_vc_enable(0, 1); -+ dsi_vc_enable(1, 1); -+ dsi_if_enable(1); -+ dsi_force_tx_stop_mode_io(); -+ -+ -+ if (display->ctrl && display->ctrl->enable) { -+ r = display->ctrl->enable(display); -+ if (r) -+ goto err5; -+ } -+ -+ if (display->panel && display->panel->enable) { -+ r = display->panel->enable(display); -+ if (r) -+ goto err6; -+ } -+ -+ if (dsi.use_te) { -+ r = display->ctrl->enable_te(display, 1); -+ if (r) -+ goto err7; -+ } -+ -+ /* enable high-speed after initial config */ -+ dsi_vc_enable_hs(0, 1); -+ -+ display->state = OMAP_DSS_DISPLAY_ACTIVE; -+ -+ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) -+ dsi_start_auto_update(display); -+ -+ enable_clocks(0); -+ mutex_unlock(&dsi.lock); -+ -+ return 0; -+err7: -+ if (display->panel && display->panel->disable) -+ display->panel->disable(display); -+err6: -+ if (display->ctrl && display->ctrl->disable) -+ display->ctrl->disable(display); -+err5: -+ dsi_if_enable(0); -+err4: -+ dsi_complexio_uninit(); -+err3: -+ dsi_pll_uninit(); -+err2: -+ omap_dispc_unregister_isr(framedone_callback); -+err1: -+ enable_clocks(0); -+err0: -+ mutex_unlock(&dsi.lock); -+ DSSDBG("dsi_display_enable FAILED\n"); -+ return r; -+} -+ -+static void dsi_display_disable(struct omap_display *display) -+{ -+ DSSDBG("dsi_display_disable\n"); -+ -+ mutex_lock(&dsi.lock); -+ -+ if (display->state == OMAP_DSS_DISPLAY_DISABLED) -+ goto end; -+ -+ enable_clocks(1); -+ -+ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) -+ dsi_stop_auto_update(); -+ else if (dsi.update_mode == OMAP_DSS_UPDATE_MANUAL) -+ dsi_wait_for_framedone(); -+ -+ display->state = OMAP_DSS_DISPLAY_DISABLED; -+ -+ omap_dispc_unregister_isr(framedone_callback); -+ -+ if (display->panel && display->panel->disable) -+ display->panel->disable(display); -+ if (display->ctrl && display->ctrl->disable) -+ display->ctrl->disable(display); -+ -+ /* XXX sleep a bit to make sure all DSI buffers are sent. -+ * We should check it from somewhere, fifo fullness I guess */ -+ msleep(200); -+ -+ dsi_complexio_uninit(); -+ dsi_pll_uninit(); -+ -+ enable_clocks(0); -+ -+end: -+ mutex_unlock(&dsi.lock); -+} -+ -+static int dsi_display_suspend(struct omap_display *display) -+{ -+ if (display->state != OMAP_DSS_DISPLAY_ACTIVE) -+ return -EINVAL; -+ -+ if (display->panel->suspend) -+ display->panel->suspend(display); -+ -+ if (display->ctrl->suspend) -+ display->ctrl->suspend(display); -+ -+ display->state = OMAP_DSS_DISPLAY_SUSPENDED; -+ -+ return 0; -+} -+ -+static int dsi_display_resume(struct omap_display *display) -+{ -+ if (display->state != OMAP_DSS_DISPLAY_SUSPENDED) -+ return -EINVAL; -+ -+ if (display->panel->resume) -+ display->panel->resume(display); -+ -+ if (display->ctrl->resume) -+ display->ctrl->resume(display); -+ -+ display->state = OMAP_DSS_DISPLAY_ACTIVE; -+ -+ return 0; -+} -+ -+static void dsi_display_set_mode(struct omap_display *display, -+ int x_res, int y_res, int bpp) -+{ -+ DSSDBG("dsi_display_set_mode %dx%d, %dbpp\n", x_res, y_res, bpp); -+} -+ -+static int dsi_display_update(struct omap_display *display, -+ int x, int y, int w, int h) -+{ -+ unsigned long flags; -+ int r = 0; -+ -+ DSSDBG("dsi_display_update(%d,%d %dx%d)\n", x, y, w, h); -+ -+ if (w == 0 || h == 0) -+ return 0; -+ -+ mutex_lock(&dsi.lock); -+ -+ if (dsi.update_mode != OMAP_DSS_UPDATE_MANUAL) -+ goto end; /* XXX return error? */ -+ -+ spin_lock_irqsave(&dsi.update_lock, flags); -+ -+ if (dsi.update_ongoing) { -+ spin_unlock_irqrestore(&dsi.update_lock, flags); -+ DSSERR("DSI is busy\n"); -+ r = -EBUSY; -+ goto end; -+ } -+ -+ dsi.update_ongoing = 1; -+ -+ if (dsi.update_syncers > 0) -+ DSSERR("someone waiting for sync, and no update ongoing\n"); -+ -+ spin_unlock_irqrestore(&dsi.update_lock, flags); -+ -+ if (display->manager->caps & OMAP_DSS_OVL_MGR_CAP_DISPC) { -+ dsi_setup_update_dispc(display, x, y, w, h); -+ dsi_update_screen_dispc(display); -+ } else { -+ r = dsi_update_screen_l4(display, x, y, w, h); -+ if (r) -+ goto end; -+ -+ spin_lock_irqsave(&dsi.update_lock, flags); -+ dsi.update_ongoing = 0; -+ while (dsi.update_syncers > 0) { -+ complete(&dsi.update_completion); -+ --dsi.update_syncers; -+ } -+ spin_unlock_irqrestore(&dsi.update_lock, flags); -+ } -+ -+end: -+ mutex_unlock(&dsi.lock); -+ return r; -+} -+ -+static int dsi_display_sync(struct omap_display *display) -+{ -+ int r = 0; -+ -+ DSSDBG("dsi_display_sync\n"); -+ -+ mutex_lock(&dsi.lock); -+ -+ if (dsi.update_mode != OMAP_DSS_UPDATE_MANUAL) -+ goto end; -+ -+ r = dsi_wait_for_framedone(); -+ -+end: -+ mutex_unlock(&dsi.lock); -+ return r; -+} -+ -+static int dsi_display_set_update_mode(struct omap_display *display, -+ enum omap_dss_update_mode mode) -+{ -+ int r; -+ -+ DSSDBG("dsi_display_set_update_mode\n"); -+ -+ mutex_lock(&dsi.lock); -+ -+ r = dsi_set_update_mode(display, mode); -+ -+ mutex_unlock(&dsi.lock); -+ -+ return r; -+} -+ -+static enum omap_dss_update_mode dsi_display_get_update_mode( -+ struct omap_display *display) -+{ -+ return dsi.update_mode; -+} -+ -+static int dsi_display_enable_te(struct omap_display *display, int enable) -+{ -+ enum omap_dss_update_mode mode; -+ -+ DSSDBG("dsi_display_enable_te\n"); -+ -+ mutex_lock(&dsi.lock); -+ -+ enable_clocks(1); -+ -+ mode = dsi.update_mode; -+ -+ /* XXX perhaps suspend or something would be better here */ -+ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) -+ dsi_stop_auto_update(); -+ else if (dsi.update_mode == OMAP_DSS_UPDATE_MANUAL) -+ dsi_wait_for_framedone(); -+ -+ dsi.use_te = enable; -+ display->ctrl->enable_te(display, enable); -+ if (enable) { -+ /* disable LP_RX_TO, so that we can receive TE. -+ * Time to wait for TE is longer than the timer allows */ -+ REG_FLD_MOD(DSI_TIMING2, 0, 15, 15); /* LP_RX_TO */ -+ } else { -+ REG_FLD_MOD(DSI_TIMING2, 1, 15, 15); /* LP_RX_TO */ -+ } -+ -+ /* restore the old update mode */ -+ dsi_set_update_mode(display, mode); -+ -+ enable_clocks(0); -+ -+ mutex_unlock(&dsi.lock); -+ -+ return 0; -+} -+ -+static int dsi_display_get_te(struct omap_display *display) -+{ -+ return dsi.use_te; -+} -+ -+static int dsi_display_run_test(struct omap_display *display, int test_num) -+{ -+ enum omap_dss_update_mode mode; -+ int r = 0; -+ -+ DSSDBG("dsi_display_run_test %d\n", test_num); -+ -+ mutex_lock(&dsi.lock); -+ -+ enable_clocks(1); -+ -+ mode = dsi.update_mode; -+ -+ /* XXX perhaps suspend or something would be better here */ -+ if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) -+ dsi_stop_auto_update(); -+ else if (dsi.update_mode == OMAP_DSS_UPDATE_MANUAL) -+ dsi_wait_for_framedone(); -+ -+ /* run test first in low speed mode */ -+ dsi_vc_enable_hs(0, 0); -+ -+ if (display->ctrl->run_test) { -+ r = display->ctrl->run_test(display, test_num); -+ if (r) -+ goto fail; -+ } -+ -+ if (display->panel->run_test) { -+ r = display->panel->run_test(display, test_num); -+ if (r) -+ goto fail; -+ } -+ -+ /* then in high speed */ -+ dsi_vc_enable_hs(0, 1); -+ -+ if (display->ctrl->run_test) { -+ r = display->ctrl->run_test(display, test_num); -+ if (r) -+ goto fail; -+ } -+ -+ if (display->panel->run_test) -+ r = display->panel->run_test(display, test_num); -+ -+fail: -+ dsi_vc_enable_hs(0, 1); -+ -+ /* restore the old update mode */ -+ dsi_set_update_mode(display, mode); -+ -+ enable_clocks(0); -+ -+ mutex_unlock(&dsi.lock); -+ -+ return r; -+} -+ -+void dsi_init_display(struct omap_display *display) -+{ -+ DSSDBG("DSI init\n"); -+ -+ display->enable = dsi_display_enable; -+ display->disable = dsi_display_disable; -+ display->suspend = dsi_display_suspend; -+ display->resume = dsi_display_resume; -+ display->set_mode = dsi_display_set_mode; -+ display->update = dsi_display_update; -+ display->sync = dsi_display_sync; -+ display->set_update_mode = dsi_display_set_update_mode; -+ display->get_update_mode = dsi_display_get_update_mode; -+ display->enable_te = dsi_display_enable_te; -+ display->get_te = dsi_display_get_te; -+ display->run_test = dsi_display_run_test; -+ -+ display->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE; -+} -+ -+int dsi_init(void) -+{ -+ u32 rev; -+ -+ init_completion(&dsi.bta_completion); -+ INIT_WORK(&dsi.framedone_work, framedone_worker); -+ -+ init_completion(&dsi.update_completion); -+ spin_lock_init(&dsi.update_lock); -+ dsi.update_ongoing = 0; -+ dsi.update_syncers = 0; -+ -+ mutex_init(&dsi.lock); -+ -+ dsi.base = ioremap(DSI_BASE, SZ_1K); -+ if (!dsi.base) { -+ DSSERR("can't ioremap DSI\n"); -+ return -ENOMEM; -+ } -+ -+ dsi.dss_ick = get_dss_ick(); -+ dsi.dss1_fck = get_dss1_fck(); -+ dsi.dss2_fck = get_dss2_fck(); -+ -+ enable_clocks(1); -+ -+ /* Autoidle */ -+ REG_FLD_MOD(DSI_SYSCONFIG, 1, 0, 0); -+ -+ /* ENWAKEUP */ -+ REG_FLD_MOD(DSI_SYSCONFIG, 1, 2, 2); -+ -+ /* SIDLEMODE smart-idle */ -+ REG_FLD_MOD(DSI_SYSCONFIG, 2, 4, 3); -+ -+ if (0) -+ _dsi_reset(); -+ -+ _dsi_initialize_irq(); -+ -+ rev = dsi_read_reg(DSI_REVISION); -+ printk(KERN_INFO "OMAP DSI rev %d.%d\n", -+ FLD_GET(rev, 7, 4), FLD_GET(rev, 3, 0)); -+ -+ enable_clocks(0); -+ -+ return 0; -+} -+ -+void dsi_exit(void) -+{ -+ iounmap(dsi.base); -+ -+ DSSDBG("omap_dsi_exit\n"); -+} -+ --- -1.5.6.3 - diff --git a/packages/linux/linux-omap/0007-DSS-support-for-Beagle-Board.patch b/packages/linux/linux-omap/0007-DSS-support-for-Beagle-Board.patch new file mode 100644 index 0000000000..145695cd8a --- /dev/null +++ b/packages/linux/linux-omap/0007-DSS-support-for-Beagle-Board.patch @@ -0,0 +1,184 @@ +From c5e43b2e4bc191feaab30e364c462a47aa3cc0a3 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Mon, 29 Sep 2008 17:03:36 +0300 +Subject: [PATCH] DSS: support for Beagle Board + +Signed-off-by: Tomi Valkeinen +--- + arch/arm/mach-omap2/board-omap3beagle.c | 123 +++++++++++++++++++++++++++---- + 1 files changed, 107 insertions(+), 16 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index c1de795..cd0c776 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -42,6 +42,8 @@ + #include + #include + #include ++#include ++#include + + #include "twl4030-generic-scripts.h" + #include "mmc-twl4030.h" +@@ -200,15 +202,6 @@ static void __init omap3_beagle_init_irq(void) + omap_gpio_init(); + } + +-static struct platform_device omap3_beagle_lcd_device = { +- .name = "omap3beagle_lcd", +- .id = -1, +-}; +- +-static struct omap_lcd_config omap3_beagle_lcd_config __initdata = { +- .ctrl_name = "internal", +-}; +- + static struct gpio_led gpio_leds[] = { + { + .name = "beagleboard::usr0", +@@ -262,13 +255,113 @@ static struct platform_device keys_gpio = { + }, + }; + ++/* DSS */ ++ ++static int beagle_enable_dvi(struct omap_display *display) ++{ ++ if (display->hw_config.panel_reset_gpio != -1) ++ gpio_direction_output(display->hw_config.panel_reset_gpio, 1); ++ ++ return 0; ++} ++ ++static void beagle_disable_dvi(struct omap_display *display) ++{ ++ if (display->hw_config.panel_reset_gpio != -1) ++ gpio_direction_output(display->hw_config.panel_reset_gpio, 0); ++} ++ ++static struct omap_display_data beagle_display_data_dvi = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "dvi", ++ .panel_name = "panel-dvi", ++ .u.dpi.data_lines = 24, ++ .panel_reset_gpio = 170, ++ .panel_enable = beagle_enable_dvi, ++ .panel_disable = beagle_disable_dvi, ++}; ++ ++ ++static int beagle_panel_enable_tv(struct omap_display *display) ++{ ++#define ENABLE_VDAC_DEDICATED 0x03 ++#define ENABLE_VDAC_DEV_GRP 0x20 ++ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEDICATED, ++ TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); ++ ++ return 0; ++} ++ ++static void beagle_panel_disable_tv(struct omap_display *display) ++{ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEV_GRP); ++} ++ ++static struct omap_display_data beagle_display_data_tv = { ++ .type = OMAP_DISPLAY_TYPE_VENC, ++ .name = "tv", ++ .u.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, ++ .panel_enable = beagle_panel_enable_tv, ++ .panel_disable = beagle_panel_disable_tv, ++}; ++ ++static struct omap_dss_platform_data beagle_dss_data = { ++ .num_displays = 2, ++ .displays = { ++ &beagle_display_data_dvi, ++ &beagle_display_data_tv, ++ } ++}; ++ ++static struct platform_device beagle_dss_device = { ++ .name = "omap-dss", ++ .id = -1, ++ .dev = { ++ .platform_data = &beagle_dss_data, ++ }, ++}; ++ ++static void __init beagle_display_init(void) ++{ ++ int r; ++ ++ r = gpio_request(beagle_display_data_dvi.panel_reset_gpio, "DVI reset"); ++ if (r < 0) ++ printk(KERN_ERR "Unable to get DVI reset GPIO\n"); ++} ++ ++static struct omap_fbmem_config beagle_fbmem0_config = { ++ .size = 1024*768*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++ ++static struct omap_fbmem_config beagle_fbmem1_config = { ++ .size = 1024*768*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++ ++static struct omap_fbmem_config beagle_fbmem2_config = { ++ .size = 1024*768*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++ ++ + static struct omap_board_config_kernel omap3_beagle_config[] __initdata = { + { OMAP_TAG_UART, &omap3_beagle_uart_config }, +- { OMAP_TAG_LCD, &omap3_beagle_lcd_config }, ++ { OMAP_TAG_FBMEM, &beagle_fbmem0_config }, ++ { OMAP_TAG_FBMEM, &beagle_fbmem1_config }, ++ { OMAP_TAG_FBMEM, &beagle_fbmem2_config }, + }; + + static struct platform_device *omap3_beagle_devices[] __initdata = { +- &omap3_beagle_lcd_device, ++ &beagle_dss_device, + &leds_gpio, + &keys_gpio, + }; +@@ -316,22 +409,20 @@ static void __init omap3_beagle_init(void) + omap3_beagle_i2c_init(); + platform_add_devices(omap3_beagle_devices, + ARRAY_SIZE(omap3_beagle_devices)); +- omap_board_config = omap3_beagle_config; +- omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); + omap_serial_init(); + + omap_cfg_reg(J25_34XX_GPIO170); +- gpio_request(170, "DVI_nPD"); +- /* REVISIT leave DVI powered down until it's needed ... */ +- gpio_direction_output(170, true); + + usb_musb_init(); + usb_ehci_init(); + omap3beagle_flash_init(); ++ beagle_display_init(); + } + + static void __init omap3_beagle_map_io(void) + { ++ omap_board_config = omap3_beagle_config; ++ omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); + omap2_set_globals_343x(); + omap2_map_common_io(); + } +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch b/packages/linux/linux-omap/0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch new file mode 100644 index 0000000000..f88abaacd4 --- /dev/null +++ b/packages/linux/linux-omap/0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch @@ -0,0 +1,453 @@ +From 54f114db20a45e99389bec9c3c630c76f3e6c043 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Fri, 7 Nov 2008 16:54:01 +0200 +Subject: [PATCH] DSS: BEAGLE: Enable DSS in beagle defconfig + +--- + arch/arm/configs/omap3_beagle_defconfig | 143 ++++++++++++++++++++++--------- + 1 files changed, 103 insertions(+), 40 deletions(-) + +diff --git a/arch/arm/configs/omap3_beagle_defconfig b/arch/arm/configs/omap3_beagle_defconfig +index df67296..5036233 100644 +--- a/arch/arm/configs/omap3_beagle_defconfig ++++ b/arch/arm/configs/omap3_beagle_defconfig +@@ -1,7 +1,7 @@ + # + # Automatically generated make config: don't edit +-# Linux kernel version: 2.6.27-omap1 +-# Fri Oct 17 14:05:39 2008 ++# Linux kernel version: 2.6.28-rc3-omap1 ++# Tue Nov 11 14:30:05 2008 + # + CONFIG_ARM=y + CONFIG_SYS_SUPPORTS_APM_EMULATION=y +@@ -22,8 +22,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y + # CONFIG_ARCH_HAS_ILOG2_U64 is not set + CONFIG_GENERIC_HWEIGHT=y + CONFIG_GENERIC_CALIBRATE_DELAY=y +-CONFIG_ARCH_SUPPORTS_AOUT=y +-CONFIG_ZONE_DMA=y + CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y + CONFIG_VECTORS_BASE=0xffff0000 + CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +@@ -79,6 +77,7 @@ CONFIG_SIGNALFD=y + CONFIG_TIMERFD=y + CONFIG_EVENTFD=y + CONFIG_SHMEM=y ++CONFIG_AIO=y + CONFIG_VM_EVENT_COUNTERS=y + CONFIG_SLAB=y + # CONFIG_SLUB is not set +@@ -87,15 +86,9 @@ CONFIG_SLAB=y + # CONFIG_MARKERS is not set + CONFIG_HAVE_OPROFILE=y + # CONFIG_KPROBES is not set +-# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set +-# CONFIG_HAVE_IOREMAP_PROT is not set + CONFIG_HAVE_KPROBES=y + CONFIG_HAVE_KRETPROBES=y +-# CONFIG_HAVE_ARCH_TRACEHOOK is not set +-# CONFIG_HAVE_DMA_ATTRS is not set +-# CONFIG_USE_GENERIC_SMP_HELPERS is not set + CONFIG_HAVE_CLK=y +-CONFIG_PROC_PAGE_MONITOR=y + CONFIG_HAVE_GENERIC_DMA_COHERENT=y + CONFIG_SLABINFO=y + CONFIG_RT_MUTEXES=y +@@ -128,6 +121,7 @@ CONFIG_DEFAULT_AS=y + # CONFIG_DEFAULT_NOOP is not set + CONFIG_DEFAULT_IOSCHED="anticipatory" + CONFIG_CLASSIC_RCU=y ++# CONFIG_FREEZER is not set + + # + # System Type +@@ -168,7 +162,7 @@ CONFIG_CLASSIC_RCU=y + # CONFIG_ARCH_LH7A40X is not set + # CONFIG_ARCH_DAVINCI is not set + CONFIG_ARCH_OMAP=y +-# CONFIG_ARCH_MSM7X00A is not set ++# CONFIG_ARCH_MSM is not set + + # + # TI OMAP Implementations +@@ -200,17 +194,27 @@ CONFIG_OMAP_DM_TIMER=y + # CONFIG_OMAP_LL_DEBUG_UART1 is not set + # CONFIG_OMAP_LL_DEBUG_UART2 is not set + CONFIG_OMAP_LL_DEBUG_UART3=y ++CONFIG_OMAP2_DSS=y ++# CONFIG_OMAP2_DSS_DEBUG is not set ++# CONFIG_OMAP2_DSS_RFBI is not set ++CONFIG_OMAP2_DSS_VENC=y ++# CONFIG_OMAP2_DSS_SDI is not set ++# CONFIG_OMAP2_DSS_DSI is not set ++# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set ++CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0 + CONFIG_ARCH_OMAP34XX=y + CONFIG_ARCH_OMAP3430=y + + # + # OMAP Board Type + # ++# CONFIG_MACH_NOKIA_DFL61 is not set + # CONFIG_MACH_OMAP_LDP is not set + # CONFIG_MACH_OMAP_3430SDP is not set + # CONFIG_MACH_OMAP3EVM is not set + CONFIG_MACH_OMAP3_BEAGLE=y + # CONFIG_MACH_OVERO is not set ++# CONFIG_MACH_OMAP3_PANDORA is not set + CONFIG_OMAP_TICK_GPTIMER=12 + + # +@@ -263,26 +267,30 @@ CONFIG_TICK_ONESHOT=y + CONFIG_NO_HZ=y + CONFIG_HIGH_RES_TIMERS=y + CONFIG_GENERIC_CLOCKEVENTS_BUILD=y ++CONFIG_VMSPLIT_3G=y ++# CONFIG_VMSPLIT_2G is not set ++# CONFIG_VMSPLIT_1G is not set ++CONFIG_PAGE_OFFSET=0xC0000000 + # CONFIG_PREEMPT is not set + CONFIG_HZ=128 + CONFIG_AEABI=y + CONFIG_OABI_COMPAT=y + CONFIG_ARCH_FLATMEM_HAS_HOLES=y +-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set ++# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set ++# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set + CONFIG_SELECT_MEMORY_MODEL=y + CONFIG_FLATMEM_MANUAL=y + # CONFIG_DISCONTIGMEM_MANUAL is not set + # CONFIG_SPARSEMEM_MANUAL is not set + CONFIG_FLATMEM=y + CONFIG_FLAT_NODE_MEM_MAP=y +-# CONFIG_SPARSEMEM_STATIC is not set +-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set + CONFIG_PAGEFLAGS_EXTENDED=y + CONFIG_SPLIT_PTLOCK_CPUS=4 + # CONFIG_RESOURCES_64BIT is not set +-CONFIG_ZONE_DMA_FLAG=1 +-CONFIG_BOUNCE=y ++# CONFIG_PHYS_ADDR_T_64BIT is not set ++CONFIG_ZONE_DMA_FLAG=0 + CONFIG_VIRT_TO_BUS=y ++CONFIG_UNEVICTABLE_LRU=y + # CONFIG_LEDS is not set + CONFIG_ALIGNMENT_TRAP=y + +@@ -296,9 +304,10 @@ CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.0.1:/home/user/buildroot ip=192.16 + # CONFIG_KEXEC is not set + + # +-# CPU Frequency scaling ++# CPU Power Management + # + # CONFIG_CPU_FREQ is not set ++# CONFIG_CPU_IDLE is not set + + # + # Floating point emulation +@@ -318,6 +327,8 @@ CONFIG_VFPv3=y + # Userspace binary formats + # + CONFIG_BINFMT_ELF=y ++# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set ++CONFIG_HAVE_AOUT=y + # CONFIG_BINFMT_AOUT is not set + CONFIG_BINFMT_MISC=y + +@@ -379,6 +390,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" + # CONFIG_TIPC is not set + # CONFIG_ATM is not set + # CONFIG_BRIDGE is not set ++# CONFIG_NET_DSA is not set + # CONFIG_VLAN_8021Q is not set + # CONFIG_DECNET is not set + # CONFIG_LLC2 is not set +@@ -399,11 +411,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic" + # CONFIG_IRDA is not set + # CONFIG_BT is not set + # CONFIG_AF_RXRPC is not set +- +-# +-# Wireless +-# ++# CONFIG_PHONET is not set ++CONFIG_WIRELESS=y + # CONFIG_CFG80211 is not set ++CONFIG_WIRELESS_OLD_REGULATORY=y + # CONFIG_WIRELESS_EXT is not set + # CONFIG_MAC80211 is not set + # CONFIG_IEEE80211 is not set +@@ -490,6 +501,7 @@ CONFIG_MTD_NAND=y + # CONFIG_MTD_NAND_VERIFY_WRITE is not set + # CONFIG_MTD_NAND_ECC_SMC is not set + # CONFIG_MTD_NAND_MUSEUM_IDS is not set ++# CONFIG_MTD_NAND_GPIO is not set + CONFIG_MTD_NAND_OMAP2=y + CONFIG_MTD_NAND_IDS=y + # CONFIG_MTD_NAND_DISKONCHIP is not set +@@ -743,6 +755,8 @@ CONFIG_GPIO_TWL4030=y + # CONFIG_W1 is not set + # CONFIG_POWER_SUPPLY is not set + # CONFIG_HWMON is not set ++# CONFIG_THERMAL is not set ++# CONFIG_THERMAL_HWMON is not set + # CONFIG_WATCHDOG is not set + + # +@@ -760,10 +774,14 @@ CONFIG_SSB_POSSIBLE=y + # CONFIG_HTC_EGPIO is not set + # CONFIG_HTC_PASIC3 is not set + CONFIG_TWL4030_CORE=y ++# CONFIG_TWL4030_POWER is not set + # CONFIG_MFD_TMIO is not set + # CONFIG_MFD_T7L66XB is not set + # CONFIG_MFD_TC6387XB is not set + # CONFIG_MFD_TC6393XB is not set ++# CONFIG_PMIC_DA903X is not set ++# CONFIG_MFD_WM8400 is not set ++# CONFIG_MFD_WM8350_I2C is not set + + # + # Multimedia devices +@@ -790,6 +808,7 @@ CONFIG_DAB=y + CONFIG_FB=y + # CONFIG_FIRMWARE_EDID is not set + # CONFIG_FB_DDC is not set ++# CONFIG_FB_BOOT_VESA_SUPPORT is not set + CONFIG_FB_CFB_FILLRECT=y + CONFIG_FB_CFB_COPYAREA=y + CONFIG_FB_CFB_IMAGEBLIT=y +@@ -810,10 +829,22 @@ CONFIG_FB_CFB_IMAGEBLIT=y + # + # CONFIG_FB_S1D13XXX is not set + # CONFIG_FB_VIRTUAL is not set +-CONFIG_FB_OMAP=y +-# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set +-# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set +-CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=4 ++# CONFIG_FB_METRONOME is not set ++CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=14 ++CONFIG_FB_OMAP2=y ++# CONFIG_FB_OMAP2_DEBUG is not set ++# CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE is not set ++ ++# ++# OMAP2/3 Display Device Drivers ++# ++CONFIG_PANEL_DVI=y ++# CONFIG_PANEL_DVI_LOWLOWRES is not set ++# CONFIG_PANEL_DVI_LOWRES is not set ++CONFIG_PANEL_DVI_HIGHRES=y ++# CONFIG_PANEL_DVI_VERYHIGHRES is not set ++# CONFIG_PANEL_SDP3430 is not set ++# CONFIG_PANEL_NEVADA is not set + # CONFIG_BACKLIGHT_LCD_SUPPORT is not set + + # +@@ -862,6 +893,8 @@ CONFIG_USB_OTG=y + # CONFIG_USB_OTG_WHITELIST is not set + # CONFIG_USB_OTG_BLACKLIST_HUB is not set + CONFIG_USB_MON=y ++# CONFIG_USB_WUSB is not set ++# CONFIG_USB_WUSB_CBAF is not set + + # + # USB Host Controller Drivers +@@ -873,6 +906,7 @@ CONFIG_USB_MON=y + # CONFIG_USB_OHCI_HCD is not set + # CONFIG_USB_SL811_HCD is not set + # CONFIG_USB_R8A66597_HCD is not set ++# CONFIG_USB_HWA_HCD is not set + CONFIG_USB_MUSB_HDRC=y + CONFIG_USB_MUSB_SOC=y + +@@ -895,6 +929,7 @@ CONFIG_USB_INVENTRA_DMA=y + # CONFIG_USB_ACM is not set + # CONFIG_USB_PRINTER is not set + # CONFIG_USB_WDM is not set ++# CONFIG_USB_TMC is not set + + # + # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +@@ -923,6 +958,7 @@ CONFIG_USB_INVENTRA_DMA=y + # CONFIG_USB_EMI62 is not set + # CONFIG_USB_EMI26 is not set + # CONFIG_USB_ADUTUX is not set ++# CONFIG_USB_SEVSEG is not set + # CONFIG_USB_RIO500 is not set + # CONFIG_USB_LEGOTOWER is not set + # CONFIG_USB_LCD is not set +@@ -939,22 +975,25 @@ CONFIG_USB_INVENTRA_DMA=y + # CONFIG_USB_IOWARRIOR is not set + # CONFIG_USB_TEST is not set + # CONFIG_USB_ISIGHTFW is not set ++# CONFIG_USB_VST is not set + CONFIG_USB_GADGET=y + # CONFIG_USB_GADGET_DEBUG is not set + # CONFIG_USB_GADGET_DEBUG_FILES is not set ++CONFIG_USB_GADGET_VBUS_DRAW=2 + CONFIG_USB_GADGET_SELECTED=y +-# CONFIG_USB_GADGET_AMD5536UDC is not set ++# CONFIG_USB_GADGET_AT91 is not set + # CONFIG_USB_GADGET_ATMEL_USBA is not set + # CONFIG_USB_GADGET_FSL_USB2 is not set +-# CONFIG_USB_GADGET_NET2280 is not set +-# CONFIG_USB_GADGET_PXA25X is not set +-# CONFIG_USB_GADGET_M66592 is not set +-# CONFIG_USB_GADGET_PXA27X is not set +-# CONFIG_USB_GADGET_GOKU is not set + # CONFIG_USB_GADGET_LH7A40X is not set + # CONFIG_USB_GADGET_OMAP is not set ++# CONFIG_USB_GADGET_PXA25X is not set ++# CONFIG_USB_GADGET_PXA27X is not set + # CONFIG_USB_GADGET_S3C2410 is not set +-# CONFIG_USB_GADGET_AT91 is not set ++# CONFIG_USB_GADGET_M66592 is not set ++# CONFIG_USB_GADGET_AMD5536UDC is not set ++# CONFIG_USB_GADGET_FSL_QE is not set ++# CONFIG_USB_GADGET_NET2280 is not set ++# CONFIG_USB_GADGET_GOKU is not set + # CONFIG_USB_GADGET_DUMMY_HCD is not set + CONFIG_USB_GADGET_DUALSPEED=y + # CONFIG_USB_ZERO is not set +@@ -971,7 +1010,7 @@ CONFIG_MMC=y + # CONFIG_MMC_UNSAFE_RESUME is not set + + # +-# MMC/SD Card Drivers ++# MMC/SD/SDIO Card Drivers + # + CONFIG_MMC_BLOCK=y + CONFIG_MMC_BLOCK_BOUNCE=y +@@ -979,10 +1018,12 @@ CONFIG_MMC_BLOCK_BOUNCE=y + # CONFIG_MMC_TEST is not set + + # +-# MMC/SD Host Controller Drivers ++# MMC/SD/SDIO Host Controller Drivers + # + # CONFIG_MMC_SDHCI is not set + CONFIG_MMC_OMAP_HS=y ++# CONFIG_MEMSTICK is not set ++# CONFIG_ACCESSIBILITY is not set + # CONFIG_NEW_LEDS is not set + CONFIG_RTC_LIB=y + CONFIG_RTC_CLASS=y +@@ -1024,12 +1065,15 @@ CONFIG_RTC_DRV_TWL4030=y + # Platform RTC drivers + # + # CONFIG_RTC_DRV_CMOS is not set ++# CONFIG_RTC_DRV_DS1286 is not set + # CONFIG_RTC_DRV_DS1511 is not set + # CONFIG_RTC_DRV_DS1553 is not set + # CONFIG_RTC_DRV_DS1742 is not set + # CONFIG_RTC_DRV_STK17TA8 is not set + # CONFIG_RTC_DRV_M48T86 is not set ++# CONFIG_RTC_DRV_M48T35 is not set + # CONFIG_RTC_DRV_M48T59 is not set ++# CONFIG_RTC_DRV_BQ4802 is not set + # CONFIG_RTC_DRV_V3020 is not set + + # +@@ -1059,11 +1103,12 @@ CONFIG_EXT2_FS=y + # CONFIG_EXT2_FS_XIP is not set + CONFIG_EXT3_FS=y + # CONFIG_EXT3_FS_XATTR is not set +-# CONFIG_EXT4DEV_FS is not set ++# CONFIG_EXT4_FS is not set + CONFIG_JBD=y + # CONFIG_REISERFS_FS is not set + # CONFIG_JFS_FS is not set + # CONFIG_FS_POSIX_ACL is not set ++CONFIG_FILE_LOCKING=y + # CONFIG_XFS_FS is not set + # CONFIG_OCFS2_FS is not set + CONFIG_DNOTIFY=y +@@ -1100,6 +1145,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" + # + CONFIG_PROC_FS=y + CONFIG_PROC_SYSCTL=y ++CONFIG_PROC_PAGE_MONITOR=y + CONFIG_SYSFS=y + CONFIG_TMPFS=y + # CONFIG_TMPFS_POSIX_ACL is not set +@@ -1148,6 +1194,7 @@ CONFIG_LOCKD_V4=y + CONFIG_NFS_COMMON=y + CONFIG_SUNRPC=y + CONFIG_SUNRPC_GSS=y ++# CONFIG_SUNRPC_REGISTER_V4 is not set + CONFIG_RPCSEC_GSS_KRB5=y + # CONFIG_RPCSEC_GSS_SPKM3 is not set + # CONFIG_SMB_FS is not set +@@ -1260,15 +1307,23 @@ CONFIG_DEBUG_INFO=y + CONFIG_FRAME_POINTER=y + # CONFIG_BOOT_PRINTK_DELAY is not set + # CONFIG_RCU_TORTURE_TEST is not set ++# CONFIG_RCU_CPU_STALL_DETECTOR is not set + # CONFIG_BACKTRACE_SELF_TEST is not set ++# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set + # CONFIG_FAULT_INJECTION is not set + # CONFIG_LATENCYTOP is not set +-CONFIG_HAVE_FTRACE=y +-CONFIG_HAVE_DYNAMIC_FTRACE=y +-# CONFIG_FTRACE is not set ++CONFIG_HAVE_FUNCTION_TRACER=y ++ ++# ++# Tracers ++# ++# CONFIG_FUNCTION_TRACER is not set + # CONFIG_IRQSOFF_TRACER is not set + # CONFIG_SCHED_TRACER is not set + # CONFIG_CONTEXT_SWITCH_TRACER is not set ++# CONFIG_BOOT_TRACER is not set ++# CONFIG_STACK_TRACER is not set ++# CONFIG_DYNAMIC_PRINTK_DEBUG is not set + # CONFIG_SAMPLES is not set + CONFIG_HAVE_ARCH_KGDB=y + # CONFIG_KGDB is not set +@@ -1282,14 +1337,19 @@ CONFIG_HAVE_ARCH_KGDB=y + # + # CONFIG_KEYS is not set + # CONFIG_SECURITY is not set ++# CONFIG_SECURITYFS is not set + # CONFIG_SECURITY_FILE_CAPABILITIES is not set + CONFIG_CRYPTO=y + + # + # Crypto core or helper + # ++# CONFIG_CRYPTO_FIPS is not set + CONFIG_CRYPTO_ALGAPI=y ++CONFIG_CRYPTO_AEAD=y + CONFIG_CRYPTO_BLKCIPHER=y ++CONFIG_CRYPTO_HASH=y ++CONFIG_CRYPTO_RNG=y + CONFIG_CRYPTO_MANAGER=y + # CONFIG_CRYPTO_GF128MUL is not set + # CONFIG_CRYPTO_NULL is not set +@@ -1362,14 +1422,17 @@ CONFIG_CRYPTO_DES=y + # + # CONFIG_CRYPTO_DEFLATE is not set + # CONFIG_CRYPTO_LZO is not set ++ ++# ++# Random Number Generation ++# ++# CONFIG_CRYPTO_ANSI_CPRNG is not set + CONFIG_CRYPTO_HW=y + + # + # Library routines + # + CONFIG_BITREVERSE=y +-# CONFIG_GENERIC_FIND_FIRST_BIT is not set +-# CONFIG_GENERIC_FIND_NEXT_BIT is not set + CONFIG_CRC_CCITT=y + # CONFIG_CRC16 is not set + # CONFIG_CRC_T10DIF is not set +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0008-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch b/packages/linux/linux-omap/0008-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch deleted file mode 100644 index 76cc5c793e..0000000000 --- a/packages/linux/linux-omap/0008-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch +++ /dev/null @@ -1,2821 +0,0 @@ -From a993119097b63f30364ca17db4d039a401c44b4d Mon Sep 17 00:00:00 2001 -From: Tomi Valkeinen -Date: Tue, 4 Nov 2008 15:12:21 +0200 -Subject: [PATCH] DSS: OMAPFB: fb driver for new display subsystem - -Signed-off-by: Tomi Valkeinen ---- - arch/arm/plat-omap/fb.c | 9 +- - arch/arm/plat-omap/include/mach/omapfb.h | 7 + - drivers/video/Kconfig | 1 + - drivers/video/Makefile | 1 + - drivers/video/omap/Kconfig | 5 +- - drivers/video/omap2/Kconfig | 29 + - drivers/video/omap2/Makefile | 2 + - drivers/video/omap2/omapfb-ioctl.c | 428 ++++++++++ - drivers/video/omap2/omapfb-main.c | 1247 ++++++++++++++++++++++++++++++ - drivers/video/omap2/omapfb-sysfs.c | 833 ++++++++++++++++++++ - drivers/video/omap2/omapfb.h | 104 +++ - 11 files changed, 2663 insertions(+), 3 deletions(-) - create mode 100644 drivers/video/omap2/Kconfig - create mode 100644 drivers/video/omap2/Makefile - create mode 100644 drivers/video/omap2/omapfb-ioctl.c - create mode 100644 drivers/video/omap2/omapfb-main.c - create mode 100644 drivers/video/omap2/omapfb-sysfs.c - create mode 100644 drivers/video/omap2/omapfb.h - -diff --git a/arch/arm/plat-omap/fb.c b/arch/arm/plat-omap/fb.c -index 3746222..0ba1603 100644 ---- a/arch/arm/plat-omap/fb.c -+++ b/arch/arm/plat-omap/fb.c -@@ -36,7 +36,8 @@ - #include - #include - --#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) -+#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) \ -+ || defined(CONFIG_FB_OMAP2) || defined(CONFIG_FB_OMAP2_MODULE) - - static struct omapfb_platform_data omapfb_config; - static int config_invalid; -@@ -298,14 +299,18 @@ unsigned long omapfb_reserve_sram(unsigned long sram_pstart, - return reserved; - } - -+#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) - void omapfb_set_ctrl_platform_data(void *data) - { - omapfb_config.ctrl_platform_data = data; - } -+#endif - - static inline int omap_init_fb(void) - { -+#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) - const struct omap_lcd_config *conf; -+#endif - - if (config_invalid) - return 0; -@@ -313,6 +318,7 @@ static inline int omap_init_fb(void) - printk(KERN_ERR "Invalid FB mem configuration entries\n"); - return 0; - } -+#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) - conf = omap_get_config(OMAP_TAG_LCD, struct omap_lcd_config); - if (conf == NULL) { - if (configured_regions) -@@ -321,6 +327,7 @@ static inline int omap_init_fb(void) - return 0; - } - omapfb_config.lcd = *conf; -+#endif - - return platform_device_register(&omap_fb_device); - } -diff --git a/arch/arm/plat-omap/include/mach/omapfb.h b/arch/arm/plat-omap/include/mach/omapfb.h -index a3c4408..e69c0b1 100644 ---- a/arch/arm/plat-omap/include/mach/omapfb.h -+++ b/arch/arm/plat-omap/include/mach/omapfb.h -@@ -90,6 +90,13 @@ enum omapfb_color_format { - OMAPFB_COLOR_CLUT_1BPP, - OMAPFB_COLOR_RGB444, - OMAPFB_COLOR_YUY422, -+ -+ OMAPFB_COLOR_ARGB16, -+ OMAPFB_COLOR_RGB24U, /* RGB24, 32-bit container */ -+ OMAPFB_COLOR_RGB24P, /* RGB24, 24-bit container */ -+ OMAPFB_COLOR_ARGB32, -+ OMAPFB_COLOR_RGBA32, -+ OMAPFB_COLOR_RGBX32, - }; - - struct omapfb_update_window { -diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index 0f13448..4b45731 100644 ---- a/drivers/video/Kconfig -+++ b/drivers/video/Kconfig -@@ -2084,6 +2084,7 @@ config FB_METRONOME - and could also have been called by some vendors as PVI-nnnn. - - source "drivers/video/omap/Kconfig" -+source "drivers/video/omap2/Kconfig" - - source "drivers/video/backlight/Kconfig" - source "drivers/video/display/Kconfig" -diff --git a/drivers/video/Makefile b/drivers/video/Makefile -index 248bddc..4d69355 100644 ---- a/drivers/video/Makefile -+++ b/drivers/video/Makefile -@@ -120,6 +120,7 @@ obj-$(CONFIG_FB_SM501) += sm501fb.o - obj-$(CONFIG_FB_XILINX) += xilinxfb.o - obj-$(CONFIG_FB_SH_MOBILE_LCDC) += sh_mobile_lcdcfb.o - obj-$(CONFIG_FB_OMAP) += omap/ -+obj-$(CONFIG_OMAP2_DSS) += omap2/ - obj-$(CONFIG_XEN_FBDEV_FRONTEND) += xen-fbfront.o - obj-$(CONFIG_FB_CARMINE) += carminefb.o - -diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig -index 5ebd591..8b6c675 100644 ---- a/drivers/video/omap/Kconfig -+++ b/drivers/video/omap/Kconfig -@@ -1,6 +1,7 @@ - config FB_OMAP - tristate "OMAP frame buffer support (EXPERIMENTAL)" -- depends on FB && ARCH_OMAP -+ depends on FB && ARCH_OMAP && (OMAP2_DSS = "n") -+ - select FB_CFB_FILLRECT - select FB_CFB_COPYAREA - select FB_CFB_IMAGEBLIT -@@ -76,7 +77,7 @@ config FB_OMAP_BOOTLOADER_INIT - - config FB_OMAP_CONSISTENT_DMA_SIZE - int "Consistent DMA memory size (MB)" -- depends on FB_OMAP -+ depends on FB && ARCH_OMAP - range 1 14 - default 2 - help -diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig -new file mode 100644 -index 0000000..4b72479 ---- /dev/null -+++ b/drivers/video/omap2/Kconfig -@@ -0,0 +1,29 @@ -+config FB_OMAP2 -+ tristate "OMAP2/3 frame buffer support (EXPERIMENTAL)" -+ depends on FB && OMAP2_DSS -+ -+ select FB_CFB_FILLRECT -+ select FB_CFB_COPYAREA -+ select FB_CFB_IMAGEBLIT -+ help -+ Frame buffer driver for OMAP2/3 based boards. -+ -+config FB_OMAP2_DEBUG -+ bool "Debug output for OMAP2/3 FB" -+ depends on FB_OMAP2 -+ -+config FB_OMAP2_FORCE_AUTO_UPDATE -+ bool "Force main display to automatic update mode" -+ depends on FB_OMAP2 -+ help -+ Forces main display to automatic update mode (if possible), -+ and also enables tearsync (if possible). By default -+ displays that support manual update are started in manual -+ update mode. -+ -+menu "OMAP2/3 Display Device Drivers" -+ depends on OMAP2_DSS -+ -+ -+endmenu -+ -diff --git a/drivers/video/omap2/Makefile b/drivers/video/omap2/Makefile -new file mode 100644 -index 0000000..51c2e00 ---- /dev/null -+++ b/drivers/video/omap2/Makefile -@@ -0,0 +1,2 @@ -+obj-$(CONFIG_FB_OMAP2) += omapfb.o -+omapfb-y := omapfb-main.o omapfb-sysfs.o omapfb-ioctl.o -diff --git a/drivers/video/omap2/omapfb-ioctl.c b/drivers/video/omap2/omapfb-ioctl.c -new file mode 100644 -index 0000000..1ceb6b9 ---- /dev/null -+++ b/drivers/video/omap2/omapfb-ioctl.c -@@ -0,0 +1,428 @@ -+/* -+ * linux/drivers/video/omap2/omapfb-ioctl.c -+ * -+ * Copyright (C) 2008 Nokia Corporation -+ * Author: Tomi Valkeinen -+ * -+ * Some code and ideas taken from drivers/video/omap/ driver -+ * by Imre Deak. -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ * 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 . -+ */ -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include "omapfb.h" -+ -+static int omapfb_setup_plane(struct fb_info *fbi, struct omapfb_plane_info *pi) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omapfb2_device *fbdev = ofbi->fbdev; -+ struct omap_display *display = fb2display(fbi); -+ struct omap_overlay *ovl; -+ int r = 0; -+ -+ DBG("omapfb_setup_plane\n"); -+ -+ if (ofbi->num_overlays != 1) { -+ r = -EINVAL; -+ goto out; -+ } -+ -+ ovl = ofbi->overlays[0]; -+ -+ omapfb_lock(fbdev); -+ -+ if (display) { -+ if (pi->pos_x + pi->out_width > display->x_res || -+ pi->pos_y + pi->out_height > display->y_res) { -+ r = -EINVAL; -+ goto out; -+ } -+ } -+ -+ if (pi->enabled && !ofbi->region.size) { -+ /* -+ * This plane's memory was freed, can't enable it -+ * until it's reallocated. -+ */ -+ r = -EINVAL; -+ goto out; -+ } -+ -+ if (!ovl) { -+ r = -EINVAL; -+ goto out; -+ } -+ -+ r = omapfb_setup_overlay(fbi, ovl, pi->pos_x, pi->pos_y, -+ pi->out_width, pi->out_height); -+ if (r) -+ goto out; -+ -+ ovl->enable(ovl, pi->enabled); -+ -+ if (ovl->manager) -+ ovl->manager->apply(ovl->manager); -+ -+ if (display) { -+ if (display->sync) -+ display->sync(display); -+ -+ if (display->update) -+ display->update(display, 0, 0, -+ display->x_res, display->y_res); -+ } -+ -+out: -+ omapfb_unlock(fbdev); -+ if (r) -+ dev_err(fbdev->dev, "setup_plane failed\n"); -+ return r; -+} -+ -+static int omapfb_query_plane(struct fb_info *fbi, struct omapfb_plane_info *pi) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omapfb2_device *fbdev = ofbi->fbdev; -+ -+ omapfb_lock(fbdev); -+ -+ if (ofbi->num_overlays != 1) { -+ memset(pi, 0, sizeof(*pi)); -+ } else { -+ struct omap_overlay_info *ovli; -+ struct omap_overlay *ovl; -+ -+ ovl = ofbi->overlays[0]; -+ ovli = &ovl->info; -+ -+ pi->pos_x = ovli->pos_x; -+ pi->pos_y = ovli->pos_y; -+ pi->enabled = ovli->enabled; -+ pi->channel_out = 0; /* xxx */ -+ pi->mirror = 0; -+ pi->out_width = ovli->out_width; -+ pi->out_height = ovli->out_height; -+ } -+ -+ omapfb_unlock(fbdev); -+ -+ return 0; -+} -+ -+static int omapfb_setup_mem(struct fb_info *fbi, struct omapfb_mem_info *mi) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omapfb2_device *fbdev = ofbi->fbdev; -+ struct omapfb_mem_region *rg; -+ int ret = -EINVAL; -+ -+ rg = &ofbi->region; -+ -+ omapfb_lock(fbdev); -+ if (mi->size > rg->size) { -+ ret = -ENOMEM; -+ goto out; -+ } -+ -+ if (mi->type != rg->type) -+ goto out; -+ -+ ret = 0; -+out: -+ omapfb_unlock(fbdev); -+ -+ return ret; -+} -+ -+static int omapfb_query_mem(struct fb_info *fbi, struct omapfb_mem_info *mi) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omapfb2_device *fbdev = ofbi->fbdev; -+ struct omapfb_mem_region *rg; -+ -+ rg = &ofbi->region; -+ memset(mi, 0, sizeof(*mi)); -+ -+ omapfb_lock(fbdev); -+ mi->size = rg->size; -+ mi->type = rg->type; -+ omapfb_unlock(fbdev); -+ -+ return 0; -+} -+ -+static int omapfb_update_window(struct fb_info *fbi, -+ u32 x, u32 y, u32 w, u32 h) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omapfb2_device *fbdev = ofbi->fbdev; -+ struct omap_display *display = fb2display(fbi); -+ -+ if (!display) -+ return 0; -+ -+ if (w == 0 || h == 0) -+ return 0; -+ -+ if (x + w > display->x_res || y + h > display->y_res) -+ return -EINVAL; -+ -+ omapfb_lock(fbdev); -+ display->update(display, x, y, w, h); -+ omapfb_unlock(fbdev); -+ -+ return 0; -+} -+ -+static int omapfb_set_update_mode(struct fb_info *fbi, -+ enum omapfb_update_mode mode) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omapfb2_device *fbdev = ofbi->fbdev; -+ struct omap_display *display = fb2display(fbi); -+ enum omap_dss_update_mode um; -+ int r; -+ -+ if (!display || !display->set_update_mode) -+ return -EINVAL; -+ -+ switch (mode) { -+ case OMAPFB_UPDATE_DISABLED: -+ um = OMAP_DSS_UPDATE_DISABLED; -+ break; -+ -+ case OMAPFB_AUTO_UPDATE: -+ um = OMAP_DSS_UPDATE_AUTO; -+ break; -+ -+ case OMAPFB_MANUAL_UPDATE: -+ um = OMAP_DSS_UPDATE_MANUAL; -+ break; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ omapfb_lock(fbdev); -+ r = display->set_update_mode(display, um); -+ omapfb_unlock(fbdev); -+ -+ return r; -+} -+ -+static int omapfb_get_update_mode(struct fb_info *fbi, -+ enum omapfb_update_mode *mode) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omapfb2_device *fbdev = ofbi->fbdev; -+ struct omap_display *display = fb2display(fbi); -+ enum omap_dss_update_mode m; -+ -+ if (!display || !display->get_update_mode) -+ return -EINVAL; -+ -+ omapfb_lock(fbdev); -+ m = display->get_update_mode(display); -+ omapfb_unlock(fbdev); -+ -+ switch (m) { -+ case OMAP_DSS_UPDATE_DISABLED: -+ *mode = OMAPFB_UPDATE_DISABLED; -+ break; -+ case OMAP_DSS_UPDATE_AUTO: -+ *mode = OMAPFB_AUTO_UPDATE; -+ break; -+ case OMAP_DSS_UPDATE_MANUAL: -+ *mode = OMAPFB_MANUAL_UPDATE; -+ break; -+ default: -+ BUG(); -+ } -+ -+ return 0; -+} -+ -+int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omapfb2_device *fbdev = ofbi->fbdev; -+ struct omap_display *display = fb2display(fbi); -+ -+ union { -+ struct omapfb_update_window_old uwnd_o; -+ struct omapfb_update_window uwnd; -+ struct omapfb_plane_info plane_info; -+ struct omapfb_caps caps; -+ struct omapfb_mem_info mem_info; -+ enum omapfb_update_mode update_mode; -+ int test_num; -+ } p; -+ -+ int r = 0; -+ -+ DBG("ioctl %x (%d)\n", cmd, cmd & 0xff); -+ -+ switch (cmd) { -+ case OMAPFB_SYNC_GFX: -+ if (!display || !display->sync) { -+ r = -EINVAL; -+ break; -+ } -+ -+ omapfb_lock(fbdev); -+ r = display->sync(display); -+ omapfb_unlock(fbdev); -+ break; -+ -+ case OMAPFB_UPDATE_WINDOW_OLD: -+ if (!display || !display->update) { -+ r = -EINVAL; -+ break; -+ } -+ -+ if (copy_from_user(&p.uwnd_o, -+ (void __user *)arg, -+ sizeof(p.uwnd_o))) { -+ r = -EFAULT; -+ break; -+ } -+ -+ r = omapfb_update_window(fbi, p.uwnd_o.x, p.uwnd_o.y, -+ p.uwnd_o.width, p.uwnd_o.height); -+ break; -+ -+ case OMAPFB_UPDATE_WINDOW: -+ if (!display || !display->update) { -+ r = -EINVAL; -+ break; -+ } -+ -+ if (copy_from_user(&p.uwnd, (void __user *)arg, -+ sizeof(p.uwnd))) { -+ r = -EFAULT; -+ break; -+ } -+ -+ r = omapfb_update_window(fbi, p.uwnd.x, p.uwnd.y, -+ p.uwnd.width, p.uwnd.height); -+ break; -+ -+ case OMAPFB_SETUP_PLANE: -+ if (copy_from_user(&p.plane_info, (void __user *)arg, -+ sizeof(p.plane_info))) -+ r = -EFAULT; -+ else -+ r = omapfb_setup_plane(fbi, &p.plane_info); -+ break; -+ -+ case OMAPFB_QUERY_PLANE: -+ r = omapfb_query_plane(fbi, &p.plane_info); -+ if (r < 0) -+ break; -+ if (copy_to_user((void __user *)arg, &p.plane_info, -+ sizeof(p.plane_info))) -+ r = -EFAULT; -+ break; -+ -+ case OMAPFB_SETUP_MEM: -+ if (copy_from_user(&p.mem_info, (void __user *)arg, -+ sizeof(p.mem_info))) -+ r = -EFAULT; -+ else -+ r = omapfb_setup_mem(fbi, &p.mem_info); -+ break; -+ -+ case OMAPFB_QUERY_MEM: -+ r = omapfb_query_mem(fbi, &p.mem_info); -+ if (r < 0) -+ break; -+ if (copy_to_user((void __user *)arg, &p.mem_info, -+ sizeof(p.mem_info))) -+ r = -EFAULT; -+ break; -+ -+ case OMAPFB_GET_CAPS: -+ if (!display) { -+ r = -EINVAL; -+ break; -+ } -+ -+ p.caps.ctrl = display->caps; -+ -+ if (copy_to_user((void __user *)arg, &p.caps, sizeof(p.caps))) -+ r = -EFAULT; -+ break; -+ -+ case OMAPFB_SET_UPDATE_MODE: -+ if (get_user(p.update_mode, (int __user *)arg)) -+ r = -EFAULT; -+ else -+ r = omapfb_set_update_mode(fbi, p.update_mode); -+ break; -+ -+ case OMAPFB_GET_UPDATE_MODE: -+ r = omapfb_get_update_mode(fbi, &p.update_mode); -+ if (r) -+ break; -+ if (put_user(p.update_mode, -+ (enum omapfb_update_mode __user *)arg)) -+ r = -EFAULT; -+ break; -+ -+ /* LCD and CTRL tests do the same thing for backward -+ * compatibility */ -+ case OMAPFB_LCD_TEST: -+ if (get_user(p.test_num, (int __user *)arg)) { -+ r = -EFAULT; -+ break; -+ } -+ if (!display || !display->run_test) { -+ r = -EINVAL; -+ break; -+ } -+ -+ r = display->run_test(display, p.test_num); -+ -+ break; -+ -+ case OMAPFB_CTRL_TEST: -+ if (get_user(p.test_num, (int __user *)arg)) { -+ r = -EFAULT; -+ break; -+ } -+ if (!display || !display->run_test) { -+ r = -EINVAL; -+ break; -+ } -+ -+ r = display->run_test(display, p.test_num); -+ -+ break; -+ -+ default: -+ DBG("ioctl unhandled\n"); -+ r = -EINVAL; -+ } -+ -+ return r; -+} -+ -+ -diff --git a/drivers/video/omap2/omapfb-main.c b/drivers/video/omap2/omapfb-main.c -new file mode 100644 -index 0000000..7ef7080 ---- /dev/null -+++ b/drivers/video/omap2/omapfb-main.c -@@ -0,0 +1,1247 @@ -+/* -+ * linux/drivers/video/omap2/omapfb-main.c -+ * -+ * Copyright (C) 2008 Nokia Corporation -+ * Author: Tomi Valkeinen -+ * -+ * Some code and ideas taken from drivers/video/omap/ driver -+ * by Imre Deak. -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ * 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 . -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include "omapfb.h" -+ -+#define MODULE_NAME "omapfb" -+ -+#ifdef DEBUG -+static void fill_fb(void *addr, struct fb_info *fbi) -+{ -+ struct fb_var_screeninfo *var = &fbi->var; -+ -+ const short w = var->xres_virtual; -+ const short h = var->yres_virtual; -+ -+ int y, x; -+ u8 *p = addr; -+ -+ for (y = 0; y < h; y++) { -+ for (x = 0; x < w; x++) { -+ if (var->bits_per_pixel == 16) { -+ u16 *pw = (u16 *)p; -+ -+ if (x == 20 || x == w - 20 || -+ y == 20 || y == h - 20) -+ *pw = 0xffff; -+ else if (x == y || w - x == h - y) -+ *pw = ((1<<5)-1)<<11; -+ else if (w - x == y || x == h - y) -+ *pw = ((1<<6)-1)<<5; -+ else { -+ int t = x / (w/3); -+ if (t == 0) -+ *pw = y % 32; -+ else if (t == 1) -+ *pw = (y % 64) << 5; -+ else if (t == 2) -+ *pw = (y % 32) << 11; -+ } -+ } else if (var->bits_per_pixel == 24) { -+ u8 *pb = (u8 *)p; -+ -+ int r = 0, g = 0, b = 0; -+ -+ if (x == 20 || x == w - 20 || -+ y == 20 || y == h - 20) -+ r = g = b = 0xff; -+ else if (x == y || w - x == h - y) -+ r = 0xff; -+ else if (w - x == y || x == h - y) -+ g = 0xff; -+ else { -+ int q = x / (w / 3); -+ u8 base = 255 - (y % 256); -+ if (q == 0) -+ r = base; -+ else if (q == 1) -+ g = base; -+ else if (q == 2) -+ b = base; -+ } -+ -+ pb[0] = b; -+ pb[1] = g; -+ pb[2] = r; -+ -+ } else if (var->bits_per_pixel == 32) { -+ u32 *pd = (u32 *)p; -+ -+ if (x == 20 || x == w - 20 || -+ y == 20 || y == h - 20) -+ *pd = 0xffffff; -+ else if (x == y || w - x == h - y) -+ *pd = 0xff0000; -+ else if (w - x == y || x == h - y) -+ *pd = 0x00ff00; -+ else { -+ u8 base = 255 - (y % 256); -+ *pd = base << ((x / (w/3)) << 3); -+ } -+ } -+ -+ p += var->bits_per_pixel >> 3; -+ } -+ } -+} -+#endif -+ -+static enum omap_color_mode fb_mode_to_dss_mode(struct fb_var_screeninfo *var) -+{ -+ switch (var->nonstd) { -+ case 0: -+ break; -+ case OMAPFB_COLOR_YUV422: -+ return OMAP_DSS_COLOR_YUV2; -+ -+ case OMAPFB_COLOR_YUY422: -+ return OMAP_DSS_COLOR_UYVY; -+ -+ case OMAPFB_COLOR_ARGB16: -+ return OMAP_DSS_COLOR_ARGB16; -+ -+ case OMAPFB_COLOR_ARGB32: -+ return OMAP_DSS_COLOR_ARGB32; -+ -+ case OMAPFB_COLOR_RGBA32: -+ return OMAP_DSS_COLOR_RGBA32; -+ -+ case OMAPFB_COLOR_RGBX32: -+ return OMAP_DSS_COLOR_RGBX32; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ switch (var->bits_per_pixel) { -+ case 1: -+ return OMAP_DSS_COLOR_CLUT1; -+ case 2: -+ return OMAP_DSS_COLOR_CLUT2; -+ case 4: -+ return OMAP_DSS_COLOR_CLUT4; -+ case 8: -+ return OMAP_DSS_COLOR_CLUT8; -+ case 12: -+ return OMAP_DSS_COLOR_RGB12U; -+ case 16: -+ return OMAP_DSS_COLOR_RGB16; -+ case 24: -+ return OMAP_DSS_COLOR_RGB24P; -+ case 32: -+ return OMAP_DSS_COLOR_RGB24U; -+ default: -+ return -EINVAL; -+ } -+ -+ return -EINVAL; -+} -+ -+static void set_fb_fix(struct fb_info *fbi) -+{ -+ struct fb_fix_screeninfo *fix = &fbi->fix; -+ struct fb_var_screeninfo *var = &fbi->var; -+ struct omapfb_mem_region *rg = &FB2OFB(fbi)->region; -+ -+ DBG("set_fb_fix\n"); -+ -+ /* used by open/write in fbmem.c */ -+ fbi->screen_base = (char __iomem *)rg->vaddr; -+ -+ /* used by mmap in fbmem.c */ -+ fix->smem_start = rg->paddr; -+ fix->smem_len = rg->size; -+ -+ fix->type = FB_TYPE_PACKED_PIXELS; -+ -+ if (var->nonstd) -+ fix->visual = FB_VISUAL_PSEUDOCOLOR; -+ else { -+ switch (var->bits_per_pixel) { -+ case 32: -+ case 24: -+ case 16: -+ case 12: -+ fix->visual = FB_VISUAL_TRUECOLOR; -+ /* 12bpp is stored in 16 bits */ -+ break; -+ case 1: -+ case 2: -+ case 4: -+ case 8: -+ fix->visual = FB_VISUAL_PSEUDOCOLOR; -+ break; -+ } -+ } -+ -+ fix->accel = FB_ACCEL_NONE; -+ fix->line_length = (var->xres_virtual * var->bits_per_pixel) >> 3; -+} -+ -+/* check new var and possibly modify it to be ok */ -+static int check_fb_var(struct fb_info *fbi, struct fb_var_screeninfo *var) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omap_display *display = fb2display(fbi); -+ unsigned long max_frame_size; -+ unsigned long line_size; -+ int xres_min, xres_max; -+ int yres_min, yres_max; -+ enum omap_color_mode mode = 0; -+ struct omap_overlay *ovl; -+ -+ DBG("check_fb_var %d\n", ofbi->id); -+ -+ if (ofbi->num_overlays == 0) { -+ dev_err(ofbi->fbdev->dev, "no overlays, aborting\n"); -+ return -EINVAL; -+ } -+ -+ /* XXX: uses the first overlay */ -+ ovl = ofbi->overlays[0]; -+ -+ /* if we are using non standard mode, fix the bpp first */ -+ switch (var->nonstd) { -+ case 0: -+ break; -+ case OMAPFB_COLOR_YUV422: -+ case OMAPFB_COLOR_YUY422: -+ case OMAPFB_COLOR_ARGB16: -+ var->bits_per_pixel = 16; -+ break; -+ case OMAPFB_COLOR_ARGB32: -+ case OMAPFB_COLOR_RGBA32: -+ case OMAPFB_COLOR_RGBX32: -+ var->bits_per_pixel = 32; -+ break; -+ default: -+ DBG("invalid nonstd mode\n"); -+ return -EINVAL; -+ } -+ -+ mode = fb_mode_to_dss_mode(var); -+ if (mode < 0) { -+ DBG("cannot convert var to omap dss mode\n"); -+ return -EINVAL; -+ } -+ -+ if ((ovl->supported_modes & mode) == 0) { -+ DBG("invalid mode\n"); -+ return -EINVAL; -+ } -+ -+ xres_min = OMAPFB_PLANE_XRES_MIN; -+ xres_max = (display ? display->x_res : 2048) - ovl->info.pos_x; -+ yres_min = OMAPFB_PLANE_YRES_MIN; -+ yres_max = (display ? display->y_res : 2048) - ovl->info.pos_y; -+ -+ if (var->xres < xres_min) -+ var->xres = xres_min; -+ if (var->yres < yres_min) -+ var->yres = yres_min; -+ if (var->xres_virtual < var->xres) -+ var->xres_virtual = var->xres; -+ if (var->yres_virtual < var->yres) -+ var->yres_virtual = var->yres; -+ max_frame_size = ofbi->region.size; -+ line_size = (var->xres_virtual * var->bits_per_pixel) >> 3; -+ -+ if (line_size * var->yres_virtual > max_frame_size) { -+ /* Try to keep yres_virtual first */ -+ line_size = max_frame_size / var->yres_virtual; -+ var->xres_virtual = line_size * 8 / var->bits_per_pixel; -+ if (var->xres_virtual < var->xres) { -+ /* Still doesn't fit. Shrink yres_virtual too */ -+ var->xres_virtual = var->xres; -+ line_size = var->xres * var->bits_per_pixel / 8; -+ var->yres_virtual = max_frame_size / line_size; -+ } -+ /* Recheck this, as the virtual size changed. */ -+ if (var->xres_virtual < var->xres) -+ var->xres = var->xres_virtual; -+ if (var->yres_virtual < var->yres) -+ var->yres = var->yres_virtual; -+ if (var->xres < xres_min || var->yres < yres_min) { -+ DBG("Cannot fit FB to memory\n"); -+ return -EINVAL; -+ } -+ } -+ if (var->xres + var->xoffset > var->xres_virtual) -+ var->xoffset = var->xres_virtual - var->xres; -+ if (var->yres + var->yoffset > var->yres_virtual) -+ var->yoffset = var->yres_virtual - var->yres; -+ -+ if (var->bits_per_pixel == 16) { -+ var->red.offset = 11; var->red.length = 5; -+ var->red.msb_right = 0; -+ var->green.offset = 5; var->green.length = 6; -+ var->green.msb_right = 0; -+ var->blue.offset = 0; var->blue.length = 5; -+ var->blue.msb_right = 0; -+ } else if (var->bits_per_pixel == 24) { -+ var->red.offset = 16; var->red.length = 8; -+ var->red.msb_right = 0; -+ var->green.offset = 8; var->green.length = 8; -+ var->green.msb_right = 0; -+ var->blue.offset = 0; var->blue.length = 8; -+ var->blue.msb_right = 0; -+ var->transp.offset = 0; var->transp.length = 0; -+ } else if (var->bits_per_pixel == 32) { -+ var->red.offset = 16; var->red.length = 8; -+ var->red.msb_right = 0; -+ var->green.offset = 8; var->green.length = 8; -+ var->green.msb_right = 0; -+ var->blue.offset = 0; var->blue.length = 8; -+ var->blue.msb_right = 0; -+ var->transp.offset = 0; var->transp.length = 0; -+ } else { -+ DBG("failed to setup fb color mask\n"); -+ return -EINVAL; -+ } -+ -+ DBG("xres = %d, yres = %d, vxres = %d, vyres = %d\n", -+ var->xres, var->yres, -+ var->xres_virtual, var->yres_virtual); -+ -+ var->height = -1; -+ var->width = -1; -+ var->grayscale = 0; -+ -+ if (display && display->check_timings) { -+ struct omap_video_timings timings; -+ timings.pixel_clock = PICOS2KHZ(var->pixclock); -+ timings.hfp = var->left_margin; -+ timings.hbp = var->right_margin; -+ timings.vfp = var->upper_margin; -+ timings.vbp = var->lower_margin; -+ timings.hsw = var->hsync_len; -+ timings.vsw = var->vsync_len; -+ -+ if (display->check_timings(display, &timings)) { -+ DBG("illegal video timings\n"); -+ return -EINVAL; -+ } -+ -+ /* pixclock in ps, the rest in pixclock */ -+ var->pixclock = KHZ2PICOS(timings.pixel_clock); -+ var->left_margin = timings.hfp; -+ var->right_margin = timings.hbp; -+ var->upper_margin = timings.vfp; -+ var->lower_margin = timings.vbp; -+ var->hsync_len = timings.hsw; -+ var->vsync_len = timings.vsw; -+ } -+ -+ /* TODO: get these from panel->config */ -+ var->vmode = FB_VMODE_NONINTERLACED; -+ var->sync = 0; -+ -+ return 0; -+} -+ -+/* -+ * --------------------------------------------------------------------------- -+ * fbdev framework callbacks -+ * --------------------------------------------------------------------------- -+ */ -+static int omapfb_open(struct fb_info *fbi, int user) -+{ -+ return 0; -+} -+ -+static int omapfb_release(struct fb_info *fbi, int user) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omapfb2_device *fbdev = ofbi->fbdev; -+ struct omap_display *display = fb2display(fbi); -+ -+ DBG("Closing fb with plane index %d\n", ofbi->id); -+ -+ omapfb_lock(fbdev); -+#if 1 -+ if (display) { -+ /* XXX Is this really needed ? */ -+ if (display->sync) -+ display->sync(display); -+ -+ if (display->update) -+ display->update(display, -+ 0, 0, -+ display->x_res, display->y_res); -+ } -+#endif -+ -+ if (display && display->sync) -+ display->sync(display); -+ -+ omapfb_unlock(fbdev); -+ -+ return 0; -+} -+ -+/* setup overlay according to the fb */ -+int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl, -+ int posx, int posy, int outw, int outh) -+{ -+ int r = 0; -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct fb_var_screeninfo *var = &fbi->var; -+ enum omap_color_mode mode = 0; -+ int offset; -+ u32 data_start_p; -+ void *data_start_v; -+ -+ DBG("setup_overlay %d\n", ofbi->id); -+ -+ if ((ovl->caps & OMAP_DSS_OVL_CAP_SCALE) == 0 && -+ (outw != var->xres || outh != var->yres)) { -+ r = -EINVAL; -+ goto err; -+ } -+ -+ offset = ((var->yoffset * var->xres_virtual + -+ var->xoffset) * var->bits_per_pixel) >> 3; -+ -+ data_start_p = ofbi->region.paddr + offset; -+ data_start_v = ofbi->region.vaddr + offset; -+ -+ mode = fb_mode_to_dss_mode(var); -+ -+ if (mode == -EINVAL) { -+ r = -EINVAL; -+ goto err; -+ } -+ -+ r = ovl->setup_input(ovl, -+ data_start_p, data_start_v, -+ var->xres_virtual, -+ var->xres, var->yres, -+ mode); -+ -+ if (r) -+ goto err; -+ -+ r = ovl->setup_output(ovl, -+ posx, posy, -+ outw, outh); -+ -+ if (r) -+ goto err; -+ -+ return 0; -+ -+err: -+ DBG("setup_overlay failed\n"); -+ return r; -+} -+ -+/* apply var to the overlay */ -+int omapfb_apply_changes(struct fb_info *fbi, int init) -+{ -+ int r = 0; -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct fb_var_screeninfo *var = &fbi->var; -+ /*struct omap_display *display = fb2display(fbi);*/ -+ struct omap_overlay *ovl; -+ int posx, posy; -+ int outw, outh; -+ int i; -+ -+ for (i = 0; i < ofbi->num_overlays; i++) { -+ ovl = ofbi->overlays[i]; -+ -+ DBG("apply_changes, fb %d, ovl %d\n", ofbi->id, ovl->id); -+ -+ if (init || (ovl->caps & OMAP_DSS_OVL_CAP_SCALE) == 0) { -+ outw = var->xres; -+ outh = var->yres; -+ } else { -+ outw = ovl->info.out_width; -+ outh = ovl->info.out_height; -+ } -+ -+ if (init) { -+ posx = 0; -+ posy = 0; -+ } else { -+ posx = ovl->info.pos_x; -+ posy = ovl->info.pos_y; -+ } -+ -+ r = omapfb_setup_overlay(fbi, ovl, posx, posy, outw, outh); -+ if (r) -+ goto err; -+ -+ /* disabled for now. if the display has changed, var -+ * still contains the old timings. */ -+#if 0 -+ if (display && display->set_timings) { -+ struct omap_video_timings timings; -+ timings.pixel_clock = PICOS2KHZ(var->pixclock); -+ timings.hfp = var->left_margin; -+ timings.hbp = var->right_margin; -+ timings.vfp = var->upper_margin; -+ timings.vbp = var->lower_margin; -+ timings.hsw = var->hsync_len; -+ timings.vsw = var->vsync_len; -+ -+ display->set_timings(display, &timings); -+ } -+#endif -+ if (!init && ovl->manager) -+ ovl->manager->apply(ovl->manager); -+ } -+ return 0; -+err: -+ DBG("apply_changes failed\n"); -+ return r; -+} -+ -+/* checks var and eventually tweaks it to something supported, -+ * DO NOT MODIFY PAR */ -+static int omapfb_check_var(struct fb_var_screeninfo *var, struct fb_info *fbi) -+{ -+ int r; -+ -+ DBG("check_var(%d)\n", FB2OFB(fbi)->id); -+ -+ r = check_fb_var(fbi, var); -+ -+ return r; -+} -+ -+/* set the video mode according to info->var */ -+static int omapfb_set_par(struct fb_info *fbi) -+{ -+ int r; -+ -+ DBG("set_par(%d)\n", FB2OFB(fbi)->id); -+ -+ set_fb_fix(fbi); -+ r = omapfb_apply_changes(fbi, 0); -+ -+ return r; -+} -+ -+static void omapfb_rotate(struct fb_info *fbi, int rotate) -+{ -+ DBG("rotate(%d)\n", FB2OFB(fbi)->id); -+ return; -+} -+ -+static int omapfb_pan_display(struct fb_var_screeninfo *var, -+ struct fb_info *fbi) -+{ -+ DBG("pan_display(%d)\n", FB2OFB(fbi)->id); -+ return 0; -+} -+ -+static int omapfb_mmap(struct fb_info *fbi, struct vm_area_struct *vma) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omapfb2_device *fbdev = ofbi->fbdev; -+ struct omapfb_mem_region *rg = &ofbi->region; -+ -+ return dma_mmap_writecombine(fbdev->dev, vma, -+ rg->vaddr, -+ rg->paddr, -+ rg->size); -+} -+ -+/* Store a single color palette entry into a pseudo palette or the hardware -+ * palette if one is available. For now we support only 16bpp and thus store -+ * the entry only to the pseudo palette. -+ */ -+static int _setcolreg(struct fb_info *fbi, u_int regno, u_int red, u_int green, -+ u_int blue, u_int transp, int update_hw_pal) -+{ -+ /*struct omapfb_info *ofbi = FB2OFB(fbi);*/ -+ /*struct omapfb2_device *fbdev = ofbi->fbdev;*/ -+ struct fb_var_screeninfo *var = &fbi->var; -+ int r = 0; -+ -+ enum omapfb_color_format mode = OMAPFB_COLOR_RGB24U; /* XXX */ -+ -+ /*switch (plane->color_mode) {*/ -+ switch (mode) { -+ case OMAPFB_COLOR_YUV422: -+ case OMAPFB_COLOR_YUV420: -+ case OMAPFB_COLOR_YUY422: -+ r = -EINVAL; -+ break; -+ case OMAPFB_COLOR_CLUT_8BPP: -+ case OMAPFB_COLOR_CLUT_4BPP: -+ case OMAPFB_COLOR_CLUT_2BPP: -+ case OMAPFB_COLOR_CLUT_1BPP: -+ /* -+ if (fbdev->ctrl->setcolreg) -+ r = fbdev->ctrl->setcolreg(regno, red, green, blue, -+ transp, update_hw_pal); -+ */ -+ /* Fallthrough */ -+ r = -EINVAL; -+ break; -+ case OMAPFB_COLOR_RGB565: -+ case OMAPFB_COLOR_RGB444: -+ case OMAPFB_COLOR_RGB24P: -+ case OMAPFB_COLOR_RGB24U: -+ if (r != 0) -+ break; -+ -+ if (regno < 0) { -+ r = -EINVAL; -+ break; -+ } -+ -+ if (regno < 16) { -+ u16 pal; -+ pal = ((red >> (16 - var->red.length)) << -+ var->red.offset) | -+ ((green >> (16 - var->green.length)) << -+ var->green.offset) | -+ (blue >> (16 - var->blue.length)); -+ ((u32 *)(fbi->pseudo_palette))[regno] = pal; -+ } -+ break; -+ default: -+ BUG(); -+ } -+ return r; -+} -+ -+static int omapfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, -+ u_int transp, struct fb_info *info) -+{ -+ DBG("setcolreg\n"); -+ -+ return _setcolreg(info, regno, red, green, blue, transp, 1); -+} -+ -+static int omapfb_setcmap(struct fb_cmap *cmap, struct fb_info *info) -+{ -+ int count, index, r; -+ u16 *red, *green, *blue, *transp; -+ u16 trans = 0xffff; -+ -+ DBG("setcmap\n"); -+ -+ red = cmap->red; -+ green = cmap->green; -+ blue = cmap->blue; -+ transp = cmap->transp; -+ index = cmap->start; -+ -+ for (count = 0; count < cmap->len; count++) { -+ if (transp) -+ trans = *transp++; -+ r = _setcolreg(info, index++, *red++, *green++, *blue++, trans, -+ count == cmap->len - 1); -+ if (r != 0) -+ return r; -+ } -+ -+ return 0; -+} -+ -+static int omapfb_blank(int blank, struct fb_info *fbi) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omapfb2_device *fbdev = ofbi->fbdev; -+ struct omap_display *display = fb2display(fbi); -+ int do_update = 0; -+ int r = 0; -+ -+ omapfb_lock(fbdev); -+ -+ switch (blank) { -+ case VESA_NO_BLANKING: -+ if (display->state != OMAP_DSS_DISPLAY_SUSPENDED) { -+ r = -EINVAL; -+ goto exit; -+ } -+ -+ if (display->resume) -+ r = display->resume(display); -+ -+ if (r == 0 && display->get_update_mode && -+ display->get_update_mode(display) == -+ OMAP_DSS_UPDATE_MANUAL) -+ do_update = 1; -+ -+ break; -+ -+ case VESA_POWERDOWN: -+ if (display->state != OMAP_DSS_DISPLAY_ACTIVE) { -+ r = -EINVAL; -+ goto exit; -+ } -+ -+ if (display->suspend) -+ r = display->suspend(display); -+ -+ break; -+ -+ default: -+ r = -EINVAL; -+ } -+ -+exit: -+ omapfb_unlock(fbdev); -+ -+ if (r == 0 && do_update && display->update) -+ r = display->update(display, -+ 0, 0, -+ display->x_res, display->y_res); -+ -+ return r; -+} -+ -+static struct fb_ops omapfb_ops = { -+ .owner = THIS_MODULE, -+ .fb_open = omapfb_open, -+ .fb_release = omapfb_release, -+ .fb_fillrect = cfb_fillrect, -+ .fb_copyarea = cfb_copyarea, -+ .fb_imageblit = cfb_imageblit, -+ .fb_blank = omapfb_blank, -+ .fb_ioctl = omapfb_ioctl, -+ .fb_check_var = omapfb_check_var, -+ .fb_set_par = omapfb_set_par, -+ .fb_rotate = omapfb_rotate, -+ .fb_pan_display = omapfb_pan_display, -+ .fb_mmap = omapfb_mmap, -+ .fb_setcolreg = omapfb_setcolreg, -+ .fb_setcmap = omapfb_setcmap, -+}; -+ -+static int omapfb_free_fbmem(struct omapfb2_device *fbdev) -+{ -+ int i; -+ -+ DBG("free fbmem\n"); -+ -+ for (i = 0; i < fbdev->num_fbs; i++) { -+ struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]); -+ struct omapfb_mem_region *rg; -+ -+ rg = &ofbi->region; -+ -+ if (rg->alloc) { -+ dma_free_writecombine(fbdev->dev, rg->size, -+ rg->vaddr, rg->paddr); -+ } -+ -+ rg->vaddr = NULL; -+ rg->paddr = 0; -+ rg->alloc = 0; -+ } -+ -+ fbdev->num_fbs = 0; -+ -+ return 0; -+} -+ -+static int omapfb_allocate_fbmem(struct omapfb2_device *fbdev) -+{ -+ int i; -+ struct omapfb_mem_desc *plat_mem_desc; -+ struct omapfb_platform_data *pdata = fbdev->dev->platform_data; -+ -+ plat_mem_desc = &pdata->mem_desc; -+ -+ DBG("omapfb: setup mem regions, %d regions\n", -+ plat_mem_desc->region_cnt); -+ -+ for (i = 0; i < plat_mem_desc->region_cnt; i++) { -+ struct omapfb_mem_region *plat_rg; -+ struct omapfb_mem_region *rg; -+ struct omapfb_info *ofb_info = FB2OFB(fbdev->fbs[i]); -+ -+ plat_rg = &plat_mem_desc->region[i]; -+ rg = &ofb_info->region; -+ -+ memset(rg, 0, sizeof(*rg)); -+ -+ DBG("platform region%d phys %08x virt %p size=%lu\n", -+ i, -+ plat_rg->paddr, -+ plat_rg->vaddr, -+ plat_rg->size); -+ -+ if (plat_rg->paddr == 0) { -+ u32 paddr; -+ void *vaddr; -+ -+ vaddr = dma_alloc_writecombine(fbdev->dev, -+ plat_rg->size, -+ &paddr, GFP_KERNEL); -+ -+ if (vaddr == NULL) { -+ dev_err(fbdev->dev, -+ "failed to allocate framebuffer\n"); -+ return -ENOMEM; -+ } -+ -+ rg->paddr = paddr; -+ rg->vaddr = vaddr; -+ rg->size = plat_rg->size; -+ rg->alloc = 1; -+ } else { -+ dev_err(fbdev->dev, -+ "Using preallocated fb not supported\n"); -+ return -EINVAL; -+ } -+ } -+ -+ for (i = 0; i < fbdev->num_fbs; i++) { -+ struct omapfb_info *ofb_info = FB2OFB(fbdev->fbs[i]); -+ struct omapfb_mem_region *rg; -+ rg = &ofb_info->region; -+ -+ DBG("region%d phys %08x virt %p size=%lu\n", -+ i, -+ rg->paddr, -+ rg->vaddr, -+ rg->size); -+ } -+ -+ return 0; -+} -+ -+/* initialize fb_info, var, fix to something sane based on the display */ -+static int fbinfo_init(struct omapfb2_device *fbdev, struct fb_info *fbi) -+{ -+ struct fb_var_screeninfo *var = &fbi->var; -+ struct fb_fix_screeninfo *fix = &fbi->fix; -+ struct omap_display *display = fb2display(fbi); -+ int r = 0; -+ -+ if (!display) { -+ dev_err(fbdev->dev, "cannot fbinfo_init, no display\n"); -+ return -EINVAL; -+ } -+ -+ fbi->fbops = &omapfb_ops; -+ fbi->flags = FBINFO_FLAG_DEFAULT; -+ fbi->pseudo_palette = fbdev->pseudo_palette; -+ -+ strncpy(fix->id, MODULE_NAME, sizeof(fix->id)); -+ -+ var->xres = display->x_res; -+ var->yres = display->y_res; -+ var->xres_virtual = var->xres; -+ var->yres_virtual = var->yres; -+ /* var->rotate = def_rotate; */ -+ -+ var->nonstd = 0; -+ -+ switch (display->bpp) { -+ case 16: -+ var->bits_per_pixel = 16; -+ break; -+ case 18: -+ var->bits_per_pixel = 16; -+ break; -+ case 24: -+ var->bits_per_pixel = 32; -+ break; -+ default: -+ dev_err(fbdev->dev, "illegal display bpp\n"); -+ return -EINVAL; -+ } -+ -+ if (display->get_timings) { -+ struct omap_video_timings timings; -+ display->get_timings(display, &timings); -+ -+ /* pixclock in ps, the rest in pixclock */ -+ var->pixclock = KHZ2PICOS(timings.pixel_clock); -+ var->left_margin = timings.hfp; -+ var->right_margin = timings.hbp; -+ var->upper_margin = timings.vfp; -+ var->lower_margin = timings.vbp; -+ var->hsync_len = timings.hsw; -+ var->vsync_len = timings.vsw; -+ } else { -+ var->pixclock = 0; -+ var->left_margin = 0; -+ var->right_margin = 0; -+ var->upper_margin = 0; -+ var->lower_margin = 0; -+ var->hsync_len = 0; -+ var->vsync_len = 0; -+ } -+ -+ r = check_fb_var(fbi, var); -+ if (r) -+ goto err; -+ -+ set_fb_fix(fbi); -+ -+#ifdef DEBUG -+ fill_fb(FB2OFB(fbi)->region.vaddr, fbi); -+#endif -+err: -+ return r; -+} -+ -+static void fbinfo_cleanup(struct omapfb2_device *fbdev, struct fb_info *fbi) -+{ -+ fb_dealloc_cmap(&fbi->cmap); -+} -+ -+ -+static void omapfb_free_resources(struct omapfb2_device *fbdev) -+{ -+ int i; -+ -+ DBG("free_resources\n"); -+ -+ if (fbdev == NULL) -+ return; -+ -+ for (i = 0; i < fbdev->num_fbs; i++) -+ unregister_framebuffer(fbdev->fbs[i]); -+ -+ /* free the reserved fbmem */ -+ omapfb_free_fbmem(fbdev); -+ -+ for (i = 0; i < fbdev->num_fbs; i++) { -+ fbinfo_cleanup(fbdev, fbdev->fbs[i]); -+ framebuffer_release(fbdev->fbs[i]); -+ } -+ -+ -+ for (i = 0; i < fbdev->num_displays; i++) { -+ if (fbdev->displays[i]->state != OMAP_DSS_DISPLAY_DISABLED) -+ fbdev->displays[i]->disable(fbdev->displays[i]); -+ -+ omap_dss_put_display(fbdev->displays[i]); -+ } -+ -+ dev_set_drvdata(fbdev->dev, NULL); -+ kfree(fbdev); -+} -+ -+static int omapfb_create_framebuffers(struct omapfb2_device *fbdev) -+{ -+ int r; -+ int i; -+ struct omapfb_mem_desc *plat_mem_desc; -+ struct omapfb_platform_data *pdata = fbdev->dev->platform_data; -+ -+ plat_mem_desc = &pdata->mem_desc; -+ -+ fbdev->num_fbs = 0; -+ -+ DBG("create %d framebuffers\n", plat_mem_desc->region_cnt); -+ -+ /* allocate fb_infos */ -+ for (i = 0; i < plat_mem_desc->region_cnt; i++) { -+ struct fb_info *fbi; -+ struct omapfb_info *ofbi; -+ -+ fbi = framebuffer_alloc(sizeof(struct omapfb_info), -+ fbdev->dev); -+ -+ if (fbi == NULL) { -+ dev_err(fbdev->dev, -+ "unable to allocate memory for plane info\n"); -+ return -ENOMEM; -+ } -+ -+ fbdev->fbs[i] = fbi; -+ -+ ofbi = FB2OFB(fbi); -+ ofbi->fbdev = fbdev; -+ /* XXX here we presume we have enough overlays */ -+ ofbi->overlays[0] = fbdev->overlays[i]; -+ ofbi->num_overlays = 1; -+ ofbi->id = i; -+ fbdev->num_fbs++; -+ } -+ -+ DBG("fb_infos allocated\n"); -+ -+ /* allocate fb memories */ -+ r = omapfb_allocate_fbmem(fbdev); -+ if (r) { -+ dev_err(fbdev->dev, "failed to allocate fbmem\n"); -+ return r; -+ } -+ -+ DBG("fbmems allocated\n"); -+ -+ /* setup fb_infos */ -+ for (i = 0; i < fbdev->num_fbs; i++) { -+ r = fbinfo_init(fbdev, fbdev->fbs[i]); -+ if (r) { -+ dev_err(fbdev->dev, "failed to setup fb_info\n"); -+ return r; -+ } -+ } -+ -+ DBG("fb_infos initialized\n"); -+ -+ for (i = 0; i < fbdev->num_fbs; i++) { -+ r = register_framebuffer(fbdev->fbs[i]); -+ if (r != 0) { -+ dev_err(fbdev->dev, -+ "registering framebuffer %d failed\n", i); -+ return r; -+ } -+ } -+ -+ DBG("framebuffers registered\n"); -+ -+ for (i = 0; i < fbdev->num_fbs; i++) { -+ r = omapfb_apply_changes(fbdev->fbs[i], 1); -+ if (r) -+ dev_err(fbdev->dev, "failed to change mode\n"); -+ } -+ -+ /* Enable the first framebuffer that has overlay that is connected -+ * to display. Usually this would be the GFX plane. */ -+ r = 0; -+ for (i = 0; i < fbdev->num_fbs; i++) { -+ struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]); -+ int t; -+ -+ for (t = 0; t < ofbi->num_overlays; t++) { -+ struct omap_overlay *ovl = ofbi->overlays[t]; -+ if (ovl->manager && ovl->manager->display) { -+ ovl->enable(ovl, 1); -+ r = 1; -+ break; -+ } -+ } -+ -+ if (r) -+ break; -+ } -+ -+ DBG("create_framebuffers done\n"); -+ -+ return 0; -+} -+ -+static int omapfb_probe(struct platform_device *pdev) -+{ -+ struct omapfb2_device *fbdev = NULL; -+ int r = 0; -+ int i, t; -+ struct omap_overlay *ovl; -+ struct omap_display *def_display; -+ -+ DBG("omapfb_probe\n"); -+ -+ if (pdev->num_resources != 0) { -+ dev_err(&pdev->dev, "probed for an unknown device\n"); -+ r = -ENODEV; -+ goto err0; -+ } -+ -+ if (pdev->dev.platform_data == NULL) { -+ dev_err(&pdev->dev, "missing platform data\n"); -+ r = -ENOENT; -+ goto err0; -+ } -+ -+ fbdev = kzalloc(sizeof(struct omapfb2_device), GFP_KERNEL); -+ if (fbdev == NULL) { -+ r = -ENOMEM; -+ goto err0; -+ } -+ -+ mutex_init(&fbdev->mtx); -+ -+ fbdev->dev = &pdev->dev; -+ platform_set_drvdata(pdev, fbdev); -+ -+ fbdev->num_displays = 0; -+ t = omap_dss_get_num_displays(); -+ for (i = 0; i < t; i++) { -+ struct omap_display *display; -+ display = omap_dss_get_display(i); -+ if (!display) { -+ dev_err(&pdev->dev, "can't get display %d\n", i); -+ r = -EINVAL; -+ goto cleanup; -+ } -+ -+ fbdev->displays[fbdev->num_displays++] = display; -+ } -+ -+ if (fbdev->num_displays == 0) { -+ dev_err(&pdev->dev, "no displays\n"); -+ r = -EINVAL; -+ goto cleanup; -+ } -+ -+ fbdev->num_overlays = omap_dss_get_num_overlays(); -+ for (i = 0; i < fbdev->num_overlays; i++) -+ fbdev->overlays[i] = omap_dss_get_overlay(i); -+ -+ fbdev->num_managers = omap_dss_get_num_overlay_managers(); -+ for (i = 0; i < fbdev->num_managers; i++) -+ fbdev->managers[i] = omap_dss_get_overlay_manager(i); -+ -+ -+ /* gfx overlay should be the default one. find a display -+ * connected to that, and use it as default display */ -+ ovl = omap_dss_get_overlay(0); -+ if (ovl->manager && ovl->manager->display) { -+ def_display = ovl->manager->display; -+ } else { -+ dev_err(&pdev->dev, "cannot find default display\n"); -+ r = -EINVAL; -+ goto cleanup; -+ } -+ -+ r = omapfb_create_framebuffers(fbdev); -+ if (r) -+ goto cleanup; -+ -+ for (i = 0; i < fbdev->num_managers; i++) { -+ struct omap_overlay_manager *mgr; -+ mgr = fbdev->managers[i]; -+ r = mgr->apply(mgr); -+ if (r) { -+ dev_err(fbdev->dev, "failed to apply dispc config\n"); -+ goto cleanup; -+ } -+ } -+ -+ DBG("mgr->apply'ed\n"); -+ -+ r = def_display->enable(def_display); -+ if (r) { -+ dev_err(fbdev->dev, "Failed to enable display '%s'\n", -+ def_display->name); -+ goto cleanup; -+ } -+ -+ /* set the update mode */ -+ if (def_display->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) { -+#ifdef CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE -+ if (def_display->set_update_mode) -+ def_display->set_update_mode(def_display, -+ OMAP_DSS_UPDATE_AUTO); -+ if (def_display->enable_te) -+ def_display->enable_te(def_display, 1); -+#else -+ if (def_display->set_update_mode) -+ def_display->set_update_mode(def_display, -+ OMAP_DSS_UPDATE_MANUAL); -+ if (def_display->enable_te) -+ def_display->enable_te(def_display, 0); -+#endif -+ } else { -+ if (def_display->set_update_mode) -+ def_display->set_update_mode(def_display, -+ OMAP_DSS_UPDATE_AUTO); -+ } -+ -+ for (i = 0; i < fbdev->num_displays; i++) { -+ struct omap_display *display = fbdev->displays[i]; -+ -+ if (display->update) -+ display->update(display, -+ 0, 0, -+ display->x_res, display->y_res); -+ } -+ -+ DBG("display->updated\n"); -+ -+ omapfb_create_sysfs(fbdev); -+ DBG("sysfs created\n"); -+ -+ return 0; -+ -+cleanup: -+ omapfb_free_resources(fbdev); -+err0: -+ dev_err(&pdev->dev, "failed to setup omapfb\n"); -+ return r; -+} -+ -+static int omapfb_remove(struct platform_device *pdev) -+{ -+ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); -+ -+ /* FIXME: wait till completion of pending events */ -+ -+ omapfb_remove_sysfs(fbdev); -+ -+ omapfb_free_resources(fbdev); -+ -+ return 0; -+} -+ -+static struct platform_driver omapfb_driver = { -+ .probe = omapfb_probe, -+ .remove = omapfb_remove, -+ .driver = { -+ .name = "omapfb", -+ .owner = THIS_MODULE, -+ }, -+}; -+ -+static int __init omapfb_init(void) -+{ -+ DBG("omapfb_init\n"); -+ -+ if (platform_driver_register(&omapfb_driver)) { -+ printk(KERN_ERR "failed to register omapfb driver\n"); -+ return -ENODEV; -+ } -+ -+ return 0; -+} -+ -+static void __exit omapfb_exit(void) -+{ -+ DBG("omapfb_exit\n"); -+ platform_driver_unregister(&omapfb_driver); -+} -+ -+/* late_initcall to let panel/ctrl drivers loaded first. -+ * I guess better option would be a more dynamic approach, -+ * so that omapfb reacts to new panels when they are loaded */ -+late_initcall(omapfb_init); -+/*module_init(omapfb_init);*/ -+module_exit(omapfb_exit); -+ -+MODULE_AUTHOR("Tomi Valkeinen "); -+MODULE_DESCRIPTION("OMAP2/3 Framebuffer"); -+MODULE_LICENSE("GPL v2"); -diff --git a/drivers/video/omap2/omapfb-sysfs.c b/drivers/video/omap2/omapfb-sysfs.c -new file mode 100644 -index 0000000..e01edd1 ---- /dev/null -+++ b/drivers/video/omap2/omapfb-sysfs.c -@@ -0,0 +1,833 @@ -+/* -+ * linux/drivers/video/omap2/omapfb-sysfs.c -+ * -+ * Copyright (C) 2008 Nokia Corporation -+ * Author: Tomi Valkeinen -+ * -+ * Some code and ideas taken from drivers/video/omap/ driver -+ * by Imre Deak. -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ * 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 . -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include "omapfb.h" -+ -+static int omapfb_attach_framebuffer(struct fb_info *fbi, -+ struct omap_overlay *ovl) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omapfb2_device *fbdev = ofbi->fbdev; -+ int i, t; -+ int r; -+ -+ if (ofbi->num_overlays >= OMAPFB_MAX_OVL_PER_FB) { -+ dev_err(fbdev->dev, "fb has max number of overlays already\n"); -+ return -EINVAL; -+ } -+ -+ for (i = 0; i < ofbi->num_overlays; i++) { -+ if (ofbi->overlays[i] == ovl) { -+ dev_err(fbdev->dev, "fb already attached to overlay\n"); -+ return -EINVAL; -+ } -+ } -+ -+ for (i = 0; i < fbdev->num_fbs; i++) { -+ struct omapfb_info *ofbi2 = FB2OFB(fbdev->fbs[i]); -+ for (t = 0; t < ofbi2->num_overlays; t++) { -+ if (ofbi2->overlays[t] == ovl) { -+ dev_err(fbdev->dev, "overlay already in use\n"); -+ return -EINVAL; -+ } -+ } -+ } -+ -+ ofbi->overlays[ofbi->num_overlays++] = ovl; -+ -+/* -+ if (ovl->manager && ovl->manager->display) -+ omapfb_adjust_fb(fbi, ovl, 0, 0); -+*/ -+ r = omapfb_apply_changes(fbi, 1); -+ if (r) -+ return r; -+ -+ if (ovl->manager) -+ ovl->manager->apply(ovl->manager); -+ -+ return 0; -+} -+ -+static int omapfb_detach_framebuffer(struct fb_info *fbi, -+ struct omap_overlay *ovl) -+{ -+ int i; -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ struct omapfb2_device *fbdev = ofbi->fbdev; -+ -+ for (i = 0; i < ofbi->num_overlays; i++) { -+ if (ofbi->overlays[i] == ovl) -+ break; -+ } -+ -+ if (i == ofbi->num_overlays) { -+ dev_err(fbdev->dev, "cannot detach fb, overlay not attached\n"); -+ return -EINVAL; -+ } -+ -+ ovl->enable(ovl, 0); -+ -+ if (ovl->manager) -+ ovl->manager->apply(ovl->manager); -+ -+ for (i = i + 1; i < ofbi->num_overlays; i++) -+ ofbi->overlays[i-1] = ofbi->overlays[i]; -+ -+ ofbi->num_overlays--; -+ -+ return 0; -+} -+ -+ -+static ssize_t show_framebuffers(struct device *dev, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct platform_device *pdev = to_platform_device(dev); -+ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); -+ ssize_t l = 0, size = PAGE_SIZE; -+ int i, t; -+ -+ omapfb_lock(fbdev); -+ -+ for (i = 0; i < fbdev->num_fbs; i++) { -+ struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]); -+ -+ l += snprintf(buf + l, size - l, "%d t:", ofbi->id); -+ -+ if (ofbi->num_overlays == 0) -+ l += snprintf(buf + l, size - l, "none"); -+ -+ for (t = 0; t < ofbi->num_overlays; t++) { -+ struct omap_overlay *ovl; -+ ovl = ofbi->overlays[t]; -+ -+ l += snprintf(buf + l, size - l, "%s%s", -+ t == 0 ? "" : ",", -+ ovl->name); -+ } -+ -+ l += snprintf(buf + l, size - l, "\n"); -+ } -+ -+ omapfb_unlock(fbdev); -+ -+ return l; -+} -+ -+static struct omap_overlay *find_overlay_by_name(struct omapfb2_device *fbdev, -+ char *name) -+{ -+ int i; -+ -+ for (i = 0; i < fbdev->num_overlays; i++) -+ if (strcmp(name, fbdev->overlays[i]->name) == 0) -+ return fbdev->overlays[i]; -+ -+ return NULL; -+} -+ -+static struct omap_display *find_display_by_name(struct omapfb2_device *fbdev, -+ char *name) -+{ -+ int i; -+ -+ for (i = 0; i < fbdev->num_displays; i++) -+ if (strcmp(name, fbdev->displays[i]->name) == 0) -+ return fbdev->displays[i]; -+ -+ return NULL; -+} -+ -+static struct omap_overlay_manager *find_manager_by_name( -+ struct omapfb2_device *fbdev, -+ char *name) -+{ -+ int i; -+ -+ for (i = 0; i < fbdev->num_managers; i++) -+ if (strcmp(name, fbdev->managers[i]->name) == 0) -+ return fbdev->managers[i]; -+ -+ return NULL; -+} -+ -+static int parse_overlays(struct omapfb2_device *fbdev, char *str, -+ struct omap_overlay *ovls[]) -+{ -+ int num_ovls = 0; -+ int s, e = 0; -+ char ovlname[10]; -+ -+ while (1) { -+ struct omap_overlay *ovl; -+ -+ s = e; -+ -+ while (e < strlen(str) && str[e] != ',') -+ e++; -+ -+ strncpy(ovlname, str + s, e - s); -+ ovlname[e-s] = 0; -+ -+ DBG("searching for '%s'\n", ovlname); -+ ovl = find_overlay_by_name(fbdev, ovlname); -+ -+ if (ovl) { -+ DBG("found an overlay\n"); -+ ovls[num_ovls] = ovl; -+ num_ovls++; -+ } else { -+ DBG("unknown overlay %s\n", str); -+ return 0; -+ } -+ -+ if (e == strlen(str)) -+ break; -+ -+ e++; -+ } -+ -+ return num_ovls; -+} -+ -+static ssize_t store_framebuffers(struct device *dev, -+ struct device_attribute *attr, -+ const char *buf, size_t count) -+{ -+ struct platform_device *pdev = to_platform_device(dev); -+ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); -+ int idx; -+ char fbname[3]; -+ unsigned long fbnum; -+ char ovlnames[40]; -+ int num_ovls = 0; -+ struct omap_overlay *ovls[OMAPFB_MAX_OVL_PER_FB]; -+ struct fb_info *fbi; -+ struct omapfb_info *ofbi; -+ int r, i; -+ -+ idx = 0; -+ while (idx < count && buf[idx] != ' ') -+ ++idx; -+ -+ if (idx == count) -+ return -EINVAL; -+ -+ if (idx >= sizeof(fbname)) -+ return -EINVAL; -+ -+ strncpy(fbname, buf, idx); -+ fbname[idx] = 0; -+ idx++; -+ -+ if (strict_strtoul(fbname, 10, &fbnum)) -+ return -EINVAL; -+ -+ r = sscanf(buf + idx, "t:%39s", ovlnames); -+ -+ if (r != 1) { -+ r = -EINVAL; -+ goto err; -+ } -+ -+ omapfb_lock(fbdev); -+ -+ if (fbnum >= fbdev->num_fbs) { -+ dev_err(dev, "fb not found\n"); -+ r = -EINVAL; -+ goto err; -+ } -+ -+ fbi = fbdev->fbs[fbnum]; -+ ofbi = FB2OFB(fbi); -+ -+ if (strcmp(ovlnames, "none") == 0) { -+ num_ovls = 0; -+ } else { -+ num_ovls = parse_overlays(fbdev, ovlnames, ovls); -+ -+ if (num_ovls == 0) { -+ dev_err(dev, "overlays not found\n"); -+ r = -EINVAL; -+ goto err; -+ } -+ } -+ -+ for (i = 0; i < ofbi->num_overlays; i++) { -+ r = omapfb_detach_framebuffer(fbi, ofbi->overlays[i]); -+ if (r) { -+ dev_err(dev, "detach failed\n"); -+ goto err; -+ } -+ } -+ -+ if (num_ovls > 0) { -+ for (i = 0; i < num_ovls; i++) { -+ r = omapfb_attach_framebuffer(fbi, ovls[i]); -+ if (r) { -+ dev_err(dev, "attach failed\n"); -+ goto err; -+ } -+ } -+ } -+ -+ omapfb_unlock(fbdev); -+ return count; -+ -+err: -+ omapfb_unlock(fbdev); -+ return r; -+} -+ -+static ssize_t show_overlays(struct device *dev, struct device_attribute *attr, -+ char *buf) -+{ -+ struct platform_device *pdev = to_platform_device(dev); -+ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); -+ ssize_t l = 0, size = PAGE_SIZE; -+ int i, mgr_num; -+ -+ omapfb_lock(fbdev); -+ -+ for (i = 0; i < fbdev->num_overlays; i++) { -+ struct omap_overlay *ovl; -+ struct omap_overlay_manager *mgr; -+ -+ ovl = fbdev->overlays[i]; -+ mgr = ovl->manager; -+ -+ for (mgr_num = 0; mgr_num < fbdev->num_managers; mgr_num++) -+ if (fbdev->managers[mgr_num] == mgr) -+ break; -+ -+ l += snprintf(buf + l, size - l, -+ "%s t:%s x:%d y:%d iw:%d ih:%d w: %d h: %d e:%d\n", -+ ovl->name, -+ mgr ? mgr->name : "none", -+ ovl->info.pos_x, -+ ovl->info.pos_y, -+ ovl->info.width, -+ ovl->info.height, -+ ovl->info.out_width, -+ ovl->info.out_height, -+ ovl->info.enabled); -+ } -+ -+ omapfb_unlock(fbdev); -+ -+ return l; -+} -+ -+static ssize_t store_overlays(struct device *dev, -+ struct device_attribute *attr, -+ const char *buf, size_t count) -+{ -+ struct platform_device *pdev = to_platform_device(dev); -+ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); -+ int idx; -+ struct omap_overlay *ovl = NULL; -+ struct omap_overlay_manager *mgr; -+ int r; -+ char ovlname[10]; -+ int posx, posy, outw, outh; -+ int enabled; -+ -+ idx = 0; -+ while (idx < count && buf[idx] != ' ') -+ ++idx; -+ -+ if (idx == count) -+ return -EINVAL; -+ -+ if (idx >= sizeof(ovlname)) -+ return -EINVAL; -+ -+ strncpy(ovlname, buf, idx); -+ ovlname[idx] = 0; -+ idx++; -+ -+ omapfb_lock(fbdev); -+ -+ ovl = find_overlay_by_name(fbdev, ovlname); -+ -+ if (!ovl) { -+ dev_err(dev, "ovl not found\n"); -+ r = -EINVAL; -+ goto err; -+ } -+ -+ DBG("ovl %s found\n", ovl->name); -+ -+ mgr = ovl->manager; -+ -+ posx = ovl->info.pos_x; -+ posy = ovl->info.pos_y; -+ outw = ovl->info.out_width; -+ outh = ovl->info.out_height; -+ enabled = ovl->info.enabled; -+ -+ while (idx < count) { -+ char c; -+ int val; -+ int len; -+ char sval[10]; -+ -+ r = sscanf(buf + idx, "%c:%d%n", &c, &val, &len); -+ -+ if (r != 2) { -+ val = 0; -+ -+ r = sscanf(buf + idx, "%c:%9s%n", &c, sval, &len); -+ -+ if (r != 2) { -+ dev_err(dev, "sscanf failed, aborting\n"); -+ r = -EINVAL; -+ goto err; -+ } -+ } else { -+ sval[0] = 0; -+ } -+ -+ switch (c) { -+ case 't': -+ if (strcmp(sval, "none") == 0) { -+ mgr = NULL; -+ } else { -+ mgr = find_manager_by_name(fbdev, sval); -+ -+ if (mgr == NULL) { -+ dev_err(dev, "no such manager\n"); -+ r = -EINVAL; -+ goto err; -+ } -+ -+ DBG("manager %s found\n", mgr->name); -+ } -+ -+ break; -+ -+ case 'x': -+ posx = val; -+ break; -+ -+ case 'y': -+ posy = val; -+ break; -+ -+ case 'w': -+ if (ovl->caps & OMAP_DSS_OVL_CAP_SCALE) -+ outw = val; -+ break; -+ -+ case 'h': -+ if (ovl->caps & OMAP_DSS_OVL_CAP_SCALE) -+ outh = val; -+ break; -+ -+ case 'e': -+ enabled = val; -+ break; -+ -+ default: -+ dev_err(dev, "unknown option %c\n", c); -+ r = -EINVAL; -+ goto err; -+ } -+ -+ idx += len + 1; -+ } -+ -+ r = ovl->setup_output(ovl, posx, posy, outw, outh); -+ -+ if (r) { -+ dev_err(dev, "setup overlay failed\n"); -+ goto err; -+ } -+ -+ if (mgr != ovl->manager) { -+ /* detach old manager */ -+ if (ovl->manager) { -+ r = ovl->unset_manager(ovl); -+ if (r) { -+ dev_err(dev, "detach failed\n"); -+ goto err; -+ } -+ } -+ -+ if (mgr) { -+ r = ovl->set_manager(ovl, mgr); -+ if (r) { -+ dev_err(dev, "Failed to attach overlay\n"); -+ goto err; -+ } -+ } -+ } -+ -+ r = ovl->enable(ovl, enabled); -+ -+ if (r) { -+ dev_err(dev, "enable overlay failed\n"); -+ goto err; -+ } -+ -+ if (mgr) { -+ r = mgr->apply(mgr); -+ if (r) { -+ dev_err(dev, "failed to apply dispc config\n"); -+ goto err; -+ } -+ } else { -+ ovl->enable(ovl, 0); -+ } -+ -+ if (mgr && mgr->display && mgr->display->update) -+ mgr->display->update(mgr->display, -+ 0, 0, -+ mgr->display->x_res, mgr->display->y_res); -+ -+ omapfb_unlock(fbdev); -+ return count; -+ -+err: -+ omapfb_unlock(fbdev); -+ return r; -+} -+ -+static ssize_t show_managers(struct device *dev, struct device_attribute *attr, -+ char *buf) -+{ -+ struct platform_device *pdev = to_platform_device(dev); -+ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); -+ ssize_t l = 0, size = PAGE_SIZE; -+ int i; -+ -+ omapfb_lock(fbdev); -+ -+ for (i = 0; i < fbdev->num_managers; i++) { -+ struct omap_display *display; -+ struct omap_overlay_manager *mgr; -+ -+ mgr = fbdev->managers[i]; -+ display = mgr->display; -+ -+ l += snprintf(buf + l, size - l, "%s t:%s\n", -+ mgr->name, display ? display->name : "none"); -+ } -+ -+ omapfb_unlock(fbdev); -+ -+ return l; -+} -+ -+static ssize_t store_managers(struct device *dev, -+ struct device_attribute *attr, -+ const char *buf, size_t count) -+{ -+ struct platform_device *pdev = to_platform_device(dev); -+ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); -+ int idx; -+ struct omap_overlay_manager *mgr; -+ struct omap_display *display; -+ char mgrname[10]; -+ char displayname[10]; -+ int r; -+ -+ idx = 0; -+ while (idx < count && buf[idx] != ' ') -+ ++idx; -+ -+ if (idx == count) -+ return -EINVAL; -+ -+ if (idx >= sizeof(mgrname)) -+ return -EINVAL; -+ -+ strncpy(mgrname, buf, idx); -+ mgrname[idx] = 0; -+ idx++; -+ -+ omapfb_lock(fbdev); -+ -+ mgr = find_manager_by_name(fbdev, mgrname); -+ -+ if (!mgr) { -+ dev_err(dev, "manager not found\n"); -+ r = -EINVAL; -+ goto err; -+ } -+ -+ r = sscanf(buf + idx, "t:%9s", displayname); -+ -+ if (r != 1) { -+ r = -EINVAL; -+ goto err; -+ } -+ -+ if (strcmp(displayname, "none") == 0) { -+ display = NULL; -+ } else { -+ display = find_display_by_name(fbdev, displayname); -+ -+ if (!display) { -+ dev_err(dev, "display not found\n"); -+ r = -EINVAL; -+ goto err; -+ } -+ } -+ -+ if (mgr->display) { -+ r = mgr->unset_display(mgr); -+ if (r) { -+ dev_err(dev, "failed to unset display\n"); -+ goto err; -+ } -+ } -+ -+ if (display) { -+ r = mgr->set_display(mgr, display); -+ if (r) { -+ dev_err(dev, "failed to set manager\n"); -+ goto err; -+ } -+ -+ r = mgr->apply(mgr); -+ if (r) { -+ dev_err(dev, "failed to apply dispc config\n"); -+ goto err; -+ } -+ } -+ -+ omapfb_unlock(fbdev); -+ return count; -+ -+err: -+ omapfb_unlock(fbdev); -+ return r; -+} -+ -+static ssize_t show_displays(struct device *dev, struct device_attribute *attr, -+ char *buf) -+{ -+ struct platform_device *pdev = to_platform_device(dev); -+ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); -+ ssize_t l = 0, size = PAGE_SIZE; -+ int i; -+ -+ omapfb_lock(fbdev); -+ -+ for (i = 0; i < fbdev->num_displays; i++) { -+ struct omap_display *display; -+ enum omap_dss_update_mode mode = -1; -+ int te = 0; -+ -+ display = fbdev->displays[i]; -+ -+ if (display->get_update_mode) -+ mode = display->get_update_mode(display); -+ -+ if (display->get_te) -+ te = display->get_te(display); -+ -+ l += snprintf(buf + l, size - l, -+ "%s w:%d h:%d e:%d u:%d t:%d\n", -+ display->name, -+ display->x_res, -+ display->y_res, -+ display->state != OMAP_DSS_DISPLAY_DISABLED, -+ mode, te); -+ } -+ -+ omapfb_unlock(fbdev); -+ -+ return l; -+} -+ -+static ssize_t store_displays(struct device *dev, -+ struct device_attribute *attr, -+ const char *buf, size_t count) -+{ -+ struct platform_device *pdev = to_platform_device(dev); -+ struct omapfb2_device *fbdev = platform_get_drvdata(pdev); -+ int idx; -+ int enable, width, height; -+ enum omap_dss_update_mode mode; -+ struct omap_display *display = NULL; -+ int r; -+ char displayname[10]; -+ int te; -+ -+ idx = 0; -+ while (idx < count && buf[idx] != ' ') -+ ++idx; -+ -+ if (idx == count) -+ return -EINVAL; -+ -+ if (idx >= sizeof(displayname)) -+ return -EINVAL; -+ -+ strncpy(displayname, buf, idx); -+ displayname[idx] = 0; -+ idx++; -+ -+ omapfb_lock(fbdev); -+ -+ display = find_display_by_name(fbdev, displayname); -+ -+ if (!display) { -+ dev_err(dev, "display not found\n"); -+ r = -EINVAL; -+ goto err; -+ } -+ -+ width = display->x_res; -+ height = display->y_res; -+ enable = display->state != OMAP_DSS_DISPLAY_DISABLED; -+ if (display->get_update_mode) -+ mode = display->get_update_mode(display); -+ else -+ mode = 0; -+ -+ if (display->get_te) -+ te = display->get_te(display); -+ else -+ te = 0; -+ -+ while (idx < count) { -+ char c; -+ int val; -+ int len; -+ -+ r = sscanf(buf + idx, "%c:%d%n", &c, &val, &len); -+ -+ if (r != 2) { -+ dev_err(dev, "sscanf failed, aborting\n"); -+ r = -EINVAL; -+ goto err; -+ } -+ -+ switch (c) { -+ case 'w': -+ width = val; -+ break; -+ -+ case 'h': -+ height = val; -+ break; -+ -+ case 'e': -+ enable = val; -+ break; -+ -+ case 'u': -+ mode = val; -+ break; -+ -+ case 't': -+ te = val; -+ break; -+ -+ default: -+ dev_err(dev, "unknown option %c\n", c); -+ r = -EINVAL; -+ goto err; -+ } -+ -+ idx += len + 1; -+ } -+ -+ /* XXX: setmode */ -+ if (enable != (display->state != OMAP_DSS_DISPLAY_DISABLED)) { -+ if (enable) { -+ r = display->enable(display); -+ if (r) -+ dev_err(dev, "failed to enable display\n"); -+ } else { -+ display->disable(display); -+ } -+ } -+ -+ if (display->set_update_mode && display->get_update_mode) { -+ if (mode != display->get_update_mode(display)) -+ display->set_update_mode(display, mode); -+ } -+ -+ if (display->enable_te && display->get_te) { -+ if (te != display->get_te(display)) -+ display->enable_te(display, te); -+ } -+ -+ omapfb_unlock(fbdev); -+ return count; -+ -+err: -+ omapfb_unlock(fbdev); -+ return r; -+} -+ -+ -+static DEVICE_ATTR(framebuffers, S_IRUGO | S_IWUSR, -+ show_framebuffers, store_framebuffers); -+static DEVICE_ATTR(overlays, S_IRUGO | S_IWUSR, -+ show_overlays, store_overlays); -+static DEVICE_ATTR(managers, S_IRUGO | S_IWUSR, -+ show_managers, store_managers); -+static DEVICE_ATTR(displays, S_IRUGO | S_IWUSR, -+ show_displays, store_displays); -+ -+static struct attribute *omapfb_attrs[] = { -+ &dev_attr_framebuffers.attr, -+ &dev_attr_overlays.attr, -+ &dev_attr_managers.attr, -+ &dev_attr_displays.attr, -+ NULL, -+}; -+ -+static struct attribute_group omapfb_attr_group = { -+ .attrs = omapfb_attrs, -+}; -+ -+void omapfb_create_sysfs(struct omapfb2_device *fbdev) -+{ -+ int r; -+ -+ r = sysfs_create_group(&fbdev->dev->kobj, &omapfb_attr_group); -+ if (r) -+ dev_err(fbdev->dev, "failed to create sysfs clk file\n"); -+} -+ -+void omapfb_remove_sysfs(struct omapfb2_device *fbdev) -+{ -+ sysfs_remove_group(&fbdev->dev->kobj, &omapfb_attr_group); -+} -+ -diff --git a/drivers/video/omap2/omapfb.h b/drivers/video/omap2/omapfb.h -new file mode 100644 -index 0000000..04ca444 ---- /dev/null -+++ b/drivers/video/omap2/omapfb.h -@@ -0,0 +1,104 @@ -+/* -+ * linux/drivers/video/omap2/omapfb.h -+ * -+ * Copyright (C) 2008 Nokia Corporation -+ * Author: Tomi Valkeinen -+ * -+ * Some code and ideas taken from drivers/video/omap/ driver -+ * by Imre Deak. -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ * 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 . -+ */ -+ -+#ifndef __DRIVERS_VIDEO_OMAP2_OMAPFB_H__ -+#define __DRIVERS_VIDEO_OMAP2_OMAPFB_H__ -+ -+#ifdef CONFIG_FB_OMAP2_DEBUG -+#define DEBUG -+#endif -+ -+#ifdef DEBUG -+#define DBG(format, ...) printk(KERN_DEBUG "OMAPFB: " format, ## __VA_ARGS__) -+#else -+#define DBG(format, ...) -+#endif -+ -+#define FB2OFB(fb_info) ((struct omapfb_info *)(fb_info->par)) -+ -+/* max number of overlays to which a framebuffer data can be direct */ -+#define OMAPFB_MAX_OVL_PER_FB 3 -+ -+/* appended to fb_info */ -+struct omapfb_info { -+ int id; -+ struct omapfb_mem_region region; -+ int num_overlays; -+ struct omap_overlay *overlays[OMAPFB_MAX_OVL_PER_FB]; -+ struct omapfb2_device *fbdev; -+}; -+ -+struct omapfb2_device { -+ struct device *dev; -+ struct mutex mtx; -+ -+ u32 pseudo_palette[17]; -+ -+ int state; -+ -+ int num_fbs; -+ struct fb_info *fbs[10]; -+ -+ int num_displays; -+ struct omap_display *displays[10]; -+ int num_overlays; -+ struct omap_overlay *overlays[10]; -+ int num_managers; -+ struct omap_overlay_manager *managers[10]; -+}; -+ -+int omapfb_apply_changes(struct fb_info *fbi, int init); -+int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl, -+ int posx, int posy, int outw, int outh); -+ -+void omapfb_create_sysfs(struct omapfb2_device *fbdev); -+void omapfb_remove_sysfs(struct omapfb2_device *fbdev); -+ -+int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg); -+ -+/* find the display connected to this fb, if any */ -+static inline struct omap_display *fb2display(struct fb_info *fbi) -+{ -+ struct omapfb_info *ofbi = FB2OFB(fbi); -+ int i; -+ -+ /* XXX: returns the display connected to first attached overlay */ -+ for (i = 0; i < ofbi->num_overlays; i++) { -+ if (ofbi->overlays[i]->manager) -+ return ofbi->overlays[i]->manager->display; -+ } -+ -+ return NULL; -+} -+ -+static inline void omapfb_lock(struct omapfb2_device *fbdev) -+{ -+ mutex_lock(&fbdev->mtx); -+} -+ -+static inline void omapfb_unlock(struct omapfb2_device *fbdev) -+{ -+ mutex_unlock(&fbdev->mtx); -+} -+ -+ -+#endif --- -1.5.6.3 - diff --git a/packages/linux/linux-omap/0009-DSS-Add-generic-DVI-panel.patch b/packages/linux/linux-omap/0009-DSS-Add-generic-DVI-panel.patch deleted file mode 100644 index 26a7999abe..0000000000 --- a/packages/linux/linux-omap/0009-DSS-Add-generic-DVI-panel.patch +++ /dev/null @@ -1,189 +0,0 @@ -From e62e58fbb6adfb288da56c949bdb6211c695a263 Mon Sep 17 00:00:00 2001 -From: Tomi Valkeinen -Date: Mon, 20 Oct 2008 13:12:33 +0300 -Subject: [PATCH] DSS: Add generic DVI panel - -For some reason we can't allocate enough mem for 1280x1024x24bpp, even if -there should be enough continuous mem. So 1280x1024 mode defaults to -16bpp for now. - -You also need DSI PLL to generate pix clock for 1280x1024. - -Signed-off-by: Tomi Valkeinen ---- - drivers/video/omap2/Kconfig | 20 +++++++ - drivers/video/omap2/Makefile | 2 + - drivers/video/omap2/panel-dvi.c | 121 +++++++++++++++++++++++++++++++++++++++ - 3 files changed, 143 insertions(+), 0 deletions(-) - create mode 100644 drivers/video/omap2/panel-dvi.c - -diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig -index 4b72479..4584e1b 100644 ---- a/drivers/video/omap2/Kconfig -+++ b/drivers/video/omap2/Kconfig -@@ -24,6 +24,26 @@ config FB_OMAP2_FORCE_AUTO_UPDATE - menu "OMAP2/3 Display Device Drivers" - depends on OMAP2_DSS - -+config PANEL_DVI -+ tristate "DVI Panel" -+ help -+ DVI output, for Beagle and OMAP3 SDP -+ -+choice -+ prompt "Default DVI Mode" -+ depends on PANEL_DVI -+ default PANEL_DVI_HIGHRES -+ -+config PANEL_DVI_LOWRES -+ bool "800 x 600 @ 60" -+ -+config PANEL_DVI_HIGHRES -+ bool "1024 x 768 @ 60" -+ -+config PANEL_DVI_VERYHIGHRES -+ bool "1280 x 1024 @ 57" -+ -+endchoice - - endmenu - -diff --git a/drivers/video/omap2/Makefile b/drivers/video/omap2/Makefile -index 51c2e00..7c75340 100644 ---- a/drivers/video/omap2/Makefile -+++ b/drivers/video/omap2/Makefile -@@ -1,2 +1,4 @@ - obj-$(CONFIG_FB_OMAP2) += omapfb.o - omapfb-y := omapfb-main.o omapfb-sysfs.o omapfb-ioctl.o -+ -+obj-$(CONFIG_PANEL_DVI) += panel-dvi.o -diff --git a/drivers/video/omap2/panel-dvi.c b/drivers/video/omap2/panel-dvi.c -new file mode 100644 -index 0000000..2d053df ---- /dev/null -+++ b/drivers/video/omap2/panel-dvi.c -@@ -0,0 +1,121 @@ -+/* -+ * DVI panel support -+ * -+ * Copyright (C) 2008 Nokia Corporation -+ * Author: Tomi Valkeinen -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ * 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 . -+ */ -+ -+#include -+#include -+ -+#include -+ -+static int dvi_panel_init(struct omap_display *display) -+{ -+ return 0; -+} -+ -+static int dvi_panel_enable(struct omap_display *display) -+{ -+ int r = 0; -+ -+ if (display->hw_config.panel_enable) -+ r = display->hw_config.panel_enable(display); -+ -+ return r; -+} -+ -+static void dvi_panel_disable(struct omap_display *display) -+{ -+ if (display->hw_config.panel_disable) -+ display->hw_config.panel_disable(display); -+} -+ -+static struct omap_panel dvi_panel = { -+ .owner = THIS_MODULE, -+ .name = "panel-dvi", -+ .init = dvi_panel_init, -+ /*.remove = dvi_cleanup, */ -+ .enable = dvi_panel_enable, -+ .disable = dvi_panel_disable, -+ /*.set_mode = dvi_set_mode, */ -+ -+#if defined(CONFIG_PANEL_DVI_LOWRES) -+ .timings = { -+ /* 800 x 600 @ 60 Hz Reduced blanking VESA CVT 0.48M3-R */ -+ .pixel_clock = 35500, -+ .hfp = 48, -+ .hsw = 32, -+ .hbp = 80, -+ .vfp = 3, -+ .vsw = 4, -+ .vbp = 11, -+ }, -+ -+ .x_res = 800, -+ .y_res = 600, -+ .bpp = 24, -+#elif defined(CONFIG_PANEL_DVI_HIGHRES) -+ .timings = { -+ /* 1024 x 768 @ 60 Hz Reduced blanking */ -+ .pixel_clock = 56000, -+ .hfp = 48, -+ .hsw = 32, -+ .hbp = 80, -+ .vfp = 3, -+ .vsw = 4, -+ .vbp = 15, -+ }, -+ -+ .x_res = 1024, -+ .y_res = 768, -+ .bpp = 24, -+#elif defined(CONFIG_PANEL_DVI_VERYHIGHRES) -+ .timings = { -+ /* 1280 x 1024 @ 57 Hz Reduced blanking */ -+ .pixel_clock = 86500, -+ .hfp = 48, -+ .hsw = 32, -+ .hbp = 80, -+ .vfp = 3, -+ .vsw = 4, -+ .vbp = 15, -+ }, -+ -+ .x_res = 1280, -+ .y_res = 1024, -+ .bpp = 16, -+#else -+#error Undefined default mode -+#endif -+ -+ .config = OMAP_DSS_LCD_TFT, -+}; -+ -+ -+static int __init dvi_panel_drv_init(void) -+{ -+ omap_dss_register_panel(&dvi_panel); -+ return 0; -+} -+ -+static void __exit dvi_panel_drv_exit(void) -+{ -+ omap_dss_unregister_panel(&dvi_panel); -+} -+ -+module_init(dvi_panel_drv_init); -+module_exit(dvi_panel_drv_exit); -+MODULE_LICENSE("GPL"); --- -1.5.6.3 - diff --git a/packages/linux/linux-omap/0009-DSS-support-for-OMAP3-SDP-board.patch b/packages/linux/linux-omap/0009-DSS-support-for-OMAP3-SDP-board.patch new file mode 100644 index 0000000000..4c22a89929 --- /dev/null +++ b/packages/linux/linux-omap/0009-DSS-support-for-OMAP3-SDP-board.patch @@ -0,0 +1,441 @@ +From b51518d69d562d275afc830373710417e507c613 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Mon, 20 Oct 2008 13:13:15 +0300 +Subject: [PATCH] DSS: support for OMAP3 SDP board + +Signed-off-by: Tomi Valkeinen +--- + arch/arm/mach-omap2/board-3430sdp.c | 234 +++++++++++++++++++++++++++++++++-- + drivers/video/omap2/Kconfig | 7 +- + drivers/video/omap2/Makefile | 1 + + drivers/video/omap2/panel-sdp3430.c | 110 ++++++++++++++++ + 4 files changed, 340 insertions(+), 12 deletions(-) + create mode 100644 drivers/video/omap2/panel-sdp3430.c + +diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c +index 7ee85e9..f226a55 100644 +--- a/arch/arm/mach-omap2/board-3430sdp.c ++++ b/arch/arm/mach-omap2/board-3430sdp.c +@@ -40,6 +40,8 @@ + #include + #include + #include ++#include ++#include + + #include + #include +@@ -240,14 +242,224 @@ static struct spi_board_info sdp3430_spi_board_info[] __initdata = { + }, + }; + +-static struct platform_device sdp3430_lcd_device = { +- .name = "sdp2430_lcd", +- .id = -1, ++static struct omap_fbmem_config sdp3430_fbmem0_config = { ++ .size = 1024*768*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++ ++static struct omap_fbmem_config sdp3430_fbmem1_config = { ++ .size = 640*480*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, + }; + ++static struct omap_fbmem_config sdp3430_fbmem2_config = { ++ .size = 640*480*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++ ++ ++#define SDP2430_LCD_PANEL_BACKLIGHT_GPIO 91 ++#define SDP2430_LCD_PANEL_ENABLE_GPIO 154 ++#define SDP3430_LCD_PANEL_BACKLIGHT_GPIO 24 ++#define SDP3430_LCD_PANEL_ENABLE_GPIO 28 ++ ++#define PM_RECEIVER TWL4030_MODULE_PM_RECEIVER ++#define ENABLE_VAUX2_DEDICATED 0x09 ++#define ENABLE_VAUX2_DEV_GRP 0x20 ++#define ENABLE_VAUX3_DEDICATED 0x03 ++#define ENABLE_VAUX3_DEV_GRP 0x20 ++ ++#define ENABLE_VPLL2_DEDICATED 0x05 ++#define ENABLE_VPLL2_DEV_GRP 0xE0 ++#define TWL4030_VPLL2_DEV_GRP 0x33 ++#define TWL4030_VPLL2_DEDICATED 0x36 ++ ++#define t2_out(c, r, v) twl4030_i2c_write_u8(c, r, v) ++ ++static unsigned backlight_gpio; ++static unsigned enable_gpio; ++static int lcd_enabled; ++static int dvi_enabled; ++ ++static void __init sdp3430_display_init(void) ++{ ++ int r; ++ ++ enable_gpio = SDP3430_LCD_PANEL_ENABLE_GPIO; ++ backlight_gpio = SDP3430_LCD_PANEL_BACKLIGHT_GPIO; ++ ++ r = gpio_request(enable_gpio, "LCD reset"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD reset GPIO\n"); ++ goto err0; ++ } ++ ++ r = gpio_request(backlight_gpio, "LCD Backlight"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD backlight GPIO\n"); ++ goto err1; ++ } ++ ++ gpio_direction_output(enable_gpio, 0); ++ gpio_direction_output(backlight_gpio, 0); ++ ++ return; ++err1: ++ gpio_free(enable_gpio); ++err0: ++ return; ++} ++ ++ ++static int sdp3430_panel_enable_lcd(struct omap_display *display) ++{ ++ u8 ded_val, ded_reg; ++ u8 grp_val, grp_reg; ++ ++ if (dvi_enabled) { ++ printk(KERN_ERR "cannot enable LCD, DVI is enabled\n"); ++ return -EINVAL; ++ } ++ ++ if (system_rev > OMAP3430_REV_ES1_0) { ++ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEDICATED, ++ TWL4030_VPLL2_DEDICATED); ++ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEV_GRP, ++ TWL4030_VPLL2_DEV_GRP); ++ } ++ ++ ded_reg = TWL4030_VAUX3_DEDICATED; ++ ded_val = ENABLE_VAUX3_DEDICATED; ++ grp_reg = TWL4030_VAUX3_DEV_GRP; ++ grp_val = ENABLE_VAUX3_DEV_GRP; ++ ++ gpio_direction_output(enable_gpio, 1); ++ gpio_direction_output(backlight_gpio, 1); ++ ++ if (0 != t2_out(PM_RECEIVER, ded_val, ded_reg)) ++ return -EIO; ++ if (0 != t2_out(PM_RECEIVER, grp_val, grp_reg)) ++ return -EIO; ++ ++ lcd_enabled = 1; ++ ++ return 0; ++} ++ ++static void sdp3430_panel_disable_lcd(struct omap_display *display) ++{ ++ lcd_enabled = 0; ++ ++ gpio_direction_output(enable_gpio, 0); ++ gpio_direction_output(backlight_gpio, 0); ++ ++ if (system_rev > OMAP3430_REV_ES1_0) { ++ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEDICATED); ++ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEV_GRP); ++ mdelay(4); ++ } ++} ++ ++static struct omap_display_data sdp3430_display_data = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "lcd", ++ .panel_name = "panel-sdp3430", ++ .u.dpi.data_lines = 16, ++ .panel_enable = sdp3430_panel_enable_lcd, ++ .panel_disable = sdp3430_panel_disable_lcd, ++}; ++ ++static int sdp3430_panel_enable_dvi(struct omap_display *display) ++{ ++ if (lcd_enabled) { ++ printk(KERN_ERR "cannot enable DVI, LCD is enabled\n"); ++ return -EINVAL; ++ } ++ ++ if (system_rev > OMAP3430_REV_ES1_0) { ++ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEDICATED, ++ TWL4030_VPLL2_DEDICATED); ++ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEV_GRP, ++ TWL4030_VPLL2_DEV_GRP); ++ } ++ ++ dvi_enabled = 1; ++ ++ return 0; ++} ++ ++static void sdp3430_panel_disable_dvi(struct omap_display *display) ++{ ++ dvi_enabled = 0; ++ ++ if (system_rev > OMAP3430_REV_ES1_0) { ++ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEDICATED); ++ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEV_GRP); ++ mdelay(4); ++ } ++} ++ ++ ++static struct omap_display_data sdp3430_display_data_dvi = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "dvi", ++ .panel_name = "panel-dvi", ++ .u.dpi.data_lines = 24, ++ .panel_enable = sdp3430_panel_enable_dvi, ++ .panel_disable = sdp3430_panel_disable_dvi, ++}; ++ ++static int sdp3430_panel_enable_tv(struct omap_display *display) ++{ ++#define ENABLE_VDAC_DEDICATED 0x03 ++#define ENABLE_VDAC_DEV_GRP 0x20 ++ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEDICATED, ++ TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); ++ ++ return 0; ++} ++ ++static void sdp3430_panel_disable_tv(struct omap_display *display) ++{ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEV_GRP); ++} ++ ++static struct omap_display_data sdp3430_display_data_tv = { ++ .type = OMAP_DISPLAY_TYPE_VENC, ++ .name = "tv", ++ .u.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, ++ .panel_enable = sdp3430_panel_enable_tv, ++ .panel_disable = sdp3430_panel_disable_tv, ++}; ++ ++static struct omap_dss_platform_data sdp3430_dss_data = { ++ .num_displays = 3, ++ .displays = { ++ &sdp3430_display_data, ++ &sdp3430_display_data_dvi, ++ &sdp3430_display_data_tv, ++ } ++}; ++ ++static struct platform_device sdp3430_dss_device = { ++ .name = "omap-dss", ++ .id = -1, ++ .dev = { ++ .platform_data = &sdp3430_dss_data, ++ }, ++}; ++ ++ + static struct platform_device *sdp3430_devices[] __initdata = { + &sdp3430_smc91x_device, +- &sdp3430_lcd_device, ++ &sdp3430_dss_device, + }; + + static inline void __init sdp3430_init_smc91x(void) +@@ -294,13 +506,11 @@ static struct omap_uart_config sdp3430_uart_config __initdata = { + .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)), + }; + +-static struct omap_lcd_config sdp3430_lcd_config __initdata = { +- .ctrl_name = "internal", +-}; +- + static struct omap_board_config_kernel sdp3430_config[] __initdata = { + { OMAP_TAG_UART, &sdp3430_uart_config }, +- { OMAP_TAG_LCD, &sdp3430_lcd_config }, ++ { OMAP_TAG_FBMEM, &sdp3430_fbmem0_config }, ++ { OMAP_TAG_FBMEM, &sdp3430_fbmem1_config }, ++ { OMAP_TAG_FBMEM, &sdp3430_fbmem2_config }, + }; + + static int sdp3430_batt_table[] = { +@@ -467,8 +677,6 @@ static void __init omap_3430sdp_init(void) + { + omap3430_i2c_init(); + platform_add_devices(sdp3430_devices, ARRAY_SIZE(sdp3430_devices)); +- omap_board_config = sdp3430_config; +- omap_board_config_size = ARRAY_SIZE(sdp3430_config); + if (omap_rev() > OMAP3430_REV_ES1_0) + ts_gpio = OMAP34XX_TS_GPIO_IRQ_SDPV2; + else +@@ -483,10 +691,14 @@ static void __init omap_3430sdp_init(void) + usb_musb_init(); + usb_ehci_init(); + hsmmc_init(mmc); ++ sdp3430_display_init(); + } + + static void __init omap_3430sdp_map_io(void) + { ++ omap_board_config = sdp3430_config; ++ omap_board_config_size = ARRAY_SIZE(sdp3430_config); ++ + omap2_set_globals_343x(); + omap2_map_common_io(); + } +diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig +index 996f047..f4e450d 100644 +--- a/drivers/video/omap2/Kconfig ++++ b/drivers/video/omap2/Kconfig +@@ -48,5 +48,10 @@ config PANEL_DVI_VERYHIGHRES + + endchoice + +-endmenu ++config PANEL_SDP3430 ++ tristate "SDP3430 Panel" ++ depends on OMAP2_DSS ++ help ++ SDP3430 LCD + ++endmenu +diff --git a/drivers/video/omap2/Makefile b/drivers/video/omap2/Makefile +index 7c75340..73ab1c0 100644 +--- a/drivers/video/omap2/Makefile ++++ b/drivers/video/omap2/Makefile +@@ -2,3 +2,4 @@ obj-$(CONFIG_FB_OMAP2) += omapfb.o + omapfb-y := omapfb-main.o omapfb-sysfs.o omapfb-ioctl.o + + obj-$(CONFIG_PANEL_DVI) += panel-dvi.o ++obj-$(CONFIG_PANEL_SDP3430) += panel-sdp3430.o +diff --git a/drivers/video/omap2/panel-sdp3430.c b/drivers/video/omap2/panel-sdp3430.c +new file mode 100644 +index 0000000..40fe6f2 +--- /dev/null ++++ b/drivers/video/omap2/panel-sdp3430.c +@@ -0,0 +1,110 @@ ++/* ++ * LCD panel support for the TI 3430SDP board ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * Derived from drivers/video/omap/lcd_2430sdp.c ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++ ++#include ++ ++static int sdp3430_panel_init(struct omap_display *display) ++{ ++ return 0; ++} ++ ++static void sdp3430_panel_cleanup(struct omap_display *display) ++{ ++} ++ ++static int sdp3430_panel_enable(struct omap_display *display) ++{ ++ int r = 0; ++ ++ if (display->hw_config.panel_enable) ++ r = display->hw_config.panel_enable(display); ++ ++ return r; ++} ++ ++static void sdp3430_panel_disable(struct omap_display *display) ++{ ++ if (display->hw_config.panel_disable) ++ display->hw_config.panel_disable(display); ++} ++ ++static int sdp3430_panel_suspend(struct omap_display *display) ++{ ++ sdp3430_panel_disable(display); ++ return 0; ++} ++ ++static int sdp3430_panel_resume(struct omap_display *display) ++{ ++ return sdp3430_panel_enable(display); ++} ++ ++static struct omap_panel sdp3430_panel = { ++ .owner = THIS_MODULE, ++ .name = "panel-sdp3430", ++ .init = sdp3430_panel_init, ++ .cleanup = sdp3430_panel_cleanup, ++ .enable = sdp3430_panel_enable, ++ .disable = sdp3430_panel_disable, ++ .suspend = sdp3430_panel_suspend, ++ .resume = sdp3430_panel_resume, ++ /*.set_mode = sdp3430_set_mode, */ ++ ++ .timings = { ++ .pixel_clock = 19200, ++ ++ .hsw = 4, ++ .hfp = 4, ++ .hbp = 40, ++ ++ .vsw = 2, ++ .vfp = 1, ++ .vbp = 1, ++ }, ++ ++ .acb = 0x28, ++ ++ .config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | ++ OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC, ++ ++ .x_res = 480, ++ .y_res = 640, ++ .bpp = 16, ++}; ++ ++ ++static int __init sdp3430_panel_drv_init(void) ++{ ++ omap_dss_register_panel(&sdp3430_panel); ++ return 0; ++} ++ ++static void __exit sdp3430_panel_drv_exit(void) ++{ ++ omap_dss_unregister_panel(&sdp3430_panel); ++} ++ ++module_init(sdp3430_panel_drv_init); ++module_exit(sdp3430_panel_drv_exit); ++MODULE_LICENSE("GPL"); +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0010-DSS-support-for-Beagle-Board.patch b/packages/linux/linux-omap/0010-DSS-support-for-Beagle-Board.patch deleted file mode 100644 index ee93a32dde..0000000000 --- a/packages/linux/linux-omap/0010-DSS-support-for-Beagle-Board.patch +++ /dev/null @@ -1,182 +0,0 @@ -From 25b99d79100db8142de061954704fdabd76672d2 Mon Sep 17 00:00:00 2001 -From: Tomi Valkeinen -Date: Mon, 29 Sep 2008 17:03:36 +0300 -Subject: [PATCH] DSS: support for Beagle Board - -Signed-off-by: Tomi Valkeinen ---- - arch/arm/mach-omap2/board-omap3beagle.c | 121 +++++++++++++++++++++++++++---- - 1 files changed, 108 insertions(+), 13 deletions(-) - -diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c -index ce6c7b4..a6fe63d 100644 ---- a/arch/arm/mach-omap2/board-omap3beagle.c -+++ b/arch/arm/mach-omap2/board-omap3beagle.c -@@ -42,6 +42,8 @@ - #include - #include - #include -+#include -+#include - - #include "twl4030-generic-scripts.h" - -@@ -186,15 +188,6 @@ static void __init omap3_beagle_init_irq(void) - omap_gpio_init(); - } - --static struct platform_device omap3_beagle_lcd_device = { -- .name = "omap3beagle_lcd", -- .id = -1, --}; -- --static struct omap_lcd_config omap3_beagle_lcd_config __initdata = { -- .ctrl_name = "internal", --}; -- - static struct gpio_led gpio_leds[] = { - { - .name = "beagleboard::usr0", -@@ -248,13 +241,114 @@ static struct platform_device keys_gpio = { - }, - }; - -+/* DSS */ -+ -+static int beagle_enable_dvi(struct omap_display *display) -+{ -+ if (display->hw_config.panel_reset_gpio != -1) -+ gpio_direction_output(display->hw_config.panel_reset_gpio, 1); -+ -+ return 0; -+} -+ -+static void beagle_disable_dvi(struct omap_display *display) -+{ -+ if (display->hw_config.panel_reset_gpio != -1) -+ gpio_direction_output(display->hw_config.panel_reset_gpio, 0); -+} -+ -+static struct omap_display_data beagle_display_data_dvi = { -+ .type = OMAP_DISPLAY_TYPE_DPI, -+ .name = "dvi", -+ .panel_name = "panel-dvi", -+ .u.dpi.data_lines = 24, -+ .panel_reset_gpio = 170, -+ .panel_enable = beagle_enable_dvi, -+ .panel_disable = beagle_disable_dvi, -+}; -+ -+ -+static int panel_enable_tv(struct omap_display *display) -+{ -+#define ENABLE_VDAC_DEDICATED 0x03 -+#define ENABLE_VDAC_DEV_GRP 0x20 -+ -+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, -+ ENABLE_VDAC_DEDICATED, -+ TWL4030_VDAC_DEDICATED); -+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, -+ ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); -+ -+ return 0; -+} -+ -+static void panel_disable_tv(struct omap_display *display) -+{ -+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, -+ TWL4030_VDAC_DEDICATED); -+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, -+ TWL4030_VDAC_DEV_GRP); -+} -+ -+static struct omap_display_data beagle_display_data_tv = { -+ .type = OMAP_DISPLAY_TYPE_VENC, -+ .name = "tv", -+ .u.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, -+ .panel_enable = panel_enable_tv, -+ .panel_disable = panel_disable_tv, -+}; -+ -+static struct omap_dss_platform_data beagle_dss_data = { -+ .num_displays = 2, -+ .displays = { -+ &beagle_display_data_dvi, -+ &beagle_display_data_tv, -+ } -+}; -+ -+static struct platform_device beagle_dss_device = { -+ .name = "omap-dss", -+ .id = -1, -+ .dev = { -+ .platform_data = &beagle_dss_data, -+ }, -+}; -+ -+static void __init beagle_display_init(void) -+{ -+ int r; -+ -+ r = gpio_request(beagle_display_data_dvi.panel_reset_gpio, "DVI reset GPIO"); -+ if(r < 0) { -+ printk(KERN_ERR "Unable to get DVI reset GPIO\n"); -+ } -+} -+ -+static struct omap_fbmem_config beagle_fbmem0_config = { -+ .size = 1024*768*4, -+ .start = OMAPFB_MEMTYPE_SDRAM, -+}; -+ -+static struct omap_fbmem_config beagle_fbmem1_config = { -+ .size = 1024*768*4, -+ .start = OMAPFB_MEMTYPE_SDRAM, -+}; -+ -+static struct omap_fbmem_config beagle_fbmem2_config = { -+ .size = 1024*768*4, -+ .start = OMAPFB_MEMTYPE_SDRAM, -+}; -+ -+ - static struct omap_board_config_kernel omap3_beagle_config[] __initdata = { - { OMAP_TAG_UART, &omap3_beagle_uart_config }, -- { OMAP_TAG_LCD, &omap3_beagle_lcd_config }, -+ { OMAP_TAG_FBMEM, &beagle_fbmem0_config }, -+ { OMAP_TAG_FBMEM, &beagle_fbmem1_config }, -+ { OMAP_TAG_FBMEM, &beagle_fbmem2_config }, - }; - - static struct platform_device *omap3_beagle_devices[] __initdata = { -- &omap3_beagle_lcd_device, -+ &beagle_dss_device, - &leds_gpio, - &keys_gpio, - }; -@@ -302,8 +396,6 @@ static void __init omap3_beagle_init(void) - omap3_beagle_i2c_init(); - platform_add_devices(omap3_beagle_devices, - ARRAY_SIZE(omap3_beagle_devices)); -- omap_board_config = omap3_beagle_config; -- omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); - omap_serial_init(); - - omap_cfg_reg(AH8_34XX_GPIO29); -@@ -319,10 +411,13 @@ static void __init omap3_beagle_init(void) - usb_musb_init(); - usb_ehci_init(); - omap3beagle_flash_init(); -+ beagle_display_init(); - } - - static void __init omap3_beagle_map_io(void) - { -+ omap_board_config = omap3_beagle_config; -+ omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); - omap2_set_globals_343x(); - omap2_map_common_io(); - } --- -1.5.6.3 - diff --git a/packages/linux/linux-omap/0011-DSS-support-for-OMAP3-SDP-board.patch b/packages/linux/linux-omap/0011-DSS-support-for-OMAP3-SDP-board.patch deleted file mode 100644 index 1e23a192b1..0000000000 --- a/packages/linux/linux-omap/0011-DSS-support-for-OMAP3-SDP-board.patch +++ /dev/null @@ -1,441 +0,0 @@ -From 69302d06679f25f940f5ee3cb8c51c1becf46e52 Mon Sep 17 00:00:00 2001 -From: Tomi Valkeinen -Date: Mon, 20 Oct 2008 13:13:15 +0300 -Subject: [PATCH] DSS: support for OMAP3 SDP board - -Signed-off-by: Tomi Valkeinen ---- - arch/arm/mach-omap2/board-3430sdp.c | 234 +++++++++++++++++++++++++++++++++-- - drivers/video/omap2/Kconfig | 7 +- - drivers/video/omap2/Makefile | 1 + - drivers/video/omap2/panel-sdp3430.c | 110 ++++++++++++++++ - 4 files changed, 340 insertions(+), 12 deletions(-) - create mode 100644 drivers/video/omap2/panel-sdp3430.c - -diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c -index 8773698..b910bc6 100644 ---- a/arch/arm/mach-omap2/board-3430sdp.c -+++ b/arch/arm/mach-omap2/board-3430sdp.c -@@ -40,6 +40,8 @@ - #include - #include - #include -+#include -+#include - - #include - #include -@@ -239,14 +241,224 @@ static struct spi_board_info sdp3430_spi_board_info[] __initdata = { - }, - }; - --static struct platform_device sdp3430_lcd_device = { -- .name = "sdp2430_lcd", -- .id = -1, -+static struct omap_fbmem_config sdp3430_fbmem0_config = { -+ .size = 1024*768*4, -+ .start = OMAPFB_MEMTYPE_SDRAM, -+}; -+ -+static struct omap_fbmem_config sdp3430_fbmem1_config = { -+ .size = 640*480*4, -+ .start = OMAPFB_MEMTYPE_SDRAM, - }; - -+static struct omap_fbmem_config sdp3430_fbmem2_config = { -+ .size = 640*480*4, -+ .start = OMAPFB_MEMTYPE_SDRAM, -+}; -+ -+ -+#define SDP2430_LCD_PANEL_BACKLIGHT_GPIO 91 -+#define SDP2430_LCD_PANEL_ENABLE_GPIO 154 -+#define SDP3430_LCD_PANEL_BACKLIGHT_GPIO 24 -+#define SDP3430_LCD_PANEL_ENABLE_GPIO 28 -+ -+#define PM_RECEIVER TWL4030_MODULE_PM_RECEIVER -+#define ENABLE_VAUX2_DEDICATED 0x09 -+#define ENABLE_VAUX2_DEV_GRP 0x20 -+#define ENABLE_VAUX3_DEDICATED 0x03 -+#define ENABLE_VAUX3_DEV_GRP 0x20 -+ -+#define ENABLE_VPLL2_DEDICATED 0x05 -+#define ENABLE_VPLL2_DEV_GRP 0xE0 -+#define TWL4030_VPLL2_DEV_GRP 0x33 -+#define TWL4030_VPLL2_DEDICATED 0x36 -+ -+#define t2_out(c, r, v) twl4030_i2c_write_u8(c, r, v) -+ -+static unsigned backlight_gpio; -+static unsigned enable_gpio; -+static int lcd_enabled; -+static int dvi_enabled; -+ -+static void __init display_init(void) -+{ -+ int r; -+ -+ enable_gpio = SDP3430_LCD_PANEL_ENABLE_GPIO; -+ backlight_gpio = SDP3430_LCD_PANEL_BACKLIGHT_GPIO; -+ -+ r = gpio_request(enable_gpio, "OMAP SDP LCD Reset GPIO"); -+ if (r) { -+ printk(KERN_ERR "failed to get LCD reset GPIO\n"); -+ goto err0; -+ } -+ -+ r = gpio_request(backlight_gpio, "OMAP SDP LCD Backlight GPIO"); -+ if (r) { -+ printk(KERN_ERR "failed to get LCD backlight GPIO\n"); -+ goto err1; -+ } -+ -+ gpio_direction_output(enable_gpio, 0); -+ gpio_direction_output(backlight_gpio, 0); -+ -+ return; -+err1: -+ gpio_free(enable_gpio); -+err0: -+ return; -+} -+ -+ -+static int panel_enable_lcd(struct omap_display *display) -+{ -+ u8 ded_val, ded_reg; -+ u8 grp_val, grp_reg; -+ -+ if (dvi_enabled) { -+ printk(KERN_ERR "cannot enable LCD, DVI is enabled\n"); -+ return -EINVAL; -+ } -+ -+ if (system_rev > OMAP3430_REV_ES1_0) { -+ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEDICATED, -+ TWL4030_VPLL2_DEDICATED); -+ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEV_GRP, -+ TWL4030_VPLL2_DEV_GRP); -+ } -+ -+ ded_reg = TWL4030_VAUX3_DEDICATED; -+ ded_val = ENABLE_VAUX3_DEDICATED; -+ grp_reg = TWL4030_VAUX3_DEV_GRP; -+ grp_val = ENABLE_VAUX3_DEV_GRP; -+ -+ gpio_direction_output(enable_gpio, 1); -+ gpio_direction_output(backlight_gpio, 1); -+ -+ if (0 != t2_out(PM_RECEIVER, ded_val, ded_reg)) -+ return -EIO; -+ if (0 != t2_out(PM_RECEIVER, grp_val, grp_reg)) -+ return -EIO; -+ -+ lcd_enabled = 1; -+ -+ return 0; -+} -+ -+static void panel_disable_lcd(struct omap_display *display) -+{ -+ lcd_enabled = 0; -+ -+ gpio_direction_output(enable_gpio, 0); -+ gpio_direction_output(backlight_gpio, 0); -+ -+ if (system_rev > OMAP3430_REV_ES1_0) { -+ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEDICATED); -+ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEV_GRP); -+ mdelay(4); -+ } -+} -+ -+static struct omap_display_data sdp_display_data = { -+ .type = OMAP_DISPLAY_TYPE_DPI, -+ .name = "lcd", -+ .panel_name = "panel-sdp3430", -+ .u.dpi.data_lines = 16, -+ .panel_enable = panel_enable_lcd, -+ .panel_disable = panel_disable_lcd, -+}; -+ -+static int panel_enable_dvi(struct omap_display *display) -+{ -+ if (lcd_enabled) { -+ printk(KERN_ERR "cannot enable DVI, LCD is enabled\n"); -+ return -EINVAL; -+ } -+ -+ if (system_rev > OMAP3430_REV_ES1_0) { -+ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEDICATED, -+ TWL4030_VPLL2_DEDICATED); -+ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEV_GRP, -+ TWL4030_VPLL2_DEV_GRP); -+ } -+ -+ dvi_enabled = 1; -+ -+ return 0; -+} -+ -+static void panel_disable_dvi(struct omap_display *display) -+{ -+ dvi_enabled = 0; -+ -+ if (system_rev > OMAP3430_REV_ES1_0) { -+ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEDICATED); -+ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEV_GRP); -+ mdelay(4); -+ } -+} -+ -+ -+static struct omap_display_data sdp_display_data_dvi = { -+ .type = OMAP_DISPLAY_TYPE_DPI, -+ .name = "dvi", -+ .panel_name = "panel-dvi", -+ .u.dpi.data_lines = 24, -+ .panel_enable = panel_enable_dvi, -+ .panel_disable = panel_disable_dvi, -+}; -+ -+static int panel_enable_tv(struct omap_display *display) -+{ -+#define ENABLE_VDAC_DEDICATED 0x03 -+#define ENABLE_VDAC_DEV_GRP 0x20 -+ -+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, -+ ENABLE_VDAC_DEDICATED, -+ TWL4030_VDAC_DEDICATED); -+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, -+ ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); -+ -+ return 0; -+} -+ -+static void panel_disable_tv(struct omap_display *display) -+{ -+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, -+ TWL4030_VDAC_DEDICATED); -+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, -+ TWL4030_VDAC_DEV_GRP); -+} -+ -+static struct omap_display_data sdp_display_data_tv = { -+ .type = OMAP_DISPLAY_TYPE_VENC, -+ .name = "tv", -+ .u.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, -+ .panel_enable = panel_enable_tv, -+ .panel_disable = panel_disable_tv, -+}; -+ -+static struct omap_dss_platform_data sdp3430_dss_data = { -+ .num_displays = 3, -+ .displays = { -+ &sdp_display_data, -+ &sdp_display_data_dvi, -+ &sdp_display_data_tv, -+ } -+}; -+ -+static struct platform_device sdp3430_dss_device = { -+ .name = "omap-dss", -+ .id = -1, -+ .dev = { -+ .platform_data = &sdp3430_dss_data, -+ }, -+}; -+ -+ - static struct platform_device *sdp3430_devices[] __initdata = { - &sdp3430_smc91x_device, -- &sdp3430_lcd_device, -+ &sdp3430_dss_device, - }; - - static inline void __init sdp3430_init_smc91x(void) -@@ -293,13 +505,11 @@ static struct omap_uart_config sdp3430_uart_config __initdata = { - .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)), - }; - --static struct omap_lcd_config sdp3430_lcd_config __initdata = { -- .ctrl_name = "internal", --}; -- - static struct omap_board_config_kernel sdp3430_config[] __initdata = { - { OMAP_TAG_UART, &sdp3430_uart_config }, -- { OMAP_TAG_LCD, &sdp3430_lcd_config }, -+ { OMAP_TAG_FBMEM, &sdp3430_fbmem0_config }, -+ { OMAP_TAG_FBMEM, &sdp3430_fbmem1_config }, -+ { OMAP_TAG_FBMEM, &sdp3430_fbmem2_config }, - }; - - static int sdp3430_batt_table[] = { -@@ -450,8 +660,6 @@ static void __init omap_3430sdp_init(void) - { - omap3430_i2c_init(); - platform_add_devices(sdp3430_devices, ARRAY_SIZE(sdp3430_devices)); -- omap_board_config = sdp3430_config; -- omap_board_config_size = ARRAY_SIZE(sdp3430_config); - if (system_rev > OMAP3430_REV_ES1_0) - ts_gpio = OMAP34XX_TS_GPIO_IRQ_SDPV2; - else -@@ -466,10 +674,14 @@ static void __init omap_3430sdp_init(void) - usb_musb_init(); - usb_ehci_init(); - hsmmc_init(); -+ display_init(); - } - - static void __init omap_3430sdp_map_io(void) - { -+ omap_board_config = sdp3430_config; -+ omap_board_config_size = ARRAY_SIZE(sdp3430_config); -+ - omap2_set_globals_343x(); - omap2_map_common_io(); - } -diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig -index 4584e1b..95691ad 100644 ---- a/drivers/video/omap2/Kconfig -+++ b/drivers/video/omap2/Kconfig -@@ -45,5 +45,10 @@ config PANEL_DVI_VERYHIGHRES - - endchoice - --endmenu -+config PANEL_SDP3430 -+ tristate "SDP3430 Panel" -+ depends on OMAP2_DSS -+ help -+ SDP3430 LCD - -+endmenu -diff --git a/drivers/video/omap2/Makefile b/drivers/video/omap2/Makefile -index 7c75340..73ab1c0 100644 ---- a/drivers/video/omap2/Makefile -+++ b/drivers/video/omap2/Makefile -@@ -2,3 +2,4 @@ obj-$(CONFIG_FB_OMAP2) += omapfb.o - omapfb-y := omapfb-main.o omapfb-sysfs.o omapfb-ioctl.o - - obj-$(CONFIG_PANEL_DVI) += panel-dvi.o -+obj-$(CONFIG_PANEL_SDP3430) += panel-sdp3430.o -diff --git a/drivers/video/omap2/panel-sdp3430.c b/drivers/video/omap2/panel-sdp3430.c -new file mode 100644 -index 0000000..40fe6f2 ---- /dev/null -+++ b/drivers/video/omap2/panel-sdp3430.c -@@ -0,0 +1,110 @@ -+/* -+ * LCD panel support for the TI 3430SDP board -+ * -+ * Copyright (C) 2008 Nokia Corporation -+ * Author: Tomi Valkeinen -+ * -+ * Derived from drivers/video/omap/lcd_2430sdp.c -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ * 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 . -+ */ -+ -+#include -+#include -+ -+#include -+ -+static int sdp3430_panel_init(struct omap_display *display) -+{ -+ return 0; -+} -+ -+static void sdp3430_panel_cleanup(struct omap_display *display) -+{ -+} -+ -+static int sdp3430_panel_enable(struct omap_display *display) -+{ -+ int r = 0; -+ -+ if (display->hw_config.panel_enable) -+ r = display->hw_config.panel_enable(display); -+ -+ return r; -+} -+ -+static void sdp3430_panel_disable(struct omap_display *display) -+{ -+ if (display->hw_config.panel_disable) -+ display->hw_config.panel_disable(display); -+} -+ -+static int sdp3430_panel_suspend(struct omap_display *display) -+{ -+ sdp3430_panel_disable(display); -+ return 0; -+} -+ -+static int sdp3430_panel_resume(struct omap_display *display) -+{ -+ return sdp3430_panel_enable(display); -+} -+ -+static struct omap_panel sdp3430_panel = { -+ .owner = THIS_MODULE, -+ .name = "panel-sdp3430", -+ .init = sdp3430_panel_init, -+ .cleanup = sdp3430_panel_cleanup, -+ .enable = sdp3430_panel_enable, -+ .disable = sdp3430_panel_disable, -+ .suspend = sdp3430_panel_suspend, -+ .resume = sdp3430_panel_resume, -+ /*.set_mode = sdp3430_set_mode, */ -+ -+ .timings = { -+ .pixel_clock = 19200, -+ -+ .hsw = 4, -+ .hfp = 4, -+ .hbp = 40, -+ -+ .vsw = 2, -+ .vfp = 1, -+ .vbp = 1, -+ }, -+ -+ .acb = 0x28, -+ -+ .config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | -+ OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC, -+ -+ .x_res = 480, -+ .y_res = 640, -+ .bpp = 16, -+}; -+ -+ -+static int __init sdp3430_panel_drv_init(void) -+{ -+ omap_dss_register_panel(&sdp3430_panel); -+ return 0; -+} -+ -+static void __exit sdp3430_panel_drv_exit(void) -+{ -+ omap_dss_unregister_panel(&sdp3430_panel); -+} -+ -+module_init(sdp3430_panel_drv_init); -+module_exit(sdp3430_panel_drv_exit); -+MODULE_LICENSE("GPL"); --- -1.5.6.3 - diff --git a/packages/linux/linux-omap/beagleboard/defconfig b/packages/linux/linux-omap/beagleboard/defconfig index 56dea7e122..22c29fb23c 100644 --- a/packages/linux/linux-omap/beagleboard/defconfig +++ b/packages/linux/linux-omap/beagleboard/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.28-rc3-omap1 -# Sat Nov 8 08:59:05 2008 +# Tue Nov 11 15:45:33 2008 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -203,7 +203,8 @@ CONFIG_OMAP2_DSS_DEBUG=y # CONFIG_OMAP2_DSS_RFBI is not set CONFIG_OMAP2_DSS_VENC=y # CONFIG_OMAP2_DSS_SDI is not set -# CONFIG_OMAP2_DSS_DSI is not set +CONFIG_OMAP2_DSS_DSI=y +CONFIG_OMAP2_DSS_USE_DSI_PLL=y # CONFIG_OMAP2_DSS_FAKE_VSYNC is not set CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=4 CONFIG_ARCH_OMAP34XX=y @@ -1322,9 +1323,11 @@ CONFIG_FB_OMAP2_DEBUG=y # OMAP2/3 Display Device Drivers # CONFIG_PANEL_DVI=y +# CONFIG_PANEL_DVI_LOWLOWRES is not set # CONFIG_PANEL_DVI_LOWRES is not set CONFIG_PANEL_DVI_HIGHRES=y # CONFIG_PANEL_DVI_VERYHIGHRES is not set +# CONFIG_PANEL_SDP3430 is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # @@ -1384,7 +1387,10 @@ CONFIG_SND_USB_CAIAQ=m CONFIG_SND_USB_CAIAQ_INPUT=y CONFIG_SND_SOC=y CONFIG_SND_OMAP_SOC=y +CONFIG_SND_OMAP_SOC_MCBSP=y +CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=y # CONFIG_SND_SOC_ALL_CODECS is not set +CONFIG_SND_SOC_TWL4030=y # CONFIG_SOUND_PRIME is not set CONFIG_HID_SUPPORT=y CONFIG_HID=y diff --git a/packages/linux/linux-omap/fix-asoc.diff b/packages/linux/linux-omap/fix-asoc.diff new file mode 100644 index 0000000000..4948e932fb --- /dev/null +++ b/packages/linux/linux-omap/fix-asoc.diff @@ -0,0 +1,130 @@ +From linux-omap-owner@vger.kernel.org Mon Nov 10 23:48:17 2008 +Date: Mon, 10 Nov 2008 14:36:32 -0800 +From: "Steve Sakoman" +To: "Philip Balister" +Subject: Re: ASOC and the Beagle +Cc: "linux-omap@vger.kernel.org" , + "Tony Lindgren" + +On Mon, Nov 10, 2008 at 12:38 PM, Steve Sakoman wrote: +> On Mon, Nov 10, 2008 at 7:10 AM, Philip Balister wrote: +>> A few weeks ago kernels built from git would detect the sound hardware and +>> actually work. +>> +>> Yesterday I build a kernel and the sound hardware is no longer detected. Is +>> there an easy way to fix this? +>> +>> Sorry I'm so vague, I don't have all the revision data handy .... +> +> I just noticed this too. +> +> It seems that the Kconfig for soc/omap got damaged in the merge. +> +> The fix is simple, patch below. + +Next time I should build test before posting :-) + +Turns out that the Makefile for soc/omap and the Kconfig and Makefile +for soc/codec also got screwed up in the merge, so those need to be +fixed. + +The complete fix is: + +diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig +index 38a0e3b..5df7402 100644 +--- a/sound/soc/codecs/Kconfig ++++ b/sound/soc/codecs/Kconfig +@@ -10,6 +10,7 @@ config SND_SOC_ALL_CODECS + select SND_SOC_TLV320AIC23 + select SND_SOC_TLV320AIC26 + select SND_SOC_TLV320AIC3X ++ select SND_SOC_TWL4030 + select SND_SOC_UDA1380 + select SND_SOC_WM8510 + select SND_SOC_WM8580 +@@ -75,6 +76,10 @@ config SND_SOC_TLV320AIC3X + tristate + depends on I2C + ++config SND_SOC_TWL4030 ++ tristate ++ depends on TWL4030_CORE ++ + config SND_SOC_UDA1380 + tristate + +diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile +index 90f0a58..3b9b58a 100644 +--- a/sound/soc/codecs/Makefile ++++ b/sound/soc/codecs/Makefile +@@ -7,6 +7,7 @@ snd-soc-ssm2602-objs := ssm2602.o + snd-soc-tlv320aic23-objs := tlv320aic23.o + snd-soc-tlv320aic26-objs := tlv320aic26.o + snd-soc-tlv320aic3x-objs := tlv320aic3x.o ++snd-soc-twl4030-objs := twl4030.o + snd-soc-uda1380-objs := uda1380.o + snd-soc-wm8510-objs := wm8510.o + snd-soc-wm8580-objs := wm8580.o +@@ -29,6 +30,7 @@ obj-$(CONFIG_SND_SOC_SSM2602) += snd-soc-ssm2602.o + obj-$(CONFIG_SND_SOC_TLV320AIC23) += snd-soc-tlv320aic23.o + obj-$(CONFIG_SND_SOC_TLV320AIC26) += snd-soc-tlv320aic26.o + obj-$(CONFIG_SND_SOC_TLV320AIC3X) += snd-soc-tlv320aic3x.o ++obj-$(CONFIG_SND_SOC_TWL4030) += snd-soc-twl4030.o + obj-$(CONFIG_SND_SOC_UDA1380) += snd-soc-uda1380.o + obj-$(CONFIG_SND_SOC_WM8510) += snd-soc-wm8510.o + obj-$(CONFIG_SND_SOC_WM8580) += snd-soc-wm8580.o +diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig +index 8b7766b..0daeee4 100644 +--- a/sound/soc/omap/Kconfig ++++ b/sound/soc/omap/Kconfig +@@ -14,6 +14,14 @@ config SND_OMAP_SOC_N810 + help + Say Y if you want to add support for SoC audio on Nokia N810. + ++config SND_OMAP_SOC_OMAP3_BEAGLE ++ tristate "SoC Audio support for OMAP3 Beagle" ++ depends on SND_OMAP_SOC && MACH_OMAP3_BEAGLE ++ select SND_OMAP_SOC_MCBSP ++ select SND_SOC_TWL4030 ++ help ++ Say Y if you want to add support for SoC audio on the Beagleboard. ++ + config SND_OMAP_SOC_OSK5912 + tristate "SoC Audio support for omap osk5912" + depends on SND_OMAP_SOC && MACH_OMAP_OSK +@@ -21,3 +29,13 @@ config SND_OMAP_SOC_OSK5912 + select SND_SOC_TLV320AIC23 + help + Say Y if you want to add support for SoC audio on osk5912. ++ ++config SND_OMAP_SOC_OVERO ++ tristate "SoC Audio support for Gumstix Overo" ++ depends on SND_OMAP_SOC && MACH_OVERO ++ select SND_OMAP_SOC_MCBSP ++ select SND_SOC_TWL4030 ++ help ++ Say Y if you want to add support for SoC audio on the Gumstix Overo. ++ ++ +diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile +index e09d1f2..4bae404 100644 +--- a/sound/soc/omap/Makefile ++++ b/sound/soc/omap/Makefile +@@ -7,7 +7,12 @@ obj-$(CONFIG_SND_OMAP_SOC_MCBSP) += snd-soc-omap-mcbsp.o + + # OMAP Machine Support + snd-soc-n810-objs := n810.o ++snd-soc-omap3beagle-objs := omap3beagle.o + snd-soc-osk5912-objs := osk5912.o ++snd-soc-overo-objs := overo.o + + obj-$(CONFIG_SND_OMAP_SOC_N810) += snd-soc-n810.o ++obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o + obj-$(CONFIG_SND_OMAP_SOC_OSK5912) += snd-soc-osk5912.o ++obj-$(CONFIG_SND_OMAP_SOC_OVERO) += snd-soc-overo.o ++ +-- +To unsubscribe from this list: send the line "unsubscribe linux-omap" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html + diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb index 66029225c4..109dcdffd8 100644 --- a/packages/linux/linux-omap_git.bb +++ b/packages/linux/linux-omap_git.bb @@ -6,11 +6,11 @@ KERNEL_IMAGETYPE = "uImage" COMPATIBLE_MACHINE = "omap5912osk|omap1710h3|omap2430sdp|omap2420h4|beagleboard|omap3evm" -SRCREV = "f7429fd378a29cf6947c2613e0fd6e6e36165167" +SRCREV = "444fcab6e8f8bad4ffc50feb91516c246d91e901" PV = "2.6.27+2.6.28-rc3+${PR}+gitr${SRCREV}" #PV = "2.6.27+${PR}+gitr${SRCREV}" -PR = "r1" +PR = "r2" SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \ file://defconfig" @@ -36,12 +36,12 @@ SRC_URI_append = " \ file://0001-Implement-downsampling-with-debugs.patch;patch=1 \ file://0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch;patch=1 \ file://0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch;patch=1 \ - file://0005-DSS-RFBI-support-for-OMAP2-3-DSS.patch;patch=1 \ - file://0006-DSS-TV-out-support-for-OMAP2-3-DSS.patch;patch=1 \ - file://0007-DSS-DSI-support-for-OMAP2-3-DSS.patch;patch=1 \ - file://0008-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch;patch=1 \ - file://0009-DSS-Add-generic-DVI-panel.patch;patch=1 \ - file://0010-DSS-support-for-Beagle-Board.patch;patch=1 \ + file://0005-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch;patch=1 \ + file://0006-DSS-Add-generic-DVI-panel.patch;patch=1 \ + file://0007-DSS-support-for-Beagle-Board.patch;patch=1 \ + file://0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch;patch=1 \ + file://0009-DSS-support-for-OMAP3-SDP-board.patch;patch=1 \ + file://fix-asoc.diff;patch=1 \ " -- cgit v1.2.3 From df7cfd640a11f5518e9c92a410059436a22fcbc0 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 11 Nov 2008 17:48:17 +0100 Subject: opkg nogpg: attempt to repair damage by FSO people, it should build again, but the noise patch has been disabled to accomplish that --- packages/opkg/opkg-nogpg_svn.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opkg/opkg-nogpg_svn.bb b/packages/opkg/opkg-nogpg_svn.bb index 7a56b4d7fd..ddccc15d46 100644 --- a/packages/opkg/opkg-nogpg_svn.bb +++ b/packages/opkg/opkg-nogpg_svn.bb @@ -3,7 +3,7 @@ require opkg_svn.bb DEPENDS = "curl" PROVIDES += "opkg" -SRC_URI += "file://reduce-nogpg-noise.patch;patch=1" +SRC_URI += "file://reduce-nogpg-noise.patch;patch=1;maxrev=4641" PR = "r1" SRCREV = "${SRCREV_pn-opkg}" -- cgit v1.2.3 From 51721349f52d0d6165046dacde82faaf6d27b8d6 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 11 Nov 2008 18:00:37 +0100 Subject: angstrom feed builder: s/ctorrent/rtorrent/ angstrom source mirror: enable partial uploads for lossy connections --- contrib/angstrom/build-feeds.sh | 2 +- contrib/angstrom/source-mirror.txt | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/contrib/angstrom/build-feeds.sh b/contrib/angstrom/build-feeds.sh index 623f685ecd..c309c37fdc 100755 --- a/contrib/angstrom/build-feeds.sh +++ b/contrib/angstrom/build-feeds.sh @@ -80,7 +80,6 @@ do checkers \ cherokee \ claws-mail \ - ctorrent \ cvs \ distcc \ dsniff \ @@ -202,6 +201,7 @@ do rdesktop \ resistorui \ roadmap-gtk2 \ + rtorrent \ ruby \ samba \ screen \ diff --git a/contrib/angstrom/source-mirror.txt b/contrib/angstrom/source-mirror.txt index 524134779e..2c450ff134 100644 --- a/contrib/angstrom/source-mirror.txt +++ b/contrib/angstrom/source-mirror.txt @@ -1,6 +1,6 @@ #To populate the source mirror the autobuilder uses the following command: -rsync ~/OE/downloads/ angstrom@linuxtogo.org:~/website/unstable/sources/ -av \ +rsync ~/OE/downloads/ angstrom@linuxtogo.org:~/website/unstable/sources/ -aPvz \ --exclude "*.md5" \ --exclude "svn" \ --exclude "hg" \ @@ -11,6 +11,5 @@ rsync ~/OE/downloads/ angstrom@linuxtogo.org:~/website/unstable/sources/ -av \ --exclude "IPL_ixp400NpeLibrary-2_3_2.zip" \ --exclude "*.lock" \ --exclude "codec_*" \ - --exclude "dsplink*" \ - --progress + --exclude "dsplink*" -- cgit v1.2.3 From af8b932975faf8314928b9f0ae98e2ae010bb829 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 11 Nov 2008 17:01:03 +0000 Subject: rtorrent_0.8.3.bb : update to the latest unstable build --- conf/checksums.ini | 8 ++++++++ packages/libtorrent/libtorrent_0.12.3.bb | 16 ++++++++++++++++ packages/libtorrent/rtorrent_0.8.3.bb | 11 +++++++++++ 3 files changed, 35 insertions(+) create mode 100644 packages/libtorrent/libtorrent_0.12.3.bb create mode 100644 packages/libtorrent/rtorrent_0.8.3.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 12be6980bd..d11b04f70e 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -9682,6 +9682,10 @@ sha256=eb6b8f8272c5a5cad0c7c6b949aa75632f45c295f09b2e1e90b6bce15b32b796 md5=76c818b095248ea9e4b140fff4e2fa2a sha256=3287c9be61f9ec8ddab99f9b679bbf58610d024bce980307f88151a552ecd1e3 +[http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.3.tar.gz] +md5=db7c7a2236c2f6af5e02cf3e9384eb67 +sha256=6044618e37c2925615a08517e8b69ef84147ef5287a222fc451968b36a0a9be7 + [http://downloads.sourceforge.net/giflib/libungif-4.1.3.tar.bz2] md5=8c198831cc0495596c78134b8849e9ad sha256=59e835a57e6df03e4d2253b2357253f3d13da9473ff465563a3b9833a744fc36 @@ -13774,6 +13778,10 @@ sha256=59cc003bab753335b3ce14a908e663ea782514b3531dc7030379ff753ef1a78c md5=6216be7ce5e3ead9dc115eaeea863694 sha256=597cefac4535d7f3b752253e5997b3c851c261b26b966a39beb032dcf1d5baa7 +[http://libtorrent.rakshasa.no/downloads/rtorrent-0.8.3.tar.gz] +md5=d1b43acf08e371a56915293bbcf584c6 +sha256=554456550ca6e792297d6d39367120af5b2bd6181d514a43faf4e2f565721908 + [ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.5.tar.gz] md5=3fbb02294a8ca33d4684055adba5ed6f sha256=19590e972b80333e26a6514c34d976c2037138361481a16f27b75e5d33f33a58 diff --git a/packages/libtorrent/libtorrent_0.12.3.bb b/packages/libtorrent/libtorrent_0.12.3.bb new file mode 100644 index 0000000000..5d711578ed --- /dev/null +++ b/packages/libtorrent/libtorrent_0.12.3.bb @@ -0,0 +1,16 @@ +DESCRIPTION = "library implementing the bittorrent protocol" +HOMEPAGE = "http://libtorrent.rakshasa.no" +SECTION = "libs/network" +LICENSE = "GPL" +DEPENDS = "libsigc++-2.0 openssl" + +SRC_URI = "http://libtorrent.rakshasa.no/downloads/libtorrent-${PV}.tar.gz" + +inherit autotools pkgconfig + +EXTRA_OECONF = "--enable-aligned" + +do_stage() { + autotools_stage_all +} + diff --git a/packages/libtorrent/rtorrent_0.8.3.bb b/packages/libtorrent/rtorrent_0.8.3.bb new file mode 100644 index 0000000000..9ae0eed011 --- /dev/null +++ b/packages/libtorrent/rtorrent_0.8.3.bb @@ -0,0 +1,11 @@ +DESCRIPTION = "Console bittorrent client using libtorrent" +HOMEPAGE = "http://libtorrent.rakshasa.no" +SECTION = "libs/network" +LICENSE = "GPL" +DEPENDS = "libtorrent curl ncurses gnutls libgpg-error" + +SRC_URI = "http://libtorrent.rakshasa.no/downloads/rtorrent-${PV}.tar.gz \ + file://autoconf-cross-fix.patch;patch=1" + +inherit autotools + -- cgit v1.2.3 From 39e6137c3762d5aefd3af1d1001d5cf813f18b90 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Wed, 5 Nov 2008 15:52:07 +0300 Subject: checksums.ini: add few more checksums Signed-off-by: Dmitry Baryshkov --- conf/checksums.ini | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index d11b04f70e..61c6988cb2 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -4862,6 +4862,10 @@ sha256=972da0f1c35df459b99b24f5bbed5ddec150b714540e2254b6b37035117167ed md5=9054d072f5972d5e567c428531734ad5 sha256=7f836c8189b55ef4ec8f3387673687d0a5c1a713abc9617144638b28e6857bd2 +[http://camaya.net/download/gloox-0.8.9.tar.bz2] +md5=dc590e34107de5cb296c238afa8e843b +sha256=9d9ef356cc4478499442573556787125dc76c8acd1e55e5001fb11f1e224d27f + [http://xorg.freedesktop.org/releases/individual/proto/glproto-1.4.8.tar.bz2] md5=3dfbd17203c0c88b94b6f579f24c11cc sha256=2f5d84413853b688b7bb46c66fee108a499190e1f7810afffb775910778f053c @@ -5086,6 +5090,10 @@ sha256=7ad66f99a1bad1ae0bbb02bd7a7cf8ed17fdc3fd104fa5c68e04961459ad5c50 md5=edd7f02e30683054b94a89aa62c74d1e sha256=cf2f96f3c91749fdcec39d3eb89273f6d3a47cc7bc0c5faa0915808409c9d563 +[http://ftp.gnome.org/pub/GNOME/sources/gnome-themes/2.24/gnome-themes-2.24.0.tar.bz2] +md5=0dd3fc0d034d7f51379ea6f335d1d257 +sha256=7a7fd49793c790c508cebce5e4ff99c83ddcaa6fd57266ce46ff9ac4cc3b9063 + [http://ftp.gnome.org/pub/GNOME/sources/gnome-themes/2.6/gnome-themes-2.6.2.tar.bz2] md5=4aae39232d77e1497f3180202b501adf sha256=471191e942fdd1d691095c71fb22c0a645b3644c3b2b1c58a6d6f1a2435fb818 @@ -8186,6 +8194,10 @@ sha256=694ea8352edf845b0a7dc0c2e0e990bcb8507f64e405edc048ad115c6578e5f7 md5=49fe67302fd76543a7574a73c01395ba sha256=512674419ac2013d11eccf4f106d6cfc719c9c2b49215a8f0e89c5327d176a84 +[http://gpephone.linuxtogo.org/download/gpephone/libabenabler-1.0/libabenabler-1.0.tar.bz2] +md5=1264bd213c631d29d1b4bc04696de66a +sha256=0f34656e262d7c41c1499dbe1aa3bc91c1fe8dc230ab79d5cf027ab6d141ee56 + [http://www.ngolde.de/download/libacpi-0.2.tar.gz] md5=05b53dd7bead66dda35fec502b91066c sha256=13086e31d428b9c125954d48ac497b754bbbce2ef34ea29ecd903e82e25bad29 @@ -8414,6 +8426,10 @@ sha256=c2c6ee274cbd5759715a786b949df8ac3e848ffc771173c4f006b88c665346d0 md5=329401b84ad0b00aaccaad58f2fc393c sha256=509503979441e078866d75a628d8a6483e67737454feaa5366f609ecf2a0f5cf +[http://download.savannah.nongnu.org/releases/exosip/libeXosip2-3.1.0.tar.gz] +md5=ed6005a146501a5f9308e28108ae7bca +sha256=eed72871201e2c1deae3d7c0b618bf16f306d91fc7ebcb53956ab7468663514f + [http://www.mr511.de/software/libelf-0.8.3.tar.gz] md5=f85d6dc4b4ef1c126080d86cf0ce63fd sha256=644262514d0f6c3572f66935921a5290383a15e804e9b085e293ab78102d3513 @@ -8586,6 +8602,10 @@ sha256=7562042a6210947363bd6a9bbcdd03f8d02470c0347970b507f689d25a907844 md5=95d269ad7e7cb7d3032498ad2e47643b sha256=b8a1da871aa34362caf0c76dcbd3df42aef7313a4ed08f38eddcb159b80302c5 +[http://gpephone.linuxtogo.org/download/gpephone/libgemwidget-1.0/libgemwidget-1.0.tar.bz2] +md5=37916e6f12bff470fb457ad2d382789b +sha256=b178c610fbbf2613ed1edeba2a11ed9c1ea042274465b2f3cd0a29cf1c7ebd9c + [http://ftp.belnet.be/packages/ggzgamingzone/ggz/0.0.14.1/libggz-0.0.14.1.tar.gz] md5=603739504648833779aa13b0327a1c3d sha256=54301052a327f2ff3f2d684c5b1d7920e8601e13f4f8d5f1d170e5a7c9585e85 @@ -8730,6 +8750,10 @@ sha256=23425f74f304072f48d295e9d7168a6ecfb44c049074b34b71cfbf1f4d19ec85 md5=009af2f3554caaf547bbc282da0e83c6 sha256=c40ea6d2282503ede882efe85ad526358683c311ea4592d41eaab0725ca75934 +[http://gpephone.linuxtogo.org/download/gpephone/libgpephone-0.4/libgpephone-0.4.tar.bz2] +md5=fae122bd44d6da9a006f65aedbd6461e +sha256=cd84dc0e4b903871339e5e097a51d09a76ee9e1495783a47bb5ba81d633810da + [http://gpe.linuxtogo.org/download/source/libgpepimc-0.2.tar.gz] md5=74e36fd1c34dc668801366d5aa11e93e sha256=19556cc4d3469f61c7b50db7a9979a669af0b03c0c2243441e34a8a5f737fa9d @@ -9306,6 +9330,10 @@ sha256=b67c0218b7cd2d521783bf055b13c598bd04b623cbf4adbb3cc76bd3ac57dc5d md5=40ee3ec89030f0d6dfdb2cf6100e6685 sha256=4e13febd65a2f8f18cb55151cd10f5f0888bf1e7dc2a4c0d54f39f170255de1c +[ftp://ftp.gnu.org/gnu/osip/libosip2-3.1.0.tar.gz] +md5=7eb305608256ac2a7a27b66ce52627c8 +sha256=245911a9a48bbe868c4518faf86191f6568fb99d9967d368164a17a83671e8fb + [http://repository.maemo.org/pool/bora/free/source/libosso-gsf_1.11.10.4-1.tar.gz] md5=4c5b31154943108ba0fecf00c8af9f3c sha256=687f46d5d5eb5ced18534f3cfcfdd82db6b25679437602f1519cae48d019b55d @@ -9418,6 +9446,10 @@ sha256=004dae11e11598584939d66d26a5ab9b48d08a00ca2d00ae8d38ee3ac7a15d65 md5=a9e90187c1dc183f497bcae34718e415 sha256=6fb70d0b8f410f05988e1f3a3e8c86990c3e84c9958041803e6d0658faae91ea +[http://gpephone.linuxtogo.org/download/gpephone/librecord-1.0/librecord-1.0.tar.bz2] +md5=a487a98a40d64b9f6ee118b10b9cb97a +sha256=7cadb398c106ba8df3b297e345ab1db750ad058c6c2e78b184f18a7f685bf8ef + [http://gpe.linuxtogo.org/download/source/librewrite-0.1.tar.bz2] md5=f25a9f8aefde5e2bf0dc5c8318020a00 sha256=3a892543df587f645911289af7fead594bb161913ce04619360f25cb3adeefad -- cgit v1.2.3 From 4aed650d7694c0c6e3965e8a3c6fcc8b7934ddb1 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 10 Nov 2008 19:57:49 +0300 Subject: checksums.ini: update the checksum for libchenabler-0.1 It seems that the upstream tarball was changed. Update checksum. Also bump up PR of the package to reflect new source. Signed-off-by: Dmitry Baryshkov --- conf/checksums.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/checksums.ini b/conf/checksums.ini index 61c6988cb2..3be79d3da2 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -8307,8 +8307,8 @@ md5=15de3830b751818a54a42899bd3ae72c sha256=5fdaf9af5ac4f75c0215d000b82b128fd054a582f81cc4f039a1e7fe69335ebb [http://gpephone.linuxtogo.org/download/gpephone/libchenabler-0.1/libchenabler-0.1.tar.gz] -md5=f29e1e63fcc55e3ae4e81f5ee9dd7bdd -sha256=448a3ab76109664bb6bd8bcc2c62d957c7d44b52e39c37d91b3b73b5cfe35a3f +md5=866fd13611a8de946428db1df9be8468 +sha256=74def55ba6a61e966e0873a4081fd3dd65089b94b837810d3bc056221d7e41c7 [http://repository.maemo.org/pool/bora/free/source/libconic_0.13.tar.gz] md5=f852e61c2700b5bc571a730c6516e4ce -- cgit v1.2.3 From ea13e1d260a4129b72e22772749d820c81acc520 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 10 Nov 2008 19:58:08 +0300 Subject: checksums.ini: update the checksum for libmsgenabler-1.0 It seems that the upstream tarball was changed. Update checksum. Also bump up PR of the package to reflect new source. Signed-off-by: Dmitry Baryshkov --- conf/checksums.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/checksums.ini b/conf/checksums.ini index 3be79d3da2..71621e956b 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -9131,8 +9131,8 @@ md5=54935c6cff42df2f1daada267b701392 sha256=18f0e2df191219c29b47dc12b4b06b5be7eaeef34b3436156547e5a9f4eb51c1 [http://gpephone.linuxtogo.org/download/gpephone/libmsgenabler-1.0/libmsgenabler-1.0.tar.bz2] -md5=53417c192cff3e32fb1d7b839201a04d -sha256=8a58b9a9eb8cae0dc15453d7737050a3b241eb1030797f1559b4bbb5aff061e6 +md5=32f04482d3905f05a4f36ac946e7f95d +sha256=c8568dbd5d3ffa200bf81ffbc7baf94902b41998d5c65455a1fbadce15db9953 [http://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-2.1.2.tar.gz] md5=88d35af903665fecbdee77eb6d5e6cdd -- cgit v1.2.3 From a6b434b9f04d2c73669378c732013b4782d4db9e Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 10 Nov 2008 19:58:32 +0300 Subject: checksums.ini: update the checksum for lips_event-0.1 It seems that the upstream tarball was changed. Update checksum. Also bump up PR of the package to reflect new source. Signed-off-by: Dmitry Baryshkov --- conf/checksums.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/checksums.ini b/conf/checksums.ini index 71621e956b..c6e11ff277 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -10223,8 +10223,8 @@ md5=de958cdb8d00e74792dd69f3c945b037 sha256=371f8133db705bde6c2f79cccb0b1a1f626a0d94bf41acceba5d76a69155f057 [http://gpephone.linuxtogo.org/download/gpephone/liblipsevent-0.1/lips_event-0.1.tar.gz] -md5=bd92cf7fae640c7807b53d082bfe1d92 -sha256=d0941b9947be08be440716c888b58cc6d088a214debefebe7bca99b84f387c02 +md5=1fd0f41f9676ef0c882921bc37628d07 +sha256=7182cf3f63e11e7ea6c6a994f9e70ef3bf6e430a5db643f5b29a0fd0996ddfd5 [http://gpephone.linuxtogo.org/download/gpephone/libim-0.2/lips_im-0.2.tar.gz] md5=4430d106ffc651c861374d729ffcd4c3 -- cgit v1.2.3 From fac143791b4473c52b50bed009d9104226f0ad4a Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 10 Nov 2008 19:58:56 +0300 Subject: checksums.ini: update the checksum for lips_im-0.2 It seems that the upstream tarball was changed. Update checksum. Also bump up PR of the package to reflect new source. Signed-off-by: Dmitry Baryshkov --- conf/checksums.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/checksums.ini b/conf/checksums.ini index c6e11ff277..7680fc83dc 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -10227,8 +10227,8 @@ md5=1fd0f41f9676ef0c882921bc37628d07 sha256=7182cf3f63e11e7ea6c6a994f9e70ef3bf6e430a5db643f5b29a0fd0996ddfd5 [http://gpephone.linuxtogo.org/download/gpephone/libim-0.2/lips_im-0.2.tar.gz] -md5=4430d106ffc651c861374d729ffcd4c3 -sha256=31bfd0d68dc0cfdaf22c26295c8fc4b65a508d0e615daf8a43f032f2a701f2b7 +md5=375091bb5df956f0049962defad3cbbc +sha256=381d88261fa307ffa97edab6ba8488533b9fb45cccc5ae6cda5ccb64ef65adc0 [http://downloads.sourceforge.net/lirc/lirc-0.8.0.tar.gz] md5=596e05980f75372fa998d50eb1dcade0 -- cgit v1.2.3 From 1c083ca618b3db4a10394b2db5df830cff2f950c Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Sun, 9 Nov 2008 16:07:23 +0300 Subject: task-sdk-base: switch to newer pixman task-sdk-base referenced older libpixman-dev, however most packages do already use newer pixman package (which changed name from libpixman to pixman). So switch RDEPENDS to contain pixman-dev instead of libpixman-dev Signed-off-by: Dmitry Baryshkov --- packages/tasks/task-sdk-base.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tasks/task-sdk-base.bb b/packages/tasks/task-sdk-base.bb index 4041b27536..3d86d030f7 100644 --- a/packages/tasks/task-sdk-base.bb +++ b/packages/tasks/task-sdk-base.bb @@ -34,7 +34,7 @@ RDEPENDS = "\ libiw-dev \ libmimedir-dev \ libpcap-dev \ - libpixman-dev \ + pixman-dev \ libpng-dev \ libschedule-dev \ libsm-dev \ -- cgit v1.2.3 From 166819b531adff8eca076f3b3f58afc010f51ca4 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Sun, 9 Nov 2008 02:17:38 +0300 Subject: task-sdk-extra: use randrproto-dev instead of randrext-dev Signed-off-by: Dmitry Baryshkov --- packages/tasks/task-sdk-extra.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tasks/task-sdk-extra.bb b/packages/tasks/task-sdk-extra.bb index efb12c3cfb..c4414dbcf8 100644 --- a/packages/tasks/task-sdk-extra.bb +++ b/packages/tasks/task-sdk-extra.bb @@ -28,7 +28,7 @@ RDEPENDS_task-sdk-x11-ext = "\ libxrandr-dev \ libxrender-dev \ libxsettings-client-dev \ - randrext-dev \ + randrproto-dev \ libxau-dev \ xcalibrateext-dev \ libxcomposite-dev \ -- cgit v1.2.3 From cff117081e4c2acf87b06b8ae1722c95dd677369 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Sun, 9 Nov 2008 02:20:18 +0300 Subject: x11-sato-image: use correct package names instead of ttf-liberation Signed-off-by: Dmitry Baryshkov --- packages/images/x11-sato-image.bb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/images/x11-sato-image.bb b/packages/images/x11-sato-image.bb index 35163953dc..0a127f85cf 100644 --- a/packages/images/x11-sato-image.bb +++ b/packages/images/x11-sato-image.bb @@ -1,6 +1,8 @@ DISTRO_SSH_DAEMON ?= "dropbear" DISTRO_PACKAGE_MANAGER ?= "opkg-nogpg opkg-collateral" +XSERVER ?= "xserver-kdrive-fbdev" + IMAGE_PREPROCESS_COMMAND = "create_etc_timestamp" IMAGE_INSTALL = "\ @@ -13,7 +15,7 @@ IMAGE_INSTALL = "\ matchbox-desktop \ ${XSERVER} \ xserver-kdrive-common xserver-nodm-init \ - ttf-liberation \ + ttf-liberation-sans ttf-liberation-serif ttf-liberation-mono \ xauth xhost xset xrandr \ matchbox-sato \ matchbox-config-gtk \ -- cgit v1.2.3 From 87337d2d8562d92e6dbda1edb4508a022cd926d5 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Tue, 4 Nov 2008 04:41:41 +0300 Subject: gloox: fix gloox.pc in the staging As gloox.pc included @CFLAGS@ substitution, it got populated with -isystem CFLAGS, thus breaking staging QA. Fix that by dropping unnecessary @CFLAGS@ substitution. Signed-off-by: Dmitry Baryshkov --- packages/gloox/gloox/gloox-fix-pc.diff | 10 ++++++++++ packages/gloox/gloox_0.8.9.bb | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 packages/gloox/gloox/gloox-fix-pc.diff diff --git a/packages/gloox/gloox/gloox-fix-pc.diff b/packages/gloox/gloox/gloox-fix-pc.diff new file mode 100644 index 0000000000..70cb84eb09 --- /dev/null +++ b/packages/gloox/gloox/gloox-fix-pc.diff @@ -0,0 +1,10 @@ +Index: gloox-0.8.9/gloox.pc.in +=================================================================== +--- gloox-0.8.9.orig/gloox.pc.in 2008-11-04 04:20:26.896779618 +0300 ++++ gloox-0.8.9/gloox.pc.in 2008-11-04 04:20:32.665427239 +0300 +@@ -7,4 +7,4 @@ Name: gloox + Description: A high-level XMPP/Jabber library for C++ + Version: @VERSION@ + Libs: -L${libdir} -lgloox @LIBS@ +-Cflags: -I${includedir} @CFLAGS@ ++Cflags: -I${includedir} diff --git a/packages/gloox/gloox_0.8.9.bb b/packages/gloox/gloox_0.8.9.bb index 09004a8182..562fb90eb3 100644 --- a/packages/gloox/gloox_0.8.9.bb +++ b/packages/gloox/gloox_0.8.9.bb @@ -8,7 +8,8 @@ DEPENDS = "iksemel libidn gnutls" inherit autotools pkgconfig -SRC_URI = "http://camaya.net/download/${P}.tar.bz2" +SRC_URI = "http://camaya.net/download/${P}.tar.bz2 \ + file://gloox-fix-pc.diff;patch=1" do_stage () { autotools_stage_all -- cgit v1.2.3 From 758fb416d5958fcf8131c6e56eced7cd6fc2a53e Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Wed, 5 Nov 2008 15:53:23 +0300 Subject: libsvg-cairo: fix building with current libtool/autoconf Current autoconf/libtool prohibit using of macros/variables that start with LT_. Workaround that by s/LT_/LV_/ on libsvg-cairo's configure.in Signed-off-by: Dmitry Baryshkov --- .../cairo/libsvg-cairo/libsvg-cairo-libtool.diff | 27 ++++++++++++++++++++++ packages/cairo/libsvg-cairo_20050601.bb | 3 ++- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 packages/cairo/libsvg-cairo/libsvg-cairo-libtool.diff diff --git a/packages/cairo/libsvg-cairo/libsvg-cairo-libtool.diff b/packages/cairo/libsvg-cairo/libsvg-cairo-libtool.diff new file mode 100644 index 0000000000..90448dc887 --- /dev/null +++ b/packages/cairo/libsvg-cairo/libsvg-cairo-libtool.diff @@ -0,0 +1,27 @@ +Index: libsvg-cairo/configure.in +=================================================================== +--- libsvg-cairo.orig/configure.in 2008-11-04 13:38:51.795236755 +0300 ++++ libsvg-cairo/configure.in 2008-11-04 13:40:44.503218844 +0300 +@@ -8,18 +8,18 @@ LIBSVG_CAIRO_VERSION=0.1.5-head + # libtool shared library version + + # Increment if the interface has additions, changes, removals. +-LT_CURRENT=1 ++LV_CURRENT=1 + + # Increment any time the source changes; set to + # 0 if you increment CURRENT +-LT_REVISION=1 ++LV_REVISION=1 + + # Increment if any interfaces have been added; set to 0 + # if any interfaces have been removed. removal has + # precedence over adding, so set to 0 if both happened. +-LT_AGE=0 ++LV_AGE=0 + +-VERSION_INFO="$LT_CURRENT:$LT_REVISION:$LT_AGE" ++VERSION_INFO="$LV_CURRENT:$LV_REVISION:$LV_AGE" + AC_SUBST(VERSION_INFO) + + dnl =========================================================================== diff --git a/packages/cairo/libsvg-cairo_20050601.bb b/packages/cairo/libsvg-cairo_20050601.bb index 55e439a3c5..9cc7c5b46c 100644 --- a/packages/cairo/libsvg-cairo_20050601.bb +++ b/packages/cairo/libsvg-cairo_20050601.bb @@ -7,7 +7,8 @@ PRIORITY = "optional" DEPENDS = "libsvg cairo" DESCRIPTION = "SVG rendering library" DEFAULT_PREFERENCE = "1" -SRC_URI = "cvs://anoncvs:anoncvs@cvs.cairographics.org/cvs/cairo;module=libsvg-cairo;date=${FIXEDSRCDATE}" +SRC_URI = "cvs://anoncvs:anoncvs@cvs.cairographics.org/cvs/cairo;module=libsvg-cairo;date=${FIXEDSRCDATE} \ + file://libsvg-cairo-libtool.diff;patch=1" S = "${WORKDIR}/libsvg-cairo" inherit autotools pkgconfig -- cgit v1.2.3 From b311c53578da30706ad4ecd6b25fadf3bd1a199f Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Wed, 5 Nov 2008 15:54:50 +0300 Subject: linphone: fix building with current speex Signed-off-by: Dmitry Baryshkov --- packages/linphone/linphone-1.6.0/linphone-speex.diff | 13 +++++++++++++ packages/linphone/linphone_1.6.0.bb | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 packages/linphone/linphone-1.6.0/linphone-speex.diff diff --git a/packages/linphone/linphone-1.6.0/linphone-speex.diff b/packages/linphone/linphone-1.6.0/linphone-speex.diff new file mode 100644 index 0000000000..930c774a41 --- /dev/null +++ b/packages/linphone/linphone-1.6.0/linphone-speex.diff @@ -0,0 +1,13 @@ +Index: linphone-1.6.0/mediastreamer2/configure.ac +=================================================================== +--- linphone-1.6.0.orig/mediastreamer2/configure.ac 2008-11-04 03:41:04.936798321 +0300 ++++ linphone-1.6.0/mediastreamer2/configure.ac 2008-11-04 03:41:09.589036036 +0300 +@@ -253,7 +253,7 @@ dnl check for various codecs libraries + dnl ************************************* + + dnl check for installed version of speex +-PKG_CHECK_MODULES(SPEEX, speex >= 1.1.12, ++PKG_CHECK_MODULES(SPEEX, speex >= 1.1.12 speexdsp, + [ AC_DEFINE(HAVE_SPEEX_NOISE,1,[tells whether the noise arg of speex_echo_cancel can be used]) ], + [try_other_speex=yes] + ) diff --git a/packages/linphone/linphone_1.6.0.bb b/packages/linphone/linphone_1.6.0.bb index fe40b6a270..64b2dafdd2 100644 --- a/packages/linphone/linphone_1.6.0.bb +++ b/packages/linphone/linphone_1.6.0.bb @@ -21,7 +21,8 @@ PROVIDES += "linphone linphonec liblinphone" PR = "r3" SRC_URI = "http://download.savannah.nongnu.org/releases/linphone/1.6.x/sources/linphone-${PV}.tar.gz \ - http://download.devbase.at/voip/linphone-1.6.0-pl0.patch;patch=1" + http://download.devbase.at/voip/linphone-1.6.0-pl0.patch;patch=1 \ + file://linphone-speex.diff;patch=1" S = "${WORKDIR}/linphone-${PV}" -- cgit v1.2.3 From a09e4457dad0fe20f2085b20212b7e4eafd168a7 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Wed, 5 Nov 2008 15:55:19 +0300 Subject: contacts: fix build error contacts' source defines e_util_unicode_get_utf8() as both static function() in .c file and as non-static one in the header. As this function is unused outside of that file, drop non-static declaration. Signed-off-by: Dmitry Baryshkov --- packages/pimlico/contacts-0.8/contacts-util-fixup.diff | 13 +++++++++++++ packages/pimlico/contacts_0.8.bb | 1 + 2 files changed, 14 insertions(+) create mode 100644 packages/pimlico/contacts-0.8/contacts-util-fixup.diff diff --git a/packages/pimlico/contacts-0.8/contacts-util-fixup.diff b/packages/pimlico/contacts-0.8/contacts-util-fixup.diff new file mode 100644 index 0000000000..95c3dbb699 --- /dev/null +++ b/packages/pimlico/contacts-0.8/contacts-util-fixup.diff @@ -0,0 +1,13 @@ +Index: contacts-0.8/src/contacts-utils.h +=================================================================== +--- contacts-0.8.orig/src/contacts-utils.h 2008-10-30 13:42:03.527971013 +0300 ++++ contacts-0.8/src/contacts-utils.h 2008-10-30 13:42:08.140177662 +0300 +@@ -22,8 +22,6 @@ + #include + #include "contacts-defs.h" + +-char *e_util_unicode_get_utf8 (const char *text, gunichar * out); +- + const char *kozo_utf8_strstrcasestrip (const char *haystack, + const gunichar * needle); + diff --git a/packages/pimlico/contacts_0.8.bb b/packages/pimlico/contacts_0.8.bb index d596d45659..861e83ae73 100644 --- a/packages/pimlico/contacts_0.8.bb +++ b/packages/pimlico/contacts_0.8.bb @@ -6,4 +6,5 @@ SRC_URI = "http://pimlico-project.org/sources/${PN}/${PN}-${PV}.tar.gz \ file://stock_contact.png \ file://stock_person.png \ file://contacts-owl-window-menu.patch;patch=1 \ + file://contacts-util-fixup.diff;patch=1 \ " -- cgit v1.2.3 From 5f2e5bc2de084cc731241de39d9241d408d371ad Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Wed, 5 Nov 2008 15:55:54 +0300 Subject: tasks: fix building with current libtool current libtool requires AC_PROG_LIBTOOL in configure.ac Include it to make libtool/autoconf happy. Signed-off-by: Dmitry Baryshkov --- packages/pimlico/tasks-0.13/libtool.diff | 10 ++++++++++ packages/pimlico/tasks_0.13.bb | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 packages/pimlico/tasks-0.13/libtool.diff diff --git a/packages/pimlico/tasks-0.13/libtool.diff b/packages/pimlico/tasks-0.13/libtool.diff new file mode 100644 index 0000000000..f2cd6d20d7 --- /dev/null +++ b/packages/pimlico/tasks-0.13/libtool.diff @@ -0,0 +1,10 @@ +--- configure.ac.orig 2008-10-30 03:57:29.038510760 +0300 ++++ configure.ac 2008-10-30 03:55:28.066512503 +0300 +@@ -3,6 +3,7 @@ + AC_CONFIG_SRCDIR(libkoto/koto-task-store.c) + AC_CONFIG_HEADERS([libkoto/config.h]) + AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION) ++AC_PROG_LIBTOOL + + AM_DISABLE_STATIC + AC_PROG_CPP diff --git a/packages/pimlico/tasks_0.13.bb b/packages/pimlico/tasks_0.13.bb index ff8da563e6..37d01d9dcf 100644 --- a/packages/pimlico/tasks_0.13.bb +++ b/packages/pimlico/tasks_0.13.bb @@ -1,4 +1,4 @@ require tasks.inc SRC_URI = "http://pimlico-project.org/sources/${PN}/${PN}-${PV}.tar.gz \ - file://tasks-owl.diff;patch=1;pnum=0" + file://tasks-owl.diff;patch=1;pnum=0 file://libtool.diff;patch=1;pnum=0" -- cgit v1.2.3 From c41cb00125f72015e601f26c845ff521d2ed4fa2 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Wed, 5 Nov 2008 15:56:36 +0300 Subject: libgemwidget-1.0: fix build error Update libgemwidget-1.0 to reflect current Gtk/GIO/GnomeVFS api. Signed-off-by: Dmitry Baryshkov --- .../gpephone/libgemwidget/libgemwidget-fixup.diff | 43 ++++++++++++++++++++++ packages/gpephone/libgemwidget_1.0.bb | 2 +- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 packages/gpephone/libgemwidget/libgemwidget-fixup.diff diff --git a/packages/gpephone/libgemwidget/libgemwidget-fixup.diff b/packages/gpephone/libgemwidget/libgemwidget-fixup.diff new file mode 100644 index 0000000000..9a219f1eb8 --- /dev/null +++ b/packages/gpephone/libgemwidget/libgemwidget-fixup.diff @@ -0,0 +1,43 @@ +Index: libgemwidget-1.0/src/gemfilechooser.c +=================================================================== +--- libgemwidget-1.0.orig/src/gemfilechooser.c 2008-11-04 14:04:26.428221184 +0300 ++++ libgemwidget-1.0/src/gemfilechooser.c 2008-11-04 14:41:58.755239494 +0300 +@@ -46,6 +46,7 @@ + #include + #include + #include ++#include + #include "gemfilechooser.h" + #include "gemresource.h" + #include "gemenv.h" +@@ -304,7 +305,7 @@ gem_file_chooser_finalize (GObject *obje + } + + static void +-gem_file_chooser_file_info_print (GtkFileInfo *info) ++gem_file_chooser_file_info_print (GFileInfo *info) + { + struct tm loacl_time; + time_t time; +@@ -331,10 +332,10 @@ gem_file_chooser_file_info_print (GtkFil + (gtk_file_info_get_is_folder(info) ? "TRUE" : "FALSE")); + g_print("%s():|- Hidden : %s\n", + __FUNCTION__, +- (gtk_file_info_get_is_hidden(info) ? "TRUE" : "FALSE")); ++ (g_file_info_get_is_hidden(info) ? "TRUE" : "FALSE")); + g_print("%s():|- MIME Type : %s\n", + __FUNCTION__, +- gtk_file_info_get_mime_type(info)); ++ g_file_info_get_mime_type(info)); + g_print("%s():|- Modified Time : %04d/%02d/%02d %02d:%02d:%02d\n", + __FUNCTION__, + loacl_time.tm_year + 1900, +@@ -345,7 +346,7 @@ gem_file_chooser_file_info_print (GtkFil + loacl_time.tm_sec); + g_print("%s():`- Size : %lld\n", + __FUNCTION__, +- gtk_file_info_get_size(info)); ++ g_file_info_get_size(info)); + + g_print("\n"); + return; diff --git a/packages/gpephone/libgemwidget_1.0.bb b/packages/gpephone/libgemwidget_1.0.bb index 80e4e4fecb..a9f02cd245 100644 --- a/packages/gpephone/libgemwidget_1.0.bb +++ b/packages/gpephone/libgemwidget_1.0.bb @@ -8,7 +8,7 @@ PR = "r0" GPE_TARBALL_SUFFIX = "bz2" inherit gpephone pkgconfig autotools -SRC_URI += " file://disable-tests.patch;patch=1" +SRC_URI += " file://disable-tests.patch;patch=1 file://libgemwidget-fixup.diff;patch=1" FILES_${PN} += "${datadir}/gem" -- cgit v1.2.3 From 797f3e1aa95df7de0d193132f22f15351534b592 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Sun, 9 Nov 2008 16:13:47 +0300 Subject: src_distribute: update to reflect current bitbake Since 1.8.8 bitbake stopped providing 'A' variable that src_distribute used. Update src_distribute.bbclass to correctly generate files list w/o using that var. Signed-off-by: Dmitry Baryshkov --- classes/src_distribute.bbclass | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/classes/src_distribute.bbclass b/classes/src_distribute.bbclass index f20410d0bb..a12473950a 100644 --- a/classes/src_distribute.bbclass +++ b/classes/src_distribute.bbclass @@ -8,7 +8,9 @@ python do_distribute_sources () { import re for license in licenses: for entry in license.split("|"): - for s in (bb.data.getVar('A', d, 1) or "").split(): + for url in ((bb.data.getVar('SRC_URI', d, 1) or '').split()): + bb.fetch.init([url], d) + s = bb.fetch.localpath(url, d) s = re.sub(';.*$', '', s) cmd = bb.data.getVar('SRC_DISTRIBUTECOMMAND', d, 1) if not cmd: -- cgit v1.2.3 From c6691c64c90e767907a88c8d8907a8267afa54ba Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Sun, 9 Nov 2008 02:20:42 +0300 Subject: dropbear: fix FTBFS Signed-off-by: Dmitry Baryshkov --- packages/dropbear/dropbear.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dropbear/dropbear.inc b/packages/dropbear/dropbear.inc index 26e3235b92..364799f12e 100644 --- a/packages/dropbear/dropbear.inc +++ b/packages/dropbear/dropbear.inc @@ -51,7 +51,7 @@ do_install() { for i in ${SBINCOMMANDS} do - ln -s ./dropbearmulti ${D}${sbindir}/$i + ln -sf ./dropbearmulti ${D}${sbindir}/$i done cat ${WORKDIR}/init | sed -e 's,/etc,${sysconfdir},g' \ -e 's,/usr/sbin,${sbindir},g' \ -- cgit v1.2.3 From dbe206398d5af283c1efc1a3ce49b4f25dc35122 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Sun, 9 Nov 2008 02:20:53 +0300 Subject: add some stricter versions Signed-off-by: Dmitry Baryshkov --- conf/distro/include/angstrom-2008-preferred-versions.inc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/conf/distro/include/angstrom-2008-preferred-versions.inc b/conf/distro/include/angstrom-2008-preferred-versions.inc index f7c1161bf2..bd47256322 100644 --- a/conf/distro/include/angstrom-2008-preferred-versions.inc +++ b/conf/distro/include/angstrom-2008-preferred-versions.inc @@ -12,6 +12,9 @@ PREFERRED_VERSION_gst-pulse = "0.9.7" PREFERRED_VERSION_gtk+ = "2.14.2" PREFERRED_VERSION_gtkmm = "2.14.1" PREFERRED_VERSION_inputproto = "1.4.4" +PREFERRED_VERSION_libgemwidget = "1.0" +PREFERRED_VERSION_libgpephone = "0.4" +PREFERRED_VERSION_libosip2 = "2.2.2" PREFERRED_VERSION_libsdl-x11 = "1.2.11" PREFERRED_VERSION_libtool = "2.2.4" PREFERRED_VERSION_libtool-native = "2.2.4" -- cgit v1.2.3 From 4a83e94eddd2c819753e32b39e0a4cf35c009f8c Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Wed, 5 Nov 2008 15:54:07 +0300 Subject: linux-rp-2.6.24: fix tosa kernel build Signed-off-by: Dmitry Baryshkov --- packages/linux/linux-rp-2.6.24/defconfig-tosa | 1 + packages/linux/linux-rp_2.6.24.bb | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/linux/linux-rp-2.6.24/defconfig-tosa b/packages/linux/linux-rp-2.6.24/defconfig-tosa index 379b8bc44e..db1aa16238 100644 --- a/packages/linux/linux-rp-2.6.24/defconfig-tosa +++ b/packages/linux/linux-rp-2.6.24/defconfig-tosa @@ -828,6 +828,7 @@ CONFIG_INPUT_EVDEV=y # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y +# CONFIG_SHARPSL_RC is not set # CONFIG_KEYBOARD_ATKBD is not set # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_LKKBD is not set diff --git a/packages/linux/linux-rp_2.6.24.bb b/packages/linux/linux-rp_2.6.24.bb index b19111ebcb..6275b31fd0 100644 --- a/packages/linux/linux-rp_2.6.24.bb +++ b/packages/linux/linux-rp_2.6.24.bb @@ -131,8 +131,6 @@ SRC_URI_append_tosa = "\ file://tosa/0014-tosa_udc_use_gpio_vbus.patch.patch;patch=1 \ file://tosa/0015-sharpsl-export-params.patch;patch=1 \ file://tosa/0016-This-patch-fixes-the-pxa25x-clocks-definitions-to-ad.patch;patch=1 \ - file://tosa/0017-Convert-pxa2xx-UDC-to-use-debugfs.patch;patch=1 \ - file://tosa/0018-Fix-the-pxa2xx_udc-to-balance-calls-to-clk_enable-cl.patch;patch=1 \ file://tosa/0026-I-don-t-think-we-should-check-for-IRQs-when-determin.patch;patch=1 \ file://tosa/0027-Add-LiMn-one-of-the-most-common-for-small-non-recha.patch;patch=1 \ file://tosa/0028-Add-suspend-resume-wakeup-support-for-pda_power.patch;patch=1 \ @@ -184,6 +182,8 @@ SRC_URI_append_tosa = "\ file://tosa/0056-Support-resetting-by-asserting-GPIO-pin.patch;patch=1 \ file://tosa/0057-Clean-up-tosa-resetting.patch;patch=1 \ " +# file://tosa/0017-Convert-pxa2xx-UDC-to-use-debugfs.patch;patch=1 \ +# file://tosa/0018-Fix-the-pxa2xx_udc-to-balance-calls-to-clk_enable-cl.patch;patch=1 \ SRC_URI_append_htcuniversal ="\ file://htcuni-acx.patch;patch=1;status=external \ -- cgit v1.2.3 From 5226b0ee7c7bbd6dc50677dd7fea5892f8c31ac6 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Tue, 11 Nov 2008 22:07:01 +0300 Subject: libim: do actually bump the PR as the source has changed Signed-off-by: Dmitry Baryshkov --- packages/gpephone/libim_0.2.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/gpephone/libim_0.2.bb b/packages/gpephone/libim_0.2.bb index a802aface5..7a42d49284 100644 --- a/packages/gpephone/libim_0.2.bb +++ b/packages/gpephone/libim_0.2.bb @@ -3,7 +3,7 @@ DESCRIPTION = "LiPS instant messenger library." SECTION = "gpe/libs" PRIORITY = "optional" DEPENDS = "glib-2.0 libgpg-error libgcrypt gnutls libidn iksemel gloox dbus-glib liblipsevent" -PR = "r0" +PR = "r1" inherit gpephone pkgconfig autotools -- cgit v1.2.3 From d3ccf9f0f7dbd1ec1390abefce0273534ec37c72 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Tue, 11 Nov 2008 22:07:39 +0300 Subject: liblipsevent: do actually bump the PR as the source has changed Signed-off-by: Dmitry Baryshkov --- packages/gpephone/liblipsevent_0.1.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/gpephone/liblipsevent_0.1.bb b/packages/gpephone/liblipsevent_0.1.bb index 2618bf61c4..fb13704ebf 100644 --- a/packages/gpephone/liblipsevent_0.1.bb +++ b/packages/gpephone/liblipsevent_0.1.bb @@ -3,7 +3,7 @@ DESCRIPTION = "LiPS event model library." SECTION = "gpe/libs" PRIORITY = "optional" DEPENDS = "glib-2.0" -PR = "r0" +PR = "r1" inherit gpephone pkgconfig autotools -- cgit v1.2.3 From 4afb8e36ce8648577f38a07aeda57fd15d8db9fb Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Tue, 11 Nov 2008 22:08:20 +0300 Subject: libmsgenabler: do actually bump the PR as the source has changed Signed-off-by: Dmitry Baryshkov --- packages/gpephone/libmsgenabler_1.0.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/gpephone/libmsgenabler_1.0.bb b/packages/gpephone/libmsgenabler_1.0.bb index b8d202a5dd..bde6a2fd6b 100644 --- a/packages/gpephone/libmsgenabler_1.0.bb +++ b/packages/gpephone/libmsgenabler_1.0.bb @@ -3,7 +3,7 @@ DESCRIPTION = "LiPS message backend library." SECTION = "gpe/libs" PRIORITY = "optional" DEPENDS = "glib-2.0 dbus-glib librecord sqlite3" -PR = "r1" +PR = "r2" GPE_TARBALL_SUFFIX = "bz2" -- cgit v1.2.3 From d7e3117b47c072405487bc736cb96711c4de69bf Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Tue, 11 Nov 2008 22:09:17 +0300 Subject: libchenabler: do actually bump the PR as the source has changed Signed-off-by: Dmitry Baryshkov --- packages/gpephone/libchenabler_0.1.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/gpephone/libchenabler_0.1.bb b/packages/gpephone/libchenabler_0.1.bb index 4c06e2fbd3..cbd28da249 100644 --- a/packages/gpephone/libchenabler_0.1.bb +++ b/packages/gpephone/libchenabler_0.1.bb @@ -3,7 +3,7 @@ DESCRIPTION = "LiPS voice call library." SECTION = "gpe/libs" PRIORITY = "optional" DEPENDS = "glib-2.0 sqlite3 librecord" -PR = "r1" +PR = "r2" GPE_TARBALL_SUFFIX = "gz" -- cgit v1.2.3 From de4d6d2321b3467eb03d424fd9a42dd1dfafa327 Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Tue, 11 Nov 2008 20:34:05 +0100 Subject: m8050: added config for AML M8050 device --- conf/machine/m8050.conf | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 conf/machine/m8050.conf diff --git a/conf/machine/m8050.conf b/conf/machine/m8050.conf new file mode 100644 index 0000000000..00272094ae --- /dev/null +++ b/conf/machine/m8050.conf @@ -0,0 +1,28 @@ +#----------------------------------------------------------------------------- +#@TYPE: Machine +#@NAME: AML M8050 +#@DESCRIPTION: Machine configuration for the American Microsystems Ltd M8050 Industrial PDA +#----------------------------------------------------------------------------- + +TARGET_ARCH = "arm" + +PREFERRED_PROVIDER_virtual/kernel ?= "linux" + +MACHINE_FEATURES = "kernel26 apm alsa bluetooth usbgadget usbhost wifi" +MACHINE_DISPLAY_WIDTH_PIXELS = "240" +MACHINE_DISPLAY_HEIGHT_PIXELS = "320" +MACHINE_DISPLAY_ORIENTATION = "270" + +XSERVER = "xserver-kdrive-fbdev" + +# package machine specific modules +MACHINE_EXTRA_RRECOMMENDS = "\ + kernel-module-libertas-sdio \ +" + +SERIAL_CONSOLE = "115200 ttySAC1" + +IMAGE_FSTYPES ?= "tar.gz" + +# tune for S3C24x0 +include conf/machine/include/tune-arm920t.inc -- cgit v1.2.3 From 650e3ca21c54d83d8b1cc5ffae4ac346eeae0d6c Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Tue, 11 Nov 2008 20:34:57 +0100 Subject: checksums.ini: added mime-support and gnome-themes --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 7680fc83dc..196e05b166 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -10962,6 +10962,10 @@ sha256=0e760acb85584ea3e828989c5588f827f0dd845d3dd6948e2aea12bb6278651d md5=d779a0b8f58776c28296ae62f253784e sha256=8ee3e48da07e20899a11adb9f2dd4dfc4922b43bcb1dc7bd78c55aceeb5eccc1 +[ftp://ftp.pl.debian.org/pub/debian/pool/main/m/mime-support/mime-support_3.28-1.tar.gz] +md5=d779a0b8f58776c28296ae62f253784e +sha256=8ee3e48da07e20899a11adb9f2dd4dfc4922b43bcb1dc7bd78c55aceeb5eccc1 + [http://www.denx.de/twiki/pub/Know/MiniFOHome/mini_fo-0-6-1-pre1.tar.bz2] md5=7e192e01b08023c7f3e63bf1c796bc14 sha256=68c64a38f0b29347f86871248f0399e7e1b12645dc6263af7b2e4940f1392eaa -- cgit v1.2.3 From d83b45f74d4c7fb8b10fe84ac02624608bed0e90 Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Tue, 11 Nov 2008 20:35:36 +0100 Subject: linux: added support for m8050 device --- packages/linux/linux-2.6.25/m8050/defconfig | 1009 + packages/linux/linux-2.6.25/m8050/m8050.diff | 479085 ++++++++++++++++++ .../linux-2.6.25/m8050/update-mach-types.diff | 13 + packages/linux/linux_2.6.25.bb | 3 + 4 files changed, 480110 insertions(+) create mode 100644 packages/linux/linux-2.6.25/m8050/defconfig create mode 100644 packages/linux/linux-2.6.25/m8050/m8050.diff create mode 100644 packages/linux/linux-2.6.25/m8050/update-mach-types.diff diff --git a/packages/linux/linux-2.6.25/m8050/defconfig b/packages/linux/linux-2.6.25/m8050/defconfig new file mode 100644 index 0000000000..a5e8d43dd4 --- /dev/null +++ b/packages/linux/linux-2.6.25/m8050/defconfig @@ -0,0 +1,1009 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.25 +# Fri Oct 31 08:29:20 2008 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +# CONFIG_GENERIC_TIME is not set +# CONFIG_GENERIC_CLOCKEVENTS is not set +CONFIG_MMU=y +CONFIG_NO_IOPORT=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_ARCH_HAS_ILOG2_U32 is not set +# CONFIG_ARCH_HAS_ILOG2_U64 is not set +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ARCH_SUPPORTS_AOUT=y +CONFIG_ZONE_DMA=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_AUDIT is not set +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=18 +# CONFIG_CGROUPS is not set +CONFIG_GROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_USER_SCHED=y +# CONFIG_CGROUP_SCHED is not set +CONFIG_SYSFS_DEPRECATED=y +CONFIG_SYSFS_DEPRECATED_V2=y +# CONFIG_RELAY is not set +# CONFIG_NAMESPACES is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y +CONFIG_EMBEDDED=y +CONFIG_UID16=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +# CONFIG_BUG is not set +CONFIG_ELF_CORE=y +CONFIG_COMPAT_BRK=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_ANON_INODES=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +# CONFIG_PROFILING is not set +# CONFIG_MARKERS is not set +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_KMOD is not set +CONFIG_BLOCK=y +# CONFIG_LBD is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_LSF is not set +# CONFIG_BLK_DEV_BSG is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +CONFIG_CLASSIC_RCU=y + +# +# System Type +# +# CONFIG_ARCH_AAEC2000 is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_REALVIEW is not set +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_H720X is not set +# CONFIG_ARCH_IMX is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_NS9XXX is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_ORION is not set +# CONFIG_ARCH_PNX4008 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +CONFIG_ARCH_S3C2410=y +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_LH7A40X is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_ARCH_OMAP is not set +# CONFIG_ARCH_MSM7X00A is not set +CONFIG_PLAT_S3C24XX=y +CONFIG_CPU_S3C244X=y +CONFIG_S3C2410_DMA=y +CONFIG_S3C2410_DMA_DEBUG=y +CONFIG_PLAT_S3C=y +CONFIG_CPU_LLSERIAL_S3C2440_ONLY=y +CONFIG_CPU_LLSERIAL_S3C2440=y + +# +# Boot options +# +# CONFIG_S3C_BOOT_ERROR_RESET is not set + +# +# Power management +# +CONFIG_S3C_LOWLEVEL_UART_PORT=1 + +# +# S3C2400 Machines +# +CONFIG_S3C2410_GPIO=y +CONFIG_S3C2410_CLOCK=y + +# +# S3C2410 Machines +# +# CONFIG_ARCH_SMDK2410 is not set +# CONFIG_ARCH_H1940 is not set +# CONFIG_MACH_N30 is not set +# CONFIG_ARCH_BAST is not set +# CONFIG_MACH_OTOM is not set +# CONFIG_MACH_AML_M5900 is not set +# CONFIG_MACH_VR1000 is not set +# CONFIG_MACH_QT2410 is not set + +# +# S3C2412 Machines +# +# CONFIG_MACH_SMDK2413 is not set +# CONFIG_MACH_SMDK2412 is not set +# CONFIG_MACH_VSTMS is not set +CONFIG_CPU_S3C2440=y +CONFIG_S3C2440_DMA=y + +# +# S3C2440 Machines +# +CONFIG_MACH_AML_M8050=y +# CONFIG_MACH_ANUBIS is not set +# CONFIG_MACH_OSIRIS is not set +# CONFIG_MACH_RX3715 is not set +# CONFIG_ARCH_S3C2440 is not set +# CONFIG_MACH_NEXCODER_2440 is not set + +# +# S3C2442 Machines +# + +# +# S3C2443 Machines +# +# CONFIG_MACH_SMDK2443 is not set + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_ARM920T=y +CONFIG_CPU_32v4T=y +CONFIG_CPU_ABRT_EV4T=y +CONFIG_CPU_CACHE_V4WT=y +CONFIG_CPU_CACHE_VIVT=y +CONFIG_CPU_COPY_V4WB=y +CONFIG_CPU_TLB_V4WBI=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +# CONFIG_ARM_THUMB is not set +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_WRITETHROUGH is not set +# CONFIG_OUTER_CACHE is not set + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +# CONFIG_TICK_ONESHOT is not set +# CONFIG_PREEMPT is not set +# CONFIG_NO_IDLE_HZ is not set +CONFIG_HZ=200 +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_SPARSEMEM_STATIC is not set +# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set +CONFIG_SPLIT_PTLOCK_CPUS=4096 +# CONFIG_RESOURCES_64BIT is not set +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Boot options +# +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=ttySAC0 root=/dev/ram0" +# CONFIG_XIP_KERNEL is not set +# CONFIG_KEXEC is not set + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_AOUT=y +# CONFIG_BINFMT_MISC is not set + +# +# Power management options +# +# CONFIG_PM is not set +CONFIG_ARCH_SUSPEND_POSSIBLE=y + +# +# Networking +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INET_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +# CONFIG_INET_DIAG is not set +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=y +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET6_TUNNEL is not set +# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET6_XFRM_MODE_TUNNEL is not set +# CONFIG_INET6_XFRM_MODE_BEET is not set +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +# CONFIG_IPV6_SIT is not set +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set + +# +# Wireless +# +# CONFIG_CFG80211 is not set +CONFIG_WIRELESS_EXT=y +# CONFIG_MAC80211 is not set +CONFIG_IEEE80211=y +# CONFIG_IEEE80211_DEBUG is not set +# CONFIG_IEEE80211_CRYPT_WEP is not set +# CONFIG_IEEE80211_CRYPT_CCMP is not set +# CONFIG_IEEE80211_CRYPT_TKIP is not set +# CONFIG_IEEE80211_SOFTMAC is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_CONNECTOR is not set +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_CONCAT is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_VERIFY_WRITE=y +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +CONFIG_MTD_NAND_IDS=y +CONFIG_MTD_NAND_S3C2410=y +# CONFIG_MTD_NAND_S3C2410_DEBUG is not set +# CONFIG_MTD_NAND_S3C2410_HWECC is not set +# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_NAND_NANDSIM is not set +# CONFIG_MTD_NAND_PLATFORM is not set +# CONFIG_MTD_ONENAND is not set + +# +# UBI - Unsorted block images +# +# CONFIG_MTD_UBI is not set +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=4 +CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_BLK_DEV_XIP is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_MISC_DEVICES is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +# CONFIG_SCSI is not set +# CONFIG_SCSI_DMA is not set +# CONFIG_SCSI_NETLINK is not set +# CONFIG_ATA is not set +# CONFIG_MD is not set +CONFIG_NETDEVICES=y +# CONFIG_NETDEVICES_MULTIQUEUE is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_MACVLAN is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_VETH is not set +# CONFIG_NET_ETHERNET is not set +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set + +# +# Wireless LAN +# +# CONFIG_WLAN_PRE80211 is not set +CONFIG_WLAN_80211=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_SDIO=m +# CONFIG_LIBERTAS_DEBUG is not set +# CONFIG_HOSTAP is not set +# CONFIG_WAN is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=320 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set +# CONFIG_INPUT_GENERICLEDS is not set + +# +# Input Device Drivers +# +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_TOUCHSCREEN_ADS7846 is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +CONFIG_TOUCHSCREEN_S3C2410=y +# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_UCB1400 is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_LIBPS2 is not set +# CONFIG_SERIO_RAW is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_INTELLIHEAD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_8250 is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_S3C2410=y +CONFIG_SERIAL_S3C2410_CONSOLE=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=32 +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_NVRAM is not set +# CONFIG_R3964 is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +# CONFIG_I2C_CHARDEV is not set + +# +# I2C Algorithms +# +# CONFIG_I2C_ALGOBIT is not set +# CONFIG_I2C_ALGOPCF is not set +# CONFIG_I2C_ALGOPCA is not set + +# +# I2C Hardware Bus support +# +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +CONFIG_I2C_S3C2410=y +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_DS1682 is not set +# CONFIG_SENSORS_EEPROM is not set +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_PCF8575 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_TPS65010 is not set +# CONFIG_SENSORS_MAX6875 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set + +# +# SPI support +# +CONFIG_SPI=y +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +CONFIG_SPI_BITBANG=y +CONFIG_SPI_S3C24XX=y +CONFIG_SPI_S3C24XX_GPIO=y + +# +# SPI Protocol Masters +# +# CONFIG_SPI_AT25 is not set +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_TLE62X0 is not set +# CONFIG_W1 is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_HWMON is not set +# CONFIG_WATCHDOG is not set + +# +# Sonics Silicon Backplane +# +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_ASIC3 is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set +# CONFIG_DVB_CORE is not set +# CONFIG_DAB is not set + +# +# Graphics support +# +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_SYS_FOPS is not set +CONFIG_FB_DEFERRED_IO=y +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_S3C2410=y +# CONFIG_FB_S3C2410_DEBUG is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +# +# Display device support +# +# CONFIG_DISPLAY_SUPPORT is not set + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +# CONFIG_LOGO_LINUX_CLUT224 is not set +CONFIG_LOGO_M8050_CLUT224=y + +# +# Sound +# +CONFIG_SOUND=y + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_SEQUENCER=y +# CONFIG_SND_SEQ_DUMMY is not set +# CONFIG_SND_MIXER_OSS is not set +# CONFIG_SND_PCM_OSS is not set +# CONFIG_SND_SEQUENCER_OSS is not set +# CONFIG_SND_DYNAMIC_MINORS is not set +# CONFIG_SND_SUPPORT_OLD_API is not set +# CONFIG_SND_VERBOSE_PROCFS is not set +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set + +# +# Generic devices +# +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_VIRMIDI is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set + +# +# ALSA ARM devices +# + +# +# SPI devices +# + +# +# System on Chip audio support +# +CONFIG_SND_SOC=y +CONFIG_SND_S3C24XX_SOC=y +CONFIG_SND_S3C24XX_SOC_I2S=y +CONFIG_SND_S3C24XX_SOC_M8050_WM8750=y +# CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650 is not set + +# +# SoC Audio support for SuperH +# + +# +# ALSA SoC audio for Freescale SOCs +# +CONFIG_SND_SOC_WM8750=y + +# +# Open Sound System +# +# CONFIG_SOUND_PRIME is not set +# CONFIG_HID_SUPPORT is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y +# CONFIG_SDIO_UART is not set + +# +# MMC/SD Host Controller Drivers +# +CONFIG_MMC_SPI=y +# CONFIG_MMC_S3C is not set +# CONFIG_NEW_LEDS is not set +CONFIG_RTC_LIB=y +# CONFIG_RTC_CLASS is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT4DEV_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +CONFIG_DNOTIFY=y +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +# CONFIG_MSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_FS_WBUF_VERIFY=y +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set + +# +# Kernel hacking +# +CONFIG_PRINTK_TIME=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_KERNEL is not set +CONFIG_FRAME_POINTER=y +# CONFIG_SAMPLES is not set +# CONFIG_DEBUG_USER is not set +CONFIG_DEBUG_S3C_UART=1 + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITY_FILE_CAPABILITIES is not set +# CONFIG_CRYPTO is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +# CONFIG_CRC_CCITT is not set +# CONFIG_CRC16 is not set +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +CONFIG_CRC7=y +# CONFIG_LIBCRC32C is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_PLIST=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_DMA=y diff --git a/packages/linux/linux-2.6.25/m8050/m8050.diff b/packages/linux/linux-2.6.25/m8050/m8050.diff new file mode 100644 index 0000000000..65ca656f6a --- /dev/null +++ b/packages/linux/linux-2.6.25/m8050/m8050.diff @@ -0,0 +1,479085 @@ +diff -X linux-git/Documentation/dontdiff -Naur linux-git/arch/arm/configs/m8050_defconfig linux-2.6.25-m8050/arch/arm/configs/m8050_defconfig +--- linux-git/arch/arm/configs/m8050_defconfig 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/arch/arm/configs/m8050_defconfig 2008-05-07 13:50:18.000000000 +0200 +@@ -0,0 +1,752 @@ ++# ++# Automatically generated make config: don't edit ++# Linux kernel version: 2.6.25 ++# Wed May 7 16:39:08 2008 ++# ++CONFIG_ARM=y ++CONFIG_SYS_SUPPORTS_APM_EMULATION=y ++CONFIG_GENERIC_GPIO=y ++# CONFIG_GENERIC_TIME is not set ++# CONFIG_GENERIC_CLOCKEVENTS is not set ++CONFIG_MMU=y ++CONFIG_NO_IOPORT=y ++CONFIG_GENERIC_HARDIRQS=y ++CONFIG_STACKTRACE_SUPPORT=y ++CONFIG_LOCKDEP_SUPPORT=y ++CONFIG_TRACE_IRQFLAGS_SUPPORT=y ++CONFIG_HARDIRQS_SW_RESEND=y ++CONFIG_GENERIC_IRQ_PROBE=y ++CONFIG_RWSEM_GENERIC_SPINLOCK=y ++# CONFIG_ARCH_HAS_ILOG2_U32 is not set ++# CONFIG_ARCH_HAS_ILOG2_U64 is not set ++CONFIG_GENERIC_HWEIGHT=y ++CONFIG_GENERIC_CALIBRATE_DELAY=y ++CONFIG_ARCH_SUPPORTS_AOUT=y ++CONFIG_ZONE_DMA=y ++CONFIG_VECTORS_BASE=0xffff0000 ++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" ++ ++# ++# General setup ++# ++CONFIG_EXPERIMENTAL=y ++CONFIG_BROKEN_ON_SMP=y ++CONFIG_INIT_ENV_ARG_LIMIT=32 ++CONFIG_LOCALVERSION="" ++CONFIG_LOCALVERSION_AUTO=y ++CONFIG_SWAP=y ++CONFIG_SYSVIPC=y ++CONFIG_SYSVIPC_SYSCTL=y ++# CONFIG_BSD_PROCESS_ACCT is not set ++# CONFIG_IKCONFIG is not set ++CONFIG_LOG_BUF_SHIFT=16 ++# CONFIG_CGROUPS is not set ++CONFIG_GROUP_SCHED=y ++CONFIG_FAIR_GROUP_SCHED=y ++# CONFIG_RT_GROUP_SCHED is not set ++CONFIG_USER_SCHED=y ++# CONFIG_CGROUP_SCHED is not set ++CONFIG_SYSFS_DEPRECATED=y ++CONFIG_SYSFS_DEPRECATED_V2=y ++# CONFIG_RELAY is not set ++CONFIG_NAMESPACES=y ++# CONFIG_UTS_NS is not set ++# CONFIG_IPC_NS is not set ++# CONFIG_USER_NS is not set ++# CONFIG_PID_NS is not set ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_INITRAMFS_SOURCE="" ++CONFIG_CC_OPTIMIZE_FOR_SIZE=y ++CONFIG_SYSCTL=y ++# CONFIG_EMBEDDED is not set ++CONFIG_UID16=y ++CONFIG_SYSCTL_SYSCALL=y ++CONFIG_KALLSYMS=y ++# CONFIG_KALLSYMS_ALL is not set ++# CONFIG_KALLSYMS_EXTRA_PASS is not set ++CONFIG_HOTPLUG=y ++CONFIG_PRINTK=y ++CONFIG_BUG=y ++CONFIG_ELF_CORE=y ++CONFIG_COMPAT_BRK=y ++CONFIG_BASE_FULL=y ++CONFIG_FUTEX=y ++CONFIG_ANON_INODES=y ++CONFIG_EPOLL=y ++CONFIG_SIGNALFD=y ++CONFIG_TIMERFD=y ++CONFIG_EVENTFD=y ++CONFIG_SHMEM=y ++CONFIG_VM_EVENT_COUNTERS=y ++CONFIG_SLAB=y ++# CONFIG_SLUB is not set ++# CONFIG_SLOB is not set ++# CONFIG_PROFILING is not set ++# CONFIG_MARKERS is not set ++CONFIG_HAVE_OPROFILE=y ++# CONFIG_KPROBES is not set ++CONFIG_HAVE_KPROBES=y ++CONFIG_HAVE_KRETPROBES=y ++CONFIG_PROC_PAGE_MONITOR=y ++CONFIG_SLABINFO=y ++CONFIG_RT_MUTEXES=y ++# CONFIG_TINY_SHMEM is not set ++CONFIG_BASE_SMALL=0 ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++# CONFIG_MODULE_FORCE_UNLOAD is not set ++# CONFIG_MODVERSIONS is not set ++# CONFIG_MODULE_SRCVERSION_ALL is not set ++# CONFIG_KMOD is not set ++CONFIG_BLOCK=y ++# CONFIG_LBD is not set ++# CONFIG_BLK_DEV_IO_TRACE is not set ++# CONFIG_LSF is not set ++# CONFIG_BLK_DEV_BSG is not set ++ ++# ++# IO Schedulers ++# ++CONFIG_IOSCHED_NOOP=y ++CONFIG_IOSCHED_AS=y ++CONFIG_IOSCHED_DEADLINE=y ++CONFIG_IOSCHED_CFQ=y ++CONFIG_DEFAULT_AS=y ++# CONFIG_DEFAULT_DEADLINE is not set ++# CONFIG_DEFAULT_CFQ is not set ++# CONFIG_DEFAULT_NOOP is not set ++CONFIG_DEFAULT_IOSCHED="anticipatory" ++CONFIG_CLASSIC_RCU=y ++ ++# ++# System Type ++# ++# CONFIG_ARCH_AAEC2000 is not set ++# CONFIG_ARCH_INTEGRATOR is not set ++# CONFIG_ARCH_REALVIEW is not set ++# CONFIG_ARCH_VERSATILE is not set ++# CONFIG_ARCH_AT91 is not set ++# CONFIG_ARCH_CLPS7500 is not set ++# CONFIG_ARCH_CLPS711X is not set ++# CONFIG_ARCH_CO285 is not set ++# CONFIG_ARCH_EBSA110 is not set ++# CONFIG_ARCH_EP93XX is not set ++# CONFIG_ARCH_FOOTBRIDGE is not set ++# CONFIG_ARCH_NETX is not set ++# CONFIG_ARCH_H720X is not set ++# CONFIG_ARCH_IMX is not set ++# CONFIG_ARCH_IOP13XX is not set ++# CONFIG_ARCH_IOP32X is not set ++# CONFIG_ARCH_IOP33X is not set ++# CONFIG_ARCH_IXP23XX is not set ++# CONFIG_ARCH_IXP2000 is not set ++# CONFIG_ARCH_IXP4XX is not set ++# CONFIG_ARCH_L7200 is not set ++# CONFIG_ARCH_KS8695 is not set ++# CONFIG_ARCH_NS9XXX is not set ++# CONFIG_ARCH_MXC is not set ++# CONFIG_ARCH_ORION is not set ++# CONFIG_ARCH_PNX4008 is not set ++# CONFIG_ARCH_PXA is not set ++# CONFIG_ARCH_RPC is not set ++# CONFIG_ARCH_SA1100 is not set ++CONFIG_ARCH_S3C2410=y ++# CONFIG_ARCH_SHARK is not set ++# CONFIG_ARCH_LH7A40X is not set ++# CONFIG_ARCH_DAVINCI is not set ++# CONFIG_ARCH_OMAP is not set ++# CONFIG_ARCH_MSM7X00A is not set ++CONFIG_PLAT_S3C24XX=y ++CONFIG_CPU_S3C244X=y ++CONFIG_S3C2410_DMA=y ++# CONFIG_S3C2410_DMA_DEBUG is not set ++CONFIG_PLAT_S3C=y ++CONFIG_CPU_LLSERIAL_S3C2440_ONLY=y ++CONFIG_CPU_LLSERIAL_S3C2440=y ++ ++# ++# Boot options ++# ++# CONFIG_S3C_BOOT_ERROR_RESET is not set ++ ++# ++# Power management ++# ++# CONFIG_S3C2410_PM_DEBUG is not set ++# CONFIG_S3C2410_PM_CHECK is not set ++CONFIG_S3C_LOWLEVEL_UART_PORT=0 ++ ++# ++# S3C2400 Machines ++# ++CONFIG_S3C2410_PM=y ++CONFIG_S3C2410_GPIO=y ++CONFIG_S3C2410_CLOCK=y ++ ++# ++# S3C2410 Machines ++# ++# CONFIG_ARCH_SMDK2410 is not set ++# CONFIG_ARCH_H1940 is not set ++# CONFIG_MACH_N30 is not set ++# CONFIG_ARCH_BAST is not set ++# CONFIG_MACH_OTOM is not set ++# CONFIG_MACH_AML_M5900 is not set ++# CONFIG_MACH_VR1000 is not set ++# CONFIG_MACH_QT2410 is not set ++ ++# ++# S3C2412 Machines ++# ++# CONFIG_MACH_SMDK2413 is not set ++# CONFIG_MACH_SMDK2412 is not set ++# CONFIG_MACH_VSTMS is not set ++CONFIG_CPU_S3C2440=y ++CONFIG_S3C2440_DMA=y ++ ++# ++# S3C2440 Machines ++# ++CONFIG_MACH_AML_M8050=y ++# CONFIG_MACH_ANUBIS is not set ++# CONFIG_MACH_OSIRIS is not set ++# CONFIG_MACH_RX3715 is not set ++# CONFIG_ARCH_S3C2440 is not set ++# CONFIG_MACH_NEXCODER_2440 is not set ++ ++# ++# S3C2442 Machines ++# ++ ++# ++# S3C2443 Machines ++# ++# CONFIG_MACH_SMDK2443 is not set ++ ++# ++# Processor Type ++# ++CONFIG_CPU_32=y ++CONFIG_CPU_ARM920T=y ++CONFIG_CPU_32v4T=y ++CONFIG_CPU_ABRT_EV4T=y ++CONFIG_CPU_CACHE_V4WT=y ++CONFIG_CPU_CACHE_VIVT=y ++CONFIG_CPU_COPY_V4WB=y ++CONFIG_CPU_TLB_V4WBI=y ++CONFIG_CPU_CP15=y ++CONFIG_CPU_CP15_MMU=y ++ ++# ++# Processor Features ++# ++# CONFIG_ARM_THUMB is not set ++# CONFIG_CPU_ICACHE_DISABLE is not set ++# CONFIG_CPU_DCACHE_DISABLE is not set ++# CONFIG_CPU_DCACHE_WRITETHROUGH is not set ++# CONFIG_OUTER_CACHE is not set ++ ++# ++# Bus support ++# ++# CONFIG_PCI_SYSCALL is not set ++# CONFIG_ARCH_SUPPORTS_MSI is not set ++# CONFIG_PCCARD is not set ++ ++# ++# Kernel Features ++# ++# CONFIG_TICK_ONESHOT is not set ++# CONFIG_PREEMPT is not set ++# CONFIG_NO_IDLE_HZ is not set ++CONFIG_HZ=200 ++# CONFIG_AEABI is not set ++# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set ++CONFIG_SELECT_MEMORY_MODEL=y ++CONFIG_FLATMEM_MANUAL=y ++# CONFIG_DISCONTIGMEM_MANUAL is not set ++# CONFIG_SPARSEMEM_MANUAL is not set ++CONFIG_FLATMEM=y ++CONFIG_FLAT_NODE_MEM_MAP=y ++# CONFIG_SPARSEMEM_STATIC is not set ++# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set ++CONFIG_SPLIT_PTLOCK_CPUS=4096 ++# CONFIG_RESOURCES_64BIT is not set ++CONFIG_ZONE_DMA_FLAG=1 ++CONFIG_BOUNCE=y ++CONFIG_VIRT_TO_BUS=y ++CONFIG_ALIGNMENT_TRAP=y ++ ++# ++# Boot options ++# ++CONFIG_ZBOOT_ROM_TEXT=0x0 ++CONFIG_ZBOOT_ROM_BSS=0x0 ++CONFIG_CMDLINE="console=ttySAC0 root=/dev/ram0" ++# CONFIG_XIP_KERNEL is not set ++# CONFIG_KEXEC is not set ++ ++# ++# Floating point emulation ++# ++ ++# ++# At least one emulation must be selected ++# ++CONFIG_FPE_NWFPE=y ++# CONFIG_FPE_NWFPE_XP is not set ++# CONFIG_FPE_FASTFPE is not set ++ ++# ++# Userspace binary formats ++# ++CONFIG_BINFMT_ELF=y ++CONFIG_BINFMT_AOUT=y ++# CONFIG_BINFMT_MISC is not set ++# CONFIG_ARTHUR is not set ++ ++# ++# Power management options ++# ++CONFIG_PM=y ++# CONFIG_PM_LEGACY is not set ++# CONFIG_PM_DEBUG is not set ++CONFIG_PM_SLEEP=y ++CONFIG_SUSPEND=y ++CONFIG_SUSPEND_FREEZER=y ++# CONFIG_APM_EMULATION is not set ++CONFIG_ARCH_SUSPEND_POSSIBLE=y ++ ++# ++# Networking ++# ++# CONFIG_NET is not set ++ ++# ++# Device Drivers ++# ++ ++# ++# Generic Driver Options ++# ++CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" ++CONFIG_STANDALONE=y ++CONFIG_PREVENT_FIRMWARE_BUILD=y ++# CONFIG_FW_LOADER is not set ++# CONFIG_DEBUG_DRIVER is not set ++# CONFIG_DEBUG_DEVRES is not set ++# CONFIG_SYS_HYPERVISOR is not set ++# CONFIG_MTD is not set ++# CONFIG_PARPORT is not set ++CONFIG_BLK_DEV=y ++# CONFIG_BLK_DEV_COW_COMMON is not set ++CONFIG_BLK_DEV_LOOP=y ++# CONFIG_BLK_DEV_CRYPTOLOOP is not set ++CONFIG_BLK_DEV_RAM=y ++CONFIG_BLK_DEV_RAM_COUNT=16 ++CONFIG_BLK_DEV_RAM_SIZE=4096 ++# CONFIG_BLK_DEV_XIP is not set ++# CONFIG_CDROM_PKTCDVD is not set ++# CONFIG_MISC_DEVICES is not set ++CONFIG_HAVE_IDE=y ++# CONFIG_IDE is not set ++ ++# ++# SCSI device support ++# ++# CONFIG_RAID_ATTRS is not set ++# CONFIG_SCSI is not set ++# CONFIG_SCSI_DMA is not set ++# CONFIG_SCSI_NETLINK is not set ++# CONFIG_ATA is not set ++# CONFIG_MD is not set ++ ++# ++# Input device support ++# ++CONFIG_INPUT=y ++# CONFIG_INPUT_FF_MEMLESS is not set ++# CONFIG_INPUT_POLLDEV is not set ++ ++# ++# Userland interfaces ++# ++CONFIG_INPUT_MOUSEDEV=y ++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set ++CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 ++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 ++# CONFIG_INPUT_JOYDEV is not set ++# CONFIG_INPUT_EVDEV is not set ++# CONFIG_INPUT_EVBUG is not set ++ ++# ++# Input Device Drivers ++# ++# CONFIG_INPUT_KEYBOARD is not set ++# CONFIG_INPUT_MOUSE is not set ++# CONFIG_INPUT_JOYSTICK is not set ++# CONFIG_INPUT_TABLET is not set ++# CONFIG_INPUT_TOUCHSCREEN is not set ++# CONFIG_INPUT_MISC is not set ++ ++# ++# Hardware I/O ports ++# ++# CONFIG_SERIO is not set ++# CONFIG_GAMEPORT is not set ++ ++# ++# Character devices ++# ++CONFIG_VT=y ++CONFIG_VT_CONSOLE=y ++CONFIG_HW_CONSOLE=y ++# CONFIG_VT_HW_CONSOLE_BINDING is not set ++CONFIG_SERIAL_NONSTANDARD=y ++# CONFIG_N_HDLC is not set ++# CONFIG_RISCOM8 is not set ++# CONFIG_SPECIALIX is not set ++# CONFIG_RIO is not set ++# CONFIG_STALDRV is not set ++ ++# ++# Serial drivers ++# ++CONFIG_SERIAL_8250=y ++CONFIG_SERIAL_8250_CONSOLE=y ++CONFIG_SERIAL_8250_NR_UARTS=8 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=4 ++CONFIG_SERIAL_8250_EXTENDED=y ++CONFIG_SERIAL_8250_MANY_PORTS=y ++CONFIG_SERIAL_8250_SHARE_IRQ=y ++# CONFIG_SERIAL_8250_DETECT_IRQ is not set ++# CONFIG_SERIAL_8250_RSA is not set ++ ++# ++# Non-8250 serial port support ++# ++CONFIG_SERIAL_S3C2410=y ++CONFIG_SERIAL_S3C2410_CONSOLE=y ++CONFIG_SERIAL_CORE=y ++CONFIG_SERIAL_CORE_CONSOLE=y ++CONFIG_UNIX98_PTYS=y ++CONFIG_LEGACY_PTYS=y ++CONFIG_LEGACY_PTY_COUNT=256 ++# CONFIG_IPMI_HANDLER is not set ++CONFIG_HW_RANDOM=y ++# CONFIG_NVRAM is not set ++# CONFIG_R3964 is not set ++# CONFIG_RAW_DRIVER is not set ++# CONFIG_TCG_TPM is not set ++# CONFIG_I2C is not set ++ ++# ++# SPI support ++# ++# CONFIG_SPI is not set ++# CONFIG_SPI_MASTER is not set ++# CONFIG_W1 is not set ++# CONFIG_POWER_SUPPLY is not set ++# CONFIG_HWMON is not set ++# CONFIG_WATCHDOG is not set ++ ++# ++# Sonics Silicon Backplane ++# ++CONFIG_SSB_POSSIBLE=y ++# CONFIG_SSB is not set ++ ++# ++# Multifunction device drivers ++# ++# CONFIG_MFD_SM501 is not set ++# CONFIG_MFD_ASIC3 is not set ++ ++# ++# Multimedia devices ++# ++# CONFIG_VIDEO_DEV is not set ++# CONFIG_DAB is not set ++ ++# ++# Graphics support ++# ++# CONFIG_VGASTATE is not set ++# CONFIG_VIDEO_OUTPUT_CONTROL is not set ++CONFIG_FB=y ++# CONFIG_FIRMWARE_EDID is not set ++# CONFIG_FB_DDC is not set ++CONFIG_FB_CFB_FILLRECT=y ++CONFIG_FB_CFB_COPYAREA=y ++CONFIG_FB_CFB_IMAGEBLIT=y ++# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set ++# CONFIG_FB_SYS_FILLRECT is not set ++# CONFIG_FB_SYS_COPYAREA is not set ++# CONFIG_FB_SYS_IMAGEBLIT is not set ++# CONFIG_FB_SYS_FOPS is not set ++CONFIG_FB_DEFERRED_IO=y ++# CONFIG_FB_SVGALIB is not set ++# CONFIG_FB_MACMODES is not set ++# CONFIG_FB_BACKLIGHT is not set ++# CONFIG_FB_MODE_HELPERS is not set ++# CONFIG_FB_TILEBLITTING is not set ++ ++# ++# Frame buffer hardware drivers ++# ++# CONFIG_FB_S1D13XXX is not set ++CONFIG_FB_S3C2410=y ++CONFIG_FB_S3C2410_DEBUG=y ++# CONFIG_FB_VIRTUAL is not set ++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set ++ ++# ++# Display device support ++# ++CONFIG_DISPLAY_SUPPORT=y ++ ++# ++# Display hardware drivers ++# ++ ++# ++# Console display driver support ++# ++# CONFIG_VGA_CONSOLE is not set ++CONFIG_DUMMY_CONSOLE=y ++CONFIG_FRAMEBUFFER_CONSOLE=y ++CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y ++CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y ++CONFIG_FONTS=y ++CONFIG_FONT_8x8=y ++# CONFIG_FONT_8x16 is not set ++# CONFIG_FONT_6x11 is not set ++# CONFIG_FONT_7x14 is not set ++# CONFIG_FONT_PEARL_8x8 is not set ++# CONFIG_FONT_ACORN_8x8 is not set ++# CONFIG_FONT_MINI_4x6 is not set ++# CONFIG_FONT_SUN8x16 is not set ++# CONFIG_FONT_SUN12x22 is not set ++# CONFIG_FONT_10x18 is not set ++# CONFIG_LOGO is not set ++ ++# ++# Sound ++# ++# CONFIG_SOUND is not set ++# CONFIG_HID_SUPPORT is not set ++# CONFIG_USB_SUPPORT is not set ++# CONFIG_MMC is not set ++# CONFIG_NEW_LEDS is not set ++CONFIG_RTC_LIB=y ++CONFIG_RTC_CLASS=y ++CONFIG_RTC_HCTOSYS=y ++CONFIG_RTC_HCTOSYS_DEVICE="rtc0" ++# CONFIG_RTC_DEBUG is not set ++ ++# ++# RTC interfaces ++# ++CONFIG_RTC_INTF_SYSFS=y ++CONFIG_RTC_INTF_PROC=y ++CONFIG_RTC_INTF_DEV=y ++# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set ++# CONFIG_RTC_DRV_TEST is not set ++ ++# ++# SPI RTC drivers ++# ++ ++# ++# Platform RTC drivers ++# ++# CONFIG_RTC_DRV_CMOS is not set ++# CONFIG_RTC_DRV_DS1511 is not set ++# CONFIG_RTC_DRV_DS1553 is not set ++# CONFIG_RTC_DRV_DS1742 is not set ++# CONFIG_RTC_DRV_STK17TA8 is not set ++# CONFIG_RTC_DRV_M48T86 is not set ++# CONFIG_RTC_DRV_M48T59 is not set ++# CONFIG_RTC_DRV_V3020 is not set ++ ++# ++# on-CPU RTC drivers ++# ++CONFIG_RTC_DRV_S3C=y ++ ++# ++# File systems ++# ++CONFIG_EXT2_FS=y ++# CONFIG_EXT2_FS_XATTR is not set ++# CONFIG_EXT2_FS_XIP is not set ++# CONFIG_EXT3_FS is not set ++# CONFIG_EXT4DEV_FS is not set ++# CONFIG_REISERFS_FS is not set ++# CONFIG_JFS_FS is not set ++# CONFIG_FS_POSIX_ACL is not set ++# CONFIG_XFS_FS is not set ++# CONFIG_GFS2_FS is not set ++CONFIG_DNOTIFY=y ++CONFIG_INOTIFY=y ++CONFIG_INOTIFY_USER=y ++# CONFIG_QUOTA is not set ++# CONFIG_AUTOFS_FS is not set ++# CONFIG_AUTOFS4_FS is not set ++# CONFIG_FUSE_FS is not set ++ ++# ++# CD-ROM/DVD Filesystems ++# ++# CONFIG_ISO9660_FS is not set ++# CONFIG_UDF_FS is not set ++ ++# ++# DOS/FAT/NT Filesystems ++# ++# CONFIG_MSDOS_FS is not set ++# CONFIG_VFAT_FS is not set ++# CONFIG_NTFS_FS is not set ++ ++# ++# Pseudo filesystems ++# ++CONFIG_PROC_FS=y ++CONFIG_PROC_SYSCTL=y ++CONFIG_SYSFS=y ++# CONFIG_TMPFS is not set ++# CONFIG_HUGETLB_PAGE is not set ++# CONFIG_CONFIGFS_FS is not set ++ ++# ++# Miscellaneous filesystems ++# ++# CONFIG_ADFS_FS is not set ++# CONFIG_AFFS_FS is not set ++# CONFIG_HFS_FS is not set ++# CONFIG_HFSPLUS_FS is not set ++# CONFIG_BEFS_FS is not set ++# CONFIG_BFS_FS is not set ++# CONFIG_EFS_FS is not set ++# CONFIG_CRAMFS is not set ++# CONFIG_VXFS_FS is not set ++# CONFIG_MINIX_FS is not set ++# CONFIG_HPFS_FS is not set ++# CONFIG_QNX4FS_FS is not set ++# CONFIG_ROMFS_FS is not set ++# CONFIG_SYSV_FS is not set ++# CONFIG_UFS_FS is not set ++ ++# ++# Partition Types ++# ++# CONFIG_PARTITION_ADVANCED is not set ++CONFIG_MSDOS_PARTITION=y ++CONFIG_NLS=y ++CONFIG_NLS_DEFAULT="iso8859-1" ++CONFIG_NLS_CODEPAGE_437=y ++# CONFIG_NLS_CODEPAGE_737 is not set ++# CONFIG_NLS_CODEPAGE_775 is not set ++# CONFIG_NLS_CODEPAGE_850 is not set ++# CONFIG_NLS_CODEPAGE_852 is not set ++# CONFIG_NLS_CODEPAGE_855 is not set ++# CONFIG_NLS_CODEPAGE_857 is not set ++# CONFIG_NLS_CODEPAGE_860 is not set ++# CONFIG_NLS_CODEPAGE_861 is not set ++# CONFIG_NLS_CODEPAGE_862 is not set ++# CONFIG_NLS_CODEPAGE_863 is not set ++# CONFIG_NLS_CODEPAGE_864 is not set ++# CONFIG_NLS_CODEPAGE_865 is not set ++# CONFIG_NLS_CODEPAGE_866 is not set ++# CONFIG_NLS_CODEPAGE_869 is not set ++# CONFIG_NLS_CODEPAGE_936 is not set ++# CONFIG_NLS_CODEPAGE_950 is not set ++# CONFIG_NLS_CODEPAGE_932 is not set ++# CONFIG_NLS_CODEPAGE_949 is not set ++# CONFIG_NLS_CODEPAGE_874 is not set ++# CONFIG_NLS_ISO8859_8 is not set ++# CONFIG_NLS_CODEPAGE_1250 is not set ++# CONFIG_NLS_CODEPAGE_1251 is not set ++# CONFIG_NLS_ASCII is not set ++# CONFIG_NLS_ISO8859_1 is not set ++# CONFIG_NLS_ISO8859_2 is not set ++# CONFIG_NLS_ISO8859_3 is not set ++# CONFIG_NLS_ISO8859_4 is not set ++# CONFIG_NLS_ISO8859_5 is not set ++# CONFIG_NLS_ISO8859_6 is not set ++# CONFIG_NLS_ISO8859_7 is not set ++# CONFIG_NLS_ISO8859_9 is not set ++# CONFIG_NLS_ISO8859_13 is not set ++# CONFIG_NLS_ISO8859_14 is not set ++# CONFIG_NLS_ISO8859_15 is not set ++# CONFIG_NLS_KOI8_R is not set ++# CONFIG_NLS_KOI8_U is not set ++# CONFIG_NLS_UTF8 is not set ++ ++# ++# Kernel hacking ++# ++# CONFIG_PRINTK_TIME is not set ++CONFIG_ENABLE_WARN_DEPRECATED=y ++CONFIG_ENABLE_MUST_CHECK=y ++CONFIG_MAGIC_SYSRQ=y ++# CONFIG_UNUSED_SYMBOLS is not set ++# CONFIG_DEBUG_FS is not set ++# CONFIG_HEADERS_CHECK is not set ++CONFIG_DEBUG_KERNEL=y ++# CONFIG_DEBUG_SHIRQ is not set ++CONFIG_DETECT_SOFTLOCKUP=y ++CONFIG_SCHED_DEBUG=y ++# CONFIG_SCHEDSTATS is not set ++# CONFIG_TIMER_STATS is not set ++# CONFIG_DEBUG_SLAB is not set ++# CONFIG_DEBUG_RT_MUTEXES is not set ++# CONFIG_RT_MUTEX_TESTER is not set ++# CONFIG_DEBUG_SPINLOCK is not set ++CONFIG_DEBUG_MUTEXES=y ++# CONFIG_DEBUG_LOCK_ALLOC is not set ++# CONFIG_PROVE_LOCKING is not set ++# CONFIG_LOCK_STAT is not set ++# CONFIG_DEBUG_SPINLOCK_SLEEP is not set ++# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set ++# CONFIG_DEBUG_KOBJECT is not set ++CONFIG_DEBUG_BUGVERBOSE=y ++CONFIG_DEBUG_INFO=y ++# CONFIG_DEBUG_VM is not set ++# CONFIG_DEBUG_LIST is not set ++# CONFIG_DEBUG_SG is not set ++CONFIG_FRAME_POINTER=y ++# CONFIG_BOOT_PRINTK_DELAY is not set ++# CONFIG_RCU_TORTURE_TEST is not set ++# CONFIG_BACKTRACE_SELF_TEST is not set ++# CONFIG_FAULT_INJECTION is not set ++# CONFIG_SAMPLES is not set ++CONFIG_DEBUG_USER=y ++# CONFIG_DEBUG_ERRORS is not set ++# CONFIG_DEBUG_STACK_USAGE is not set ++CONFIG_DEBUG_LL=y ++# CONFIG_DEBUG_ICEDCC is not set ++CONFIG_DEBUG_S3C_PORT=y ++CONFIG_DEBUG_S3C_UART=0 ++ ++# ++# Security options ++# ++# CONFIG_KEYS is not set ++# CONFIG_SECURITY is not set ++# CONFIG_SECURITY_FILE_CAPABILITIES is not set ++# CONFIG_CRYPTO is not set ++ ++# ++# Library routines ++# ++CONFIG_BITREVERSE=y ++# CONFIG_CRC_CCITT is not set ++# CONFIG_CRC16 is not set ++# CONFIG_CRC_ITU_T is not set ++CONFIG_CRC32=y ++# CONFIG_CRC7 is not set ++# CONFIG_LIBCRC32C is not set ++CONFIG_PLIST=y ++CONFIG_HAS_IOMEM=y ++CONFIG_HAS_DMA=y +diff -X linux-git/Documentation/dontdiff -Naur linux-git/arch/arm/mach-s3c2440/dma.c linux-2.6.25-m8050/arch/arm/mach-s3c2440/dma.c +--- linux-git/arch/arm/mach-s3c2440/dma.c 2008-11-10 12:20:12.000000000 +0100 ++++ linux-2.6.25-m8050/arch/arm/mach-s3c2440/dma.c 2008-10-22 13:04:42.000000000 +0200 +@@ -47,8 +47,8 @@ + .channels[1] = S3C2440_DCON_CH1_SDI | DMA_CH_VALID, + .channels[2] = S3C2410_DCON_CH2_SDI | DMA_CH_VALID, + .channels[3] = S3C2410_DCON_CH3_SDI | DMA_CH_VALID, +- .hw_addr.to = S3C2410_PA_IIS + S3C2410_IISFIFO, +- .hw_addr.from = S3C2410_PA_IIS + S3C2410_IISFIFO, ++ .hw_addr.to = S3C2410_PA_SDI + S3C2410_SDIDATA, ++ .hw_addr.from = S3C2410_PA_SDI + S3C2410_SDIDATA, + }, + [DMACH_SPI0] = { + .name = "spi0", +diff -X linux-git/Documentation/dontdiff -Naur linux-git/arch/arm/mach-s3c2440/Kconfig linux-2.6.25-m8050/arch/arm/mach-s3c2440/Kconfig +--- linux-git/arch/arm/mach-s3c2440/Kconfig 2008-11-10 12:20:12.000000000 +0100 ++++ linux-2.6.25-m8050/arch/arm/mach-s3c2440/Kconfig 2008-05-07 13:50:18.000000000 +0200 +@@ -25,6 +25,12 @@ + + menu "S3C2440 Machines" + ++config MACH_AML_M8050 ++ bool "American Microsystems M8050" ++ select CPU_S3C2440 ++ help ++ Say Y here if you are using the American Microsystems M8050 ++ + config MACH_ANUBIS + bool "Simtec Electronics ANUBIS" + select CPU_S3C2440 +diff -X linux-git/Documentation/dontdiff -Naur linux-git/arch/arm/mach-s3c2440/mach-aml_m8050.c linux-2.6.25-m8050/arch/arm/mach-s3c2440/mach-aml_m8050.c +--- linux-git/arch/arm/mach-s3c2440/mach-aml_m8050.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/arch/arm/mach-s3c2440/mach-aml_m8050.c 2008-10-22 13:05:02.000000000 +0200 +@@ -0,0 +1,541 @@ ++/* linux/arch/arm/mach-s3c2440/mach-smdk2440.c ++ * ++ * Copyright (c) 2004,2005 Simtec Electronics ++ * Ben Dooks ++ * ++ * http://www.fluff.org/ben/smdk2440/ ++ * ++ * Thanks to Dimity Andric and TomTom for the loan of an SMDK2440. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++*/ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static struct map_desc aml_m8050_iodesc[] __initdata = { ++ { ++ .virtual = (u32)S3C24XX_VA_ISA_WORD, ++ .pfn = __phys_to_pfn(S3C2410_CS3), ++ .length = SZ_1M, ++ .type = MT_DEVICE, ++ }, { ++ .virtual = (u32)S3C24XX_VA_ISA_BYTE, ++ .pfn = __phys_to_pfn(S3C2410_CS3), ++ .length = SZ_1M, ++ .type = MT_DEVICE, ++ }, ++ { ++ .virtual = (u32)S3C24XX_VA_SPI, ++ .pfn = __phys_to_pfn(S3C2410_PA_SPI), ++ .length = SZ_1M, ++ .type = MT_DEVICE ++ }, ++}; ++ ++ ++#define UCON S3C2410_UCON_DEFAULT ++#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB ++#define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE ++ ++static struct s3c2410_uartcfg aml_m8050_uartcfgs[] __initdata = { ++ [0] = { ++ .hwport = 0, ++ .flags = 0, ++ .ucon = 0x3c5, ++ .ulcon = 0x03, ++ .ufcon = 0x51, ++ .ri_pin = S3C2410_GPF6, ++ }, ++ [1] = { ++ .hwport = 1, ++ .flags = 0, ++ .ucon = 0x3c5, ++ .ulcon = 0x03, ++ .ufcon = 0x51, ++ }, ++ /* IR port */ ++ [2] = { ++ .hwport = 2, ++ .flags = 0, ++ .ucon = 0x3c5, ++ .ulcon = 0x43, ++ .ufcon = 0x51, ++ } ++}; ++ ++static struct s3c24xx_led_platdata m8050_pdata_green_led = { ++ .gpio = S3C2410_GPG4, ++ .flags = 0, ++ .name = "green-led", ++ .def_trigger = "ev-led", ++}; ++ ++static struct platform_device m8050_green_led = { ++ .name = "s3c24xx_led", ++ .id = 0, ++ .dev = { ++ .platform_data = &m8050_pdata_green_led, ++ }, ++}; ++ ++static struct gpio_mouse_platform_data gpio_mouse0_data = { ++ .polarity = GPIO_MOUSE_POLARITY_ACT_HIGH, ++ { ++ { ++ .up = S3C2410_GPG8, ++ .down = S3C2410_GPG9, ++ .left = S3C2410_GPG12, ++ .right = S3C2410_GPG11, ++ .bleft = S3C2410_GPG10, ++ ++ }, ++ }, ++ .scan_ms = 5, ++}; ++ ++static struct platform_device gpio_mouse0_device = { ++ .name = "gpio_mouse", ++ .id = 0, ++ .dev = { ++ .platform_data = &gpio_mouse0_data, ++ }, ++}; ++ ++ ++static const int m8050_keymap[] = { ++ /* KEY(col, row, code) */ ++ KEY(0, 0, KEY_5), ++ KEY(0, 1, KEY_0), ++ KEY(1, 0, KEY_4), ++ KEY(1, 1, KEY_9), ++ KEY(1, 2, KEY_BACKSPACE), ++ KEY(1, 3, KEY_LEFTALT), ++ KEY(2, 0, KEY_3), ++ KEY(2, 1, KEY_8), ++ KEY(2, 2, KEY_KPMINUS), ++ KEY(2, 3, KEY_ENTER), ++ KEY(3, 0, KEY_2), ++ KEY(3, 1, KEY_7), ++ KEY(3, 2, KEY_KPPLUS), ++ KEY(3, 3, KEY_ESC), ++ KEY(4, 0, KEY_1), ++ KEY(4, 1, KEY_6), ++ KEY(4, 2, KEY_SUSPEND), ++ KEY(4, 3, KEY_DOT), ++ 0 ++}; ++ ++static const int m8050_keymap_a[] = { ++ /* KEY(col, row, code) */ ++ KEY(0, 0, KEY_J), ++ KEY(0, 1, KEY_SPACE), ++ KEY(1, 0, KEY_G), ++ KEY(1, 1, KEY_W), ++ KEY(1, 2, KEY_UNKNOWN), ++ KEY(1, 3, KEY_UNKNOWN), ++ KEY(2, 0, KEY_D), ++ KEY(2, 1, KEY_T), ++ KEY(2, 2, KEY_UNKNOWN), ++ KEY(2, 3, KEY_UNKNOWN), ++ KEY(3, 0, KEY_A), ++ KEY(3, 1, KEY_P), ++ KEY(3, 2, KEY_UNKNOWN), ++ KEY(3, 3, KEY_UNKNOWN), ++ KEY(4, 0, KEY_RO), ++ KEY(4, 1, KEY_M), ++ KEY(4, 2, KEY_UNKNOWN), ++ KEY(4, 3, KEY_UNKNOWN), ++ 0 ++}; ++ ++static const int m8050_keymap_b[] = { ++ /* KEY(col, row, code) */ ++ KEY(0, 0, KEY_K), ++ KEY(0, 1, KEY_HIRAGANA), ++ KEY(1, 0, KEY_H), ++ KEY(1, 1, KEY_X), ++ KEY(1, 2, KEY_UNKNOWN), ++ KEY(1, 3, KEY_UNKNOWN), ++ KEY(2, 0, KEY_E), ++ KEY(2, 1, KEY_U), ++ KEY(2, 2, KEY_UNKNOWN), ++ KEY(2, 3, KEY_UNKNOWN), ++ KEY(3, 0, KEY_B), ++ KEY(3, 1, KEY_Q), ++ KEY(3, 2, KEY_UNKNOWN), ++ KEY(3, 3, KEY_UNKNOWN), ++ KEY(4, 0, KEY_KATAKANA), ++ KEY(4, 1, KEY_N), ++ KEY(4, 2, KEY_UNKNOWN), ++ KEY(4, 3, KEY_UNKNOWN), ++ 0 ++}; ++ ++static const int m8050_keymap_c[] = { ++ /* KEY(col, row, code) */ ++ KEY(0, 0, KEY_L), ++ KEY(0, 1, KEY_KATAKANAHIRAGANA), ++ KEY(1, 0, KEY_I), ++ KEY(1, 1, KEY_Y), ++ KEY(1, 2, KEY_UNKNOWN), ++ KEY(1, 3, KEY_UNKNOWN), ++ KEY(2, 0, KEY_F), ++ KEY(2, 1, KEY_V), ++ KEY(2, 2, KEY_UNKNOWN), ++ KEY(2, 3, KEY_UNKNOWN), ++ KEY(3, 0, KEY_C), ++ KEY(3, 1, KEY_R), ++ KEY(3, 2, KEY_UNKNOWN), ++ KEY(3, 3, KEY_UNKNOWN), ++ KEY(4, 0, KEY_EQUAL), ++ KEY(4, 1, KEY_O), ++ KEY(4, 2, KEY_UNKNOWN), ++ KEY(4, 3, KEY_UNKNOWN), ++ 0 ++}; ++ ++static const int m8050_keymap_d[] = { ++ /* KEY(col, row, code) */ ++ KEY(0, 0, KEY_UNKNOWN), ++ KEY(0, 1, KEY_HENKAN), ++ KEY(1, 0, KEY_UNKNOWN), ++ KEY(1, 1, KEY_Z), ++ KEY(1, 2, KEY_UNKNOWN), ++ KEY(1, 3, KEY_UNKNOWN), ++ KEY(2, 0, KEY_UNKNOWN), ++ KEY(2, 1, KEY_UNKNOWN), ++ KEY(2, 2, KEY_UNKNOWN), ++ KEY(2, 3, KEY_UNKNOWN), ++ KEY(3, 0, KEY_UNKNOWN), ++ KEY(3, 1, KEY_S), ++ KEY(3, 2, KEY_UNKNOWN), ++ KEY(3, 3, KEY_UNKNOWN), ++ KEY(4, 0, KEY_UNKNOWN), ++ KEY(4, 1, KEY_UNKNOWN), ++ KEY(4, 2, KEY_UNKNOWN), ++ KEY(4, 3, KEY_UNKNOWN), ++ 0 ++}; ++ ++ ++static struct m8050_kp_platform_data m8050_kp_data = { ++ .rows = 4, ++ .cols = 5, ++ .keymap = (int *) m8050_keymap, ++ .keymap_a = (int *) m8050_keymap_a, ++ .keymap_b = (int *) m8050_keymap_b, ++ .keymap_c = (int *) m8050_keymap_c, ++ .keymap_d = (int *) m8050_keymap_d, ++ .keymapsize = ARRAY_SIZE(m8050_keymap), ++ .delay = 20, ++}; ++ ++static struct platform_device m8050_kp_device = { ++ .name = "m8050-keypad", ++ .id = -1, ++ .dev = { ++ .platform_data = &m8050_kp_data, ++ }, ++}; ++ ++static struct s3c2410_ts_mach_info aml_m8050_ts_cfg __initdata = { ++ .delay = 10000, ++ .presc = 49, ++ .oversampling_shift = 2, ++}; ++ ++static struct mtd_partition aml_m8050_nand_part[] = { ++ [0] = { ++ .name = "system", ++ .size = SZ_4M, ++ .offset = 0, ++ }, ++ [1] = { ++ .name = "jffs2", ++ .offset = SZ_4M, ++ .size = MTDPART_SIZ_FULL, ++ } ++}; ++ ++static struct s3c2410_nand_set aml_m8050_nand_sets[] = { ++ [0] = { ++ .name = "Internal", ++ .nr_chips = 1, ++ .nr_partitions = ARRAY_SIZE(aml_m8050_nand_part), ++ .partitions = aml_m8050_nand_part, ++ }, ++}; ++ ++static struct s3c2410_platform_nand aml_m8050_nand_info = { ++ .tacls = 25, ++ .twrph0 = 50, ++ .twrph1 = 15, ++ .nr_sets = ARRAY_SIZE(aml_m8050_nand_sets), ++ .sets = aml_m8050_nand_sets, ++}; ++ ++void spi1_cs(struct s3c2410_spi_info *spi, int cs, int pol) ++{ ++ ++ s3c2410_gpio_setpin(S3C2440_GPJ6, pol); ++ ++} ++ ++static struct s3c2410_spi_info spi1_info __initdata = { ++ .pin_cs = S3C2440_GPJ6, ++ .num_cs = 1, ++ .set_cs = &spi1_cs, ++}; ++ ++static struct spi_board_info hammer_spi_board_info[] __initdata = { ++ { ++ .modalias = "mmc_spi", ++ .bus_num = 1, ++ .chip_select = 0, // beware, bogus value. only keeps driver register happy. ++ .mode = SPI_MODE_0, ++ .max_speed_hz = 12000000, ++ } ++}; ++static struct s3c24xx_mci_pdata aml_m8050_sdi_pdata = { ++ .detect_invert = 0, ++ .gpio_detect = S3C2410_GPG15, ++}; ++ ++static struct gpio_keys_button gpio_keys_buttons[] = { ++ [0] = { ++ .code = LED_MISC, ++ .gpio = S3C2410_GPF4, ++ .active_low = 1, ++ .desc = "Trigger", ++ .type = EV_LED, ++ }, ++}; ++ ++static struct gpio_keys_platform_data gpio_keys_data = { ++ .buttons = gpio_keys_buttons, ++ .nbuttons = ARRAY_SIZE(gpio_keys_buttons), ++}; ++ ++static struct platform_device m8050_buttons = { ++ .name = "gpio-keys", ++ .id = 0, ++ .dev = { ++ .platform_data = &gpio_keys_data, ++ }, ++}; ++ ++ ++static struct platform_device *aml_m8050_devices[] __initdata = { ++ &s3c_device_usb, ++ &s3c_device_lcd, ++// &s3c_device_sdi, ++ &s3c_device_rtc, ++ &m8050_kp_device, ++ &m8050_buttons, ++ &gpio_mouse0_device, ++ &s3c_device_ts, ++ &s3c_device_nand, ++ &s3c_device_spi1, ++ &m8050_green_led, ++// &s3c_device_wdt, ++ &s3c_device_i2c, ++// &s3c_device_iis, ++}; ++static struct s3c2410fb_display aml_m8050_lcdcfg = { ++ ++ .lcdcon5 = S3C2410_LCDCON5_INVVCLK | ++ S3C2410_LCDCON5_INVVLINE | ++ S3C2410_LCDCON5_INVVDEN | ++ S3C2410_LCDCON5_INVVD | ++ S3C2410_LCDCON5_FRM565 | ++ S3C2410_LCDCON5_INVVFRAME, ++ ++ .type = S3C2410_LCDCON1_TFT, ++ .width = 320, ++ .height = 240, ++ ++ .pixclock = 260000, ++ .xres = 320, ++ .yres = 240, ++ .bpp = 16, ++ .left_margin = 38, ++ .right_margin = 50, ++ .hsync_len = 1, ++ .upper_margin = 15, ++ .lower_margin = 4, ++ .vsync_len = 1, ++}; ++ ++static struct s3c2410fb_mach_info aml_m8050_fb_info = { ++ ++ .displays = &aml_m8050_lcdcfg, ++ .num_displays = 1, ++ .default_display = 0, ++ ++ .lpcsel = 0x0, ++ ++ .gpccon = 0xaaaa56a9, ++ .gpccon_mask = 0xffc003cc, ++ .gpcup = 0x0000ffff, ++ .gpcup_mask = 0xffffffff, ++ ++ .gpdcon = 0xaa95aaa1, ++ .gpdcon_mask = 0xffc0fff0, ++ .gpdup = 0x0000faff, ++ .gpdup_mask = 0xffffffff, ++}; ++ ++ ++static void __init aml_m8050_map_io(void) ++{ ++ s3c_device_nand.dev.platform_data = &aml_m8050_nand_info; ++ s3c24xx_init_io(aml_m8050_iodesc, ARRAY_SIZE(aml_m8050_iodesc)); ++ s3c24xx_init_clocks(0); ++ s3c24xx_init_uarts(aml_m8050_uartcfgs, ARRAY_SIZE(aml_m8050_uartcfgs)); ++} ++ ++static void __init aml_m8050_init_irq(void) ++{ ++ s3c24xx_init_irq(); ++ /* configure wakeup source */ ++ s3c2410_gpio_cfgpin(S3C2410_GPG2, S3C2410_GPG2_EINT10); ++ enable_irq_wake(IRQ_EINT10); ++ ++// s3c2410_gpio_cfgpin(S3C2410_GPF4, S3C2410_GPF4_EINT4); ++// enable_irq_wake(IRQ_EINT4); ++} ++ ++static void __init aml_m8050_machine_init(void) ++{ ++ ++ int ret = 0; ++ ++ s3c2410_pm_init(); ++ ++ s3c24xx_fb_set_platdata(&aml_m8050_fb_info); ++ ++ set_s3c2410ts_info(&aml_m8050_ts_cfg); ++ ++ platform_add_devices(aml_m8050_devices, ARRAY_SIZE(aml_m8050_devices)); ++ ++ s3c2410_gpio_cfgpin(S3C2410_GPB10, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2410_GPB10, 0); ++ ++ s3c2410_gpio_cfgpin(S3C2410_GPB9, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2410_GPB9, 0); ++ ++ ++ /*backlight*/ ++ s3c2410_gpio_cfgpin(S3C2410_GPC0, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2410_GPC0, 1); ++ s3c2410_gpio_setpin(S3C2410_GPB3, 0); ++ s3c2410_gpio_cfgpin(S3C2410_GPB3, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2410_GPB3, 0); ++ s3c2410_gpio_cfgpin(S3C2410_GPB0, S3C2410_GPB0_TOUT0); ++ ++ __raw_writel(0x00000002,S3C2410_TCMPB(0)); ++ __raw_writel(0x000002ff,S3C2410_TCFG0); ++ __raw_writel(0x00000000,S3C2410_TCFG1); ++ __raw_writel(0x00000003,S3C2410_TCNTB(0)); ++ __raw_writel(0x00080001,S3C2410_TCMPB(0)); ++ __raw_writel(0x0050000a,S3C2410_TCON); ++ __raw_writel(0x00500009,S3C2410_TCON); ++ ++ ++// s3c2410_gpio_setpin(S3C2410_GPB3, 1); ++ ++ /* chipselect for sd/mmc */ ++ s3c2410_gpio_cfgpin(S3C2440_GPJ6, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ6, 1); ++ /* set special function to enable SPI operation on SPI1 */ ++ s3c2410_gpio_cfgpin(S3C2410_GPG5, S3C2410_GPG5_SPIMISO1); ++ s3c2410_gpio_cfgpin(S3C2410_GPG6, S3C2410_GPG6_SPIMOSI1); ++ s3c2410_gpio_cfgpin(S3C2410_GPG7, S3C2410_GPG7_SPICLK1); ++ ++ ++ s3c2410_gpio_cfgpin(S3C2440_GPJ3, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ3, 0); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ2, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ2, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ1, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ1, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ0, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ0, 0); ++ ++ /*go ahead and turn off the NAND write protect*/ ++ s3c2410_gpio_setpin(S3C2410_GPH8, 1); ++ ++ s3c_device_spi1.dev.platform_data = &spi1_info; ++ s3c_device_sdi.dev.platform_data = &aml_m8050_sdi_pdata; ++ spi_register_board_info(hammer_spi_board_info, ARRAY_SIZE(hammer_spi_board_info)); ++ ++ /* make sure the green tackball led is on */ ++ s3c2410_gpio_setpin(S3C2410_GPG4, 1); ++ ++ s3c2410_gpio_cfgpin(S3C2410_GPB4, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2410_GPB4, 1); ++ ++ s3c2410_gpio_cfgpin(S3C2410_GPF3, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2410_GPF3, 1); ++ ++} ++ ++MACHINE_START(AML_M8050, "AML M8050") ++ .phys_io = S3C2410_PA_UART, ++ .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, ++ .boot_params = S3C2410_SDRAM_PA + 0x100, ++ .init_irq = aml_m8050_init_irq, ++ .map_io = aml_m8050_map_io, ++ .init_machine = aml_m8050_machine_init, ++ .timer = &s3c24xx_timer, ++MACHINE_END +diff -X linux-git/Documentation/dontdiff -Naur linux-git/arch/arm/mach-s3c2440/Makefile linux-2.6.25-m8050/arch/arm/mach-s3c2440/Makefile +--- linux-git/arch/arm/mach-s3c2440/Makefile 2008-11-10 12:20:12.000000000 +0100 ++++ linux-2.6.25-m8050/arch/arm/mach-s3c2440/Makefile 2008-05-07 13:50:18.000000000 +0200 +@@ -16,6 +16,7 @@ + + # Machine support + ++obj-$(CONFIG_MACH_AML_M8050) += mach-aml_m8050.o + obj-$(CONFIG_MACH_ANUBIS) += mach-anubis.o + obj-$(CONFIG_MACH_OSIRIS) += mach-osiris.o + obj-$(CONFIG_MACH_RX3715) += mach-rx3715.o +diff -X linux-git/Documentation/dontdiff -Naur linux-git/arch/arm/plat-s3c24xx/devs.c linux-2.6.25-m8050/arch/arm/plat-s3c24xx/devs.c +--- linux-git/arch/arm/plat-s3c24xx/devs.c 2008-11-10 12:20:12.000000000 +0100 ++++ linux-2.6.25-m8050/arch/arm/plat-s3c24xx/devs.c 2008-05-29 12:12:00.000000000 +0200 +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -207,6 +208,22 @@ + + EXPORT_SYMBOL(s3c_device_nand); + ++/* Touchscreen */ ++struct platform_device s3c_device_ts = { ++ .name = "s3c2410-ts", ++ .id = -1, ++}; ++ ++EXPORT_SYMBOL(s3c_device_ts); ++ ++static struct s3c2410_ts_mach_info s3c2410ts_info; ++ ++void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info) ++{ ++ memcpy(&s3c2410ts_info,hard_s3c2410ts_info,sizeof(struct s3c2410_ts_mach_info)); ++ s3c_device_ts.dev.platform_data = &s3c2410ts_info; ++} ++ + /* USB Device (Gadget)*/ + + static struct resource s3c_usbgadget_resource[] = { +diff -X linux-git/Documentation/dontdiff -Naur linux-git/arch/arm/plat-s3c24xx/dma.c linux-2.6.25-m8050/arch/arm/plat-s3c24xx/dma.c +--- linux-git/arch/arm/plat-s3c24xx/dma.c 2008-11-10 12:20:12.000000000 +0100 ++++ linux-2.6.25-m8050/arch/arm/plat-s3c24xx/dma.c 2008-10-28 16:52:32.000000000 +0100 +@@ -101,7 +101,7 @@ + dmadbg_dumpregs(const char *fname, int line, struct s3c2410_dma_chan *chan, + struct s3c2410_dma_regstate *regs) + { +- printk(KERN_DEBUG "dma%d: %s:%d: DCSRC=%08lx, DISRC=%08lx, DSTAT=%08lx DMT=%02lx, DCON=%08lx\n", ++ printk("dma%d: %s:%d: DCSRC=%08lx, DISRC=%08lx, DSTAT=%08lx DMT=%02lx, DCON=%08lx\n", + chan->number, fname, line, + regs->dcsrc, regs->disrc, regs->dstat, regs->dmsktrig, + regs->dcon); +@@ -114,7 +114,7 @@ + + dmadbg_capture(chan, &state); + +- printk(KERN_DEBUG "dma%d: %s:%d: ls=%d, cur=%p, %p %p\n", ++ printk("dma%d: %s:%d: ls=%d, cur=%p, %p %p\n", + chan->number, fname, line, chan->load_state, + chan->curr, chan->next, chan->end); + +@@ -227,7 +227,7 @@ + s3c2410_dma_loadbuffer(struct s3c2410_dma_chan *chan, + struct s3c2410_dma_buf *buf) + { +- unsigned long reload; ++ unsigned long reload,tmp; + + pr_debug("s3c2410_chan_loadbuffer: loading buff %p (0x%08lx,0x%06x)\n", + buf, (unsigned long)buf->data, buf->size); +@@ -258,6 +258,7 @@ + } else { + //pr_debug("load_state is %d => autoreload\n", chan->load_state); + reload = S3C2410_DCON_AUTORELOAD; ++// reload = S3C2410_DCON_NORELOAD; + } + + if ((buf->data & 0xf0000000) != 0x30000000) { +@@ -266,9 +267,12 @@ + + writel(buf->data, chan->addr_reg); + ++ ++ + dma_wrreg(chan, S3C2410_DMA_DCON, + chan->dcon | reload | (buf->size/chan->xfer_unit)); + ++ + chan->next = buf->next; + + /* update the state of the channel */ +@@ -389,6 +393,14 @@ + dma_wrreg(chan, S3C2410_DMA_DCON, tmp); + #endif + ++#if 1 ++ /* the dma buffer loads should take care of clearing the AUTO ++ * reloading feature */ ++ tmp = dma_rdreg(chan, S3C2410_DMA_DCON); ++ tmp |= S3C2410_DCON_NORELOAD; ++ dma_wrreg(chan, S3C2410_DMA_DCON, tmp); ++#endif ++ + s3c2410_dma_call_op(chan, S3C2410_DMAOP_START); + + dbg_showchan(chan); +@@ -400,16 +412,20 @@ + + if (chan->next != NULL) { + if (chan->load_state == S3C2410_DMALOAD_1LOADED) { +- ++// printk("dma start S3C2410_DMALOAD_1LOADED\n"); + if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { ++// printk("dma start buff not loaded yet\n"); + pr_debug("%s: buff not yet loaded, no more todo\n", + __func__); ++ + } else { ++// printk("dma start setting S3C2410_DMALOAD_1RUNNING\n"); + chan->load_state = S3C2410_DMALOAD_1RUNNING; + s3c2410_dma_loadbuffer(chan, chan->next); + } + + } else if (chan->load_state == S3C2410_DMALOAD_1RUNNING) { ++// printk("dma start S3C2410_DMALOAD_1RUNNING\n"); + s3c2410_dma_loadbuffer(chan, chan->next); + } + } +@@ -559,7 +575,7 @@ + static inline void + s3c2410_dma_lastxfer(struct s3c2410_dma_chan *chan) + { +-#if 0 ++#if 1 + pr_debug("dma%d: s3c2410_dma_lastxfer: load_state %d\n", + chan->number, chan->load_state); + #endif +@@ -581,8 +597,11 @@ + /* I belive in this case we do not have anything to do + * until the next buffer comes along, and we turn off the + * reload */ ++ /* with autoreload running we will always have one more loaded ++ * than should be */ ++// chan->load_state=S3C2410_DMALOAD_1LOADED; + return; +- ++ + default: + pr_debug("dma%d: lastxfer: unhandled load_state %d with no next\n", + chan->number, chan->load_state); +@@ -602,15 +621,18 @@ + { + struct s3c2410_dma_chan *chan = (struct s3c2410_dma_chan *)devpw; + struct s3c2410_dma_buf *buf; +- ++ unsigned long tmp; ++ + buf = chan->curr; +- ++ printk("dma irq called!!\n"); + dbg_showchan(chan); + ++ + /* modify the channel state */ + + switch (chan->load_state) { + case S3C2410_DMALOAD_1RUNNING: ++// printk("S3C2410_DMALOAD_1RUNNING\n"); + /* TODO - if we are running only one buffer, we probably + * want to reload here, and then worry about the buffer + * callback */ +@@ -619,15 +641,18 @@ + break; + + case S3C2410_DMALOAD_1LOADED: ++// printk("S3C2410_DMALOAD_1LOADED\n"); + /* iirc, we should go back to NONE loaded here, we + * had a buffer, and it was never verified as being + * loaded. + */ +- ++// printk("load_state-x: 0x%x\n",chan->load_state); + chan->load_state = S3C2410_DMALOAD_NONE; ++// printk("load_state-y: 0x%x\n",chan->load_state); + break; + + case S3C2410_DMALOAD_1LOADED_1RUNNING: ++// printk("S3C2410_DMALOAD_1LOADED_1RUNNING\n"); + /* we'll worry about checking to see if another buffer is + * ready after we've called back the owner. This should + * ensure we do not wait around too long for the DMA +@@ -652,12 +677,18 @@ + /* update the chain to make sure that if we load any more + * buffers when we call the callback function, things should + * work properly */ ++ printk("buf is not null\n"); ++ if ( buf->next == NULL ) ++ printk("buf->next is NULL\n"); ++ else ++ printk("buf->next is not NULL\n"); ++// printk("load_state-a: 0x%x\n",chan->load_state); + + chan->curr = buf->next; + buf->next = NULL; + + if (buf->magic != BUF_MAGIC) { +- printk(KERN_ERR "dma%d: %s: buf %p incorrect magic\n", ++ printk("dma%d: %s: buf %p incorrect magic\n", + chan->number, __func__, buf); + return IRQ_HANDLED; + } +@@ -666,7 +697,9 @@ + + /* free resouces */ + s3c2410_dma_freebuf(buf); ++// printk("load_state-b: 0x%x\n",chan->load_state); + } else { ++ printk("buf is null\n"); + } + + /* only reload if the channel is still running... our buffer done +@@ -678,17 +711,21 @@ + + if (chan->next != NULL && chan->state != S3C2410_DMA_IDLE) { + unsigned long flags; ++// printk("load_state-c: 0x%x\n",chan->load_state); + + switch (chan->load_state) { + case S3C2410_DMALOAD_1RUNNING: ++// printk("Reload S3C2410_DMALOAD_1RUNNING\n"); + /* don't need to do anything for this state */ + break; + + case S3C2410_DMALOAD_NONE: ++// printk("Reload S3C2410_DMALOAD_NONE\n"); + /* can load buffer immediately */ + break; + + case S3C2410_DMALOAD_1LOADED: ++// printk("Reload S3C2410_DMALOAD_1LOADED\n"); + if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { + /* flag error? */ + printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n", +@@ -699,6 +736,7 @@ + break; + + case S3C2410_DMALOAD_1LOADED_1RUNNING: ++// printk("Reload S3C2410_DMALOAD_1LOADED_1RUNNING\n"); + goto no_load; + + default: +@@ -711,10 +749,27 @@ + s3c2410_dma_loadbuffer(chan, chan->next); + local_irq_restore(flags); + } else { ++ if ( chan->next == NULL ) ++ printk("reload chan->next is null\n"); ++ else ++ printk("reload chan->next is not null\n"); ++ ++ if ( buf->next == NULL ) ++ printk("reload buf->next is null\n"); ++ else ++ printk("reload buf->next is not null\n"); ++ ++ if ( chan->state == S3C2410_DMA_IDLE ) ++ printk("reload chan->state is idle\n"); ++ else ++ printk("reload chan->state is not idle\n"); ++ ++ printk("Reload lastxfer\n"); + s3c2410_dma_lastxfer(chan); + + /* see if we can stop this channel.. */ + if (chan->load_state == S3C2410_DMALOAD_NONE) { ++ + pr_debug("dma%d: end of transfer, stopping channel (%ld)\n", + chan->number, jiffies); + s3c2410_dma_ctrl(chan->number | DMACH_LOW_LEVEL, +@@ -723,6 +778,7 @@ + } + + no_load: ++ printk("leaving dma_irq!\n"); + return IRQ_HANDLED; + } + +@@ -852,6 +908,7 @@ + unsigned long flags; + unsigned long tmp; + ++// printk("do stop called!!\n"); + pr_debug("%s:\n", __func__); + + dbg_showchan(chan); +@@ -865,10 +922,12 @@ + //tmp &= ~S3C2410_DMASKTRIG_ON; + dma_wrreg(chan, S3C2410_DMA_DMASKTRIG, tmp); + +-#if 0 ++#if 1 + /* should also clear interrupts, according to WinCE BSP */ + tmp = dma_rdreg(chan, S3C2410_DMA_DCON); + tmp |= S3C2410_DCON_NORELOAD; ++ tmp &= ~S3C2410_DCON_INTREQ; ++ tmp &= ~S3C2410_DCON_HWTRIG; + dma_wrreg(chan, S3C2410_DMA_DCON, tmp); + #endif + +@@ -876,6 +935,8 @@ + chan->state = S3C2410_DMA_IDLE; + chan->load_state = S3C2410_DMALOAD_NONE; + ++ dbg_showchan(chan); ++ + local_irq_restore(flags); + + return 0; +@@ -907,6 +968,7 @@ + struct s3c2410_dma_buf *buf, *next; + unsigned long flags; + ++ printk("dma flush called!\n"); + pr_debug("%s: chan %p (%d)\n", __func__, chan, chan->number); + + dbg_showchan(chan); +@@ -940,7 +1002,7 @@ + + s3c2410_dma_waitforstop(chan); + +-#if 0 ++#if 1 + /* should also clear interrupts, according to WinCE BSP */ + { + unsigned long tmp; +diff -X linux-git/Documentation/dontdiff -Naur linux-git/arch/arm/plat-s3c24xx/s3c244x.c linux-2.6.25-m8050/arch/arm/plat-s3c24xx/s3c244x.c +--- linux-git/arch/arm/plat-s3c24xx/s3c244x.c 2008-11-10 12:20:12.000000000 +0100 ++++ linux-2.6.25-m8050/arch/arm/plat-s3c24xx/s3c244x.c 2008-07-10 18:39:47.000000000 +0200 +@@ -65,8 +65,10 @@ + + /* rename any peripherals used differing from the s3c2410 */ + ++ s3c_device_sdi.name = "s3c2440-sdi"; + s3c_device_i2c.name = "s3c2440-i2c"; + s3c_device_nand.name = "s3c2440-nand"; ++ s3c_device_ts.name = "s3c2440-ts"; + s3c_device_usbgadget.name = "s3c2440-usbgadget"; + } + +diff -X linux-git/Documentation/dontdiff -Naur linux-git/arch/arm/plat-s3c24xx/s3c244x.h linux-2.6.25-m8050/arch/arm/plat-s3c24xx/s3c244x.h +--- linux-git/arch/arm/plat-s3c24xx/s3c244x.h 2008-11-10 12:19:09.000000000 +0100 ++++ linux-2.6.25-m8050/arch/arm/plat-s3c24xx/s3c244x.h 2008-05-07 13:50:18.000000000 +0200 +@@ -18,6 +18,8 @@ + + extern void s3c244x_init_clocks(int xtal); + ++extern int s3c2410_baseclk_add(void); ++ + #else + #define s3c244x_init_clocks NULL + #define s3c244x_init_uarts NULL +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/char/defkeymap.map linux-2.6.25-m8050/drivers/char/defkeymap.map +--- linux-git/drivers/char/defkeymap.map 2008-11-10 12:19:16.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/char/defkeymap.map 2008-10-02 14:06:23.000000000 +0200 +@@ -212,11 +212,11 @@ + control keycode 88 = F12 + alt keycode 88 = Console_12 + control alt keycode 88 = Console_12 +-keycode 89 = +-keycode 90 = +-keycode 91 = +-keycode 92 = +-keycode 93 = ++keycode 89 = dollar ++keycode 90 = at ++keycode 91 = parenleft ++keycode 92 = parenright ++keycode 93 = bar + keycode 94 = + keycode 95 = + keycode 96 = KP_Enter +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/char/intellihead.c linux-2.6.25-m8050/drivers/char/intellihead.c +--- linux-git/drivers/char/intellihead.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/char/intellihead.c 2008-10-03 16:08:21.000000000 +0200 +@@ -0,0 +1,300 @@ ++/* ++ * Intellihead Card Reader Driver- ++ * Copyright (C) David Anders 2008. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include ++#include ++ ++#define __INTELLIHEAD_C /* Tell the header file who we are */ ++#include "intellihead.h" ++ ++static DECLARE_WAIT_QUEUE_HEAD(intellihead_wait_queue); /* Used for blocking read */ ++static char intellihead_output_buffer[380]; /* Stores data to write out of device */ ++static char intellihead_tmp_buffer[380]; /* Stores data to write out of device */ ++static int bcount; /* The number of bytes in the buffer */ ++static int irq_count; ++static void intellihead_callback_main(struct work_struct *ignored); ++static int data_offset; ++static int dataready; ++ ++static DECLARE_WORK(intellihead_work, intellihead_callback_main); ++ ++static void intellihead_reset(void){ ++ ++ s3c2410_gpio_cfgpin(S3C2410_GPB7,S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2410_GPB7, 1); ++ udelay(2); ++ s3c2410_gpio_cfgpin(S3C2410_GPF2,S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2410_GPF2, 0); ++ udelay(2); ++ s3c2410_gpio_setpin(S3C2410_GPB7, 1); ++ udelay(2); ++ s3c2410_gpio_setpin(S3C2410_GPB7, 0); ++ udelay(2); ++ s3c2410_gpio_cfgpin(S3C2410_GPF2,S3C2410_GPIO_INPUT); ++ udelay(2); ++ s3c2410_gpio_setpin(S3C2410_GPB7, 1); ++ udelay(2); ++ s3c2410_gpio_setpin(S3C2410_GPB7, 0); ++ udelay(2); ++ s3c2410_gpio_setpin(S3C2410_GPB7, 1); ++ udelay(2); ++ s3c2410_gpio_setpin(S3C2410_GPB7, 0); ++ udelay(2); ++ s3c2410_gpio_cfgpin(S3C2410_GPF2,S3C2410_GPIO_IRQ); ++ ++} ++ ++static void intellihead_callback_main(struct work_struct *ignored) ++{ ++ int x=0,y=0; ++ char final_char; ++// printk("intellihead: main callback started!!\n"); ++// disable_irq(IRQ_EINT2); ++ s3c2410_gpio_cfgpin(S3C2410_GPF2, S3C2410_GPIO_INPUT); ++ ++ for(y=15; y >= 0 ; y--){ ++ udelay(2); ++ s3c2410_gpio_setpin(S3C2410_GPB7, 1); ++ udelay(2); ++ s3c2410_gpio_setpin(S3C2410_GPB7, 0); ++ udelay(2); ++ } ++ ++ for(x=0;x< 100; x++) { ++ final_char=0; ++ for(y=0; y < 6 ; y++){ ++ udelay(2); ++ s3c2410_gpio_setpin(S3C2410_GPB7, 1); ++ udelay(2); ++ s3c2410_gpio_setpin(S3C2410_GPB7, 0); ++ udelay(2); ++ if ( s3c2410_gpio_getpin(S3C2410_GPF2) == 0 ){ ++ final_char |= (1< count ) ++ writecount=count; ++ else ++ writecount=bcount; ++ tempchar[0]=intellihead_output_buffer[data_offset]; ++// returncount=copy_to_user(buffer, &intellihead_output_buffer, writecount); ++ returncount=copy_to_user(buffer, &tempchar, writecount); ++ if ( returncount == 0 ){ ++ if (tempchar[0] == 0x3f) ++ bcount=data_offset; ++// printk("intellihead: return count good!!\n"); ++ if (data_offset != bcount ) { ++ data_offset += writecount; ++ } ++ else { ++ bcount=0; ++ data_offset=0; ++ dataready=0; ++ } ++ return writecount; ++ } ++ else { ++// printk("intellihead: return bad - %d expected %d!!\n",returncount, bcount); ++ return -EFAULT; ++ } ++// return (copy_to_user (buffer, &intellihead_output_buffer, bcount)) ++// ? -EFAULT : bcount; ++} ++ ++/* ++ * This structure is the file operations structure, which specifies what ++ * callbacks functions the kernel should call when a user mode process ++ * attempts to perform these operations on the device. ++ */ ++ ++static const struct file_operations intellihead_fops = { ++ .owner = THIS_MODULE, ++ .read = intellihead_read, ++ .poll = intellihead_poll, ++}; ++ ++/* ++ * This structure is the misc device structure, which specifies the minor ++ * device number (158 in this case), the name of the device (for /proc/misc), ++ * and the address of the above file operations structure. ++ */ ++ ++static struct miscdevice intellihead_misc_device = { ++ INTELLIHEAD_MINOR, ++ "intellihead", ++ &intellihead_fops, ++}; ++ ++/* ++ * This function is called to initialise the driver, either from misc.c at ++ * bootup if the driver is compiled into the kernel, or from init_module ++ * below at module insert time. It attempts to register the device node ++ * and the IRQ and fails with a warning message if either fails, though ++ * neither ever should because the device number and IRQ are unique to ++ * this driver. ++ */ ++ ++static int __init intellihead_init(void) ++{ ++// if (!machine_is_netwinder()) ++// return -ENODEV; ++ ++ printk (KERN_INFO "Intellihead Card Read Driver Version %s (C) David Anders " ++ " 2008.\n", VERSION); ++ ++ if (misc_register (&intellihead_misc_device)) { ++ printk (KERN_WARNING "intellihead: Couldn't register device 10, " ++ "%d.\n", INTELLIHEAD_MINOR); ++ return -EBUSY; ++ } ++ ++ intellihead_reset(); ++ ++ if (request_irq (IRQ_EINT2, intellihead_handler, IRQF_TRIGGER_FALLING, ++ "intellihead", NULL)) { ++ printk (KERN_WARNING "intellihead: IRQ %d is not free.\n", ++ IRQ_EINT2); ++ misc_deregister (&intellihead_misc_device); ++ return -EIO; ++ } ++ ++// init_waitqueue_head(&intellihead_wait_queue); ++ dataready=0; ++ data_offset=0; ++ irq_count=0; ++ return 0; ++} ++ ++static void __exit intellihead_exit (void) ++{ ++ free_irq (IRQ_EINT2, NULL); ++ misc_deregister (&intellihead_misc_device); ++} ++ ++ ++MODULE_AUTHOR("David Anders"); ++MODULE_LICENSE("GPL"); ++ ++module_init(intellihead_init); ++module_exit(intellihead_exit); +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/char/intellihead.h linux-2.6.25-m8050/drivers/char/intellihead.h +--- linux-git/drivers/char/intellihead.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/char/intellihead.h 2008-07-15 17:57:17.000000000 +0200 +@@ -0,0 +1,21 @@ ++#ifndef __INTELLIHEAD_H ++#define __INTELLIHEAD_H ++ ++/* ++ * NetWinder Button Driver- ++ * Copyright (C) Alex Holden 1998, 1999. ++ */ ++ ++#ifdef __INTELLIHEAD_C /* Actually compiling the driver itself */ ++ ++/* Various defines: */ ++ ++#define VERSION "0.1" /* Driver version number */ ++#define INTELLIHEAD_MINOR 158 /* Major 10, Minor 158, /dev/nwbutton */ ++ ++/* Function prototypes: */ ++ ++static irqreturn_t intellihead_handler (int irq, void *dev_id); ++ ++#endif /* __INTELLIHEAD_C */ ++#endif /* __INTELLIHEAD_H */ +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/char/Kconfig linux-2.6.25-m8050/drivers/char/Kconfig +--- linux-git/drivers/char/Kconfig 2008-11-10 12:20:16.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/char/Kconfig 2008-07-14 13:44:38.000000000 +0200 +@@ -410,6 +410,12 @@ + If you have an SGI Altix with an attached SABrick + say Y or M here, otherwise say N. + ++config INTELLIHEAD ++ tristate "Intellihead Card Read driver support" ++ help ++ If you have an Intellihead Card Reader attached ++ say Y or M here, otherwise say N. ++ + source "drivers/serial/Kconfig" + + config UNIX98_PTYS +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/char/Makefile linux-2.6.25-m8050/drivers/char/Makefile +--- linux-git/drivers/char/Makefile 2008-11-10 12:20:16.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/char/Makefile 2008-10-02 14:10:28.000000000 +0200 +@@ -58,6 +58,7 @@ + obj-$(CONFIG_VIOTAPE) += viotape.o + obj-$(CONFIG_HVCS) += hvcs.o + obj-$(CONFIG_SGI_MBCS) += mbcs.o ++obj-$(CONFIG_INTELLIHEAD) += intellihead.o + obj-$(CONFIG_BRIQ_PANEL) += briq_panel.o + + obj-$(CONFIG_PRINTER) += lp.o +@@ -126,7 +127,7 @@ + # Uncomment if you're changing the keymap and have an appropriate + # loadkeys version for the map. By default, we'll use the shipped + # versions. +-# GENERATE_KEYMAP := 1 ++GENERATE_KEYMAP := 1 + + ifdef GENERATE_KEYMAP + +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/generic-leds.c linux-2.6.25-m8050/drivers/input/generic-leds.c +--- linux-git/drivers/input/generic-leds.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/generic-leds.c 2008-10-01 17:00:42.000000000 +0200 +@@ -0,0 +1,117 @@ ++/* ++ * Input Power Event -> APM Bridge ++ * ++ * Copyright (c) 2007 Richard Purdie ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static void generic_leds_event(struct input_handle *handle, unsigned int type, ++ unsigned int code, int value) ++{ ++ /* only react on key down events */ ++ if (value != 1) ++ return; ++ ++ switch (type) { ++ case EV_LED: ++// printk("generic led EV_LED!!\n"); ++ ledtrig_ev_led_activity(); ++ break; ++ ++ default: ++ break; ++ } ++} ++ ++static int generic_leds_connect(struct input_handler *handler, ++ struct input_dev *dev, ++ const struct input_device_id *id) ++{ ++ struct input_handle *handle; ++ int error; ++ ++ handle = kzalloc(sizeof(struct input_handle), GFP_KERNEL); ++ if (!handle) ++ return -ENOMEM; ++ ++ handle->dev = dev; ++ handle->handler = handler; ++ handle->name = "generic-leds"; ++ ++ error = input_register_handle(handle); ++ if (error) { ++ printk(KERN_ERR ++ "generic-leds: Failed to register generic-leds handler, " ++ "error %d\n", error); ++ kfree(handle); ++ return error; ++ } ++ ++ error = input_open_device(handle); ++ if (error) { ++ printk(KERN_ERR ++ "generic-leds: Failed to open generic-leds device, " ++ "error %d\n", error); ++ input_unregister_handle(handle); ++ kfree(handle); ++ return error; ++ } ++ ++ return 0; ++} ++ ++static void generic_leds_disconnect(struct input_handle *handle) ++{ ++ input_close_device(handle); ++ input_unregister_handle(handle); ++ kfree(handle); ++} ++ ++static const struct input_device_id generic_leds_ids[] = { ++ { ++ .flags = INPUT_DEVICE_ID_MATCH_EVBIT, ++ .evbit = { BIT_MASK(EV_LED) }, ++ }, ++ { }, ++}; ++ ++MODULE_DEVICE_TABLE(input, generic_leds_ids); ++ ++ ++static struct input_handler generic_leds_handler = { ++ .event = generic_leds_event, ++ .connect = generic_leds_connect, ++ .disconnect = generic_leds_disconnect, ++ .name = "generic-leds", ++ .id_table = generic_leds_ids, ++}; ++ ++static int __init generic_leds_init(void) ++{ ++ return input_register_handler(&generic_leds_handler); ++} ++ ++static void __exit generic_leds_exit(void) ++{ ++ input_unregister_handler(&generic_leds_handler); ++} ++ ++module_init(generic_leds_init); ++module_exit(generic_leds_exit); ++ ++MODULE_AUTHOR("Richard Purdie "); ++MODULE_DESCRIPTION("Input Power Event -> APM Bridge"); ++MODULE_LICENSE("GPL"); +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/Kconfig linux-2.6.25-m8050/drivers/input/Kconfig +--- linux-git/drivers/input/Kconfig 2008-11-10 12:20:17.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/Kconfig 2008-10-01 15:27:27.000000000 +0200 +@@ -149,6 +149,15 @@ + To compile this driver as a module, choose M here: the + module will be called apm-power. + ++config INPUT_GENERICLEDS ++ tristate "Generic LED Handler" ++ depends on INPUT ++ ---help--- ++ Say Y here if you want suspend key events to trigger a user ++ requested suspend through APM. This is useful on embedded ++ systems where such behviour is desired without userspace ++ interaction. If unsure, say N. ++ + comment "Input Device Drivers" + + source "drivers/input/keyboard/Kconfig" +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/keyboard/Kconfig linux-2.6.25-m8050/drivers/input/keyboard/Kconfig +--- linux-git/drivers/input/keyboard/Kconfig 2008-11-10 12:20:17.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/keyboard/Kconfig 2008-05-22 08:51:44.000000000 +0200 +@@ -250,6 +250,15 @@ + To compile this driver as a module, choose M here: the + module will be called jornada720_kbd. + ++config KEYBOARD_M8050 ++ tristate "AML M8050 keypad support" ++ depends on MACH_AML_M8050 ++ help ++ Say Y here if you want to use the M8050 keypad. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called omap-keypad. ++ + config KEYBOARD_OMAP + tristate "TI OMAP keypad support" + depends on (ARCH_OMAP1 || ARCH_OMAP2) +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/keyboard/m8050-keypad.c linux-2.6.25-m8050/drivers/input/keyboard/m8050-keypad.c +--- linux-git/drivers/input/keyboard/m8050-keypad.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/keyboard/m8050-keypad.c 2008-10-14 16:05:16.000000000 +0200 +@@ -0,0 +1,709 @@ ++/* ++ * linux/drivers/input/keyboard/m8050-keypad.c ++ * ++ * M8050 Keypad Driver ++ * ++ * Copyright (C) 2008 American Microsystems Ltd. ++ * M8050 support by David Anders ++ * ++ * Based on the OMAP Keypad Driver ++ * ++ * Copyright (C) 2003 Nokia Corporation ++ * Written by Timo Teräs ++ * ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ * ++ * ++ * ++ * ++ * NOTE: in order to use the power button properly, the following need to be ++ * enabled: CONFIG_APM_EMULATION and CONFIG_INPUT_APMPOWER ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#undef NEW_BOARD_LEARNING_MODE ++ ++//#define NEW_BOARD_LEARNING_MODE 1 ++ ++static void m8050_kp_tasklet(unsigned long); ++static void m8050_kp_timer(unsigned long); ++static inline int m8050_kp_find_key(int col, int row, int matrix); ++ ++static unsigned char keypad_state[8]; ++static int kp_cur_group = -1; ++static int alphaset = 0; ++static int alphaexception=0; ++static int capslock =0; ++static int lastkey=0; ++static int lastrow=0,lastcol=0; ++ ++struct m8050_kp { ++ struct input_dev *input; ++ spinlock_t lock; ++ struct timer_list timer; ++ int irq; ++ unsigned int rows; ++ unsigned int cols; ++ unsigned long delay; ++ unsigned int debounce; ++ unsigned int suspended; ++ unsigned long suspend_jiffies; ++}; ++ ++DECLARE_TASKLET_DISABLED(kp_tasklet, m8050_kp_tasklet, 0); ++ ++static int *keymap; ++static int *keymap_a; ++static int *keymap_b; ++static int *keymap_c; ++static int *keymap_d; ++static unsigned int *row_gpios; ++static unsigned int *col_gpios; ++ ++static void alpha_timerfunc(unsigned long); ++static DEFINE_TIMER(alpha_timeout, alpha_timerfunc, 0, 0); ++ ++ ++static void alpha_timerfunc(unsigned long data) ++{ ++ ++struct m8050_kp *m8050_kp_data = (struct m8050_kp *) data; ++ ++printk("alphatimeout called!!\n"); ++ ++if (alphaset !=0 ) { ++ ++ if (m8050_kp_find_key(lastcol,lastrow,4) == KEY_UNKNOWN ) { ++ printk("reporting key with matrix %d!\n",((alphaset-2)%3)+1); ++ lastkey = m8050_kp_find_key(lastcol, lastrow,((alphaset-2)%3)+1); ++ } ++ else { ++ printk("reporting key with matrix %d!\n",((alphaset-2)%4)+1); ++ lastkey = m8050_kp_find_key(lastcol, lastrow,((alphaset-2)%4)+1); ++ } ++ printk("reporting key=%d\n",lastkey); ++ input_report_key(m8050_kp_data->input, lastkey & ~GROUP_MASK,1); ++ input_report_key(m8050_kp_data->input, lastkey & ~GROUP_MASK,0); ++ lastkey=0; ++ lastrow=0; ++ lastcol=0; ++ printk("reseting alphaset to 1!\n"); ++ alphaset=1; ++} ++ ++} ++ ++static void set_col_gpio_val(struct m8050_kp *m8050_kp, u8 value) ++{ ++ ++ if (value & (1 << 0)) ++ s3c2410_gpio_setpin(S3C2440_GPJ8, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ8, 0); ++ ++ if (value & (1 << 1)) ++ s3c2410_gpio_setpin(S3C2440_GPJ9, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ9, 0); ++ ++ if (value & (1 << 2)) ++ s3c2410_gpio_setpin(S3C2440_GPJ10, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ10, 0); ++ ++ if (value & (1 << 3)) ++ s3c2410_gpio_setpin(S3C2440_GPJ11, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ11, 0); ++ ++ if (value & (1 << 4)) ++ s3c2410_gpio_setpin(S3C2440_GPJ12, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ12, 0); ++ ++} ++ ++static u8 get_row_gpio_val(struct m8050_kp *m8050_kp) ++{ ++ u8 value = 0; ++ ++ if (s3c2410_gpio_getpin(S3C2410_GPG0)) ++ value |= (1 << 0); ++ ++ if (s3c2410_gpio_getpin(S3C2410_GPG1)) ++ value |= (1 << 1); ++ ++ if (s3c2410_gpio_getpin(S3C2410_GPG2)) ++ value |= (1 << 2); ++ ++ if (s3c2410_gpio_getpin(S3C2410_GPG3)) ++ value |= (1 << 3); ++ ++ return value; ++ ++} ++ ++static irqreturn_t m8050_kp_interrupt(int irq, void *dev_id) ++{ ++ struct m8050_kp *m8050_kp = dev_id; ++ int i; ++ ++ ++ /* disable keyboard interrupt and schedule for handling */ ++ for (i = 0; i < m8050_kp->rows; i++) ++ disable_irq(S3C2410_IRQ(36+i)); ++ ++ tasklet_schedule(&kp_tasklet); ++ ++ return IRQ_HANDLED; ++} ++ ++static void m8050_kp_timer(unsigned long data) ++{ ++ tasklet_schedule(&kp_tasklet); ++} ++ ++static void m8050_kp_scan_keypad(struct m8050_kp *m8050_kp, unsigned char *state) ++{ ++ int col = 0; ++ ++ /* read the keypad status */ ++ for (col = 0; col < m8050_kp->cols; col++) { ++ set_col_gpio_val(m8050_kp, ~(1 << col)); ++ state[col] = ~(get_row_gpio_val(m8050_kp)) & 0x0f; ++ } ++ set_col_gpio_val(m8050_kp, 0); ++ ++ ++} ++ ++static inline int m8050_kp_find_key(int col, int row, int matrix) ++{ ++ int i, key; ++ ++ key = KEY(col, row, 0); ++ printk("row=%d col=%d\n key=%d",row,col,key); ++ switch (matrix) { ++ case 0: ++ printk("matrix 0 lookup!\n"); ++ for (i = 0; keymap[i] != 0; i++) ++ if ((keymap[i] & 0xff000000) == key) ++ return keymap[i] & 0x00ffffff; ++ return -1; ++ case 1: ++ printk("matrix 1 lookup!\n"); ++ for (i = 0; keymap_a[i] != 0; i++) ++ if ((keymap_a[i] & 0xff000000) == key) ++ return keymap_a[i] & 0x00ffffff; ++ return -1; ++ case 2: ++ printk("matrix 2 lookup!\n"); ++ for (i = 0; keymap_b[i] != 0; i++) ++ if ((keymap_b[i] & 0xff000000) == key) ++ return keymap_b[i] & 0x00ffffff; ++ return -1; ++ case 3: ++ printk("matrix 3 lookup!\n"); ++ for (i = 0; keymap_c[i] != 0; i++) ++ if ((keymap_c[i] & 0xff000000) == key) ++ return keymap_c[i] & 0x00ffffff; ++ return -1; ++ case 4: ++ printk("matrix 4 lookup!\n"); ++ for (i = 0; keymap_d[i] != 0; i++) ++ if ((keymap_d[i] & 0xff000000) == key) ++ return keymap_d[i] & 0x00ffffff; ++ return -1; ++ default: ++ return -1; ++ } ++ ++} ++ ++static void m8050_kp_tasklet(unsigned long data) ++{ ++ struct m8050_kp *m8050_kp_data = (struct m8050_kp *) data; ++ unsigned char new_state[8], changed, key_down = 0; ++ int col, row; ++ int spurious = 0; ++ int suspend_requested=0; ++ ++ if (m8050_kp_data->suspended) { ++ return; ++ } ++ /* check for any changes */ ++ m8050_kp_scan_keypad(m8050_kp_data, new_state); ++ ++ /* check for changes and print those */ ++ for (col = 0; col < m8050_kp_data->cols; col++) { ++ changed = new_state[col] ^ keypad_state[col]; ++ key_down |= new_state[col]; ++ if (changed == 0) ++ continue; ++ ++ for (row = 0; row < m8050_kp_data->rows; row++) { ++ int key; ++ if (!(changed & (1 << row))) ++ continue; ++#ifdef NEW_BOARD_LEARNING_MODE ++ printk(KERN_INFO "m8050-keypad: key %d-%d %s\n", col, ++ row, (new_state[col] & (1 << row)) ? ++ "pressed" : "released"); ++#else ++ key = m8050_kp_find_key(col, row,0); ++ if (key < 0) { ++ printk(KERN_WARNING ++ "m8050-keypad: Spurious key event %d-%d\n", ++ col, row); ++ /* We scan again after a couple of seconds */ ++ spurious = 1; ++ continue; ++ } ++ ++ if (!(kp_cur_group == (key & GROUP_MASK) || ++ kp_cur_group == -1)) ++ continue; ++ ++ kp_cur_group = key & GROUP_MASK; ++ if (key_down && (key == KEY_SUSPEND) ++ && time_after(jiffies, m8050_kp_data->suspend_jiffies + HZ)) { ++ ++ suspend_requested=1; ++ m8050_kp_data->suspended=1; ++ } ++ else { ++ if (key != KEY_SUSPEND){ ++ if ( key == KEY_LEFTALT ){ ++ if ( new_state[col] & (1 << row) ){ ++ if (alphaset==0) { ++ printk("alpha set to 1\n"); ++ alphaset=1; ++ printk("capslock on\n"); ++ input_report_key(m8050_kp_data->input, KEY_CAPSLOCK,1); ++ input_report_key(m8050_kp_data->input, KEY_CAPSLOCK,0); ++ capslock=1; ++ } ++ else if(capslock==1) { ++ if (timer_pending(&alpha_timeout)) { ++ printk("deleting timer!\n"); ++ del_timer(&alpha_timeout); ++ if (m8050_kp_find_key(lastcol,lastrow,4) == KEY_UNKNOWN ) { ++ printk("reporting key with matrix %d!\n",((alphaset-2)%3)+1); ++ lastkey = m8050_kp_find_key(lastcol, lastrow,((alphaset-2)%3)+1); ++ } ++ else { ++ printk("reporting key with matrix %d!\n",((alphaset-2)%4)+1); ++ lastkey = m8050_kp_find_key(lastcol, lastrow,((alphaset-2)%4)+1); ++ } ++ ++// printk("reporting key with matrix %d!\n",alphaset-1); ++// lastkey = m8050_kp_find_key(lastcol, lastrow,alphaset-1); ++ input_report_key(m8050_kp_data->input, lastkey & ~GROUP_MASK,1); ++ input_report_key(m8050_kp_data->input, lastkey & ~GROUP_MASK,0); ++ lastkey=0; ++ lastrow=0; ++ lastcol=0; ++ printk("reseting alphaset to 1!\n"); ++ alphaset=1; ++ } ++ printk("capslock off\n"); ++ input_report_key(m8050_kp_data->input, KEY_CAPSLOCK,1); ++ input_report_key(m8050_kp_data->input, KEY_CAPSLOCK,0); ++ capslock=0; ++ } ++ else { ++ if (timer_pending(&alpha_timeout)) { ++ printk("deleting timer!\n"); ++ del_timer(&alpha_timeout); ++ if (m8050_kp_find_key(lastcol,lastrow,4) == KEY_UNKNOWN ) { ++ printk("reporting key with matrix %d!\n",((alphaset-2)%3)+1); ++ lastkey = m8050_kp_find_key(lastcol, lastrow,((alphaset-2)%3)+1); ++ } ++ else { ++ printk("reporting key with matrix %d!\n",((alphaset-2)%4)+1); ++ lastkey = m8050_kp_find_key(lastcol, lastrow,((alphaset-2)%4)+1); ++ } ++ ++// printk("reporting key with matrix %d!\n",alphaset-1); ++// lastkey = m8050_kp_find_key(lastcol, lastrow,alphaset-1); ++ input_report_key(m8050_kp_data->input, lastkey & ~GROUP_MASK,1); ++ input_report_key(m8050_kp_data->input, lastkey & ~GROUP_MASK,0); ++ lastkey=0; ++ lastrow=0; ++ lastcol=0; ++ printk("reseting alphaset to 1!\n"); ++ alphaset=1; ++ } ++ printk("alpha set to 0\n"); ++ alphaset=0; ++ } ++ } ++ } ++ else { ++ if ( alphaset != 0 ) { ++ if ( new_state[col] & (1 << row) ){ ++ mod_timer(&alpha_timeout, jiffies + (HZ)); ++ printk("modifying timer!\n"); ++ if ( lastkey == key ){ ++ alphaset++; ++ printk("incrementing alphaset to %d\n",alphaset); ++ } ++ else { ++ if (alphaset==1) { ++ if (m8050_kp_find_key(col,row, 1) == KEY_UNKNOWN ){ ++ printk("deleting timer!\n"); ++ del_timer(&alpha_timeout); ++ printk("alphaexception=%d\n",alphaexception); ++ printk("alpha exception reporting key with matrix 0!\n"); ++ input_report_key(m8050_kp_data->input, key & ~GROUP_MASK, ++ new_state[col] & (1 << row)); ++ alphaexception=1; ++ } ++ else { ++ alphaset++; ++ printk("incrementing alphaset to %d\n",alphaset); ++ lastkey=key; ++ lastrow=row; ++ lastcol=col; ++ } ++ } ++ else { ++ if (m8050_kp_find_key(col,row, 1) == KEY_UNKNOWN ){ ++ printk("deleting timer!\n"); ++ del_timer(&alpha_timeout); ++ if (m8050_kp_find_key(lastcol,lastrow,4) == KEY_UNKNOWN ) { ++ printk("reporting key with matrix %d!\n",((alphaset-2)%3)+1); ++ lastkey = m8050_kp_find_key(lastcol, lastrow,((alphaset-2)%3)+1); ++ } ++ else { ++ printk("reporting key with matrix %d!\n",((alphaset-2)%4)+1); ++ lastkey = m8050_kp_find_key(lastcol, lastrow,((alphaset-2)%4)+1); ++ } ++ ++// lastkey = m8050_kp_find_key(lastcol, lastrow,alphaset-1); ++ input_report_key(m8050_kp_data->input, lastkey & ~GROUP_MASK,1); ++ input_report_key(m8050_kp_data->input, lastkey & ~GROUP_MASK,0); ++ lastkey=0; ++ lastrow=0; ++ lastcol=0; ++ printk("reseting alphaset to 1!\n"); ++ alphaset=1; ++ printk("alphaexception=%d\n",alphaexception); ++ printk("alpha exception reporting key with matrix 0!\n"); ++ printk("reporting key=%d\n",key); ++ input_report_key(m8050_kp_data->input, key & ~GROUP_MASK, ++ new_state[col] & (1 << row)); ++ alphaexception=1; ++ } ++ else { ++ printk("reporting key!\n"); ++ if (m8050_kp_find_key(lastcol,lastrow,4) == KEY_UNKNOWN ) { ++ printk("reporting key with matrix %d!\n",((alphaset-2)%3)+1); ++ lastkey = m8050_kp_find_key(lastcol, lastrow,((alphaset-2)%3)+1); ++ } ++ else { ++ printk("reporting key with matrix %d!\n",((alphaset-2)%4)+1); ++ lastkey = m8050_kp_find_key(lastcol, lastrow,((alphaset-2)%4)+1); ++ } ++// lastkey = m8050_kp_find_key(lastcol, lastrow,alphaset-1); ++ input_report_key(m8050_kp_data->input, lastkey & ~GROUP_MASK,1); ++ input_report_key(m8050_kp_data->input, lastkey & ~GROUP_MASK,0); ++ lastkey=key; ++ lastrow=row; ++ lastcol=col; ++ printk("reseting alphaset to 2!\n"); ++ alphaset=2; ++ } ++ } ++ } ++ ++ } ++ else { ++// if (alphaexception == 1 ){ ++ if (m8050_kp_find_key(col,row, 1) == KEY_UNKNOWN ){ ++ printk("alphaexception=%d\n",alphaexception); ++ printk("alpha exception reporting key with matrix 0!\n"); ++ printk("reporting key=%d\n",key); ++ input_report_key(m8050_kp_data->input, key & ~GROUP_MASK, ++ new_state[col] & (1 << row)); ++ alphaexception=0; ++ } ++ } ++ } ++ else { ++ printk("reporting key with matrix %d!\n",alphaset); ++ printk("reporting key=%d\n",key); ++ input_report_key(m8050_kp_data->input, key & ~GROUP_MASK, ++ new_state[col] & (1 << row)); ++ } ++ } ++ } ++ } ++#endif ++ } ++ } ++ memcpy(keypad_state, new_state, sizeof(keypad_state)); ++ ++ input_sync(m8050_kp_data->input); ++ ++ if (key_down && (suspend_requested==0)) { ++ int delay = HZ / 20; ++ /* some key is pressed - keep irq disabled and use timer ++ * to poll the keypad */ ++ if (spurious) ++ delay = 2 * HZ; ++ mod_timer(&m8050_kp_data->timer, jiffies + delay); ++ } else { ++ /* enable interrupts */ ++ int i; ++ for (i = 0; i < m8050_kp_data->rows; i++) ++ enable_irq(S3C2410_IRQ(36+i)); ++ } ++ ++ if (suspend_requested){ ++ ++ input_event(m8050_kp_data->input, EV_PWR, KEY_SUSPEND, 1); ++ m8050_kp_data->suspend_jiffies=jiffies; ++ } ++} ++#ifdef CONFIG_PM ++static int m8050_kp_suspend(struct platform_device *dev, pm_message_t state) ++{ ++ struct m8050_kp *m8050_kp_data = platform_get_drvdata(dev); ++ ++ del_timer_sync(&m8050_kp_data->timer); ++ ++ s3c2410_gpio_setpin(S3C2440_GPJ8, 1); ++ s3c2410_gpio_setpin(S3C2440_GPJ9, 1); ++ s3c2410_gpio_setpin(S3C2440_GPJ10, 1); ++ s3c2410_gpio_setpin(S3C2440_GPJ11, 1); ++ s3c2410_gpio_setpin(S3C2440_GPJ12, 0); ++ ++ return 0; ++} ++ ++static int m8050_kp_resume(struct platform_device *dev) ++{ ++ struct m8050_kp *m8050_kp_data = platform_get_drvdata(dev); ++ ++ /* Upon resume, ignore the suspend key for a short while */ ++ m8050_kp_data->suspend_jiffies=jiffies; ++ m8050_kp_data->suspended = 0; ++ mod_timer(&m8050_kp_data->timer, jiffies + 50); ++ ++ return 0; ++} ++#else ++#define m8050_kp_suspend NULL ++#define m8050_kp_resume NULL ++#endif ++ ++static int __init m8050_kp_probe(struct platform_device *pdev) ++{ ++ struct m8050_kp *m8050_kp; ++ struct input_dev *input_dev; ++ struct m8050_kp_platform_data *pdata = pdev->dev.platform_data; ++ int i, irq_idx, ret; ++ ++ if (!pdata->rows || !pdata->cols || !pdata->keymap) { ++ printk(KERN_ERR "No rows, cols or keymap from pdata\n"); ++ return -EINVAL; ++ } ++ ++ m8050_kp = kzalloc(sizeof(struct m8050_kp), GFP_KERNEL); ++ input_dev = input_allocate_device(); ++ if (!m8050_kp || !input_dev) { ++ kfree(m8050_kp); ++ input_free_device(input_dev); ++ return -ENOMEM; ++ } ++ ++ platform_set_drvdata(pdev, m8050_kp); ++ ++ m8050_kp->input = input_dev; ++ ++ keymap = pdata->keymap; ++ keymap_a = pdata->keymap_a; ++ keymap_b = pdata->keymap_b; ++ keymap_c = pdata->keymap_c; ++ keymap_d = pdata->keymap_d; ++ ++ if (pdata->rep) ++ __set_bit(EV_REP, input_dev->evbit); ++ ++ if (pdata->delay) ++ m8050_kp->delay = pdata->delay; ++ ++ if (pdata->row_gpios && pdata->col_gpios) { ++ row_gpios = pdata->row_gpios; ++ col_gpios = pdata->col_gpios; ++ } ++ ++ m8050_kp->rows = pdata->rows; ++ m8050_kp->cols = pdata->cols; ++ ++ /* Cols: outputs */ ++ s3c2410_gpio_cfgpin(S3C2440_GPJ8, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ8, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ9, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ9, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ10, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ10, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ11, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ11, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ12, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ12, 1); ++ ++ /* Rows: inputs */ ++ s3c2410_gpio_cfgpin(S3C2410_GPG0, S3C2410_GPIO_IRQ); ++ s3c2410_gpio_cfgpin(S3C2410_GPG1, S3C2410_GPIO_IRQ); ++ s3c2410_gpio_cfgpin(S3C2410_GPG2, S3C2410_GPIO_IRQ); ++ s3c2410_gpio_cfgpin(S3C2410_GPG3, S3C2410_GPIO_IRQ); ++ ++ ++ setup_timer(&m8050_kp->timer, m8050_kp_timer, (unsigned long)m8050_kp); ++ alpha_timeout.data=(unsigned long)m8050_kp; ++ ++ /* get the irq and init timer*/ ++ tasklet_enable(&kp_tasklet); ++ kp_tasklet.data = (unsigned long) m8050_kp; ++ ++ /* setup input device */ ++ __set_bit(EV_KEY, input_dev->evbit); ++ __set_bit(EV_PWR, input_dev->evbit); ++ for (i = 0; keymap[i] != 0; i++) ++ __set_bit(keymap[i] & KEY_MAX, input_dev->keybit); ++ ++ for (i = 0; keymap_a[i] != 0; i++) ++ __set_bit(keymap_a[i] & KEY_MAX, input_dev->keybit); ++ ++ for (i = 0; keymap_b[i] != 0; i++) ++ __set_bit(keymap_b[i] & KEY_MAX, input_dev->keybit); ++ ++ for (i = 0; keymap_c[i] != 0; i++) ++ __set_bit(keymap_c[i] & KEY_MAX, input_dev->keybit); ++ ++ for (i = 0; keymap_d[i] != 0; i++) ++ __set_bit(keymap_d[i] & KEY_MAX, input_dev->keybit); ++ ++ /* specifically register capslock as it is hardcoded */ ++ __set_bit(KEY_CAPSLOCK,input_dev->keybit); ++ ++ input_dev->name = "m8050-keypad"; ++ input_dev->phys = "m8050-keypad/input0"; ++ input_dev->dev.parent = &pdev->dev; ++ ++ input_dev->id.bustype = BUS_HOST; ++ input_dev->id.vendor = 0x0001; ++ input_dev->id.product = 0x0001; ++ input_dev->id.version = 0x0100; ++ ++ ret = input_register_device(m8050_kp->input); ++ if (ret < 0) { ++ printk(KERN_ERR "Unable to register m8050-keypad input device\n"); ++ goto err2; ++ } ++ ++ /* scan current status and enable interrupt */ ++ m8050_kp_scan_keypad(m8050_kp, keypad_state); ++ for (irq_idx = 0; irq_idx < m8050_kp->rows; irq_idx++) { ++ if (request_irq(S3C2410_IRQ(36+irq_idx), ++ m8050_kp_interrupt, ++ IRQF_TRIGGER_FALLING, ++ "m8050-keypad", m8050_kp) < 0) ++ goto err3; ++ } ++ ++ m8050_kp->suspend_jiffies=jiffies; ++ ++ return 0; ++err3: ++ for (i = irq_idx - 1; i >=0; i--) ++ free_irq(S3C2410_IRQ(36+irq_idx), 0); ++ input_unregister_device(m8050_kp->input); ++ input_dev = NULL; ++err2: ++ kfree(m8050_kp); ++ input_free_device(input_dev); ++ ++ return -EINVAL; ++} ++ ++static int m8050_kp_remove(struct platform_device *pdev) ++{ ++ struct m8050_kp *m8050_kp = platform_get_drvdata(pdev); ++ ++ /* disable keypad interrupt handling */ ++ tasklet_disable(&kp_tasklet); ++ ++ del_timer_sync(&m8050_kp->timer); ++ tasklet_kill(&kp_tasklet); ++ ++ /* unregister everything */ ++ input_unregister_device(m8050_kp->input); ++ ++ kfree(m8050_kp); ++ ++ return 0; ++} ++ ++static struct platform_driver m8050_kp_driver = { ++ .probe = m8050_kp_probe, ++ .remove = m8050_kp_remove, ++ .suspend = m8050_kp_suspend, ++ .resume = m8050_kp_resume, ++ .driver = { ++ .name = "m8050-keypad", ++ }, ++}; ++ ++static int __devinit m8050_kp_init(void) ++{ ++ printk(KERN_INFO "M8050 Keypad Driver\n"); ++ return platform_driver_register(&m8050_kp_driver); ++} ++ ++static void __exit m8050_kp_exit(void) ++{ ++ platform_driver_unregister(&m8050_kp_driver); ++} ++ ++module_init(m8050_kp_init); ++module_exit(m8050_kp_exit); ++ ++MODULE_AUTHOR("David Anders"); ++MODULE_DESCRIPTION("M8050 Keypad Driver"); ++MODULE_LICENSE("GPL"); +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/keyboard/m8050-keypad.old.c linux-2.6.25-m8050/drivers/input/keyboard/m8050-keypad.old.c +--- linux-git/drivers/input/keyboard/m8050-keypad.old.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/keyboard/m8050-keypad.old.c 2008-07-28 11:01:22.000000000 +0200 +@@ -0,0 +1,547 @@ ++/* ++ * linux/drivers/input/keyboard/m8050-keypad.c ++ * ++ * M8050 Keypad Driver ++ * ++ * Copyright (C) 2008 American Microsystems Ltd. ++ * M8050 support by David Anders ++ * ++ * Based on the OMAP Keypad Driver ++ * ++ * Copyright (C) 2003 Nokia Corporation ++ * Written by Timo Teräs ++ * ++ * Added support for H2 & H3 Keypad ++ * Copyright (C) 2004 Texas Instruments ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++//#undef NEW_BOARD_LEARNING_MODE ++ ++ ++ ++#define NEW_BOARD_LEARNING_MODE 1 ++ ++static void m8050_kp_tasklet(unsigned long); ++static void m8050_kp_timer(unsigned long); ++ ++static unsigned char keypad_state[8]; ++static DEFINE_MUTEX(kp_enable_mutex); ++static int kp_enable = 1; ++static int kp_cur_group = -1; ++static int return_from_suspend=0; ++ ++struct m8050_kp { ++ struct input_dev *input; ++ struct timer_list timer; ++ int irq; ++ unsigned int rows; ++ unsigned int cols; ++ unsigned long delay; ++ unsigned int debounce; ++}; ++ ++DECLARE_TASKLET_DISABLED(kp_tasklet, m8050_kp_tasklet, 0); ++ ++static int *keymap; ++static unsigned int *row_gpios; ++static unsigned int *col_gpios; ++ ++static void suspend_task_handler(void *data) { ++ mdelay(50); ++ pm_suspend(PM_SUSPEND_MEM); ++ ++ printk("resume complete from keypad!!\n"); ++} ++ ++static DECLARE_WORK(suspend_task,suspend_task_handler); ++ ++static void set_col_gpio_val(struct m8050_kp *m8050_kp, u8 value) ++{ ++ ++ if (value & (1 << 0)) ++ s3c2410_gpio_setpin(S3C2440_GPJ8, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ8, 0); ++ ++ if (value & (1 << 1)) ++ s3c2410_gpio_setpin(S3C2440_GPJ9, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ9, 0); ++ ++ if (value & (1 << 2)) ++ s3c2410_gpio_setpin(S3C2440_GPJ10, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ10, 0); ++ ++ if (value & (1 << 3)) ++ s3c2410_gpio_setpin(S3C2440_GPJ11, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ11, 0); ++ ++ if (value & (1 << 4)) ++ s3c2410_gpio_setpin(S3C2440_GPJ12, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ12, 0); ++ ++// convert this to a s3c24xx function ++// int col; ++// for (col = 0; col < m8050_kp->cols; col++) { ++// if (value & (1 << col)) ++// m8050_set_gpio_dataout(col_gpios[col], 1); ++// else ++// m8050_set_gpio_dataout(col_gpios[col], 0); ++// } ++} ++ ++static u8 get_row_gpio_val(struct m8050_kp *m8050_kp) ++{ ++ u8 value = 0; ++ ++ if (s3c2410_gpio_getpin(S3C2410_GPG0)) ++ value |= (1 << 0); ++ ++ if (s3c2410_gpio_getpin(S3C2410_GPG1)) ++ value |= (1 << 1); ++ ++ if (s3c2410_gpio_getpin(S3C2410_GPG2)) ++ value |= (1 << 2); ++ ++ if (s3c2410_gpio_getpin(S3C2410_GPG3)) ++ value |= (1 << 3); ++ ++ return value; ++ ++// convert this to a s3c24xx function ++// int row; ++// u8 value = 0; ++// ++// for (row = 0; row < m8050_kp->rows; row++) { ++// if (m8050_get_gpio_datain(row_gpios[row])) ++// value |= (1 << row); ++// } ++// return value; ++// return 0; ++} ++ ++static irqreturn_t m8050_kp_interrupt(int irq, void *dev_id) ++{ ++ struct m8050_kp *m8050_kp = dev_id; ++ int i; ++ ++ printk("keyboard interrupt called!!!\n"); ++ if ( return_from_suspend ) { ++ printk("return_from_suspend=%d\n",return_from_suspend); ++ return_from_suspend=0; ++ s3c2410_gpio_setpin(S3C2440_GPJ8, 0); ++ s3c2410_gpio_setpin(S3C2440_GPJ9, 0); ++ s3c2410_gpio_setpin(S3C2440_GPJ10, 0); ++ s3c2410_gpio_setpin(S3C2440_GPJ11, 0); ++ s3c2410_gpio_setpin(S3C2440_GPJ12, 0); ++ return IRQ_HANDLED; ++ } ++ /* disable keyboard interrupt and schedule for handling */ ++ for (i = 0; i < m8050_kp->rows; i++) ++ disable_irq(S3C2410_IRQ(36+i)); ++ ++ tasklet_schedule(&kp_tasklet); ++ printk("did not detect return from suspend!!!\n"); ++ ++ return IRQ_HANDLED; ++} ++ ++static void m8050_kp_timer(unsigned long data) ++{ ++ int i; ++// printk("timmer fired!!\n"); ++ for (i = 0; i < m8050_kp->rows; i++) ++ disable_irq(S3C2410_IRQ(36+i)); ++ tasklet_schedule(&kp_tasklet); ++} ++ ++static void m8050_kp_scan_keypad(struct m8050_kp *m8050_kp, unsigned char *state) ++{ ++ int col = 0; ++ ++ int i; ++ for (i = 0; i < m8050_kp->rows; i++) ++ disable_irq(S3C2410_IRQ(36+i)); ++ ++ /* read the keypad status */ ++ for (col = 0; col < m8050_kp->cols; col++) { ++ set_col_gpio_val(m8050_kp, ~(1 << col)); ++ state[col] = ~(get_row_gpio_val(m8050_kp)) & 0x3f; ++ } ++ set_col_gpio_val(m8050_kp, 0); ++ ++ ++} ++ ++static inline int m8050_kp_find_key(int col, int row) ++{ ++ int i, key; ++ ++ key = KEY(col, row, 0); ++ for (i = 0; keymap[i] != 0; i++) ++ if ((keymap[i] & 0xff000000) == key) ++ return keymap[i] & 0x00ffffff; ++ return -1; ++} ++ ++static void m8050_kp_tasklet(unsigned long data) ++{ ++ struct m8050_kp *m8050_kp_data = (struct m8050_kp *) data; ++ unsigned char new_state[8], changed, key_down = 0; ++ int col, row; ++ int spurious = 0; ++ ++ /* check for any changes */ ++ m8050_kp_scan_keypad(m8050_kp_data, new_state); ++ ++ /* check for changes and print those */ ++ for (col = 0; col < m8050_kp_data->cols; col++) { ++ changed = new_state[col] ^ keypad_state[col]; ++ key_down |= new_state[col]; ++ if (changed == 0) ++ continue; ++ ++ for (row = 0; row < m8050_kp_data->rows; row++) { ++ int key; ++ if (!(changed & (1 << row))) ++ continue; ++ if ( (col == 4) & (row == 2)){ ++// int i; ++// for (i = 0; i < m8050_kp_data->rows; i++) ++// enable_irq(S3C2410_IRQ(36+i)); ++ input_event(m8050_kp_data->input, EV_PWR, KEY_SUSPEND, 1); ++ printk("scheduling suspend!!\n"); ++// schedule_work(&suspend_task); ++// return; ++ } ++#ifdef NEW_BOARD_LEARNING_MODE ++ printk(KERN_INFO "m8050-keypad: key %d-%d %s\n", col, ++ row, (new_state[col] & (1 << row)) ? ++ "pressed" : "released"); ++ ++#else ++ key = m8050_kp_find_key(col, row); ++ if (key < 0) { ++ printk(KERN_WARNING ++ "m8050-keypad: Spurious key event %d-%d\n", ++ col, row); ++ /* We scan again after a couple of seconds */ ++ spurious = 1; ++ continue; ++ } ++ ++ if (!(kp_cur_group == (key & GROUP_MASK) || ++ kp_cur_group == -1)) ++ continue; ++ ++ kp_cur_group = key & GROUP_MASK; ++ input_report_key(m8050_kp_data->input, key & ~GROUP_MASK, ++ new_state[col] & (1 << row)); ++#endif ++ } ++ } ++ memcpy(keypad_state, new_state, sizeof(keypad_state)); ++ ++ if (key_down) { ++ int delay = HZ / 20; ++ /* some key is pressed - keep irq disabled and use timer ++ * to poll the keypad */ ++ if (spurious) ++ delay = 2 * HZ; ++ mod_timer(&m8050_kp_data->timer, jiffies + delay); ++ } else { ++ /* enable interrupts */ ++ int i; ++ for (i = 0; i < m8050_kp_data->rows; i++) ++ enable_irq(S3C2410_IRQ(36+i)); ++ } ++} ++ ++static ssize_t m8050_kp_enable_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ return sprintf(buf, "%u\n", kp_enable); ++} ++ ++static ssize_t m8050_kp_enable_store(struct device *dev, struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ int state; ++ ++ if (sscanf(buf, "%u", &state) != 1) ++ return -EINVAL; ++ ++ if ((state != 1) && (state != 0)) ++ return -EINVAL; ++ ++ mutex_lock(&kp_enable_mutex); ++// this needs to be converted into a s3c24xx function ++ if (state != kp_enable) { ++// if (state) ++// enable_irq(INT_KEYBOARD); ++// else ++// disable_irq(INT_KEYBOARD); ++ kp_enable = state; ++ } ++ mutex_unlock(&kp_enable_mutex); ++ ++ return strnlen(buf, count); ++} ++ ++static DEVICE_ATTR(enable, S_IRUGO | S_IWUSR, m8050_kp_enable_show, m8050_kp_enable_store); ++ ++#ifdef CONFIG_PM ++static int m8050_kp_suspend(struct platform_device *dev, pm_message_t state) ++{ ++ printk("keyboard suspend called!!\n"); ++// disable_irq(S3C2410_IRQ(36)); ++// disable_irq(S3C2410_IRQ(37)); ++// disable_irq(S3C2410_IRQ(38)); ++// disable_irq(S3C2410_IRQ(39)); ++ /* Nothing yet */ ++ return_from_suspend=1; ++ s3c2410_gpio_cfgpin(S3C2440_GPJ8, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ8, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ9, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ9, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ10, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ10, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ11, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ11, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ12, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ12, 0); ++ ++ ++ return 0; ++} ++ ++static int m8050_kp_resume(struct platform_device *dev) ++{ ++ printk("keyboard resume called!!\n"); ++ /* Nothing yet */ ++// enable_irq(S3C2410_IRQ(36)); ++// enable_irq(S3C2410_IRQ(37)); ++// enable_irq(S3C2410_IRQ(38)); ++// enable_irq(S3C2410_IRQ(39)); ++ ++// s3c2410_gpio_cfgpin(S3C2440_GPJ8, S3C2410_GPIO_OUTPUT); ++// s3c2410_gpio_setpin(S3C2440_GPJ8, 0); ++// s3c2410_gpio_cfgpin(S3C2440_GPJ9, S3C2410_GPIO_OUTPUT); ++// s3c2410_gpio_setpin(S3C2440_GPJ9, 0); ++// s3c2410_gpio_cfgpin(S3C2440_GPJ10, S3C2410_GPIO_OUTPUT); ++// s3c2410_gpio_setpin(S3C2440_GPJ10, 0); ++// s3c2410_gpio_cfgpin(S3C2440_GPJ11, S3C2410_GPIO_OUTPUT); ++// s3c2410_gpio_setpin(S3C2440_GPJ11, 0); ++// s3c2410_gpio_cfgpin(S3C2440_GPJ12, S3C2410_GPIO_OUTPUT); ++// s3c2410_gpio_setpin(S3C2440_GPJ12, 0); ++ ++ return 0; ++} ++#else ++#define m8050_kp_suspend NULL ++#define m8050_kp_resume NULL ++#endif ++ ++static int __init m8050_kp_probe(struct platform_device *pdev) ++{ ++ struct m8050_kp *m8050_kp; ++ struct input_dev *input_dev; ++ struct m8050_kp_platform_data *pdata = pdev->dev.platform_data; ++ int i, col_idx, row_idx, irq_idx, ret; ++ ++ if (!pdata->rows || !pdata->cols || !pdata->keymap) { ++ printk(KERN_ERR "No rows, cols or keymap from pdata\n"); ++ return -EINVAL; ++ } ++ ++ m8050_kp = kzalloc(sizeof(struct m8050_kp), GFP_KERNEL); ++ input_dev = input_allocate_device(); ++ if (!m8050_kp || !input_dev) { ++ kfree(m8050_kp); ++ input_free_device(input_dev); ++ return -ENOMEM; ++ } ++ ++ platform_set_drvdata(pdev, m8050_kp); ++ ++ m8050_kp->input = input_dev; ++ ++ keymap = pdata->keymap; ++ ++ if (pdata->rep) ++ __set_bit(EV_REP, input_dev->evbit); ++ ++ if (pdata->delay) ++ m8050_kp->delay = pdata->delay; ++ ++ if (pdata->row_gpios && pdata->col_gpios) { ++ row_gpios = pdata->row_gpios; ++ col_gpios = pdata->col_gpios; ++ } ++ ++ m8050_kp->rows = pdata->rows; ++ m8050_kp->cols = pdata->cols; ++ ++ /* Cols: outputs */ ++ s3c2410_gpio_cfgpin(S3C2440_GPJ8, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ8, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ9, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ9, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ10, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ10, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ11, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ11, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ12, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ12, 1); ++ ++ /* Rows: inputs */ ++ s3c2410_gpio_cfgpin(S3C2410_GPG0, S3C2410_GPIO_IRQ); ++ s3c2410_gpio_cfgpin(S3C2410_GPG1, S3C2410_GPIO_IRQ); ++ s3c2410_gpio_cfgpin(S3C2410_GPG2, S3C2410_GPIO_IRQ); ++ s3c2410_gpio_cfgpin(S3C2410_GPG3, S3C2410_GPIO_IRQ); ++ ++ ++ setup_timer(&m8050_kp->timer, m8050_kp_timer, (unsigned long)m8050_kp); ++ ++ /* get the irq and init timer*/ ++ tasklet_enable(&kp_tasklet); ++ kp_tasklet.data = (unsigned long) m8050_kp; ++ ++ ret = device_create_file(&pdev->dev, &dev_attr_enable); ++ if (ret < 0) ++ goto err1; ++ ++ /* setup input device */ ++ __set_bit(EV_KEY, input_dev->evbit); ++ for (i = 0; keymap[i] != 0; i++) ++ __set_bit(keymap[i] & KEY_MAX, input_dev->keybit); ++ input_dev->name = "m8050-keypad"; ++ input_dev->phys = "m8050-keypad/input0"; ++ input_dev->dev.parent = &pdev->dev; ++ ++ input_dev->id.bustype = BUS_HOST; ++ input_dev->id.vendor = 0x0001; ++ input_dev->id.product = 0x0001; ++ input_dev->id.version = 0x0100; ++ ++ ret = input_register_device(m8050_kp->input); ++ if (ret < 0) { ++ printk(KERN_ERR "Unable to register m8050-keypad input device\n"); ++ goto err2; ++ } ++ ++ /* scan current status and enable interrupt */ ++ m8050_kp_scan_keypad(m8050_kp, keypad_state); ++ for (irq_idx = 0; irq_idx < m8050_kp->rows; irq_idx++) { ++ if (request_irq(S3C2410_IRQ(36+irq_idx), ++ m8050_kp_interrupt, ++ IRQF_TRIGGER_FALLING, ++ "m8050-keypad", m8050_kp) < 0) ++ goto err3; ++ } ++ return 0; ++err3: ++ for (i = irq_idx - 1; i >=0; i--) ++ free_irq(S3C2410_IRQ(36+irq_idx), 0); ++ input_unregister_device(m8050_kp->input); ++ input_dev = NULL; ++err2: ++ device_remove_file(&pdev->dev, &dev_attr_enable); ++err1: ++ kfree(m8050_kp); ++ input_free_device(input_dev); ++ ++ return -EINVAL; ++} ++ ++static int m8050_kp_remove(struct platform_device *pdev) ++{ ++ struct m8050_kp *m8050_kp = platform_get_drvdata(pdev); ++ int i; ++ ++ /* disable keypad interrupt handling */ ++ tasklet_disable(&kp_tasklet); ++ for (i = 0; i < m8050_kp->cols; i++) ++// m8050_free_gpio(col_gpios[i]); ++ for (i = 0; i < m8050_kp->rows; i++) { ++// m8050_free_gpio(row_gpios[i]); ++// free_irq(m8050_GPIO_IRQ(row_gpios[i]), 0); ++ } ++ ++ del_timer_sync(&m8050_kp->timer); ++ tasklet_kill(&kp_tasklet); ++ ++ /* unregister everything */ ++ input_unregister_device(m8050_kp->input); ++ ++ kfree(m8050_kp); ++ ++ return 0; ++} ++ ++static struct platform_driver m8050_kp_driver = { ++ .probe = m8050_kp_probe, ++ .remove = m8050_kp_remove, ++ .suspend = m8050_kp_suspend, ++ .resume = m8050_kp_resume, ++ .driver = { ++ .name = "m8050-keypad", ++ }, ++}; ++ ++static int __devinit m8050_kp_init(void) ++{ ++ printk(KERN_INFO "M8050 Keypad Driver\n"); ++ return platform_driver_register(&m8050_kp_driver); ++} ++ ++static void __exit m8050_kp_exit(void) ++{ ++ platform_driver_unregister(&m8050_kp_driver); ++} ++ ++module_init(m8050_kp_init); ++module_exit(m8050_kp_exit); ++ ++MODULE_AUTHOR("David Anders"); ++MODULE_DESCRIPTION("M8050 Keypad Driver"); ++MODULE_LICENSE("GPL"); +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/keyboard/m8050-keypad.x.c linux-2.6.25-m8050/drivers/input/keyboard/m8050-keypad.x.c +--- linux-git/drivers/input/keyboard/m8050-keypad.x.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/keyboard/m8050-keypad.x.c 2008-10-02 18:35:31.000000000 +0200 +@@ -0,0 +1,532 @@ ++/* ++ * linux/drivers/input/keyboard/m8050-keypad.c ++ * ++ * M8050 Keypad Driver ++ * ++ * Copyright (C) 2008 American Microsystems Ltd. ++ * M8050 support by David Anders ++ * ++ * Based on the OMAP Keypad Driver ++ * ++ * Copyright (C) 2003 Nokia Corporation ++ * Written by Timo Teräs ++ * ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ * ++ * ++ * ++ * ++ * NOTE: in order to use the power button properly, the following need to be ++ * enabled: CONFIG_APM_EMULATION and CONFIG_INPUT_APMPOWER ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#undef NEW_BOARD_LEARNING_MODE ++ ++//#define NEW_BOARD_LEARNING_MODE 1 ++ ++static void m8050_kp_tasklet(unsigned long); ++static void m8050_kp_timer(unsigned long); ++ ++static unsigned char keypad_state[8]; ++static int kp_cur_group = -1; ++static int alphaset=0; ++static int lastalpha=0; ++static int lastcol=-1; ++static int lastrow=-1; ++ ++struct m8050_kp { ++ struct input_dev *input; ++ spinlock_t lock; ++ struct timer_list timer; ++ int irq; ++ unsigned int rows; ++ unsigned int cols; ++ unsigned long delay; ++ unsigned int debounce; ++ unsigned int suspended; ++ unsigned long suspend_jiffies; ++}; ++ ++DECLARE_TASKLET_DISABLED(kp_tasklet, m8050_kp_tasklet, 0); ++ ++static int *keymap; ++static int *keymap_a; ++static int *keymap_b; ++static unsigned int *row_gpios; ++static unsigned int *col_gpios; ++ ++static void alpha_timerfunc(unsigned long data); ++static DEFINE_TIMER(alpha_timeout, alpha_timerfunc, 0, 0); ++ ++static int alphatimeout=0; ++ ++static void alpha_timerfunc(unsigned long data) ++{ ++printk("alphatimeout called!!\n"); ++alphatimeout=1; ++//alphaset=0; ++ ++} ++static void set_col_gpio_val(struct m8050_kp *m8050_kp, u8 value) ++{ ++ ++ if (value & (1 << 0)) ++ s3c2410_gpio_setpin(S3C2440_GPJ8, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ8, 0); ++ ++ if (value & (1 << 1)) ++ s3c2410_gpio_setpin(S3C2440_GPJ9, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ9, 0); ++ ++ if (value & (1 << 2)) ++ s3c2410_gpio_setpin(S3C2440_GPJ10, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ10, 0); ++ ++ if (value & (1 << 3)) ++ s3c2410_gpio_setpin(S3C2440_GPJ11, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ11, 0); ++ ++ if (value & (1 << 4)) ++ s3c2410_gpio_setpin(S3C2440_GPJ12, 1); ++ else ++ s3c2410_gpio_setpin(S3C2440_GPJ12, 0); ++ ++} ++ ++static u8 get_row_gpio_val(struct m8050_kp *m8050_kp) ++{ ++ u8 value = 0; ++ ++ if (s3c2410_gpio_getpin(S3C2410_GPG0)) ++ value |= (1 << 0); ++ ++ if (s3c2410_gpio_getpin(S3C2410_GPG1)) ++ value |= (1 << 1); ++ ++ if (s3c2410_gpio_getpin(S3C2410_GPG2)) ++ value |= (1 << 2); ++ ++ if (s3c2410_gpio_getpin(S3C2410_GPG3)) ++ value |= (1 << 3); ++ ++ return value; ++ ++} ++ ++static irqreturn_t m8050_kp_interrupt(int irq, void *dev_id) ++{ ++ struct m8050_kp *m8050_kp = dev_id; ++ int i; ++ ++ ++ /* disable keyboard interrupt and schedule for handling */ ++ for (i = 0; i < m8050_kp->rows; i++) ++ disable_irq(S3C2410_IRQ(36+i)); ++ ++ tasklet_schedule(&kp_tasklet); ++ ++ return IRQ_HANDLED; ++} ++ ++static void m8050_kp_timer(unsigned long data) ++{ ++ tasklet_schedule(&kp_tasklet); ++} ++ ++static void m8050_kp_scan_keypad(struct m8050_kp *m8050_kp, unsigned char *state) ++{ ++ int col = 0; ++ ++ /* read the keypad status */ ++ for (col = 0; col < m8050_kp->cols; col++) { ++ set_col_gpio_val(m8050_kp, ~(1 << col)); ++ state[col] = ~(get_row_gpio_val(m8050_kp)) & 0x0f; ++ } ++ set_col_gpio_val(m8050_kp, 0); ++ ++ ++} ++ ++static inline int m8050_kp_find_key(int col, int row) ++{ ++ int i, key; ++ ++ key = KEY(col, row, 0); ++ if ( alphaset==1 ) { ++ lastrow=row; ++ lastcol=col; ++ for (i = 0; keymap_a[i] != 0; i++) ++ if ((keymap_a[i] & 0xff000000) == key) ++ return keymap_a[i] & 0x00ffffff; ++ } ++ else if ( alphaset==2 ) { ++ if ( (lastrow==row) && (lastcol==col)) { ++ if (alphatimeout==0) { ++ for (i = 0; keymap_b[i] != 0; i++) ++ if ((keymap_b[i] & 0xff000000) == key) ++ return keymap_b[i] & 0x00ffffff; ++ } ++ else { ++ if (timer_pending(&alpha_timeout)) ++ del_timer(&alpha_timeout); ++ alphaset=0; ++ for (i = 0; keymap[i] != 0; i++) ++ if ((keymap[i] & 0xff000000) == key) ++ return keymap[i] & 0x00ffffff; ++ } ++ } ++ else { ++ if (timer_pending(&alpha_timeout)) ++ del_timer(&alpha_timeout); ++ alphaset=0; ++ for (i = 0; keymap[i] != 0; i++) ++ if ((keymap[i] & 0xff000000) == key) ++ return keymap[i] & 0x00ffffff; ++ } ++ } ++ else { ++ for (i = 0; keymap[i] != 0; i++) ++ if ((keymap[i] & 0xff000000) == key) ++ return keymap[i] & 0x00ffffff; ++ } ++ ++ return -1; ++} ++ ++static void m8050_kp_tasklet(unsigned long data) ++{ ++ struct m8050_kp *m8050_kp_data = (struct m8050_kp *) data; ++ unsigned char new_state[8], changed, key_down = 0; ++ int col, row; ++ int spurious = 0; ++ int suspend_requested=0; ++ ++ if (m8050_kp_data->suspended) { ++ return; ++ } ++ /* check for any changes */ ++ m8050_kp_scan_keypad(m8050_kp_data, new_state); ++ ++ /* check for changes and print those */ ++ for (col = 0; col < m8050_kp_data->cols; col++) { ++ changed = new_state[col] ^ keypad_state[col]; ++ key_down |= new_state[col]; ++ if (changed == 0) ++ continue; ++ ++ for (row = 0; row < m8050_kp_data->rows; row++) { ++ int key; ++ if (!(changed & (1 << row))) ++ continue; ++#ifdef NEW_BOARD_LEARNING_MODE ++ printk(KERN_INFO "m8050-keypad: key %d-%d %s\n", col, ++ row, (new_state[col] & (1 << row)) ? ++ "pressed" : "released"); ++#else ++ key = m8050_kp_find_key(col, row); ++ if (key < 0) { ++ printk(KERN_WARNING ++ "m8050-keypad: Spurious key event %d-%d\n", ++ col, row); ++ /* We scan again after a couple of seconds */ ++ spurious = 1; ++ continue; ++ } ++ ++ if (!(kp_cur_group == (key & GROUP_MASK) || ++ kp_cur_group == -1)) ++ continue; ++ ++ kp_cur_group = key & GROUP_MASK; ++ if (key_down && (key == KEY_SUSPEND) ++ && time_after(jiffies, m8050_kp_data->suspend_jiffies + HZ)) { ++ ++ suspend_requested=1; ++ m8050_kp_data->suspended=1; ++ } ++ else { ++ if (key != KEY_SUSPEND){ ++ if ( key == KEY_LEFTALT ) { ++ alphaset=1; ++ } ++ else { ++ if ( (alphaset==2) && (new_state[col] & (1 << row))==0){ ++ alphaset=0; ++ if (timer_pending(&alpha_timeout)) ++ del_timer(&alpha_timeout); ++ alphatimeout=0; ++ } ++ if ( (alphaset==1) && (new_state[col] & (1 << row))==0){ ++ mod_timer(&alpha_timeout, jiffies + (HZ)); ++ alphaset=2; ++ } ++ if ( (alphaset > 1) && (new_state[col] & (1 << row))!=0) { ++ input_report_key(m8050_kp_data->input, KEY_BACKSPACE,1); ++ input_report_key(m8050_kp_data->input, KEY_BACKSPACE,0); ++ } ++ input_report_key(m8050_kp_data->input, key & ~GROUP_MASK, ++ new_state[col] & (1 << row)); ++ } ++ } ++ } ++#endif ++ } ++ } ++ memcpy(keypad_state, new_state, sizeof(keypad_state)); ++ ++ input_sync(m8050_kp_data->input); ++ ++ if (key_down && (suspend_requested==0)) { ++ int delay = HZ / 20; ++ /* some key is pressed - keep irq disabled and use timer ++ * to poll the keypad */ ++ if (spurious) ++ delay = 2 * HZ; ++ mod_timer(&m8050_kp_data->timer, jiffies + delay); ++ } else { ++ /* enable interrupts */ ++ int i; ++ for (i = 0; i < m8050_kp_data->rows; i++) ++ enable_irq(S3C2410_IRQ(36+i)); ++ } ++ ++ if (suspend_requested){ ++ ++ input_event(m8050_kp_data->input, EV_PWR, KEY_SUSPEND, 1); ++ m8050_kp_data->suspend_jiffies=jiffies; ++ } ++} ++#ifdef CONFIG_PM ++static int m8050_kp_suspend(struct platform_device *dev, pm_message_t state) ++{ ++ struct m8050_kp *m8050_kp_data = platform_get_drvdata(dev); ++ ++ del_timer_sync(&m8050_kp_data->timer); ++ ++ s3c2410_gpio_setpin(S3C2440_GPJ8, 1); ++ s3c2410_gpio_setpin(S3C2440_GPJ9, 1); ++ s3c2410_gpio_setpin(S3C2440_GPJ10, 1); ++ s3c2410_gpio_setpin(S3C2440_GPJ11, 1); ++ s3c2410_gpio_setpin(S3C2440_GPJ12, 0); ++ ++ return 0; ++} ++ ++static int m8050_kp_resume(struct platform_device *dev) ++{ ++ struct m8050_kp *m8050_kp_data = platform_get_drvdata(dev); ++ ++ /* Upon resume, ignore the suspend key for a short while */ ++ m8050_kp_data->suspend_jiffies=jiffies; ++ m8050_kp_data->suspended = 0; ++ mod_timer(&m8050_kp_data->timer, jiffies + 50); ++ ++ return 0; ++} ++#else ++#define m8050_kp_suspend NULL ++#define m8050_kp_resume NULL ++#endif ++ ++static int __init m8050_kp_probe(struct platform_device *pdev) ++{ ++ struct m8050_kp *m8050_kp; ++ struct input_dev *input_dev; ++ struct m8050_kp_platform_data *pdata = pdev->dev.platform_data; ++ int i, irq_idx, ret; ++ ++ if (!pdata->rows || !pdata->cols || !pdata->keymap || !pdata->keymap_a || !pdata->keymap_b) { ++ printk(KERN_ERR "No rows, cols or keymap from pdata\n"); ++ return -EINVAL; ++ } ++ ++ m8050_kp = kzalloc(sizeof(struct m8050_kp), GFP_KERNEL); ++ input_dev = input_allocate_device(); ++ if (!m8050_kp || !input_dev) { ++ kfree(m8050_kp); ++ input_free_device(input_dev); ++ return -ENOMEM; ++ } ++ ++ platform_set_drvdata(pdev, m8050_kp); ++ ++ m8050_kp->input = input_dev; ++ ++ keymap = pdata->keymap; ++ keymap_a = pdata->keymap_a; ++ keymap_b = pdata->keymap_b; ++ ++ if (pdata->rep) ++ __set_bit(EV_REP, input_dev->evbit); ++ ++ if (pdata->delay) ++ m8050_kp->delay = pdata->delay; ++ ++ if (pdata->row_gpios && pdata->col_gpios) { ++ row_gpios = pdata->row_gpios; ++ col_gpios = pdata->col_gpios; ++ } ++ ++ m8050_kp->rows = pdata->rows; ++ m8050_kp->cols = pdata->cols; ++ ++ /* Cols: outputs */ ++ s3c2410_gpio_cfgpin(S3C2440_GPJ8, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ8, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ9, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ9, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ10, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ10, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ11, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ11, 1); ++ s3c2410_gpio_cfgpin(S3C2440_GPJ12, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ12, 1); ++ ++ /* Rows: inputs */ ++ s3c2410_gpio_cfgpin(S3C2410_GPG0, S3C2410_GPIO_IRQ); ++ s3c2410_gpio_cfgpin(S3C2410_GPG1, S3C2410_GPIO_IRQ); ++ s3c2410_gpio_cfgpin(S3C2410_GPG2, S3C2410_GPIO_IRQ); ++ s3c2410_gpio_cfgpin(S3C2410_GPG3, S3C2410_GPIO_IRQ); ++ ++ ++ setup_timer(&m8050_kp->timer, m8050_kp_timer, (unsigned long)m8050_kp); ++ ++ /* get the irq and init timer*/ ++ tasklet_enable(&kp_tasklet); ++ kp_tasklet.data = (unsigned long) m8050_kp; ++ ++ /* setup input device */ ++ __set_bit(EV_KEY, input_dev->evbit); ++ __set_bit(EV_PWR, input_dev->evbit); ++ for (i = 0; keymap[i] != 0; i++) ++ __set_bit(keymap[i] & KEY_MAX, input_dev->keybit); ++ ++ for (i = 0; keymap_a[i] != 0; i++) ++ __set_bit(keymap_a[i] & KEY_MAX, input_dev->keybit); ++ ++ for (i = 0; keymap_b[i] != 0; i++) ++ __set_bit(keymap_b[i] & KEY_MAX, input_dev->keybit); ++ ++ input_dev->name = "m8050-keypad"; ++ input_dev->phys = "m8050-keypad/input0"; ++ input_dev->dev.parent = &pdev->dev; ++ ++ input_dev->id.bustype = BUS_HOST; ++ input_dev->id.vendor = 0x0001; ++ input_dev->id.product = 0x0001; ++ input_dev->id.version = 0x0100; ++ ++ ret = input_register_device(m8050_kp->input); ++ if (ret < 0) { ++ printk(KERN_ERR "Unable to register m8050-keypad input device\n"); ++ goto err2; ++ } ++ ++ /* scan current status and enable interrupt */ ++ m8050_kp_scan_keypad(m8050_kp, keypad_state); ++ for (irq_idx = 0; irq_idx < m8050_kp->rows; irq_idx++) { ++ if (request_irq(S3C2410_IRQ(36+irq_idx), ++ m8050_kp_interrupt, ++ IRQF_TRIGGER_FALLING, ++ "m8050-keypad", m8050_kp) < 0) ++ goto err3; ++ } ++ ++ m8050_kp->suspend_jiffies=jiffies; ++ ++ return 0; ++err3: ++ for (i = irq_idx - 1; i >=0; i--) ++ free_irq(S3C2410_IRQ(36+irq_idx), 0); ++ input_unregister_device(m8050_kp->input); ++ input_dev = NULL; ++err2: ++ kfree(m8050_kp); ++ input_free_device(input_dev); ++ ++ return -EINVAL; ++} ++ ++static int m8050_kp_remove(struct platform_device *pdev) ++{ ++ struct m8050_kp *m8050_kp = platform_get_drvdata(pdev); ++ ++ /* disable keypad interrupt handling */ ++ tasklet_disable(&kp_tasklet); ++ ++ del_timer_sync(&m8050_kp->timer); ++ tasklet_kill(&kp_tasklet); ++ ++ /* unregister everything */ ++ input_unregister_device(m8050_kp->input); ++ ++ kfree(m8050_kp); ++ ++ return 0; ++} ++ ++static struct platform_driver m8050_kp_driver = { ++ .probe = m8050_kp_probe, ++ .remove = m8050_kp_remove, ++ .suspend = m8050_kp_suspend, ++ .resume = m8050_kp_resume, ++ .driver = { ++ .name = "m8050-keypad", ++ }, ++}; ++ ++static int __devinit m8050_kp_init(void) ++{ ++ printk(KERN_INFO "M8050 Keypad Driver\n"); ++ return platform_driver_register(&m8050_kp_driver); ++} ++ ++static void __exit m8050_kp_exit(void) ++{ ++ platform_driver_unregister(&m8050_kp_driver); ++} ++ ++module_init(m8050_kp_init); ++module_exit(m8050_kp_exit); ++ ++MODULE_AUTHOR("David Anders"); ++MODULE_DESCRIPTION("M8050 Keypad Driver"); ++MODULE_LICENSE("GPL"); +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/keyboard/Makefile linux-2.6.25-m8050/drivers/input/keyboard/Makefile +--- linux-git/drivers/input/keyboard/Makefile 2008-11-10 12:20:17.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/keyboard/Makefile 2008-05-22 08:51:44.000000000 +0200 +@@ -11,6 +11,7 @@ + obj-$(CONFIG_KEYBOARD_AMIGA) += amikbd.o + obj-$(CONFIG_KEYBOARD_ATARI) += atakbd.o + obj-$(CONFIG_KEYBOARD_LOCOMO) += locomokbd.o ++obj-$(CONFIG_KEYBOARD_M8050) += m8050-keypad.o + obj-$(CONFIG_KEYBOARD_NEWTON) += newtonkbd.o + obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o + obj-$(CONFIG_KEYBOARD_CORGI) += corgikbd.o +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/Makefile linux-2.6.25-m8050/drivers/input/Makefile +--- linux-git/drivers/input/Makefile 2008-11-10 12:20:17.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/Makefile 2008-10-01 15:26:09.000000000 +0200 +@@ -23,3 +23,4 @@ + obj-$(CONFIG_INPUT_MISC) += misc/ + + obj-$(CONFIG_INPUT_APMPOWER) += apm-power.o ++obj-$(CONFIG_INPUT_GENERICLEDS) += generic-leds.o +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/misc/Kconfig linux-2.6.25-m8050/drivers/input/misc/Kconfig +--- linux-git/drivers/input/misc/Kconfig 2008-11-10 12:20:17.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/misc/Kconfig 2008-10-01 11:25:17.000000000 +0200 +@@ -197,4 +197,10 @@ + Say Y here if you want to support the built-in real time clock + of the HP SDC controller. + ++config INPUT_M8050BC ++ tristate "M8050 Barcode Scanner" ++ depends on MACH_AML_M8050 ++ help ++ Say Y here if you want the M8050 Barcode Scanner interface. ++ + endif +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/misc/m8050-barcode.c linux-2.6.25-m8050/drivers/input/misc/m8050-barcode.c +--- linux-git/drivers/input/misc/m8050-barcode.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/misc/m8050-barcode.c 2008-10-01 14:28:27.000000000 +0200 +@@ -0,0 +1,149 @@ ++/* ++ * m68k beeper driver for Linux ++ * ++ * Copyright (c) 2002 Richard Zidlicky ++ * Copyright (c) 2002 Vojtech Pavlik ++ * Copyright (c) 1992 Orest Zborowski ++ * ++ */ ++ ++/* ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++MODULE_AUTHOR("Richard Zidlicky "); ++MODULE_DESCRIPTION("m68k beeper driver"); ++MODULE_LICENSE("GPL"); ++ ++static struct platform_device *barcode_platform_device; ++ ++static int barcode_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) ++{ ++ ++ if (type != EV_LED){ ++ printk("NOT a EV_LED Event from barcode!\n"); ++ return -1; ++ ++ } ++ ++ printk("EV_LED Event from barcode!\n"); ++ ++ if (value) ++ ledtrig_ev_led_activity(); ++ ++// switch (code) { ++// case SND_BELL: if (value) value = 1000; ++// case SND_TONE: break; ++// default: return -1; ++// } ++ ++ return 0; ++} ++ ++static int __devinit barcode_probe(struct platform_device *dev) ++{ ++ struct input_dev *input_dev; ++ int err; ++ ++ input_dev = input_allocate_device(); ++ if (!input_dev) ++ return -ENOMEM; ++ ++ printk("m8050 barcode probe!\n"); ++ input_dev->name = "M8050 Barcode"; ++ input_dev->phys = "m8050/generic"; ++ input_dev->id.bustype = BUS_HOST; ++ input_dev->id.vendor = 0x001f; ++ input_dev->id.product = 0x0001; ++ input_dev->id.version = 0x0100; ++ input_dev->dev.parent = &dev->dev; ++ ++// input_dev->evbit[0] = BIT_MASK(EV_LED); ++// input_dev->ledbit[0] = BIT_MASK(LED_MISC); ++ ++ set_bit (EV_LED, input_dev->evbit); ++ set_bit (LED_MISC, input_dev->ledbit); ++ ++ input_dev->event = barcode_event; ++ ++ err = input_register_device(input_dev); ++ if (err) { ++ input_free_device(input_dev); ++ return err; ++ } ++ ++ platform_set_drvdata(dev, input_dev); ++ ++ return 0; ++} ++ ++static int __devexit barcode_remove(struct platform_device *dev) ++{ ++ struct input_dev *input_dev = platform_get_drvdata(dev); ++ ++ input_unregister_device(input_dev); ++ platform_set_drvdata(dev, NULL); ++ ++ return 0; ++} ++ ++static void barcode_shutdown(struct platform_device *dev) ++{ ++ ++} ++ ++static struct platform_driver barcode_platform_driver = { ++ .driver = { ++ .name = "m8050bc", ++ .owner = THIS_MODULE, ++ }, ++ .probe = barcode_probe, ++ .remove = __devexit_p(barcode_remove), ++ .shutdown = barcode_shutdown, ++}; ++ ++static int __init barcode_init(void) ++{ ++ int err; ++ ++ err = platform_driver_register(&barcode_platform_driver); ++ if (err) ++ return err; ++ ++ barcode_platform_device = platform_device_alloc("m8050bc", -1); ++ if (!barcode_platform_device) { ++ err = -ENOMEM; ++ goto err_unregister_driver; ++ } ++ ++ err = platform_device_add(barcode_platform_device); ++ if (err) ++ goto err_free_device; ++ ++ return 0; ++ ++ err_free_device: ++ platform_device_put(barcode_platform_device); ++ err_unregister_driver: ++ platform_driver_unregister(&barcode_platform_driver); ++ ++ return err; ++} ++ ++static void __exit barcode_exit(void) ++{ ++ platform_device_unregister(barcode_platform_device); ++ platform_driver_unregister(&barcode_platform_driver); ++} ++ ++module_init(barcode_init); ++module_exit(barcode_exit); +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/misc/Makefile linux-2.6.25-m8050/drivers/input/misc/Makefile +--- linux-git/drivers/input/misc/Makefile 2008-11-10 12:20:17.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/misc/Makefile 2008-10-01 11:25:47.000000000 +0200 +@@ -19,3 +19,4 @@ + obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o + obj-$(CONFIG_INPUT_UINPUT) += uinput.o + obj-$(CONFIG_INPUT_APANEL) += apanel.o ++obj-$(CONFIG_INPUT_M8050BC) += m8050-barcode.o +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/mouse/gpio_mouse.c linux-2.6.25-m8050/drivers/input/mouse/gpio_mouse.c +--- linux-git/drivers/input/mouse/gpio_mouse.c 2008-11-10 12:20:17.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/mouse/gpio_mouse.c 2008-10-03 15:43:59.000000000 +0200 +@@ -8,6 +8,8 @@ + * published by the Free Software Foundation. + */ + ++#include ++#include + #include + #include + #include +@@ -17,6 +19,9 @@ + + #include + ++int last_x=0; ++int last_y=0; ++int last_bleft; + /* + * Timer function which is run every scan_ms ms when the device is opened. + * The dev input varaible is set to the the input_dev pointer. +@@ -25,11 +30,15 @@ + { + struct gpio_mouse_platform_data *gpio = dev->private; + struct input_dev *input = dev->input; +- int x, y; +- +- if (gpio->bleft >= 0) +- input_report_key(input, BTN_LEFT, +- gpio_get_value(gpio->bleft) ^ gpio->polarity); ++ int x, y,bleft,do_sync=0; ++ if (gpio->bleft >= 0) { ++ bleft=((gpio_get_value(gpio->bleft) ? 1 : 0) ^ gpio->polarity); ++ if ( bleft != last_bleft ) { ++ input_report_key(input, BTN_LEFT,bleft); ++ do_sync=1; ++ last_bleft=bleft; ++ } ++ } + if (gpio->bmiddle >= 0) + input_report_key(input, BTN_MIDDLE, + gpio_get_value(gpio->bmiddle) ^ gpio->polarity); +@@ -37,14 +46,25 @@ + input_report_key(input, BTN_RIGHT, + gpio_get_value(gpio->bright) ^ gpio->polarity); + +- x = (gpio_get_value(gpio->right) ^ gpio->polarity) +- - (gpio_get_value(gpio->left) ^ gpio->polarity); +- y = (gpio_get_value(gpio->down) ^ gpio->polarity) +- - (gpio_get_value(gpio->up) ^ gpio->polarity); +- +- input_report_rel(input, REL_X, x); +- input_report_rel(input, REL_Y, y); +- input_sync(input); ++ x = ((gpio_get_value(gpio->right) ? 1 : 0) ^ gpio->polarity) ++ - ((gpio_get_value(gpio->left) ? 1 : 0) ^ gpio->polarity); ++ y = ((gpio_get_value(gpio->down) ? 1 : 0) ^ gpio->polarity) ++ - ((gpio_get_value(gpio->up) ? 1 : 0) ^ gpio->polarity); ++ ++ if ( (x!=0) || (y!=0) ) { ++ if( last_x==0 ){ ++ input_report_rel(input, REL_X, (x*5)); ++ do_sync=1; ++ } ++ if( last_y==0 ) { ++ input_report_rel(input, REL_Y, (y*5)); ++ do_sync=1; ++ } ++ } ++ if (do_sync) ++ input_sync(input); ++ last_x=x; ++ last_y=y; + } + + static int __init gpio_mouse_probe(struct platform_device *pdev) +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/touchscreen/Kconfig linux-2.6.25-m8050/drivers/input/touchscreen/Kconfig +--- linux-git/drivers/input/touchscreen/Kconfig 2008-11-10 12:20:17.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/touchscreen/Kconfig 2008-05-29 07:57:07.000000000 +0200 +@@ -67,6 +67,24 @@ + To compile this driver as a module, choose M here: the + module will be called fujitsu-ts. + ++config TOUCHSCREEN_S3C2410 ++ tristate "Samsung S3C2410 touchscreen input driver" ++ depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN ++ select SERIO ++ help ++ Say Y here if you have the s3c2410 touchscreen. ++ ++ If unsure, say N. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called s3c2410_ts. ++ ++config TOUCHSCREEN_S3C2410_DEBUG ++ boolean "Samsung S3C2410 touchscreen debug messages" ++ depends on TOUCHSCREEN_S3C2410 ++ help ++ Select this if you want debug messages ++ + config TOUCHSCREEN_GUNZE + tristate "Gunze AHL-51S touchscreen" + select SERIO +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/touchscreen/Makefile linux-2.6.25-m8050/drivers/input/touchscreen/Makefile +--- linux-git/drivers/input/touchscreen/Makefile 2008-11-10 12:20:17.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/touchscreen/Makefile 2008-05-29 07:57:07.000000000 +0200 +@@ -7,6 +7,7 @@ + obj-$(CONFIG_TOUCHSCREEN_ADS7846) += ads7846.o + obj-$(CONFIG_TOUCHSCREEN_BITSY) += h3600_ts_input.o + obj-$(CONFIG_TOUCHSCREEN_CORGI) += corgi_ts.o ++obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o + obj-$(CONFIG_TOUCHSCREEN_GUNZE) += gunze.o + obj-$(CONFIG_TOUCHSCREEN_ELO) += elo.o + obj-$(CONFIG_TOUCHSCREEN_FUJITSU) += fujitsu_ts.o +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/input/touchscreen/s3c2410_ts.c linux-2.6.25-m8050/drivers/input/touchscreen/s3c2410_ts.c +--- linux-git/drivers/input/touchscreen/s3c2410_ts.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/input/touchscreen/s3c2410_ts.c 2008-06-26 12:49:20.000000000 +0200 +@@ -0,0 +1,432 @@ ++/* ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ * ++ * Copyright (c) 2004 Arnaud Patard ++ * iPAQ H1940 touchscreen support ++ * ++ * ChangeLog ++ * ++ * 2004-09-05: Herbert Pötzl ++ * - added clock (de-)allocation code ++ * ++ * 2005-03-06: Arnaud Patard ++ * - h1940_ -> s3c2410 (this driver is now also used on the n30 ++ * machines :P) ++ * - Debug messages are now enabled with the config option ++ * TOUCHSCREEN_S3C2410_DEBUG ++ * - Changed the way the value are read ++ * - Input subsystem should now work ++ * - Use ioremap and readl/writel ++ * ++ * 2005-03-23: Arnaud Patard ++ * - Make use of some undocumented features of the touchscreen ++ * controller ++ * ++ * 2007-05-23: Harald Welte ++ * - Add proper support for S32440 ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++#define SWAP_AXIS ++ ++/* For ts.dev.id.version */ ++#define S3C2410TSVERSION 0x0101 ++ ++#define TSC_SLEEP (S3C2410_ADCTSC_PULL_UP_DISABLE | S3C2410_ADCTSC_XY_PST(0)) ++ ++#define WAIT4INT(x) (((x)<<8) | \ ++ S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \ ++ S3C2410_ADCTSC_XY_PST(3)) ++ ++#define AUTOPST (S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \ ++ S3C2410_ADCTSC_AUTO_PST | S3C2410_ADCTSC_XY_PST(0)) ++ ++#define DEBUG_LVL KERN_DEBUG ++ ++MODULE_AUTHOR("Arnaud Patard "); ++MODULE_DESCRIPTION("s3c2410 touchscreen driver"); ++MODULE_LICENSE("GPL"); ++ ++/* ++ * Definitions & global arrays. ++ */ ++ ++ ++static char *s3c2410ts_name = "s3c2410 TouchScreen"; ++ ++/* ++ * Per-touchscreen data. ++ */ ++ ++struct s3c2410ts { ++ struct input_dev *dev; ++ long xp; ++ long yp; ++ int count; ++ int shift; ++}; ++ ++static struct s3c2410ts ts; ++static void __iomem *base_addr; ++ ++static inline void s3c2410_ts_connect(void) ++{ ++ s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPG12_XMON); ++ s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON); ++ s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_YMON); ++ s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON); ++} ++ ++static void touch_timer_fire(unsigned long data) ++{ ++ unsigned long data0; ++ unsigned long data1; ++ int updown; ++ ++ data0 = readl(base_addr+S3C2410_ADCDAT0); ++ data1 = readl(base_addr+S3C2410_ADCDAT1); ++ ++ updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN)); ++ ++ if (updown) { ++ if (ts.count != 0) { ++ ts.xp >>= ts.shift; ++ ts.yp >>= ts.shift; ++ ++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG ++ { ++ struct timeval tv; ++ do_gettimeofday(&tv); ++ printk(DEBUG_LVL "T: %06d, X: %03ld, Y: %03ld\n", (int)tv.tv_usec, ts.xp, ts.yp); ++ } ++#endif ++ ++#ifdef SWAP_AXIS ++ input_report_abs(ts.dev, ABS_X, ts.yp); ++ input_report_abs(ts.dev, ABS_Y, ts.xp); ++#else ++ input_report_abs(ts.dev, ABS_X, ts.xp); ++ input_report_abs(ts.dev, ABS_Y, ts.yp); ++#endif ++ input_report_key(ts.dev, BTN_TOUCH, 1); ++ input_report_abs(ts.dev, ABS_PRESSURE, 1); ++ input_sync(ts.dev); ++ } ++ ++ ts.xp = 0; ++ ts.yp = 0; ++ ts.count = 0; ++ ++ writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC); ++ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON); ++ } else { ++ ts.count = 0; ++ ++ input_report_key(ts.dev, BTN_TOUCH, 0); ++ input_report_abs(ts.dev, ABS_PRESSURE, 0); ++ input_sync(ts.dev); ++ ++ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC); ++ } ++} ++ ++static struct timer_list touch_timer = ++ TIMER_INITIALIZER(touch_timer_fire, 0, 0); ++ ++static irqreturn_t stylus_updown(int irq, void *dev_id) ++{ ++ unsigned long data0; ++ unsigned long data1; ++ int updown; ++ ++ data0 = readl(base_addr+S3C2410_ADCDAT0); ++ data1 = readl(base_addr+S3C2410_ADCDAT1); ++ ++ updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN)); ++ ++ /* TODO we should never get an interrupt with updown set while ++ * the timer is running, but maybe we ought to verify that the ++ * timer isn't running anyways. */ ++ ++ if (updown) ++ touch_timer_fire(0); ++ ++ return IRQ_HANDLED; ++} ++ ++ ++static irqreturn_t stylus_action(int irq, void *dev_id) ++{ ++ unsigned long data0; ++ unsigned long data1; ++ ++ data0 = readl(base_addr+S3C2410_ADCDAT0); ++ data1 = readl(base_addr+S3C2410_ADCDAT1); ++ ++ ts.xp += data0 & S3C2410_ADCDAT0_XPDATA_MASK; ++ ts.yp += data1 & S3C2410_ADCDAT1_YPDATA_MASK; ++ ts.count++; ++ ++ if (ts.count < (1<dev.platform_data; ++ ++ if (!info) ++ { ++ printk(KERN_ERR "Hm... too bad : no platform data for ts\n"); ++ return -EINVAL; ++ } ++ ++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG ++ printk(DEBUG_LVL "Entering s3c2410ts_init\n"); ++#endif ++ ++ adc_clock = clk_get(NULL, "adc"); ++ if (!adc_clock) { ++ printk(KERN_ERR "failed to get adc clock source\n"); ++ return -ENOENT; ++ } ++ clk_enable(adc_clock); ++ ++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG ++ printk(DEBUG_LVL "got and enabled clock\n"); ++#endif ++ ++ base_addr=ioremap(S3C2410_PA_ADC,0x20); ++ if (base_addr == NULL) { ++ printk(KERN_ERR "Failed to remap register block\n"); ++ return -ENOMEM; ++ } ++ ++ ++ /* If we acutally are a S3C2410: Configure GPIOs */ ++ if (!strcmp(pdev->name, "s3c2410-ts")) ++ s3c2410_ts_connect(); ++ ++ if ((info->presc&0xff) > 0) ++ writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),\ ++ base_addr+S3C2410_ADCCON); ++ else ++ writel(0,base_addr+S3C2410_ADCCON); ++ ++ ++ /* Initialise registers */ ++ if ((info->delay&0xffff) > 0) ++ writel(info->delay & 0xffff, base_addr+S3C2410_ADCDLY); ++ ++ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC); ++ ++ /* Initialise input stuff */ ++ memset(&ts, 0, sizeof(struct s3c2410ts)); ++ input_dev = input_allocate_device(); ++ ++ if (!input_dev) { ++ printk(KERN_ERR "Unable to allocate the input device !!\n"); ++ return -ENOMEM; ++ } ++ ++ ts.dev = input_dev; ++ ts.dev->evbit[0] = BIT(EV_SYN) | BIT(EV_KEY) | BIT(EV_ABS); ++ ts.dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH); ++ input_set_abs_params(ts.dev, ABS_X, 0, 0x3FF, 0, 0); ++ input_set_abs_params(ts.dev, ABS_Y, 0, 0x3FF, 0, 0); ++ input_set_abs_params(ts.dev, ABS_PRESSURE, 0, 1, 0, 0); ++ ++ ts.dev->private = &ts; ++ ts.dev->name = s3c2410ts_name; ++ ts.dev->id.bustype = BUS_RS232; ++ ts.dev->id.vendor = 0xDEAD; ++ ts.dev->id.product = 0xBEEF; ++ ts.dev->id.version = S3C2410TSVERSION; ++ ++ ts.shift = info->oversampling_shift; ++ ++ /* Get irqs */ ++ if (request_irq(IRQ_ADC, stylus_action, IRQF_SAMPLE_RANDOM, ++ "s3c2410_action", ts.dev)) { ++ printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_ADC !\n"); ++ iounmap(base_addr); ++ return -EIO; ++ } ++ if (request_irq(IRQ_TC, stylus_updown, IRQF_SAMPLE_RANDOM, ++ "s3c2410_action", ts.dev)) { ++ printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_TC !\n"); ++ iounmap(base_addr); ++ return -EIO; ++ } ++ ++ printk(KERN_INFO "%s successfully loaded\n", s3c2410ts_name); ++ ++ /* All went ok, so register to the input system */ ++ input_register_device(ts.dev); ++ ++ return 0; ++} ++ ++static int s3c2410ts_remove(struct platform_device *pdev) ++{ ++ disable_irq(IRQ_ADC); ++ disable_irq(IRQ_TC); ++ free_irq(IRQ_TC,ts.dev); ++ free_irq(IRQ_ADC,ts.dev); ++ ++ if (adc_clock) { ++ clk_disable(adc_clock); ++ clk_put(adc_clock); ++ adc_clock = NULL; ++ } ++ ++ input_unregister_device(ts.dev); ++ iounmap(base_addr); ++ ++ return 0; ++} ++ ++#ifdef CONFIG_PM ++static int s3c2410ts_suspend(struct platform_device *pdev, pm_message_t state) ++{ ++ writel(TSC_SLEEP, base_addr+S3C2410_ADCTSC); ++ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_STDBM, ++ base_addr+S3C2410_ADCCON); ++ ++ disable_irq(IRQ_ADC); ++ disable_irq(IRQ_TC); ++ ++ clk_disable(adc_clock); ++ ++ return 0; ++} ++ ++static int s3c2410ts_resume(struct platform_device *pdev) ++{ ++ struct s3c2410_ts_mach_info *info = ++ ( struct s3c2410_ts_mach_info *)pdev->dev.platform_data; ++ ++ clk_enable(adc_clock); ++ msleep(1); ++ ++ enable_irq(IRQ_ADC); ++ enable_irq(IRQ_TC); ++ ++ if ((info->presc&0xff) > 0) ++ writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),\ ++ base_addr+S3C2410_ADCCON); ++ else ++ writel(0,base_addr+S3C2410_ADCCON); ++ ++ /* Initialise registers */ ++ if ((info->delay&0xffff) > 0) ++ writel(info->delay & 0xffff, base_addr+S3C2410_ADCDLY); ++ ++ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC); ++ ++ return 0; ++} ++ ++#else ++#define s3c2410ts_suspend NULL ++#define s3c2410ts_resume NULL ++#endif ++ ++static struct platform_driver s3c2410ts_driver = { ++ .driver = { ++ .name = "s3c2410-ts", ++ .owner = THIS_MODULE, ++ }, ++ .probe = s3c2410ts_probe, ++ .remove = s3c2410ts_remove, ++ .suspend = s3c2410ts_suspend, ++ .resume = s3c2410ts_resume, ++ ++}; ++ ++static struct platform_driver s3c2440ts_driver = { ++ .driver = { ++ .name = "s3c2440-ts", ++ .owner = THIS_MODULE, ++ }, ++ .probe = s3c2410ts_probe, ++ .remove = s3c2410ts_remove, ++ .suspend = s3c2410ts_suspend, ++ .resume = s3c2410ts_resume, ++ ++}; ++ ++static int __init s3c2410ts_init(void) ++{ ++ int rc; ++ ++ rc = platform_driver_register(&s3c2410ts_driver); ++ if (rc < 0) ++ return rc; ++ ++ rc = platform_driver_register(&s3c2440ts_driver); ++ if (rc < 0) ++ platform_driver_unregister(&s3c2410ts_driver); ++ ++ return rc; ++} ++ ++static void __exit s3c2410ts_exit(void) ++{ ++ platform_driver_unregister(&s3c2440ts_driver); ++ platform_driver_unregister(&s3c2410ts_driver); ++} ++ ++module_init(s3c2410ts_init); ++module_exit(s3c2410ts_exit); ++ ++/* ++ Local variables: ++ compile-command: "make ARCH=arm CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux- -k -C ../../.." ++ c-basic-offset: 8 ++ End: ++*/ +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/leds/Kconfig linux-2.6.25-m8050/drivers/leds/Kconfig +--- linux-git/drivers/leds/Kconfig 2008-11-10 12:20:17.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/leds/Kconfig 2008-09-30 17:37:49.000000000 +0200 +@@ -181,4 +181,11 @@ + load average. + If unsure, say Y. + ++config LEDS_TRIGGER_EV_LED ++ tristate "EV_LED Input LED Trigger" ++ depends on LEDS_TRIGGERS ++ help ++ This allows LEDs to be controlled by the us of the EV_LED ++ events from the input system. ++ + endif # NEW_LEDS +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/leds/ledtrig-ev-led.c linux-2.6.25-m8050/drivers/leds/ledtrig-ev-led.c +--- linux-git/drivers/leds/ledtrig-ev-led.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/leds/ledtrig-ev-led.c 2008-10-10 18:47:07.000000000 +0200 +@@ -0,0 +1,140 @@ ++/* ++ * EV_LED event LED Trigger ++ * ++ * Copyright 2008 American Microsystems Ltd. ++ * ++ * Author: David Anders ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static void ledtrig_ev_led_timerfunc(unsigned long data); ++static void ledtrig_ev_led_timeoutfunc(unsigned long data); ++ ++DEFINE_LED_TRIGGER(ledtrig_ev_led); ++static DEFINE_TIMER(ledtrig_ev_led_timer, ledtrig_ev_led_timerfunc, 0, 0); ++static DEFINE_TIMER(ledtrig_ev_led_timeout, ledtrig_ev_led_timeoutfunc, 0, 0); ++static int ev_led_activity; ++static int ev_led_lastactivity; ++static int scan_data=0; ++ ++void ledtrig_ev_led_activity(void) ++{ ++ if (timer_pending(&ledtrig_ev_led_timeout)){ ++ printk("timeout pending!\n"); ++ s3c2410_gpio_setpin(S3C2410_GPF3, 1); ++ led_trigger_event(ledtrig_ev_led, LED_OFF); ++ del_timer(&ledtrig_ev_led_timeout); ++ scan_data=0; ++ udelay(250); ++// return; ++ } ++ ++ if (timer_pending(&ledtrig_ev_led_timer)) { ++ printk("timer pending!\n"); ++ s3c2410_gpio_setpin(S3C2410_GPF3, 1); ++ del_timer(&ledtrig_ev_led_timer); ++ led_trigger_event(ledtrig_ev_led, LED_OFF); ++ scan_data=0; ++// if (!s3c2410_gpio_getpin(S3C2410_GPF6)){ ++ udelay(250); ++// } ++ } ++ s3c2410_gpio_setpin(S3C2410_GPF3, 0); ++ mod_timer(&ledtrig_ev_led_timeout, jiffies + (HZ*3)); ++ ++ ev_led_activity++; ++ if (!timer_pending(&ledtrig_ev_led_timer)){ ++ printk("no timer pending starting\n"); ++ ledtrig_ev_led_timerfunc(0x00); ++// mod_timer(&ledtrig_ev_led_timer, jiffies + 10); ++ } ++} ++EXPORT_SYMBOL(ledtrig_ev_led_activity); ++ ++void scanner_data(void) ++{ ++ printk("scan_data=%d\n",scan_data); ++// if(scan_data==0) ++ scan_data++; ++ ++} ++EXPORT_SYMBOL(scanner_data); ++ ++static void ledtrig_ev_led_timeoutfunc(unsigned long data) ++{ ++ ++ if (timer_pending(&ledtrig_ev_led_timer)) ++ del_timer(&ledtrig_ev_led_timer); ++ s3c2410_gpio_setpin(S3C2410_GPF3, 1); ++ scan_data=0; ++ ++ ++} ++static void ledtrig_ev_led_timerfunc(unsigned long data) ++{ ++unsigned long int urtstat; ++ if (ev_led_lastactivity != ev_led_activity) { ++ printk("last activity doesn't match!\n"); ++ if ((!s3c2410_gpio_getpin(S3C2410_GPF6)) && (scan_data)){ ++ printk("starting leds!\n"); ++ ev_led_lastactivity = ev_led_activity; ++ led_trigger_event(ledtrig_ev_led, LED_FULL); ++ if (timer_pending(&ledtrig_ev_led_timeout)) ++ del_timer(&ledtrig_ev_led_timeout); ++ mod_timer(&ledtrig_ev_led_timer, jiffies + msecs_to_jiffies(500)); ++ s3c2410_gpio_setpin(S3C2410_GPF3, 1); ++ scan_data=0; ++ } ++ else { ++ mod_timer(&ledtrig_ev_led_timer, jiffies + 10 ); ++ } ++ } else { ++ printk("ending leds!\n"); ++ led_trigger_event(ledtrig_ev_led, LED_OFF); ++ del_timer(&ledtrig_ev_led_timer); ++ if (timer_pending(&ledtrig_ev_led_timeout)) ++ del_timer(&ledtrig_ev_led_timeout); ++ s3c2410_gpio_setpin(S3C2410_GPF3, 1); ++ } ++} ++ ++static int __init ledtrig_ev_led_init(void) ++{ ++ led_trigger_register_simple("ev-led", &ledtrig_ev_led); ++ return 0; ++} ++ ++static void __exit ledtrig_ev_led_exit(void) ++{ ++ led_trigger_unregister_simple(ledtrig_ev_led); ++} ++ ++module_init(ledtrig_ev_led_init); ++module_exit(ledtrig_ev_led_exit); ++ ++MODULE_AUTHOR("David Anders ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++//#include ++ ++ ++ ++#define TRUE 1 ++#define FALSE 0 ++ ++static int scaninterval = HZ / 40; ++static struct timer_list scan_timer; ++ ++static void aml_scan_io (unsigned long dummy); ++ ++ ++ ++static int local_atoi(const char *name) ++{ ++ int val = 0; ++ ++ for (;; name++) { ++ switch (*name) { ++ case '0'...'9': ++ val = 10*val+(*name-'0'); ++ break; ++ default: ++ return val; ++ } ++ } ++} ++ ++ ++static int ++amltd_proc_powerbatt_read(char *page, char **start, off_t off, ++ int count, int *eof, void *data) ++{ ++ ++ writel(0x0000003f, S3C2410_GPCDAT); ++ writel(0x000000bf, S3C2410_GPCDAT); ++ writel(0x0000003f, S3C2410_GPCDAT); ++ writel(0x000000bf, S3C2410_GPCDAT); ++ writel(0x0000003f, S3C2410_GPCDAT); ++ ++// s3c2410_gpio_setpin(S3C2410_GPC7, 0); ++// s3c2410_gpio_setpin(S3C2410_GPC7, 1); ++// s3c2410_gpio_setpin(S3C2410_GPC7, 0); ++// s3c2410_gpio_setpin(S3C2410_GPC7, 1); ++// s3c2410_gpio_setpin(S3C2410_GPC7, 0); ++ return sprintf(page, "SENTy\n"); ++} ++ ++static int ++amltd_proc_powerbatt_write(struct file *file, const char *buffer, ++ unsigned long count, void *data) ++{ ++ unsigned char char_value; ++ unsigned long tmpvalue; ++ ++ if (count < 1) { ++ return -EINVAL; ++ } ++ ++ if (copy_from_user(&char_value, buffer, 1)) ++ return -EFAULT; ++ ++ ++ ++ writel(0x0000001c, S3C2410_SPI0CON); ++ writel(0x000000e1, S3C2410_SPI0PRE); ++ ++ tmpvalue=readl(S3C2440_GPJDAT); ++ tmpvalue &= ~(1<<7); ++ writel(tmpvalue,S3C2440_GPJDAT); ++ udelay(1000); ++ writeb(char_value,S3C2410_SPI0DTX); ++ udelay(1000); ++ tmpvalue=readl(S3C2440_GPJDAT); ++ tmpvalue |= (1<<7); ++ writel(tmpvalue,S3C2440_GPJDAT); ++ udelay(2000); ++ ++ return count; ++} ++ ++ ++ ++//----------------------------------------------------------------------- ++// __u16 scaninput(void) ++//----------------------------------------------------------------------- ++static __u16 scaninput(void) ++{ ++ unsigned long tmpvalue; ++ ++ tmpvalue=readl(S3C2410_GPFDAT); ++ if ( tmpvalue&(1<<1) ) ++ return(0); ++ else ++ return(1); ++ ++} ++ ++ ++ ++static void aml_scan_io(unsigned long dummy) ++{ ++ unsigned long tmpvalue; ++ unsigned int scancode; ++ __u16 cs; ++ ++ writel(0x0000001c, S3C2410_SPI0CON); ++ writel(0x000000e1, S3C2410_SPI0PRE); ++ ++ cs = scaninput(); ++ ++ if ( cs == 1 ) { ++ tmpvalue=readl(S3C2440_GPJDAT); ++ tmpvalue &= ~(1<<7); ++ writel(tmpvalue,S3C2440_GPJDAT); ++ udelay(100); ++ writeb(0x00,S3C2410_SPI0DTX); ++ udelay(500); ++ scancode=readb(S3C2410_SPI0DRX); ++ udelay(100); ++ tmpvalue=readl(S3C2440_GPJDAT); ++ tmpvalue |= (1<<7); ++ writel(tmpvalue,S3C2440_GPJDAT); ++ udelay(100); ++ printk("pm-8052 response: 0x%x\n",scancode); ++ ++ } ++ ++ ++ mod_timer (&scan_timer, jiffies + scaninterval); ++} ++ ++ ++static int __init powerbatt_init_hw(void) ++{ ++ unsigned long tmpvalue; ++ int i; ++ static struct proc_dir_entry *amltd_powerbatt_proc_entry; ++ tmpvalue=readl(S3C2410_GPECON); ++ tmpvalue |= (S3C2410_GPE11_SPIMISO0 | S3C2410_GPE12_SPIMOSI0 | S3C2410_GPE13_SPICLK0); ++ writel(tmpvalue,S3C2410_GPECON); ++ ++ writel(0x0000001c, S3C2410_SPI0CON); ++ writel(0x000000e1, S3C2410_SPI0PRE); ++ ++ ++ s3c2410_gpio_cfgpin(S3C2410_GPF1, S3C2410_GPIO_INPUT); ++ ++ s3c2410_gpio_cfgpin(S3C2440_GPJ7, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2440_GPJ7, 1); ++ ++ ++ amltd_powerbatt_proc_entry = create_proc_entry("powerbatt", 0444, ++ NULL); ++ if (amltd_powerbatt_proc_entry == NULL) { ++ printk("Couldn't create the procfs entry for power and battery.\n"); ++ } ++ ++ amltd_powerbatt_proc_entry->read_proc = ++ &amltd_proc_powerbatt_read; ++ amltd_powerbatt_proc_entry->write_proc = ++ &amltd_proc_powerbatt_write; ++ ++ ++ // setup scanning timer ++ init_timer (&scan_timer); ++ scan_timer.function = aml_scan_io; ++ mod_timer (&scan_timer, jiffies + scaninterval); ++ ++ return 0; ++} ++ ++ ++module_init(powerbatt_init_hw); +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/mmc/host/Kconfig linux-2.6.25-m8050/drivers/mmc/host/Kconfig +--- linux-git/drivers/mmc/host/Kconfig 2008-11-10 12:20:22.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/mmc/host/Kconfig 2008-07-01 13:32:15.000000000 +0200 +@@ -130,3 +130,14 @@ + + If unsure, or if your system has no SPI master driver, say N. + ++config MMC_S3C ++ tristate "Samsung S3C SD/MMC Card Interface support" ++ depends on ARCH_S3C2410 && MMC ++ help ++ This selects a driver for the MCI interface found in ++ Samsung's S3C2410, S3C2412, S3C2440, S3C2442 CPUs. ++ If you have a board based on one of those and a MMC/SD ++ slot, say Y or M here. ++ ++ If unsure, say N. ++ +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/mmc/host/Makefile linux-2.6.25-m8050/drivers/mmc/host/Makefile +--- linux-git/drivers/mmc/host/Makefile 2008-11-10 12:20:22.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/mmc/host/Makefile 2008-07-01 13:32:15.000000000 +0200 +@@ -17,4 +17,4 @@ + obj-$(CONFIG_MMC_AT91) += at91_mci.o + obj-$(CONFIG_MMC_TIFM_SD) += tifm_sd.o + obj-$(CONFIG_MMC_SPI) += mmc_spi.o +- ++obj-$(CONFIG_MMC_S3C) += s3cmci.o +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/mmc/host/s3cmci.c linux-2.6.25-m8050/drivers/mmc/host/s3cmci.c +--- linux-git/drivers/mmc/host/s3cmci.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/mmc/host/s3cmci.c 2008-07-11 16:32:43.000000000 +0200 +@@ -0,0 +1,1446 @@ ++/* ++ * linux/drivers/mmc/s3cmci.h - Samsung S3C MCI driver ++ * ++ * Copyright (C) 2004-2006 maintech GmbH, Thomas Kleffel ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++#include ++#include ++ ++#include ++ ++#include "s3cmci.h" ++ ++#define DRIVER_NAME "s3c-mci" ++ ++enum dbg_channels { ++ dbg_err = (1 << 0), ++ dbg_debug = (1 << 1), ++ dbg_info = (1 << 2), ++ dbg_irq = (1 << 3), ++ dbg_sg = (1 << 4), ++ dbg_dma = (1 << 5), ++ dbg_pio = (1 << 6), ++ dbg_fail = (1 << 7), ++ dbg_conf = (1 << 8), ++}; ++ ++static const int dbgmap_err = dbg_err | dbg_fail; ++static const int dbgmap_info = dbg_info | dbg_conf; ++static const int dbgmap_debug = dbg_debug; ++ ++#define dbg(host, channels, args...) \ ++ do { \ ++ if (dbgmap_err & channels) \ ++ dev_err(&host->pdev->dev, args); \ ++ else if (dbgmap_info & channels) \ ++ dev_info(&host->pdev->dev, args); \ ++ else if (dbgmap_debug & channels) \ ++ dev_dbg(&host->pdev->dev, args); \ ++ } while (0) ++ ++#define RESSIZE(ressource) (((ressource)->end - (ressource)->start)+1) ++ ++static struct s3c2410_dma_client s3cmci_dma_client = { ++ .name = "s3c-mci", ++}; ++ ++static void finalize_request(struct s3cmci_host *host); ++static void s3cmci_send_request(struct mmc_host *mmc); ++static void s3cmci_reset(struct s3cmci_host *host); ++ ++#ifdef CONFIG_MMC_DEBUG ++ ++static void dbg_dumpregs(struct s3cmci_host *host, char *prefix) ++{ ++ u32 con, pre, cmdarg, cmdcon, cmdsta, r0, r1, r2, r3, timer, bsize; ++ u32 datcon, datcnt, datsta, fsta, imask; ++ ++ con = readl(host->base + S3C2410_SDICON); ++ pre = readl(host->base + S3C2410_SDIPRE); ++ cmdarg = readl(host->base + S3C2410_SDICMDARG); ++ cmdcon = readl(host->base + S3C2410_SDICMDCON); ++ cmdsta = readl(host->base + S3C2410_SDICMDSTAT); ++ r0 = readl(host->base + S3C2410_SDIRSP0); ++ r1 = readl(host->base + S3C2410_SDIRSP1); ++ r2 = readl(host->base + S3C2410_SDIRSP2); ++ r3 = readl(host->base + S3C2410_SDIRSP3); ++ timer = readl(host->base + S3C2410_SDITIMER); ++ bsize = readl(host->base + S3C2410_SDIBSIZE); ++ datcon = readl(host->base + S3C2410_SDIDCON); ++ datcnt = readl(host->base + S3C2410_SDIDCNT); ++ datsta = readl(host->base + S3C2410_SDIDSTA); ++ fsta = readl(host->base + S3C2410_SDIFSTA); ++ imask = readl(host->base + host->sdiimsk); ++ ++ dbg(host, dbg_debug, "%s CON:[%08x] PRE:[%08x] TMR:[%08x]\n", ++ prefix, con, pre, timer); ++ ++ dbg(host, dbg_debug, "%s CCON:[%08x] CARG:[%08x] CSTA:[%08x]\n", ++ prefix, cmdcon, cmdarg, cmdsta); ++ ++ dbg(host, dbg_debug, "%s DCON:[%08x] FSTA:[%08x]" ++ " DSTA:[%08x] DCNT:[%08x]\n", ++ prefix, datcon, fsta, datsta, datcnt); ++ ++ dbg(host, dbg_debug, "%s R0:[%08x] R1:[%08x]" ++ " R2:[%08x] R3:[%08x]\n", ++ prefix, r0, r1, r2, r3); ++} ++ ++static void prepare_dbgmsg(struct s3cmci_host *host, struct mmc_command *cmd, ++ int stop) ++{ ++ snprintf(host->dbgmsg_cmd, 300, ++ "#%u%s op:%i arg:0x%08x flags:0x08%x retries:%u", ++ host->ccnt, (stop ? " (STOP)" : ""), ++ cmd->opcode, cmd->arg, cmd->flags, cmd->retries); ++ ++ if (cmd->data) { ++ snprintf(host->dbgmsg_dat, 300, ++ "#%u bsize:%u blocks:%u bytes:%u", ++ host->dcnt, cmd->data->blksz, ++ cmd->data->blocks, ++ cmd->data->blocks * cmd->data->blksz); ++ } else { ++ host->dbgmsg_dat[0] = '\0'; ++ } ++} ++ ++static void dbg_dumpcmd(struct s3cmci_host *host, struct mmc_command *cmd, ++ int fail) ++{ ++ unsigned int dbglvl = fail ? dbg_fail : dbg_debug; ++ ++ if (!cmd) ++ return; ++ ++ if (cmd->error == 0) { ++ dbg(host, dbglvl, "CMD[OK] %s R0:0x%08x\n", ++ host->dbgmsg_cmd, cmd->resp[0]); ++ } else { ++ dbg(host, dbglvl, "CMD[ERR %i] %s Status:%s\n", ++ cmd->error, host->dbgmsg_cmd, host->status); ++ } ++ ++ if (!cmd->data) ++ return; ++ ++ if (cmd->data->error == 0) { ++ dbg(host, dbglvl, "DAT[OK] %s\n", host->dbgmsg_dat); ++ } else { ++ dbg(host, dbglvl, "DAT[ERR %i] %s DCNT:0x%08x\n", ++ cmd->data->error, host->dbgmsg_dat, ++ readl(host->base + S3C2410_SDIDCNT)); ++ } ++} ++#else ++static void dbg_dumpcmd(struct s3cmci_host *host, ++ struct mmc_command *cmd, int fail) { } ++ ++static void prepare_dbgmsg(struct s3cmci_host *host, struct mmc_command *cmd, ++ int stop) { } ++ ++static void dbg_dumpregs(struct s3cmci_host *host, char *prefix) { } ++ ++#endif /* CONFIG_MMC_DEBUG */ ++ ++static inline u32 enable_imask(struct s3cmci_host *host, u32 imask) ++{ ++ u32 newmask; ++ ++ newmask = readl(host->base + host->sdiimsk); ++ newmask |= imask; ++ ++ writel(newmask, host->base + host->sdiimsk); ++ ++ return newmask; ++} ++ ++static inline u32 disable_imask(struct s3cmci_host *host, u32 imask) ++{ ++ u32 newmask; ++ ++ newmask = readl(host->base + host->sdiimsk); ++ newmask &= ~imask; ++ ++ writel(newmask, host->base + host->sdiimsk); ++ ++ return newmask; ++} ++ ++static inline void clear_imask(struct s3cmci_host *host) ++{ ++ writel(0, host->base + host->sdiimsk); ++} ++ ++static inline int get_data_buffer(struct s3cmci_host *host, ++ u32 *words, u32 **pointer) ++{ ++ struct scatterlist *sg; ++ ++ if (host->pio_active == XFER_NONE) ++ return -EINVAL; ++ ++ if ((!host->mrq) || (!host->mrq->data)) ++ return -EINVAL; ++ ++ if (host->pio_sgptr >= host->mrq->data->sg_len) { ++ dbg(host, dbg_debug, "no more buffers (%i/%i)\n", ++ host->pio_sgptr, host->mrq->data->sg_len); ++ return -EBUSY; ++ } ++ sg = &host->mrq->data->sg[host->pio_sgptr]; ++ ++ *words = sg->length >> 2; ++ *pointer = sg_virt(sg); ++ ++ host->pio_sgptr++; ++ ++ dbg(host, dbg_sg, "new buffer (%i/%i)\n", ++ host->pio_sgptr, host->mrq->data->sg_len); ++ ++ return 0; ++} ++ ++static inline u32 fifo_count(struct s3cmci_host *host) ++{ ++ u32 fifostat = readl(host->base + S3C2410_SDIFSTA); ++ ++ fifostat &= S3C2410_SDIFSTA_COUNTMASK; ++ return fifostat >> 2; ++} ++ ++static inline u32 fifo_free(struct s3cmci_host *host) ++{ ++ u32 fifostat = readl(host->base + S3C2410_SDIFSTA); ++ ++ fifostat &= S3C2410_SDIFSTA_COUNTMASK; ++ return (63 - fifostat) >> 2; ++} ++ ++static void do_pio_read(struct s3cmci_host *host) ++{ ++ int res; ++ u32 fifo; ++ void __iomem *from_ptr; ++ ++ /* write real prescaler to host, it might be set slow to fix */ ++ writel(host->prescaler, host->base + S3C2410_SDIPRE); ++ ++ from_ptr = host->base + host->sdidata; ++ ++ while ((fifo = fifo_count(host))) { ++ if (!host->pio_words) { ++ res = get_data_buffer(host, &host->pio_words, ++ &host->pio_ptr); ++ if (res) { ++ host->pio_active = XFER_NONE; ++ host->complete_what = COMPLETION_FINALIZE; ++ ++ dbg(host, dbg_pio, "pio_read(): " ++ "complete (no more data).\n"); ++ return; ++ } ++ ++ dbg(host, dbg_pio, ++ "pio_read(): new target: [%i]@[%p]\n", ++ host->pio_words, host->pio_ptr); ++ } ++ ++ dbg(host, dbg_pio, ++ "pio_read(): fifo:[%02i] buffer:[%03i] dcnt:[%08X]\n", ++ fifo, host->pio_words, ++ readl(host->base + S3C2410_SDIDCNT)); ++ ++ if (fifo > host->pio_words) ++ fifo = host->pio_words; ++ ++ host->pio_words -= fifo; ++ host->pio_count += fifo; ++ ++ while (fifo--) ++ *(host->pio_ptr++) = readl(from_ptr); ++ } ++ ++ if (!host->pio_words) { ++ res = get_data_buffer(host, &host->pio_words, &host->pio_ptr); ++ if (res) { ++ dbg(host, dbg_pio, ++ "pio_read(): complete (no more buffers).\n"); ++ host->pio_active = XFER_NONE; ++ host->complete_what = COMPLETION_FINALIZE; ++ ++ return; ++ } ++ } ++ ++ enable_imask(host, ++ S3C2410_SDIIMSK_RXFIFOHALF | S3C2410_SDIIMSK_RXFIFOLAST); ++} ++ ++static void do_pio_write(struct s3cmci_host *host) ++{ ++ void __iomem *to_ptr; ++ int res; ++ u32 fifo; ++ ++ to_ptr = host->base + host->sdidata; ++ ++ while ((fifo = fifo_free(host))) { ++ if (!host->pio_words) { ++ res = get_data_buffer(host, &host->pio_words, ++ &host->pio_ptr); ++ if (res) { ++ dbg(host, dbg_pio, ++ "pio_write(): complete (no more data).\n"); ++ host->pio_active = XFER_NONE; ++ ++ return; ++ } ++ ++ dbg(host, dbg_pio, ++ "pio_write(): new source: [%i]@[%p]\n", ++ host->pio_words, host->pio_ptr); ++ ++ } ++ ++ if (fifo > host->pio_words) ++ fifo = host->pio_words; ++ ++ host->pio_words -= fifo; ++ host->pio_count += fifo; ++ ++ while (fifo--) ++ writel(*(host->pio_ptr++), to_ptr); ++ } ++ ++ enable_imask(host, S3C2410_SDIIMSK_TXFIFOHALF); ++} ++ ++static void pio_tasklet(unsigned long data) ++{ ++ struct s3cmci_host *host = (struct s3cmci_host *) data; ++ ++ ++ disable_irq(host->irq); ++ ++ if (host->pio_active == XFER_WRITE) ++ do_pio_write(host); ++ ++ if (host->pio_active == XFER_READ) ++ do_pio_read(host); ++ ++ if (host->complete_what == COMPLETION_FINALIZE) { ++ clear_imask(host); ++ if (host->pio_active != XFER_NONE) { ++ dbg(host, dbg_err, "unfinished %s " ++ "- pio_count:[%u] pio_words:[%u]\n", ++ (host->pio_active == XFER_READ) ? "read" : "write", ++ host->pio_count, host->pio_words); ++ ++ if (host->mrq->data) ++ host->mrq->data->error = -EINVAL; ++ } ++ ++ finalize_request(host); ++ } else ++ enable_irq(host->irq); ++} ++ ++/* ++ * ISR for SDI Interface IRQ ++ * Communication between driver and ISR works as follows: ++ * host->mrq points to current request ++ * host->complete_what Indicates when the request is considered done ++ * COMPLETION_CMDSENT when the command was sent ++ * COMPLETION_RSPFIN when a response was received ++ * COMPLETION_XFERFINISH when the data transfer is finished ++ * COMPLETION_XFERFINISH_RSPFIN both of the above. ++ * host->complete_request is the completion-object the driver waits for ++ * ++ * 1) Driver sets up host->mrq and host->complete_what ++ * 2) Driver prepares the transfer ++ * 3) Driver enables interrupts ++ * 4) Driver starts transfer ++ * 5) Driver waits for host->complete_rquest ++ * 6) ISR checks for request status (errors and success) ++ * 6) ISR sets host->mrq->cmd->error and host->mrq->data->error ++ * 7) ISR completes host->complete_request ++ * 8) ISR disables interrupts ++ * 9) Driver wakes up and takes care of the request ++ * ++ * Note: "->error"-fields are expected to be set to 0 before the request ++ * was issued by mmc.c - therefore they are only set, when an error ++ * contition comes up ++ */ ++ ++static irqreturn_t s3cmci_irq(int irq, void *dev_id) ++{ ++ struct s3cmci_host *host = dev_id; ++ struct mmc_command *cmd; ++ u32 mci_csta, mci_dsta, mci_fsta, mci_dcnt, mci_imsk; ++ u32 mci_cclear, mci_dclear; ++ unsigned long iflags; ++ ++ spin_lock_irqsave(&host->complete_lock, iflags); ++ ++ mci_csta = readl(host->base + S3C2410_SDICMDSTAT); ++ mci_dsta = readl(host->base + S3C2410_SDIDSTA); ++ mci_dcnt = readl(host->base + S3C2410_SDIDCNT); ++ mci_fsta = readl(host->base + S3C2410_SDIFSTA); ++ mci_imsk = readl(host->base + host->sdiimsk); ++ mci_cclear = 0; ++ mci_dclear = 0; ++ ++ if ((host->complete_what == COMPLETION_NONE) || ++ (host->complete_what == COMPLETION_FINALIZE)) { ++ host->status = "nothing to complete"; ++ clear_imask(host); ++ goto irq_out; ++ } ++ ++ if (!host->mrq) { ++ host->status = "no active mrq"; ++ clear_imask(host); ++ goto irq_out; ++ } ++ ++ cmd = host->cmd_is_stop ? host->mrq->stop : host->mrq->cmd; ++ ++ if (!cmd) { ++ host->status = "no active cmd"; ++ clear_imask(host); ++ goto irq_out; ++ } ++ ++ if (!host->dodma) { ++ if ((host->pio_active == XFER_WRITE) && ++ (mci_fsta & S3C2410_SDIFSTA_TFDET)) { ++ ++ disable_imask(host, S3C2410_SDIIMSK_TXFIFOHALF); ++ tasklet_schedule(&host->pio_tasklet); ++ host->status = "pio tx"; ++ } ++ ++ if ((host->pio_active == XFER_READ) && ++ (mci_fsta & S3C2410_SDIFSTA_RFDET)) { ++ ++ disable_imask(host, ++ S3C2410_SDIIMSK_RXFIFOHALF | ++ S3C2410_SDIIMSK_RXFIFOLAST); ++ ++ tasklet_schedule(&host->pio_tasklet); ++ host->status = "pio rx"; ++ } ++ } ++ ++ if (mci_csta & S3C2410_SDICMDSTAT_CMDTIMEOUT) { ++ dbg(host, dbg_err, "CMDSTAT: error CMDTIMEOUT\n"); ++ cmd->error = -ETIMEDOUT; ++ host->status = "error: command timeout"; ++ goto fail_transfer; ++ } ++ ++ if (mci_csta & S3C2410_SDICMDSTAT_CMDSENT) { ++ if (host->complete_what == COMPLETION_CMDSENT) { ++ host->status = "ok: command sent"; ++ goto close_transfer; ++ } ++ ++ mci_cclear |= S3C2410_SDICMDSTAT_CMDSENT; ++ } ++ ++ if (mci_csta & S3C2410_SDICMDSTAT_CRCFAIL) { ++ if (cmd->flags & MMC_RSP_CRC) { ++ if (host->mrq->cmd->flags & MMC_RSP_136) { ++ dbg(host, dbg_irq, ++ "fixup: ignore CRC fail with long rsp\n"); ++ } else { ++ /* note, we used to fail the transfer ++ * here, but it seems that this is just ++ * the hardware getting it wrong. ++ * ++ * cmd->error = -EILSEQ; ++ * host->status = "error: bad command crc"; ++ * goto fail_transfer; ++ */ ++ } ++ } ++ ++ mci_cclear |= S3C2410_SDICMDSTAT_CRCFAIL; ++ } ++ ++ if (mci_csta & S3C2410_SDICMDSTAT_RSPFIN) { ++ if (host->complete_what == COMPLETION_RSPFIN) { ++ host->status = "ok: command response received"; ++ goto close_transfer; ++ } ++ ++ if (host->complete_what == COMPLETION_XFERFINISH_RSPFIN) ++ host->complete_what = COMPLETION_XFERFINISH; ++ ++ mci_cclear |= S3C2410_SDICMDSTAT_RSPFIN; ++ } ++ ++ /* errors handled after this point are only relevant ++ when a data transfer is in progress */ ++ ++ if (!cmd->data) ++ goto clear_status_bits; ++ ++ /* Check for FIFO failure */ ++ if (host->is2440) { ++ if (mci_fsta & S3C2440_SDIFSTA_FIFOFAIL) { ++ dbg(host, dbg_err, "FIFO failure\n"); ++ host->mrq->data->error = -EILSEQ; ++ host->status = "error: 2440 fifo failure"; ++ goto fail_transfer; ++ } ++ } else { ++ if (mci_dsta & S3C2410_SDIDSTA_FIFOFAIL) { ++ dbg(host, dbg_err, "FIFO failure\n"); ++ cmd->data->error = -EILSEQ; ++ host->status = "error: fifo failure"; ++ goto fail_transfer; ++ } ++ } ++ ++ if (mci_dsta & S3C2410_SDIDSTA_RXCRCFAIL) { ++ dbg(host, dbg_err, "bad data crc (outgoing)\n"); ++ cmd->data->error = -EILSEQ; ++ host->status = "error: bad data crc (outgoing)"; ++ goto fail_transfer; ++ } ++ ++ if (mci_dsta & S3C2410_SDIDSTA_CRCFAIL) { ++ dbg(host, dbg_err, "bad data crc (incoming)\n"); ++ cmd->data->error = -EILSEQ; ++ host->status = "error: bad data crc (incoming)"; ++ goto fail_transfer; ++ } ++ ++ if (mci_dsta & S3C2410_SDIDSTA_DATATIMEOUT) { ++ dbg(host, dbg_err, "data timeout\n"); ++ cmd->data->error = -ETIMEDOUT; ++ host->status = "error: data timeout"; ++ goto fail_transfer; ++ } ++ ++ if (mci_dsta & S3C2410_SDIDSTA_XFERFINISH) { ++ if (host->complete_what == COMPLETION_XFERFINISH) { ++ host->status = "ok: data transfer completed"; ++ goto close_transfer; ++ } ++ ++ if (host->complete_what == COMPLETION_XFERFINISH_RSPFIN) ++ host->complete_what = COMPLETION_RSPFIN; ++ ++ mci_dclear |= S3C2410_SDIDSTA_XFERFINISH; ++ } ++ ++clear_status_bits: ++ writel(mci_cclear, host->base + S3C2410_SDICMDSTAT); ++ writel(mci_dclear, host->base + S3C2410_SDIDSTA); ++ ++ goto irq_out; ++ ++fail_transfer: ++ host->pio_active = XFER_NONE; ++ ++close_transfer: ++ host->complete_what = COMPLETION_FINALIZE; ++ ++ clear_imask(host); ++ tasklet_schedule(&host->pio_tasklet); ++ ++ goto irq_out; ++ ++irq_out: ++ dbg(host, dbg_irq, ++ "csta:0x%08x dsta:0x%08x fsta:0x%08x dcnt:0x%08x status:%s.\n", ++ mci_csta, mci_dsta, mci_fsta, mci_dcnt, host->status); ++ ++ spin_unlock_irqrestore(&host->complete_lock, iflags); ++ return IRQ_HANDLED; ++ ++} ++ ++/* ++ * ISR for the CardDetect Pin ++*/ ++ ++static irqreturn_t s3cmci_irq_cd(int irq, void *dev_id) ++{ ++ struct s3cmci_host *host = (struct s3cmci_host *)dev_id; ++ ++ dbg(host, dbg_irq, "card detect\n"); ++ ++ mmc_detect_change(host->mmc, msecs_to_jiffies(500)); ++ ++ return IRQ_HANDLED; ++} ++ ++void s3cmci_dma_done_callback(struct s3c2410_dma_chan *dma_ch, void *buf_id, ++ int size, enum s3c2410_dma_buffresult result) ++{ ++ struct s3cmci_host *host = buf_id; ++ unsigned long iflags; ++ u32 mci_csta, mci_dsta, mci_fsta, mci_dcnt; ++ ++ mci_csta = readl(host->base + S3C2410_SDICMDSTAT); ++ mci_dsta = readl(host->base + S3C2410_SDIDSTA); ++ mci_fsta = readl(host->base + S3C2410_SDIFSTA); ++ mci_dcnt = readl(host->base + S3C2410_SDIDCNT); ++ ++ BUG_ON(!host->mrq); ++ BUG_ON(!host->mrq->data); ++ BUG_ON(!host->dmatogo); ++ ++ spin_lock_irqsave(&host->complete_lock, iflags); ++ ++ if (result != S3C2410_RES_OK) { ++ dbg(host, dbg_fail, "DMA FAILED: csta=0x%08x dsta=0x%08x " ++ "fsta=0x%08x dcnt:0x%08x result:0x%08x toGo:%u\n", ++ mci_csta, mci_dsta, mci_fsta, ++ mci_dcnt, result, host->dmatogo); ++ ++ goto fail_request; ++ } ++ ++ host->dmatogo--; ++ if (host->dmatogo) { ++ dbg(host, dbg_dma, "DMA DONE Size:%i DSTA:[%08x] " ++ "DCNT:[%08x] toGo:%u\n", ++ size, mci_dsta, mci_dcnt, host->dmatogo); ++ ++ goto out; ++ } ++ ++ dbg(host, dbg_dma, "DMA FINISHED Size:%i DSTA:%08x DCNT:%08x\n", ++ size, mci_dsta, mci_dcnt); ++ ++ host->complete_what = COMPLETION_FINALIZE; ++ ++out: ++ tasklet_schedule(&host->pio_tasklet); ++ spin_unlock_irqrestore(&host->complete_lock, iflags); ++ return; ++ ++fail_request: ++ host->mrq->data->error = -EINVAL; ++ host->complete_what = COMPLETION_FINALIZE; ++ writel(0, host->base + host->sdiimsk); ++ goto out; ++ ++} ++ ++static void finalize_request(struct s3cmci_host *host) ++{ ++ struct mmc_request *mrq = host->mrq; ++ struct mmc_command *cmd = host->cmd_is_stop ? mrq->stop : mrq->cmd; ++ int debug_as_failure = 0; ++ ++ if (host->complete_what != COMPLETION_FINALIZE) ++ return; ++ ++ if (!mrq) ++ return; ++ ++ if (cmd->data && (cmd->error == 0) && ++ (cmd->data->error == 0)) { ++ if (host->dodma && (!host->dma_complete)) { ++ dbg(host, dbg_dma, "DMA Missing!\n"); ++ return; ++ } ++ } ++ ++ /* Read response from controller. */ ++ cmd->resp[0] = readl(host->base + S3C2410_SDIRSP0); ++ cmd->resp[1] = readl(host->base + S3C2410_SDIRSP1); ++ cmd->resp[2] = readl(host->base + S3C2410_SDIRSP2); ++ cmd->resp[3] = readl(host->base + S3C2410_SDIRSP3); ++ ++ writel(host->prescaler, host->base + S3C2410_SDIPRE); ++ ++ if (cmd->error) ++ debug_as_failure = 1; ++ ++ if (cmd->data && cmd->data->error) ++ debug_as_failure = 1; ++ ++ dbg_dumpcmd(host, cmd, debug_as_failure); ++ ++ /* Cleanup controller */ ++ writel(0, host->base + S3C2410_SDICMDARG); ++ writel(S3C2410_SDIDCON_STOP, host->base + S3C2410_SDIDCON); ++ writel(0, host->base + S3C2410_SDICMDCON); ++ writel(0, host->base + host->sdiimsk); ++ ++ if (cmd->data && cmd->error) ++ cmd->data->error = cmd->error; ++ ++ if (cmd->data && cmd->data->stop && (!host->cmd_is_stop)) { ++ host->cmd_is_stop = 1; ++ s3cmci_send_request(host->mmc); ++ return; ++ } ++ ++ /* If we have no data transfer we are finished here */ ++ if (!mrq->data) ++ goto request_done; ++ ++ /* Calulate the amout of bytes transfer if there was no error */ ++ if (mrq->data->error == 0) { ++ mrq->data->bytes_xfered = ++ (mrq->data->blocks * mrq->data->blksz); ++ } else { ++ mrq->data->bytes_xfered = 0; ++ } ++ ++ /* If we had an error while transfering data we flush the ++ * DMA channel and the fifo to clear out any garbage. */ ++ if (mrq->data->error != 0) { ++ if (host->dodma) ++ s3c2410_dma_ctrl(host->dma, S3C2410_DMAOP_FLUSH); ++ ++ if (host->is2440) { ++ /* Clear failure register and reset fifo. */ ++ writel(S3C2440_SDIFSTA_FIFORESET | ++ S3C2440_SDIFSTA_FIFOFAIL, ++ host->base + S3C2410_SDIFSTA); ++ } else { ++ u32 mci_con; ++ ++ /* reset fifo */ ++ mci_con = readl(host->base + S3C2410_SDICON); ++ mci_con |= S3C2410_SDICON_FIFORESET; ++ ++ writel(mci_con, host->base + S3C2410_SDICON); ++ } ++ } ++ ++request_done: ++ host->complete_what = COMPLETION_NONE; ++ host->mrq = NULL; ++ mmc_request_done(host->mmc, mrq); ++} ++ ++ ++void s3cmci_dma_setup(struct s3cmci_host *host, enum s3c2410_dmasrc source) ++{ ++ static enum s3c2410_dmasrc last_source = -1; ++ static int setup_ok; ++ ++ if (last_source == source) ++ return; ++ ++ last_source = source; ++ ++ s3c2410_dma_devconfig(host->dma, source, 3, ++ host->mem->start + host->sdidata); ++ ++ if (!setup_ok) { ++ s3c2410_dma_config(host->dma, 4, ++ (S3C2410_DCON_HWTRIG | S3C2410_DCON_CH0_SDI)); ++ s3c2410_dma_set_buffdone_fn(host->dma, ++ s3cmci_dma_done_callback); ++ s3c2410_dma_setflags(host->dma, S3C2410_DMAF_AUTOSTART); ++ setup_ok = 1; ++ } ++} ++ ++static void s3cmci_send_command(struct s3cmci_host *host, ++ struct mmc_command *cmd) ++{ ++ u32 ccon, imsk; ++ ++ imsk = S3C2410_SDIIMSK_CRCSTATUS | S3C2410_SDIIMSK_CMDTIMEOUT | ++ S3C2410_SDIIMSK_RESPONSEND | S3C2410_SDIIMSK_CMDSENT | ++ S3C2410_SDIIMSK_RESPONSECRC; ++ ++ enable_imask(host, imsk); ++ ++ if (cmd->data) ++ host->complete_what = COMPLETION_XFERFINISH_RSPFIN; ++ else if (cmd->flags & MMC_RSP_PRESENT) ++ host->complete_what = COMPLETION_RSPFIN; ++ else ++ host->complete_what = COMPLETION_CMDSENT; ++ ++ writel(cmd->arg, host->base + S3C2410_SDICMDARG); ++ ++ ccon = cmd->opcode & S3C2410_SDICMDCON_INDEX; ++ ccon |= S3C2410_SDICMDCON_SENDERHOST | S3C2410_SDICMDCON_CMDSTART; ++ ++ if (cmd->flags & MMC_RSP_PRESENT) ++ ccon |= S3C2410_SDICMDCON_WAITRSP; ++ ++ if (cmd->flags & MMC_RSP_136) ++ ccon |= S3C2410_SDICMDCON_LONGRSP; ++ ++ writel(ccon, host->base + S3C2410_SDICMDCON); ++} ++ ++static int s3cmci_setup_data(struct s3cmci_host *host, struct mmc_data *data) ++{ ++ u32 dcon, imsk, stoptries = 3; ++ ++ /* write DCON register */ ++ ++ if (!data) { ++ writel(0, host->base + S3C2410_SDIDCON); ++ return 0; ++ } ++ ++ if ((data->blksz & 3) != 0) { ++ /* We cannot deal with unaligned blocks with more than ++ * one block being transfered. */ ++ ++ if (data->blocks > 1) ++ return -EINVAL; ++ ++ /* No support yet for non-word block transfers. */ ++ return -EINVAL; ++ } ++ ++ while (readl(host->base + S3C2410_SDIDSTA) & ++ (S3C2410_SDIDSTA_TXDATAON | S3C2410_SDIDSTA_RXDATAON)) { ++ ++ dbg(host, dbg_err, ++ "mci_setup_data() transfer stillin progress.\n"); ++ ++ writel(S3C2410_SDIDCON_STOP, host->base + S3C2410_SDIDCON); ++ s3cmci_reset(host); ++ ++ if ((stoptries--) == 0) { ++ dbg_dumpregs(host, "DRF"); ++ return -EINVAL; ++ } ++ } ++ ++ dcon = data->blocks & S3C2410_SDIDCON_BLKNUM_MASK; ++ ++ if (host->dodma) ++ dcon |= S3C2410_SDIDCON_DMAEN; ++ ++ if (host->bus_width == MMC_BUS_WIDTH_4) ++ dcon |= S3C2410_SDIDCON_WIDEBUS; ++ ++ if (!(data->flags & MMC_DATA_STREAM)) ++ dcon |= S3C2410_SDIDCON_BLOCKMODE; ++ ++ if (data->flags & MMC_DATA_WRITE) { ++ dcon |= S3C2410_SDIDCON_TXAFTERRESP; ++ dcon |= S3C2410_SDIDCON_XFER_TXSTART; ++ } ++ ++ if (data->flags & MMC_DATA_READ) { ++ dcon |= S3C2410_SDIDCON_RXAFTERCMD; ++ dcon |= S3C2410_SDIDCON_XFER_RXSTART; ++ } ++ ++ if (host->is2440) { ++ dcon |= S3C2440_SDIDCON_DS_WORD; ++ dcon |= S3C2440_SDIDCON_DATSTART; ++ } ++ ++ writel(dcon, host->base + S3C2410_SDIDCON); ++ ++ /* write BSIZE register */ ++ ++ writel(data->blksz, host->base + S3C2410_SDIBSIZE); ++ ++ /* add to IMASK register */ ++ imsk = S3C2410_SDIIMSK_FIFOFAIL | S3C2410_SDIIMSK_DATACRC | ++ S3C2410_SDIIMSK_DATATIMEOUT | S3C2410_SDIIMSK_DATAFINISH; ++ ++ enable_imask(host, imsk); ++ ++ /* write TIMER register */ ++ ++ if (host->is2440) { ++ writel(0x007FFFFF, host->base + S3C2410_SDITIMER); ++ } else { ++ writel(0x0000FFFF, host->base + S3C2410_SDITIMER); ++ ++ /* FIX: set slow clock to prevent timeouts on read */ ++ if (data->flags & MMC_DATA_READ) ++ writel(0xFF, host->base + S3C2410_SDIPRE); ++ } ++ ++ return 0; ++} ++ ++#define BOTH_DIR (MMC_DATA_WRITE | MMC_DATA_READ) ++ ++static int s3cmci_prepare_pio(struct s3cmci_host *host, struct mmc_data *data) ++{ ++ int rw = (data->flags & MMC_DATA_WRITE) ? 1 : 0; ++ ++ BUG_ON((data->flags & BOTH_DIR) == BOTH_DIR); ++ ++ host->pio_sgptr = 0; ++ host->pio_words = 0; ++ host->pio_count = 0; ++ host->pio_active = rw ? XFER_WRITE : XFER_READ; ++ ++ if (rw) { ++ do_pio_write(host); ++ enable_imask(host, S3C2410_SDIIMSK_TXFIFOHALF); ++ } else { ++ enable_imask(host, S3C2410_SDIIMSK_RXFIFOHALF ++ | S3C2410_SDIIMSK_RXFIFOLAST); ++ } ++ ++ return 0; ++} ++ ++static int s3cmci_prepare_dma(struct s3cmci_host *host, struct mmc_data *data) ++{ ++ int dma_len, i; ++ int rw = (data->flags & MMC_DATA_WRITE) ? 1 : 0; ++ ++ BUG_ON((data->flags & BOTH_DIR) == BOTH_DIR); ++ ++ s3cmci_dma_setup(host, rw ? S3C2410_DMASRC_MEM : S3C2410_DMASRC_HW); ++ s3c2410_dma_ctrl(host->dma, S3C2410_DMAOP_FLUSH); ++ ++ dma_len = dma_map_sg(mmc_dev(host->mmc), data->sg, data->sg_len, ++ (rw) ? DMA_TO_DEVICE : DMA_FROM_DEVICE); ++ ++ if (dma_len == 0) ++ return -ENOMEM; ++ ++ host->dma_complete = 0; ++ host->dmatogo = dma_len; ++ ++ for (i = 0; i < dma_len; i++) { ++ int res; ++ ++ dbg(host, dbg_dma, "enqueue %i:%u@%u\n", i, ++ sg_dma_address(&data->sg[i]), ++ sg_dma_len(&data->sg[i])); ++ ++ res = s3c2410_dma_enqueue(host->dma, (void *) host, ++ sg_dma_address(&data->sg[i]), ++ sg_dma_len(&data->sg[i])); ++ ++ if (res) { ++ s3c2410_dma_ctrl(host->dma, S3C2410_DMAOP_FLUSH); ++ return -EBUSY; ++ } ++ } ++ ++ s3c2410_dma_ctrl(host->dma, S3C2410_DMAOP_START); ++ ++ return 0; ++} ++ ++static void s3cmci_send_request(struct mmc_host *mmc) ++{ ++ struct s3cmci_host *host = mmc_priv(mmc); ++ struct mmc_request *mrq = host->mrq; ++ struct mmc_command *cmd = host->cmd_is_stop ? mrq->stop : mrq->cmd; ++ ++ host->ccnt++; ++ prepare_dbgmsg(host, cmd, host->cmd_is_stop); ++ ++ /* Clear command, data and fifo status registers ++ Fifo clear only necessary on 2440, but doesn't hurt on 2410 ++ */ ++ writel(0xFFFFFFFF, host->base + S3C2410_SDICMDSTAT); ++ writel(0xFFFFFFFF, host->base + S3C2410_SDIDSTA); ++ writel(0xFFFFFFFF, host->base + S3C2410_SDIFSTA); ++ ++ if (cmd->data) { ++ int res = s3cmci_setup_data(host, cmd->data); ++ ++ host->dcnt++; ++ ++ if (res) { ++ dbg(host, dbg_err, "setup data error %d\n", res); ++ cmd->error = res; ++ cmd->data->error = res; ++ ++ mmc_request_done(mmc, mrq); ++ return; ++ } ++ ++ if (host->dodma) ++ res = s3cmci_prepare_dma(host, cmd->data); ++ else ++ res = s3cmci_prepare_pio(host, cmd->data); ++ ++ if (res) { ++ dbg(host, dbg_err, "data prepare error %d\n", res); ++ cmd->error = res; ++ cmd->data->error = res; ++ ++ mmc_request_done(mmc, mrq); ++ return; ++ } ++ } ++ ++ /* Send command */ ++ s3cmci_send_command(host, cmd); ++ ++ /* Enable Interrupt */ ++ enable_irq(host->irq); ++} ++ ++static int s3cmci_card_present(struct s3cmci_host *host) ++{ ++ struct s3c24xx_mci_pdata *pdata = host->pdata; ++ int ret; ++ ++ if (pdata->gpio_detect == 0) ++ return -ENOSYS; ++ ++ ret = s3c2410_gpio_getpin(pdata->gpio_detect) ? 0 : 1; ++ return ret ^ pdata->detect_invert; ++} ++ ++static void s3cmci_request(struct mmc_host *mmc, struct mmc_request *mrq) ++{ ++ struct s3cmci_host *host = mmc_priv(mmc); ++ ++ host->status = "mmc request"; ++ host->cmd_is_stop = 0; ++ host->mrq = mrq; ++ ++ if (s3cmci_card_present(host) == 0) { ++ dbg(host, dbg_err, "%s: no medium present\n", __func__); ++ host->mrq->cmd->error = -ENOMEDIUM; ++ mmc_request_done(mmc, mrq); ++ } else ++ s3cmci_send_request(mmc); ++} ++ ++static void s3cmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) ++{ ++ struct s3cmci_host *host = mmc_priv(mmc); ++ u32 mci_psc, mci_con; ++ ++ /* Set the power state */ ++ ++ mci_con = readl(host->base + S3C2410_SDICON); ++ ++ switch (ios->power_mode) { ++ case MMC_POWER_ON: ++ case MMC_POWER_UP: ++ s3c2410_gpio_cfgpin(S3C2410_GPE5, S3C2410_GPE5_SDCLK); ++ s3c2410_gpio_cfgpin(S3C2410_GPE6, S3C2410_GPE6_SDCMD); ++ s3c2410_gpio_cfgpin(S3C2410_GPE7, S3C2410_GPE7_SDDAT0); ++ s3c2410_gpio_cfgpin(S3C2410_GPE8, S3C2410_GPE8_SDDAT1); ++ s3c2410_gpio_cfgpin(S3C2410_GPE9, S3C2410_GPE9_SDDAT2); ++ s3c2410_gpio_cfgpin(S3C2410_GPE10, S3C2410_GPE10_SDDAT3); ++ ++ if (host->pdata->set_power) ++ host->pdata->set_power(ios->power_mode, ios->vdd); ++ ++ if (!host->is2440) ++ mci_con |= S3C2410_SDICON_FIFORESET; ++ ++ break; ++ ++ case MMC_POWER_OFF: ++ default: ++ s3c2410_gpio_setpin(S3C2410_GPE5, 0); ++ s3c2410_gpio_cfgpin(S3C2410_GPE5, S3C2410_GPE5_OUTP); ++ ++ if (host->is2440) ++ mci_con |= S3C2440_SDICON_SDRESET; ++ ++ if (host->pdata->set_power) ++ host->pdata->set_power(ios->power_mode, ios->vdd); ++ ++ break; ++ } ++ ++ /* Set clock */ ++ for (mci_psc = 0; mci_psc < 255; mci_psc++) { ++ host->real_rate = host->clk_rate / (host->clk_div*(mci_psc+1)); ++ ++ if (host->real_rate <= ios->clock) ++ break; ++ } ++ ++ if (mci_psc > 255) ++ mci_psc = 255; ++ ++ host->prescaler = mci_psc; ++ writel(host->prescaler, host->base + S3C2410_SDIPRE); ++ ++ /* If requested clock is 0, real_rate will be 0, too */ ++ if (ios->clock == 0) ++ host->real_rate = 0; ++ ++ /* Set CLOCK_ENABLE */ ++ if (ios->clock) ++ mci_con |= S3C2410_SDICON_CLOCKTYPE; ++ else ++ mci_con &= ~S3C2410_SDICON_CLOCKTYPE; ++ ++ writel(mci_con, host->base + S3C2410_SDICON); ++ ++ if ((ios->power_mode == MMC_POWER_ON) || ++ (ios->power_mode == MMC_POWER_UP)) { ++ dbg(host, dbg_conf, "running at %lukHz (requested: %ukHz).\n", ++ host->real_rate/1000, ios->clock/1000); ++ } else { ++ dbg(host, dbg_conf, "powered down.\n"); ++ } ++ ++ host->bus_width = ios->bus_width; ++} ++ ++static void s3cmci_reset(struct s3cmci_host *host) ++{ ++ u32 con = readl(host->base + S3C2410_SDICON); ++ ++ con |= S3C2440_SDICON_SDRESET; ++ writel(con, host->base + S3C2410_SDICON); ++} ++ ++static int s3cmci_get_ro(struct mmc_host *mmc) ++{ ++ struct s3cmci_host *host = mmc_priv(mmc); ++ struct s3c24xx_mci_pdata *pdata = host->pdata; ++ int ret; ++ ++ if (pdata->gpio_wprotect == 0) ++ return 0; ++ ++ ret = s3c2410_gpio_getpin(pdata->gpio_wprotect); ++ ++ if (pdata->wprotect_invert) ++ ret = !ret; ++ ++ return ret; ++} ++ ++static struct mmc_host_ops s3cmci_ops = { ++ .request = s3cmci_request, ++ .set_ios = s3cmci_set_ios, ++ .get_ro = s3cmci_get_ro, ++}; ++ ++static struct s3c24xx_mci_pdata s3cmci_def_pdata = { ++ /* This is currently here to avoid a number of if (host->pdata) ++ * checks. Any zero fields to ensure reaonable defaults are picked. */ ++}; ++ ++static int __devinit s3cmci_probe(struct platform_device *pdev, int is2440) ++{ ++ struct s3cmci_host *host; ++ struct mmc_host *mmc; ++ int ret; ++ ++ mmc = mmc_alloc_host(sizeof(struct s3cmci_host), &pdev->dev); ++ if (!mmc) { ++ ret = -ENOMEM; ++ goto probe_out; ++ } ++ ++ host = mmc_priv(mmc); ++ host->mmc = mmc; ++ host->pdev = pdev; ++ host->is2440 = is2440; ++ ++ host->pdata = pdev->dev.platform_data; ++ if (!host->pdata) { ++ pdev->dev.platform_data = &s3cmci_def_pdata; ++ host->pdata = &s3cmci_def_pdata; ++ } ++ ++ spin_lock_init(&host->complete_lock); ++ tasklet_init(&host->pio_tasklet, pio_tasklet, (unsigned long) host); ++ ++ if (is2440) { ++ host->sdiimsk = S3C2440_SDIIMSK; ++ host->sdidata = S3C2440_SDIDATA; ++ host->clk_div = 1; ++ } else { ++ host->sdiimsk = S3C2410_SDIIMSK; ++ host->sdidata = S3C2410_SDIDATA; ++ host->clk_div = 2; ++ } ++ ++ host->dodma = 0; ++ host->complete_what = COMPLETION_NONE; ++ host->pio_active = XFER_NONE; ++ ++ host->dma = S3CMCI_DMA; ++ ++ host->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); ++ if (!host->mem) { ++ dev_err(&pdev->dev, ++ "failed to get io memory region resouce.\n"); ++ ++ ret = -ENOENT; ++ goto probe_free_host; ++ } ++ ++ host->mem = request_mem_region(host->mem->start, ++ RESSIZE(host->mem), pdev->name); ++ ++ if (!host->mem) { ++ dev_err(&pdev->dev, "failed to request io memory region.\n"); ++ ret = -ENOENT; ++ goto probe_free_host; ++ } ++ ++ host->base = ioremap(host->mem->start, RESSIZE(host->mem)); ++ if (host->base == 0) { ++ dev_err(&pdev->dev, "failed to ioremap() io memory region.\n"); ++ ret = -EINVAL; ++ goto probe_free_mem_region; ++ } ++ ++ host->irq = platform_get_irq(pdev, 0); ++ if (host->irq == 0) { ++ dev_err(&pdev->dev, "failed to get interrupt resouce.\n"); ++ ret = -EINVAL; ++ goto probe_iounmap; ++ } ++ ++ if (request_irq(host->irq, s3cmci_irq, 0, DRIVER_NAME, host)) { ++ dev_err(&pdev->dev, "failed to request mci interrupt.\n"); ++ ret = -ENOENT; ++ goto probe_iounmap; ++ } ++ ++ /* We get spurious interrupts even when we have set the IMSK ++ * register to ignore everything, so use disable_irq() to make ++ * ensure we don't lock the system with un-serviceable requests. */ ++ ++ disable_irq(host->irq); ++ ++ host->irq_cd = s3c2410_gpio_getirq(host->pdata->gpio_detect); ++ ++ if (host->irq_cd >= 0) { ++ if (request_irq(host->irq_cd, s3cmci_irq_cd, ++ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, ++ DRIVER_NAME, host)) { ++ dev_err(&pdev->dev, "can't get card detect irq.\n"); ++ ret = -ENOENT; ++ goto probe_free_irq; ++ } ++ } else { ++ dev_warn(&pdev->dev, "host detect has no irq available\n"); ++ s3c2410_gpio_cfgpin(host->pdata->gpio_detect, ++ S3C2410_GPIO_INPUT); ++ } ++ ++ if (host->pdata->gpio_wprotect) ++ s3c2410_gpio_cfgpin(host->pdata->gpio_wprotect, ++ S3C2410_GPIO_INPUT); ++ ++ if (s3c2410_dma_request(S3CMCI_DMA, &s3cmci_dma_client, NULL) < 0) { ++ dev_err(&pdev->dev, "unable to get DMA channel.\n"); ++ ret = -EBUSY; ++ goto probe_free_irq_cd; ++ } ++ ++ host->clk = clk_get(&pdev->dev, "sdi"); ++ if (IS_ERR(host->clk)) { ++ dev_err(&pdev->dev, "failed to find clock source.\n"); ++ ret = PTR_ERR(host->clk); ++ host->clk = NULL; ++ goto probe_free_host; ++ } ++ ++ ret = clk_enable(host->clk); ++ if (ret) { ++ dev_err(&pdev->dev, "failed to enable clock source.\n"); ++ goto clk_free; ++ } ++ ++ host->clk_rate = clk_get_rate(host->clk); ++ ++ mmc->ops = &s3cmci_ops; ++ mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; ++ mmc->caps = MMC_CAP_4_BIT_DATA; ++ mmc->f_min = host->clk_rate / (host->clk_div * 256); ++ mmc->f_max = host->clk_rate / host->clk_div; ++ ++ if (host->pdata->ocr_avail) ++ mmc->ocr_avail = host->pdata->ocr_avail; ++ ++ mmc->max_blk_count = 4095; ++ mmc->max_blk_size = 4095; ++ mmc->max_req_size = 4095 * 512; ++ mmc->max_seg_size = mmc->max_req_size; ++ ++ mmc->max_phys_segs = 128; ++ mmc->max_hw_segs = 128; ++ ++ dbg(host, dbg_debug, ++ "probe: mode:%s mapped mci_base:%p irq:%u irq_cd:%u dma:%u.\n", ++ (host->is2440?"2440":""), ++ host->base, host->irq, host->irq_cd, host->dma); ++ ++ ret = mmc_add_host(mmc); ++ if (ret) { ++ dev_err(&pdev->dev, "failed to add mmc host.\n"); ++ goto free_dmabuf; ++ } ++ ++ platform_set_drvdata(pdev, mmc); ++ dev_info(&pdev->dev, "initialisation done.\n"); ++ ++ return 0; ++ ++ free_dmabuf: ++ clk_disable(host->clk); ++ ++ clk_free: ++ clk_put(host->clk); ++ ++ probe_free_irq_cd: ++ if (host->irq_cd >= 0) ++ free_irq(host->irq_cd, host); ++ ++ probe_free_irq: ++ free_irq(host->irq, host); ++ ++ probe_iounmap: ++ iounmap(host->base); ++ ++ probe_free_mem_region: ++ release_mem_region(host->mem->start, RESSIZE(host->mem)); ++ ++ probe_free_host: ++ mmc_free_host(mmc); ++ probe_out: ++ return ret; ++} ++ ++static int __devexit s3cmci_remove(struct platform_device *pdev) ++{ ++ struct mmc_host *mmc = platform_get_drvdata(pdev); ++ struct s3cmci_host *host = mmc_priv(mmc); ++ ++ mmc_remove_host(mmc); ++ ++ clk_disable(host->clk); ++ clk_put(host->clk); ++ ++ tasklet_disable(&host->pio_tasklet); ++ s3c2410_dma_free(S3CMCI_DMA, &s3cmci_dma_client); ++ ++ if (host->irq_cd >= 0) ++ free_irq(host->irq_cd, host); ++ free_irq(host->irq, host); ++ ++ iounmap(host->base); ++ release_mem_region(host->mem->start, RESSIZE(host->mem)); ++ ++ mmc_free_host(mmc); ++ return 0; ++} ++ ++static int __devinit s3cmci_probe_2410(struct platform_device *dev) ++{ ++ return s3cmci_probe(dev, 0); ++} ++ ++static int __devinit s3cmci_probe_2412(struct platform_device *dev) ++{ ++ return s3cmci_probe(dev, 1); ++} ++ ++static int __devinit s3cmci_probe_2440(struct platform_device *dev) ++{ ++ return s3cmci_probe(dev, 1); ++} ++ ++#ifdef CONFIG_PM ++ ++static int s3cmci_suspend(struct platform_device *dev, pm_message_t state) ++{ ++ struct mmc_host *mmc = platform_get_drvdata(dev); ++ ++ return mmc_suspend_host(mmc, state); ++} ++ ++static int s3cmci_resume(struct platform_device *dev) ++{ ++ struct mmc_host *mmc = platform_get_drvdata(dev); ++ ++ return mmc_resume_host(mmc); ++} ++ ++#else /* CONFIG_PM */ ++#define s3cmci_suspend NULL ++#define s3cmci_resume NULL ++#endif /* CONFIG_PM */ ++ ++ ++static struct platform_driver s3cmci_driver_2410 = { ++ .driver.name = "s3c2410-sdi", ++ .driver.owner = THIS_MODULE, ++ .probe = s3cmci_probe_2410, ++ .remove = __devexit_p(s3cmci_remove), ++ .suspend = s3cmci_suspend, ++ .resume = s3cmci_resume, ++}; ++ ++static struct platform_driver s3cmci_driver_2412 = { ++ .driver.name = "s3c2412-sdi", ++ .driver.owner = THIS_MODULE, ++ .probe = s3cmci_probe_2412, ++ .remove = __devexit_p(s3cmci_remove), ++ .suspend = s3cmci_suspend, ++ .resume = s3cmci_resume, ++}; ++ ++static struct platform_driver s3cmci_driver_2440 = { ++ .driver.name = "s3c2440-sdi", ++ .driver.owner = THIS_MODULE, ++ .probe = s3cmci_probe_2440, ++ .remove = __devexit_p(s3cmci_remove), ++ .suspend = s3cmci_suspend, ++ .resume = s3cmci_resume, ++}; ++ ++ ++static int __init s3cmci_init(void) ++{ ++ platform_driver_register(&s3cmci_driver_2410); ++ platform_driver_register(&s3cmci_driver_2412); ++ platform_driver_register(&s3cmci_driver_2440); ++ return 0; ++} ++ ++static void __exit s3cmci_exit(void) ++{ ++ platform_driver_unregister(&s3cmci_driver_2410); ++ platform_driver_unregister(&s3cmci_driver_2412); ++ platform_driver_unregister(&s3cmci_driver_2440); ++} ++ ++module_init(s3cmci_init); ++module_exit(s3cmci_exit); ++ ++MODULE_DESCRIPTION("Samsung S3C MMC/SD Card Interface driver"); ++MODULE_LICENSE("GPL v2"); ++MODULE_AUTHOR("Thomas Kleffel "); ++MODULE_ALIAS("platform:s3c2410-sdi"); ++MODULE_ALIAS("platform:s3c2412-sdi"); ++MODULE_ALIAS("platform:s3c2440-sdi"); +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/mmc/host/s3cmci.h linux-2.6.25-m8050/drivers/mmc/host/s3cmci.h +--- linux-git/drivers/mmc/host/s3cmci.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/mmc/host/s3cmci.h 2008-07-01 13:32:30.000000000 +0200 +@@ -0,0 +1,70 @@ ++/* ++ * linux/drivers/mmc/s3cmci.h - Samsung S3C MCI driver ++ * ++ * Copyright (C) 2004-2006 Thomas Kleffel, All Rights Reserved. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++/* FIXME: DMA Resource management ?! */ ++#define S3CMCI_DMA 0 ++ ++enum s3cmci_waitfor { ++ COMPLETION_NONE, ++ COMPLETION_FINALIZE, ++ COMPLETION_CMDSENT, ++ COMPLETION_RSPFIN, ++ COMPLETION_XFERFINISH, ++ COMPLETION_XFERFINISH_RSPFIN, ++}; ++ ++struct s3cmci_host { ++ struct platform_device *pdev; ++ struct s3c24xx_mci_pdata *pdata; ++ struct mmc_host *mmc; ++ struct resource *mem; ++ struct clk *clk; ++ void __iomem *base; ++ int irq; ++ int irq_cd; ++ int dma; ++ ++ unsigned long clk_rate; ++ unsigned long clk_div; ++ unsigned long real_rate; ++ u8 prescaler; ++ ++ int is2440; ++ unsigned sdiimsk; ++ unsigned sdidata; ++ int dodma; ++ int dmatogo; ++ ++ struct mmc_request *mrq; ++ int cmd_is_stop; ++ ++ spinlock_t complete_lock; ++ enum s3cmci_waitfor complete_what; ++ ++ int dma_complete; ++ ++ u32 pio_sgptr; ++ u32 pio_words; ++ u32 pio_count; ++ u32 *pio_ptr; ++#define XFER_NONE 0 ++#define XFER_READ 1 ++#define XFER_WRITE 2 ++ u32 pio_active; ++ ++ int bus_width; ++ ++ char dbgmsg_cmd[301]; ++ char dbgmsg_dat[301]; ++ char *status; ++ ++ unsigned int ccnt, dcnt; ++ struct tasklet_struct pio_tasklet; ++}; +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/net/wireless/libertas/if_sdio.c linux-2.6.25-m8050/drivers/net/wireless/libertas/if_sdio.c +--- linux-git/drivers/net/wireless/libertas/if_sdio.c 2008-11-10 12:20:26.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/net/wireless/libertas/if_sdio.c 2008-07-11 16:08:33.000000000 +0200 +@@ -248,13 +248,16 @@ + u8 status; + u16 size, type, chunk; + unsigned long timeout; ++ int padsize; + + lbs_deb_enter(LBS_DEB_SDIO); + + size = if_sdio_read_scratch(card, &ret); + if (ret) + goto out; ++// printk(KERN_INFO "libertas_sdio: packet size card-to-host %d\n",size); + ++ + if (size < 4) { + lbs_deb_sdio("invalid packet size (%d bytes) from firmware\n", + (int)size); +@@ -262,6 +265,12 @@ + goto out; + } + ++ padsize= 0x04 - (size % 0x04); ++ if (padsize) { ++ size=size +padsize; ++// printk(KERN_INFO "libertas_sdio: adjusting packet size card-to-host %d\n",size); ++ } ++ + timeout = jiffies + HZ; + while (1) { + status = sdio_readb(card->func, IF_SDIO_STATUS, &ret); +@@ -379,6 +388,8 @@ + mdelay(1); + } + ++// printk(KERN_INFO "libertas_sdio: packet size host-to-card-worker %d\n",packet->nb); ++ + ret = sdio_writesb(card->func, card->ioport, + packet->buffer, packet->nb); + if (ret) +@@ -696,6 +707,7 @@ + struct if_sdio_packet *packet, *cur; + u16 size; + unsigned long flags; ++ int padsize; + + lbs_deb_enter_args(LBS_DEB_SDIO, "type %d, bytes %d", type, nb); + +@@ -711,6 +723,14 @@ + * goes suicidal. + */ + size = nb + 4; ++ padsize = 0x04 - (size % 0x04); ++ ++// printk(KERN_INFO "libertas_sdio: packet size host-to-card %d\n",size); ++ ++ if (padsize) { ++ size = size + padsize; ++// printk(KERN_INFO "libertas_sdio: adjusting packet size card-to-host %d\n",size); ++ } + if ((size > card->func->cur_blksize) || (size > 512)) { + size = (size + card->func->cur_blksize - 1) / + card->func->cur_blksize * card->func->cur_blksize; +@@ -729,13 +749,19 @@ + /* + * SDIO specific header. + */ +- packet->buffer[0] = (nb + 4) & 0xff; +- packet->buffer[1] = ((nb + 4) >> 8) & 0xff; ++ packet->buffer[0] = (nb + 4 + padsize) & 0xff; ++ packet->buffer[1] = ((nb + 4 + padsize) >> 8) & 0xff; + packet->buffer[2] = type; + packet->buffer[3] = 0; + + memcpy(packet->buffer + 4, buf, nb); + ++ if (padsize != 0 ) { ++ int padcount; ++ for (padcount=0; padcount < padsize ; padcount++) { ++ packet->buffer[size-padcount]=0; ++ } ++ } + spin_lock_irqsave(&card->lock, flags); + + if (!card->packets) +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/serial/s3c2410.c linux-2.6.25-m8050/drivers/serial/s3c2410.c +--- linux-git/drivers/serial/s3c2410.c 2008-11-10 12:20:27.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/serial/s3c2410.c 2008-10-10 18:07:13.000000000 +0200 +@@ -72,6 +72,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -315,19 +316,32 @@ + struct s3c24xx_uart_port *ourport = dev_id; + struct uart_port *port = &ourport->port; + struct tty_struct *tty = port->info->tty; ++ struct s3c2410_uartcfg *cfg = s3c24xx_port_to_cfg(port); + unsigned int ufcon, ch, flag, ufstat, uerstat; + int max_count = 64; + ++ if (cfg->hwport==0) { ++ printk("uart0 irq!!\n"); ++ scanner_data(); ++ } + while (max_count-- > 0) { + ufcon = rd_regl(port, S3C2410_UFCON); + ufstat = rd_regl(port, S3C2410_UFSTAT); + +- if (s3c24xx_serial_rx_fifocnt(ourport, ufstat) == 0) ++ if (s3c24xx_serial_rx_fifocnt(ourport, ufstat) == 0){ ++ if (cfg->hwport==0) { ++ printk("rx_fifocnt is 0\n"); ++ } + break; ++ } + + uerstat = rd_regl(port, S3C2410_UERSTAT); + ch = rd_regb(port, S3C2410_URXH); + ++ if (cfg->hwport==0) { ++ printk("received %c(0x%x)\n",ch,ch); ++ } ++ + if (port->flags & UPF_CONS_FLOW) { + int txe = s3c24xx_serial_txempty_nofifo(port); + +@@ -458,11 +472,28 @@ + static unsigned int s3c24xx_serial_get_mctrl(struct uart_port *port) + { + unsigned int umstat = rd_regb(port,S3C2410_UMSTAT); ++ struct s3c2410_uartcfg *cfg = s3c24xx_port_to_cfg(port); + +- if (umstat & S3C2410_UMSTAT_CTS) ++ if (umstat & S3C2410_UMSTAT_CTS) { ++ if( cfg->ri_pin != NULL ) { ++ if ( s3c2410_gpio_getpin(cfg->ri_pin)) ++ return TIOCM_CAR | TIOCM_DSR | TIOCM_CTS; ++ else ++ return TIOCM_CAR | TIOCM_DSR | TIOCM_CTS | TIOCM_RI; ++ } ++ else + return TIOCM_CAR | TIOCM_DSR | TIOCM_CTS; +- else ++ } ++ else { ++ if( cfg->ri_pin != NULL ) { ++ if ( s3c2410_gpio_getpin(cfg->ri_pin)) ++ return TIOCM_CAR | TIOCM_DSR; ++ else ++ return TIOCM_CAR | TIOCM_DSR | TIOCM_RI; ++ } ++ else + return TIOCM_CAR | TIOCM_DSR; ++ } + } + + static void s3c24xx_serial_set_mctrl(struct uart_port *port, unsigned int mctrl) +@@ -1025,6 +1056,10 @@ + + dbg("s3c24xx_serial_init_port: port=%p, platdev=%p\n", port, platdev); + ++ /* turn on the lcd backlight and turn off green led */ ++ s3c2410_gpio_setpin(S3C2410_GPB3, 1); ++ s3c2410_gpio_setpin(S3C2410_GPG4, 0); ++ + if (platdev == NULL) + return -ENODEV; + +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/spi/spi_s3c24xx.c linux-2.6.25-m8050/drivers/spi/spi_s3c24xx.c +--- linux-git/drivers/spi/spi_s3c24xx.c 2008-11-10 12:20:27.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/spi/spi_s3c24xx.c 2008-06-11 11:30:43.000000000 +0200 +@@ -270,6 +270,7 @@ + /* setup the master state. */ + + master->num_chipselect = hw->pdata->num_cs; ++ master->bus_num = pdev->id; + + /* setup the state for the bitbang driver */ + +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/video/logo/Kconfig linux-2.6.25-m8050/drivers/video/logo/Kconfig +--- linux-git/drivers/video/logo/Kconfig 2008-11-10 12:20:29.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/video/logo/Kconfig 2008-08-13 12:19:47.000000000 +0200 +@@ -72,4 +72,9 @@ + depends on M32R + default y + ++config LOGO_M8050_CLUT224 ++ bool "224-color AML Linux logo" ++ depends on MACH_AML_M8050 ++ default y ++ + endif # LOGO +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/video/logo/logo.c linux-2.6.25-m8050/drivers/video/logo/logo.c +--- linux-git/drivers/video/logo/logo.c 2008-11-10 12:20:29.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/video/logo/logo.c 2008-08-13 13:52:48.000000000 +0200 +@@ -33,6 +33,7 @@ + extern const struct linux_logo logo_superh_vga16; + extern const struct linux_logo logo_superh_clut224; + extern const struct linux_logo logo_m32r_clut224; ++extern const struct linux_logo logo_m8050_clut224; + + static int nologo; + module_param(nologo, bool, 0); +@@ -105,6 +106,10 @@ + /* M32R Linux logo */ + logo = &logo_m32r_clut224; + #endif ++#ifdef CONFIG_LOGO_M8050_CLUT224 ++ /* M8050 AML logo */ ++ logo = &logo_m8050_clut224; ++#endif + } + return logo; + } +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/video/logo/logo_m8050_clut224.ppm linux-2.6.25-m8050/drivers/video/logo/logo_m8050_clut224.ppm +--- linux-git/drivers/video/logo/logo_m8050_clut224.ppm 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/video/logo/logo_m8050_clut224.ppm 2008-08-14 18:58:49.000000000 +0200 +@@ -0,0 +1,230404 @@ ++P3 ++# CREATOR: The GIMP's PNM Filter Version 1.0 ++240 320 ++255 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++11 ++6 ++0 ++43 ++22 ++0 ++43 ++22 ++0 ++75 ++38 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++139 ++69 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++152 ++76 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++66 ++33 ++0 ++44 ++22 ++0 ++11 ++6 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++43 ++22 ++0 ++53 ++26 ++0 ++84 ++42 ++0 ++107 ++54 ++0 ++129 ++64 ++0 ++152 ++76 ++0 ++174 ++87 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++185 ++93 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++166 ++83 ++0 ++132 ++66 ++0 ++88 ++44 ++0 ++56 ++28 ++0 ++11 ++6 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++43 ++22 ++0 ++65 ++32 ++0 ++87 ++43 ++0 ++130 ++65 ++0 ++152 ++76 ++0 ++177 ++88 ++0 ++182 ++91 ++0 ++185 ++93 ++0 ++189 ++94 ++0 ++194 ++97 ++0 ++196 ++98 ++0 ++200 ++100 ++0 ++205 ++103 ++0 ++208 ++104 ++0 ++213 ++106 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++221 ++111 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++200 ++100 ++0 ++196 ++98 ++0 ++194 ++97 ++0 ++190 ++95 ++0 ++186 ++93 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++133 ++67 ++0 ++79 ++40 ++0 ++23 ++12 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++43 ++22 ++0 ++87 ++43 ++0 ++107 ++54 ++0 ++143 ++72 ++0 ++180 ++90 ++0 ++185 ++93 ++0 ++190 ++95 ++0 ++195 ++98 ++0 ++200 ++100 ++0 ++206 ++103 ++0 ++213 ++106 ++0 ++218 ++109 ++0 ++225 ++112 ++0 ++230 ++115 ++0 ++234 ++117 ++0 ++237 ++123 ++9 ++238 ++129 ++21 ++238 ++129 ++21 ++239 ++139 ++39 ++239 ++139 ++39 ++239 ++139 ++39 ++239 ++139 ++39 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++239 ++139 ++39 ++239 ++139 ++39 ++239 ++139 ++39 ++239 ++139 ++39 ++238 ++129 ++21 ++238 ++129 ++21 ++238 ++129 ++21 ++237 ++123 ++9 ++237 ++123 ++9 ++235 ++118 ++0 ++233 ++117 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++222 ++111 ++0 ++219 ++110 ++0 ++217 ++108 ++0 ++213 ++106 ++0 ++208 ++104 ++0 ++205 ++103 ++0 ++196 ++98 ++0 ++193 ++96 ++0 ++186 ++93 ++0 ++183 ++92 ++0 ++137 ++68 ++0 ++68 ++34 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++32 ++16 ++0 ++66 ++33 ++0 ++110 ++55 ++0 ++146 ++73 ++0 ++183 ++92 ++0 ++190 ++95 ++0 ++196 ++98 ++0 ++205 ++103 ++0 ++210 ++105 ++0 ++218 ++109 ++0 ++225 ++112 ++0 ++231 ++116 ++0 ++236 ++118 ++1 ++238 ++129 ++21 ++239 ++139 ++39 ++239 ++139 ++39 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++240 ++151 ++63 ++242 ++167 ++91 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++239 ++139 ++39 ++239 ++139 ++39 ++238 ++129 ++21 ++238 ++129 ++21 ++237 ++123 ++9 ++237 ++123 ++9 ++236 ++118 ++1 ++234 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++223 ++112 ++0 ++219 ++110 ++0 ++213 ++106 ++0 ++207 ++104 ++0 ++200 ++100 ++0 ++194 ++97 ++0 ++189 ++94 ++0 ++173 ++87 ++0 ++93 ++46 ++0 ++12 ++6 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++32 ++16 ++0 ++79 ++39 ++0 ++124 ++62 ++0 ++173 ++87 ++0 ++193 ++96 ++0 ++199 ++99 ++0 ++206 ++103 ++0 ++217 ++108 ++0 ++225 ++112 ++0 ++231 ++116 ++0 ++237 ++123 ++9 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++211 ++151 ++92 ++211 ++151 ++92 ++183 ++141 ++99 ++183 ++141 ++99 ++183 ++141 ++99 ++163 ++132 ++100 ++138 ++122 ++105 ++138 ++122 ++105 ++138 ++122 ++105 ++138 ++122 ++105 ++112 ++112 ++111 ++112 ++112 ++111 ++106 ++106 ++106 ++106 ++106 ++106 ++106 ++106 ++106 ++106 ++106 ++106 ++112 ++112 ++111 ++106 ++106 ++106 ++112 ++112 ++111 ++106 ++106 ++106 ++112 ++112 ++111 ++106 ++106 ++106 ++106 ++106 ++106 ++138 ++122 ++105 ++138 ++122 ++105 ++138 ++122 ++105 ++163 ++132 ++100 ++183 ++141 ++99 ++163 ++132 ++100 ++211 ++151 ++92 ++211 ++151 ++92 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++242 ++167 ++91 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++239 ++139 ++39 ++239 ++139 ++39 ++238 ++129 ++21 ++237 ++123 ++9 ++237 ++123 ++9 ++236 ++118 ++1 ++235 ++118 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++229 ++114 ++0 ++225 ++112 ++0 ++219 ++110 ++0 ++213 ++106 ++0 ++206 ++103 ++0 ++199 ++99 ++0 ++193 ++96 ++0 ++177 ++88 ++0 ++71 ++36 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++34 ++17 ++0 ++81 ++40 ++0 ++126 ++63 ++0 ++179 ++90 ++0 ++196 ++98 ++0 ++206 ++103 ++0 ++217 ++108 ++0 ++225 ++112 ++0 ++234 ++117 ++0 ++237 ++123 ++9 ++239 ++139 ++39 ++239 ++139 ++39 ++240 ++151 ++63 ++240 ++151 ++63 ++242 ++167 ++91 ++242 ++167 ++91 ++211 ++151 ++92 ++211 ++151 ++92 ++163 ++132 ++100 ++163 ++132 ++100 ++138 ++122 ++105 ++138 ++122 ++105 ++106 ++106 ++106 ++106 ++106 ++106 ++106 ++106 ++106 ++103 ++103 ++102 ++98 ++98 ++97 ++98 ++98 ++97 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++84 ++84 ++83 ++84 ++84 ++83 ++84 ++84 ++83 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++71 ++70 ++69 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++84 ++84 ++83 ++84 ++84 ++83 ++84 ++84 ++83 ++91 ++91 ++91 ++91 ++91 ++91 ++98 ++98 ++97 ++98 ++98 ++97 ++122 ++105 ++89 ++163 ++132 ++100 ++183 ++141 ++99 ++211 ++151 ++92 ++242 ++167 ++91 ++242 ++167 ++91 ++240 ++151 ++63 ++240 ++151 ++63 ++239 ++139 ++39 ++239 ++139 ++39 ++238 ++129 ++21 ++237 ++123 ++9 ++237 ++123 ++9 ++236 ++118 ++1 ++236 ++118 ++1 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++231 ++116 ++0 ++229 ++114 ++0 ++225 ++112 ++0 ++217 ++108 ++0 ++210 ++105 ++0 ++200 ++100 ++0 ++194 ++97 ++0 ++143 ++72 ++0 ++24 ++12 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++12 ++5 ++0 ++68 ++34 ++0 ++117 ++59 ++0 ++170 ++85 ++0 ++203 ++101 ++0 ++211 ++106 ++0 ++221 ++111 ++0 ++231 ++116 ++0 ++237 ++123 ++9 ++239 ++139 ++39 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++242 ++167 ++91 ++211 ++151 ++92 ++183 ++141 ++99 ++163 ++132 ++100 ++138 ++122 ++105 ++112 ++112 ++111 ++106 ++106 ++106 ++103 ++103 ++102 ++98 ++98 ++97 ++98 ++98 ++97 ++91 ++91 ++91 ++91 ++91 ++91 ++84 ++84 ++83 ++76 ++76 ++76 ++76 ++76 ++76 ++71 ++70 ++69 ++66 ++66 ++66 ++61 ++61 ++61 ++55 ++55 ++55 ++55 ++55 ++55 ++52 ++52 ++52 ++47 ++47 ++47 ++47 ++47 ++47 ++41 ++41 ++41 ++28 ++28 ++28 ++13 ++13 ++13 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++4 ++4 ++4 ++13 ++13 ++13 ++28 ++28 ++28 ++41 ++41 ++41 ++41 ++41 ++41 ++47 ++47 ++47 ++52 ++52 ++52 ++55 ++55 ++55 ++61 ++61 ++61 ++66 ++66 ++66 ++71 ++70 ++69 ++76 ++76 ++76 ++76 ++76 ++76 ++84 ++84 ++83 ++84 ++84 ++83 ++98 ++98 ++97 ++151 ++115 ++79 ++183 ++141 ++99 ++242 ++167 ++91 ++240 ++151 ++63 ++240 ++151 ++63 ++240 ++151 ++63 ++239 ++139 ++39 ++238 ++129 ++21 ++237 ++123 ++9 ++237 ++123 ++9 ++236 ++118 ++1 ++236 ++118 ++1 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++230 ++115 ++0 ++225 ++112 ++0 ++218 ++109 ++0 ++208 ++104 ++0 ++200 ++100 ++0 ++182 ++91 ++0 ++75 ++37 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++35 ++18 ++0 ++84 ++42 ++0 ++146 ++73 ++0 ++205 ++103 ++0 ++213 ++106 ++0 ++225 ++112 ++0 ++234 ++117 ++0 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++240 ++151 ++63 ++211 ++151 ++92 ++183 ++141 ++99 ++163 ++132 ++100 ++138 ++122 ++105 ++106 ++106 ++106 ++98 ++98 ++97 ++103 ++103 ++102 ++98 ++98 ++97 ++91 ++91 ++91 ++84 ++84 ++83 ++84 ++84 ++83 ++76 ++76 ++76 ++66 ++66 ++66 ++66 ++66 ++66 ++61 ++61 ++61 ++52 ++52 ++52 ++47 ++47 ++47 ++28 ++28 ++28 ++13 ++13 ++13 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++4 ++4 ++4 ++13 ++13 ++13 ++35 ++35 ++35 ++47 ++47 ++47 ++52 ++52 ++52 ++61 ++61 ++61 ++66 ++66 ++66 ++76 ++76 ++76 ++76 ++76 ++76 ++91 ++91 ++91 ++151 ++115 ++79 ++211 ++151 ++92 ++240 ++151 ++63 ++240 ++151 ++63 ++239 ++139 ++39 ++239 ++139 ++39 ++238 ++129 ++21 ++237 ++123 ++9 ++236 ++118 ++1 ++236 ++118 ++1 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++231 ++116 ++0 ++229 ++114 ++0 ++222 ++111 ++0 ++214 ++107 ++0 ++205 ++103 ++0 ++200 ++100 ++0 ++76 ++37 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++36 ++18 ++0 ++110 ++55 ++0 ++179 ++89 ++0 ++213 ++106 ++0 ++222 ++111 ++0 ++233 ++117 ++0 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++211 ++151 ++92 ++183 ++141 ++99 ++163 ++132 ++100 ++138 ++122 ++105 ++98 ++98 ++97 ++98 ++98 ++97 ++98 ++98 ++97 ++91 ++91 ++91 ++84 ++84 ++83 ++84 ++84 ++83 ++76 ++76 ++76 ++66 ++66 ++66 ++61 ++61 ++61 ++55 ++55 ++55 ++47 ++47 ++47 ++19 ++19 ++19 ++8 ++8 ++8 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++8 ++8 ++8 ++35 ++35 ++35 ++41 ++41 ++41 ++55 ++55 ++55 ++61 ++61 ++61 ++71 ++70 ++69 ++76 ++76 ++76 ++116 ++94 ++73 ++211 ++151 ++92 ++240 ++151 ++63 ++239 ++139 ++39 ++239 ++139 ++39 ++238 ++129 ++21 ++237 ++123 ++9 ++237 ++123 ++9 ++236 ++118 ++1 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++231 ++116 ++0 ++226 ++113 ++0 ++219 ++110 ++0 ++210 ++105 ++0 ++205 ++103 ++0 ++76 ++38 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++63 ++31 ++0 ++126 ++63 ++0 ++196 ++98 ++0 ++219 ++110 ++0 ++230 ++115 ++0 ++237 ++123 ++9 ++239 ++139 ++39 ++240 ++151 ++63 ++186 ++120 ++54 ++163 ++132 ++100 ++122 ++105 ++89 ++98 ++98 ++97 ++91 ++91 ++91 ++91 ++91 ++91 ++89 ++84 ++79 ++84 ++84 ++83 ++76 ++76 ++76 ++71 ++70 ++69 ++61 ++61 ++61 ++55 ++55 ++55 ++47 ++47 ++47 ++19 ++19 ++19 ++8 ++8 ++8 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++8 ++8 ++8 ++35 ++35 ++35 ++47 ++47 ++47 ++55 ++55 ++55 ++61 ++61 ++61 ++66 ++66 ++66 ++116 ++94 ++73 ++240 ++151 ++63 ++239 ++139 ++39 ++239 ++139 ++39 ++238 ++129 ++21 ++237 ++123 ++9 ++237 ++123 ++9 ++236 ++118 ++1 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++233 ++117 ++0 ++229 ++114 ++0 ++221 ++111 ++0 ++213 ++106 ++0 ++208 ++104 ++0 ++53 ++26 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++50 ++25 ++0 ++130 ++65 ++0 ++203 ++101 ++0 ++225 ++112 ++0 ++235 ++118 ++0 ++238 ++129 ++21 ++239 ++139 ++39 ++186 ++120 ++54 ++151 ++115 ++79 ++122 ++105 ++89 ++91 ++91 ++91 ++91 ++91 ++91 ++89 ++84 ++79 ++84 ++84 ++83 ++76 ++76 ++76 ++71 ++70 ++69 ++61 ++61 ++61 ++55 ++55 ++55 ++47 ++47 ++47 ++19 ++19 ++19 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++4 ++4 ++4 ++28 ++28 ++28 ++41 ++41 ++41 ++47 ++47 ++47 ++55 ++55 ++55 ++66 ++66 ++66 ++186 ++120 ++54 ++239 ++139 ++39 ++239 ++139 ++39 ++238 ++129 ++21 ++237 ++123 ++9 ++236 ++118 ++1 ++236 ++118 ++1 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++233 ++117 ++0 ++229 ++114 ++0 ++222 ++111 ++0 ++217 ++108 ++0 ++186 ++93 ++0 ++14 ++7 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++39 ++19 ++0 ++117 ++59 ++0 ++190 ++95 ++0 ++229 ++114 ++0 ++237 ++123 ++9 ++238 ++129 ++21 ++186 ++120 ++54 ++151 ++115 ++79 ++116 ++94 ++73 ++84 ++84 ++83 ++84 ++84 ++83 ++84 ++84 ++83 ++76 ++76 ++76 ++76 ++76 ++76 ++66 ++66 ++66 ++61 ++61 ++61 ++47 ++47 ++47 ++28 ++28 ++28 ++8 ++8 ++8 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++4 ++4 ++4 ++28 ++28 ++28 ++41 ++41 ++41 ++47 ++47 ++47 ++52 ++52 ++52 ++142 ++98 ++54 ++239 ++139 ++39 ++238 ++129 ++21 ++238 ++129 ++21 ++237 ++123 ++9 ++236 ++118 ++1 ++236 ++118 ++1 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++233 ++117 ++0 ++230 ++115 ++0 ++225 ++112 ++0 ++219 ++110 ++0 ++110 ++55 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++12 ++6 ++0 ++95 ++48 ++0 ++180 ++90 ++0 ++231 ++116 ++0 ++237 ++123 ++9 ++207 ++126 ++44 ++142 ++98 ++54 ++116 ++94 ++73 ++76 ++76 ++76 ++84 ++84 ++83 ++76 ++76 ++76 ++76 ++76 ++76 ++71 ++70 ++69 ++66 ++66 ++66 ++55 ++55 ++55 ++47 ++47 ++47 ++19 ++19 ++19 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++13 ++13 ++13 ++28 ++28 ++28 ++41 ++41 ++41 ++41 ++41 ++41 ++113 ++77 ++43 ++239 ++139 ++39 ++238 ++129 ++21 ++237 ++123 ++9 ++237 ++123 ++9 ++236 ++118 ++1 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++233 ++117 ++0 ++230 ++115 ++0 ++225 ++112 ++0 ++208 ++104 ++0 ++14 ++7 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++68 ++34 ++0 ++154 ++77 ++0 ++231 ++116 ++0 ++237 ++123 ++9 ++178 ++100 ++23 ++113 ++77 ++43 ++71 ++70 ++69 ++66 ++66 ++66 ++71 ++70 ++69 ++76 ++76 ++76 ++71 ++70 ++69 ++61 ++61 ++61 ++55 ++55 ++55 ++47 ++47 ++47 ++19 ++19 ++19 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++8 ++8 ++8 ++19 ++19 ++19 ++28 ++28 ++28 ++35 ++35 ++35 ++140 ++82 ++22 ++238 ++129 ++21 ++237 ++123 ++9 ++237 ++123 ++9 ++236 ++118 ++1 ++236 ++118 ++1 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++87 ++43 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++29 ++14 ++0 ++111 ++56 ++0 ++203 ++101 ++0 ++211 ++106 ++0 ++152 ++90 ++27 ++113 ++77 ++43 ++55 ++55 ++55 ++61 ++61 ++61 ++66 ++66 ++66 ++66 ++66 ++66 ++61 ++61 ++61 ++55 ++55 ++55 ++47 ++47 ++47 ++28 ++28 ++28 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++8 ++8 ++8 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++178 ++100 ++23 ++237 ++123 ++9 ++237 ++123 ++9 ++236 ++118 ++1 ++236 ++118 ++1 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++231 ++116 ++0 ++158 ++79 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++56 ++28 ++0 ++158 ++79 ++0 ++207 ++104 ++0 ++140 ++82 ++22 ++72 ++53 ++34 ++47 ++47 ++47 ++55 ++55 ++55 ++55 ++55 ++55 ++61 ++61 ++61 ++55 ++55 ++55 ++47 ++47 ++47 ++35 ++35 ++35 ++13 ++13 ++13 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++8 ++8 ++8 ++13 ++13 ++13 ++13 ++13 ++13 ++49 ++27 ++6 ++236 ++118 ++1 ++236 ++118 ++1 ++236 ++118 ++1 ++236 ++118 ++1 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++221 ++111 ++0 ++2 ++1 ++0 ++4 ++4 ++4 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++14 ++7 ++0 ++87 ++43 ++0 ++177 ++88 ++0 ++138 ++75 ++12 ++64 ++44 ++24 ++35 ++35 ++35 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++41 ++41 ++41 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++8 ++8 ++8 ++4 ++4 ++4 ++0 ++0 ++0 ++146 ++73 ++0 ++233 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++236 ++118 ++1 ++237 ++123 ++9 ++237 ++123 ++9 ++8 ++8 ++8 ++8 ++8 ++8 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++59 ++30 ++0 ++121 ++63 ++5 ++56 ++35 ++14 ++28 ++28 ++28 ++35 ++35 ++35 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++35 ++35 ++35 ++19 ++19 ++19 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++71 ++36 ++0 ++229 ++114 ++0 ++231 ++116 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++237 ++123 ++9 ++237 ++123 ++9 ++44 ++30 ++16 ++13 ++13 ++13 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++4 ++4 ++4 ++8 ++8 ++8 ++19 ++19 ++19 ++28 ++28 ++28 ++28 ++28 ++28 ++35 ++35 ++35 ++28 ++28 ++28 ++19 ++19 ++19 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++222 ++111 ++0 ++229 ++114 ++0 ++233 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++238 ++129 ++21 ++77 ++50 ++23 ++19 ++19 ++19 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++61 ++61 ++61 ++98 ++98 ++97 ++98 ++98 ++97 ++98 ++98 ++97 ++103 ++103 ++102 ++103 ++103 ++102 ++106 ++106 ++106 ++106 ++106 ++106 ++98 ++98 ++97 ++98 ++98 ++97 ++103 ++103 ++102 ++106 ++106 ++106 ++112 ++112 ++111 ++112 ++112 ++111 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++52 ++52 ++52 ++52 ++52 ++52 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++52 ++52 ++52 ++52 ++52 ++52 ++55 ++55 ++55 ++41 ++41 ++41 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++52 ++52 ++52 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++47 ++52 ++52 ++52 ++52 ++52 ++52 ++55 ++55 ++55 ++41 ++41 ++41 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++41 ++41 ++41 ++103 ++103 ++102 ++98 ++98 ++97 ++98 ++98 ++97 ++98 ++98 ++97 ++98 ++98 ++97 ++98 ++98 ++97 ++98 ++98 ++97 ++98 ++98 ++97 ++98 ++98 ++97 ++103 ++103 ++102 ++106 ++106 ++106 ++112 ++112 ++111 ++61 ++61 ++61 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++177 ++88 ++0 ++225 ++112 ++0 ++231 ++116 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++238 ++129 ++21 ++28 ++28 ++28 ++19 ++19 ++19 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++47 ++47 ++47 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++203 ++203 ++203 ++190 ++190 ++190 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++219 ++219 ++219 ++225 ++225 ++225 ++233 ++233 ++233 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++203 ++203 ++203 ++203 ++203 ++203 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++203 ++203 ++203 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++203 ++203 ++203 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++52 ++52 ++52 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++212 ++212 ++212 ++230 ++230 ++230 ++167 ++167 ++167 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++103 ++103 ++102 ++203 ++203 ++203 ++203 ++203 ++203 ++190 ++190 ++190 ++190 ++190 ++190 ++203 ++203 ++203 ++190 ++190 ++190 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++233 ++233 ++233 ++106 ++106 ++106 ++0 ++0 ++0 ++0 ++0 ++0 ++4 ++4 ++4 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++158 ++79 ++0 ++219 ++110 ++0 ++229 ++114 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++237 ++123 ++9 ++238 ++129 ++21 ++238 ++129 ++21 ++239 ++139 ++39 ++35 ++35 ++35 ++28 ++28 ++28 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++35 ++35 ++35 ++190 ++190 ++190 ++190 ++190 ++190 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++212 ++212 ++212 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++41 ++41 ++41 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++219 ++219 ++219 ++225 ++225 ++225 ++233 ++233 ++233 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++122 ++121 ++121 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++219 ++219 ++219 ++230 ++230 ++230 ++238 ++238 ++238 ++146 ++146 ++146 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++219 ++219 ++219 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++61 ++61 ++61 ++2 ++1 ++0 ++8 ++8 ++8 ++8 ++8 ++8 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++156 ++78 ++0 ++217 ++108 ++0 ++229 ++114 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++239 ++139 ++39 ++207 ++126 ++44 ++35 ++35 ++35 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++13 ++13 ++13 ++167 ++167 ++167 ++203 ++203 ++203 ++203 ++203 ++203 ++212 ++212 ++212 ++219 ++219 ++219 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++230 ++230 ++230 ++233 ++233 ++233 ++238 ++238 ++238 ++242 ++242 ++242 ++248 ++248 ++248 ++190 ++190 ++190 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++84 ++84 ++83 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++219 ++219 ++219 ++219 ++219 ++219 ++225 ++225 ++225 ++225 ++225 ++225 ++219 ++219 ++219 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++233 ++233 ++233 ++238 ++238 ++238 ++242 ++242 ++242 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++28 ++28 ++28 ++203 ++203 ++203 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++219 ++219 ++219 ++219 ++219 ++219 ++225 ++225 ++225 ++225 ++225 ++225 ++219 ++219 ++219 ++225 ++225 ++225 ++219 ++219 ++219 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++242 ++242 ++242 ++248 ++248 ++248 ++112 ++112 ++111 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++219 ++219 ++219 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++242 ++242 ++242 ++248 ++248 ++248 ++254 ++254 ++254 ++28 ++28 ++28 ++13 ++13 ++13 ++19 ++19 ++19 ++13 ++13 ++13 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++179 ++89 ++0 ++214 ++107 ++0 ++226 ++113 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++239 ++139 ++39 ++186 ++120 ++54 ++41 ++41 ++41 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++8 ++8 ++8 ++167 ++167 ++167 ++203 ++203 ++203 ++212 ++212 ++212 ++219 ++219 ++219 ++225 ++225 ++225 ++233 ++233 ++233 ++238 ++238 ++238 ++238 ++238 ++238 ++242 ++242 ++242 ++242 ++242 ++242 ++242 ++242 ++242 ++242 ++242 ++242 ++245 ++245 ++245 ++251 ++251 ++251 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++112 ++112 ++111 ++212 ++212 ++212 ++219 ++219 ++219 ++225 ++225 ++225 ++230 ++230 ++230 ++233 ++233 ++233 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++233 ++233 ++233 ++238 ++238 ++238 ++238 ++238 ++238 ++242 ++242 ++242 ++242 ++242 ++242 ++245 ++245 ++245 ++248 ++248 ++248 ++61 ++61 ++61 ++0 ++0 ++0 ++4 ++4 ++4 ++4 ++4 ++4 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++122 ++121 ++121 ++203 ++203 ++203 ++212 ++212 ++212 ++219 ++219 ++219 ++230 ++230 ++230 ++233 ++233 ++233 ++233 ++233 ++233 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++238 ++242 ++242 ++242 ++245 ++245 ++245 ++251 ++251 ++251 ++255 ++255 ++255 ++255 ++255 ++255 ++76 ++76 ++76 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++13 ++13 ++13 ++219 ++219 ++219 ++219 ++219 ++219 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++238 ++238 ++238 ++242 ++242 ++242 ++242 ++242 ++242 ++245 ++245 ++245 ++251 ++251 ++251 ++255 ++255 ++255 ++255 ++255 ++255 ++225 ++225 ++225 ++28 ++28 ++28 ++28 ++28 ++28 ++19 ++19 ++19 ++19 ++19 ++19 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++205 ++103 ++0 ++214 ++107 ++0 ++229 ++114 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++236 ++118 ++1 ++238 ++129 ++21 ++239 ++139 ++39 ++239 ++139 ++39 ++142 ++98 ++54 ++41 ++41 ++41 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++146 ++146 ++146 ++203 ++203 ++203 ++212 ++212 ++212 ++219 ++219 ++219 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++251 ++251 ++251 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++19 ++19 ++19 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++242 ++242 ++242 ++245 ++245 ++245 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++251 ++251 ++251 ++253 ++253 ++253 ++254 ++254 ++254 ++254 ++254 ++254 ++66 ++66 ++66 ++4 ++4 ++4 ++8 ++8 ++8 ++8 ++8 ++8 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++28 ++28 ++28 ++212 ++212 ++212 ++212 ++212 ++212 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++245 ++245 ++245 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++41 ++41 ++41 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++55 ++55 ++55 ++219 ++219 ++219 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++245 ++245 ++245 ++248 ++248 ++248 ++251 ++251 ++251 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++190 ++190 ++190 ++35 ++35 ++35 ++35 ++35 ++35 ++28 ++28 ++28 ++19 ++19 ++19 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++36 ++18 ++0 ++205 ++103 ++0 ++217 ++108 ++0 ++229 ++114 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++66 ++66 ++66 ++41 ++41 ++41 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++122 ++121 ++121 ++203 ++203 ++203 ++203 ++203 ++203 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++248 ++248 ++248 ++251 ++251 ++251 ++253 ++253 ++253 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++91 ++91 ++91 ++28 ++28 ++28 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++190 ++190 ++190 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++112 ++112 ++111 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++122 ++121 ++121 ++212 ++212 ++212 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++253 ++253 ++253 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++242 ++242 ++242 ++35 ++35 ++35 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++112 ++112 ++111 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++41 ++41 ++41 ++35 ++35 ++35 ++28 ++28 ++28 ++13 ++13 ++13 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++75 ++37 ++0 ++205 ++103 ++0 ++218 ++109 ++0 ++230 ++115 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++236 ++118 ++1 ++237 ++123 ++9 ++239 ++139 ++39 ++239 ++139 ++39 ++207 ++126 ++44 ++61 ++61 ++61 ++41 ++41 ++41 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++76 ++76 ++76 ++203 ++203 ++203 ++203 ++203 ++203 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++61 ++61 ++61 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++225 ++225 ++225 ++225 ++225 ++225 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++13 ++13 ++13 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++28 ++28 ++28 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++146 ++146 ++146 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++112 ++112 ++111 ++41 ++41 ++41 ++35 ++35 ++35 ++28 ++28 ++28 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++122 ++62 ++0 ++205 ++103 ++0 ++219 ++110 ++0 ++231 ++116 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++116 ++94 ++73 ++55 ++55 ++55 ++35 ++35 ++35 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++71 ++70 ++69 ++203 ++203 ++203 ++203 ++203 ++203 ++219 ++219 ++219 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++35 ++35 ++35 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++55 ++55 ++55 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++8 ++8 ++8 ++8 ++8 ++8 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++103 ++103 ++102 ++212 ++212 ++212 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++190 ++190 ++190 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++71 ++70 ++69 ++41 ++41 ++41 ++35 ++35 ++35 ++19 ++19 ++19 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++183 ++92 ++0 ++208 ++104 ++0 ++222 ++111 ++0 ++231 ++116 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++236 ++118 ++1 ++237 ++123 ++9 ++239 ++139 ++39 ++240 ++151 ++63 ++240 ++151 ++63 ++66 ++66 ++66 ++47 ++47 ++47 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++35 ++35 ++35 ++190 ++190 ++190 ++203 ++203 ++203 ++219 ++219 ++219 ++225 ++225 ++225 ++238 ++238 ++238 ++245 ++245 ++245 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++35 ++35 ++35 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++84 ++84 ++83 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++190 ++190 ++190 ++8 ++8 ++8 ++8 ++8 ++8 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++13 ++13 ++13 ++190 ++190 ++190 ++212 ++212 ++212 ++225 ++225 ++225 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++28 ++28 ++28 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++225 ++225 ++225 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++47 ++47 ++47 ++41 ++41 ++41 ++35 ++35 ++35 ++19 ++19 ++19 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++60 ++30 ++0 ++196 ++98 ++0 ++213 ++106 ++0 ++226 ++113 ++0 ++233 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++151 ++115 ++79 ++61 ++61 ++61 ++41 ++41 ++41 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++28 ++28 ++28 ++190 ++190 ++190 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++238 ++238 ++238 ++248 ++248 ++248 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++190 ++190 ++190 ++28 ++28 ++28 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++112 ++112 ++111 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++212 ++212 ++212 ++8 ++8 ++8 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++103 ++103 ++102 ++212 ++212 ++212 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++91 ++91 ++91 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++55 ++55 ++55 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++47 ++47 ++47 ++41 ++41 ++41 ++28 ++28 ++28 ++19 ++19 ++19 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++119 ++60 ++0 ++200 ++100 ++0 ++217 ++108 ++0 ++229 ++114 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++211 ++151 ++92 ++71 ++70 ++69 ++52 ++52 ++52 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++13 ++13 ++13 ++167 ++167 ++167 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++238 ++238 ++238 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++4 ++4 ++4 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++190 ++190 ++190 ++212 ++212 ++212 ++225 ++225 ++225 ++233 ++233 ++233 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++52 ++52 ++52 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++84 ++84 ++83 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++41 ++41 ++41 ++35 ++35 ++35 ++28 ++28 ++28 ++19 ++19 ++19 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++12 ++6 ++0 ++193 ++96 ++0 ++206 ++103 ++0 ++222 ++111 ++0 ++231 ++116 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++240 ++151 ++63 ++240 ++151 ++63 ++151 ++115 ++79 ++61 ++61 ++61 ++41 ++41 ++41 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++238 ++238 ++238 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++106 ++106 ++106 ++28 ++28 ++28 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++190 ++190 ++190 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++76 ++76 ++76 ++212 ++212 ++212 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++242 ++242 ++242 ++35 ++35 ++35 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++122 ++121 ++121 ++225 ++225 ++225 ++230 ++230 ++230 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++41 ++41 ++41 ++35 ++35 ++35 ++28 ++28 ++28 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++95 ++48 ++0 ++196 ++98 ++0 ++213 ++106 ++0 ++226 ++113 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++211 ++151 ++92 ++71 ++70 ++69 ++55 ++55 ++55 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++122 ++121 ++121 ++203 ++203 ++203 ++203 ++203 ++203 ++225 ++225 ++225 ++233 ++233 ++233 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++212 ++212 ++212 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++91 ++91 ++91 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++225 ++225 ++225 ++225 ++225 ++225 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++66 ++66 ++66 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++190 ++190 ++190 ++212 ++212 ++212 ++225 ++225 ++225 ++233 ++233 ++233 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++98 ++98 ++97 ++41 ++41 ++41 ++35 ++35 ++35 ++28 ++28 ++28 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++12 ++6 ++0 ++177 ++88 ++0 ++203 ++101 ++0 ++219 ++110 ++0 ++230 ++115 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++237 ++123 ++9 ++237 ++123 ++9 ++239 ++139 ++39 ++240 ++151 ++63 ++240 ++151 ++63 ++116 ++94 ++73 ++61 ++61 ++61 ++41 ++41 ++41 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++98 ++98 ++97 ++203 ++203 ++203 ++212 ++212 ++212 ++219 ++219 ++219 ++233 ++233 ++233 ++245 ++245 ++245 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++203 ++203 ++203 ++255 ++255 ++255 ++255 ++255 ++255 ++254 ++254 ++254 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++35 ++35 ++35 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++55 ++55 ++55 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++66 ++66 ++66 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++76 ++76 ++76 ++212 ++212 ++212 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++248 ++248 ++248 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++28 ++28 ++28 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++225 ++225 ++225 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++47 ++47 ++47 ++41 ++41 ++41 ++35 ++35 ++35 ++19 ++19 ++19 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++93 ++46 ++0 ++194 ++97 ++0 ++210 ++105 ++0 ++225 ++112 ++0 ++233 ++117 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++240 ++151 ++63 ++240 ++151 ++63 ++163 ++132 ++100 ++71 ++70 ++69 ++52 ++52 ++52 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++76 ++76 ++76 ++203 ++203 ++203 ++203 ++203 ++203 ++219 ++219 ++219 ++230 ++230 ++230 ++245 ++245 ++245 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++35 ++35 ++35 ++225 ++225 ++225 ++255 ++255 ++255 ++254 ++254 ++254 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++230 ++230 ++230 ++35 ++35 ++35 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++84 ++84 ++83 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++112 ++112 ++111 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++190 ++190 ++190 ++212 ++212 ++212 ++225 ++225 ++225 ++233 ++233 ++233 ++245 ++245 ++245 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++28 ++28 ++28 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++212 ++212 ++212 ++47 ++47 ++47 ++41 ++41 ++41 ++28 ++28 ++28 ++19 ++19 ++19 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++24 ++12 ++0 ++189 ++94 ++0 ++200 ++100 ++0 ++218 ++109 ++0 ++230 ++115 ++0 ++234 ++117 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++211 ++151 ++92 ++89 ++84 ++79 ++61 ++61 ++61 ++35 ++35 ++35 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++47 ++47 ++47 ++203 ++203 ++203 ++203 ++203 ++203 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++242 ++242 ++242 ++66 ++66 ++66 ++47 ++47 ++47 ++255 ++255 ++255 ++253 ++253 ++253 ++251 ++251 ++251 ++251 ++251 ++251 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++28 ++28 ++28 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++112 ++112 ++111 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++66 ++66 ++66 ++212 ++212 ++212 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++251 ++251 ++251 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++91 ++91 ++91 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++71 ++70 ++69 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++190 ++190 ++190 ++41 ++41 ++41 ++41 ++41 ++41 ++28 ++28 ++28 ++19 ++19 ++19 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++126 ++63 ++0 ++194 ++97 ++0 ++211 ++106 ++0 ++225 ++112 ++0 ++233 ++117 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++116 ++94 ++73 ++71 ++70 ++69 ++47 ++47 ++47 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++35 ++35 ++35 ++190 ++190 ++190 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++242 ++242 ++242 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++112 ++112 ++111 ++47 ++47 ++47 ++76 ++76 ++76 ++253 ++253 ++253 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++253 ++253 ++253 ++146 ++146 ++146 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++212 ++212 ++212 ++225 ++225 ++225 ++238 ++238 ++238 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++225 ++225 ++225 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++47 ++47 ++47 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++112 ++112 ++111 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++41 ++41 ++41 ++35 ++35 ++35 ++28 ++28 ++28 ++19 ++19 ++19 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++58 ++29 ++0 ++189 ++94 ++0 ++205 ++103 ++0 ++219 ++110 ++0 ++230 ++115 ++0 ++235 ++118 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++239 ++139 ++39 ++240 ++151 ++63 ++240 ++151 ++63 ++163 ++132 ++100 ++76 ++76 ++76 ++55 ++55 ++55 ++28 ++28 ++28 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++13 ++13 ++13 ++167 ++167 ++167 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++238 ++238 ++238 ++251 ++251 ++251 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++61 ++61 ++61 ++28 ++28 ++28 ++112 ++112 ++111 ++245 ++245 ++245 ++242 ++242 ++242 ++245 ++245 ++245 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++28 ++28 ++28 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++190 ++190 ++190 ++230 ++230 ++230 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++212 ++212 ++212 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++251 ++251 ++251 ++190 ++190 ++190 ++0 ++0 ++0 ++0 ++0 ++0 ++55 ++55 ++55 ++212 ++212 ++212 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++225 ++225 ++225 ++190 ++190 ++190 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++242 ++242 ++242 ++35 ++35 ++35 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++146 ++146 ++146 ++230 ++230 ++230 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++98 ++98 ++97 ++47 ++47 ++47 ++35 ++35 ++35 ++28 ++28 ++28 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++12 ++5 ++0 ++173 ++87 ++0 ++196 ++98 ++0 ++214 ++107 ++0 ++226 ++113 ++0 ++234 ++117 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++240 ++151 ++63 ++240 ++151 ++63 ++211 ++151 ++92 ++84 ++84 ++83 ++61 ++61 ++61 ++41 ++41 ++41 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++13 ++13 ++13 ++167 ++167 ++167 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++238 ++238 ++238 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++76 ++76 ++76 ++47 ++47 ++47 ++8 ++8 ++8 ++146 ++146 ++146 ++238 ++238 ++238 ++238 ++238 ++238 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++91 ++91 ++91 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++253 ++253 ++253 ++248 ++248 ++248 ++190 ++190 ++190 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++219 ++219 ++219 ++225 ++225 ++225 ++238 ++238 ++238 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++112 ++112 ++111 ++242 ++242 ++242 ++255 ++255 ++255 ++255 ++255 ++255 ++254 ++254 ++254 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++203 ++203 ++203 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++61 ++61 ++61 ++41 ++41 ++41 ++35 ++35 ++35 ++19 ++19 ++19 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++124 ++62 ++0 ++193 ++96 ++0 ++207 ++104 ++0 ++223 ++112 ++0 ++231 ++116 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++91 ++91 ++91 ++71 ++70 ++69 ++47 ++47 ++47 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++122 ++121 ++121 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++233 ++233 ++233 ++245 ++245 ++245 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++233 ++233 ++233 ++91 ++91 ++91 ++61 ++61 ++61 ++19 ++19 ++19 ++0 ++0 ++0 ++190 ++190 ++190 ++233 ++233 ++233 ++238 ++238 ++238 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++61 ++61 ++61 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++55 ++55 ++55 ++225 ++225 ++225 ++225 ++225 ++225 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++91 ++91 ++91 ++225 ++225 ++225 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++253 ++253 ++253 ++242 ++242 ++242 ++238 ++238 ++238 ++0 ++0 ++0 ++55 ++55 ++55 ++219 ++219 ++219 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++242 ++242 ++242 ++55 ++55 ++55 ++255 ++255 ++255 ++255 ++255 ++255 ++254 ++254 ++254 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++28 ++28 ++28 ++4 ++4 ++4 ++0 ++0 ++0 ++13 ++13 ++13 ++225 ++225 ++225 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++242 ++242 ++242 ++41 ++41 ++41 ++41 ++41 ++41 ++35 ++35 ++35 ++19 ++19 ++19 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++68 ++34 ++0 ++186 ++93 ++0 ++203 ++101 ++0 ++218 ++109 ++0 ++230 ++115 ++0 ++235 ++118 ++0 ++237 ++123 ++9 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++122 ++105 ++89 ++76 ++76 ++76 ++52 ++52 ++52 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++122 ++121 ++121 ++203 ++203 ++203 ++212 ++212 ++212 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++245 ++245 ++245 ++112 ++112 ++111 ++61 ++61 ++61 ++35 ++35 ++35 ++0 ++0 ++0 ++0 ++0 ++0 ++230 ++230 ++230 ++230 ++230 ++230 ++238 ++238 ++238 ++242 ++242 ++242 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++35 ++35 ++35 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++84 ++84 ++83 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++76 ++76 ++76 ++203 ++203 ++203 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++254 ++254 ++254 ++254 ++254 ++254 ++251 ++251 ++251 ++245 ++245 ++245 ++238 ++238 ++238 ++0 ++0 ++0 ++146 ++146 ++146 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++84 ++84 ++83 ++255 ++255 ++255 ++254 ++254 ++254 ++253 ++253 ++253 ++253 ++253 ++253 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++55 ++55 ++55 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++47 ++47 ++47 ++41 ++41 ++41 ++28 ++28 ++28 ++19 ++19 ++19 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++34 ++17 ++0 ++171 ++86 ++0 ++196 ++98 ++0 ++214 ++107 ++0 ++226 ++113 ++0 ++234 ++117 ++0 ++237 ++123 ++9 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++151 ++115 ++79 ++84 ++84 ++83 ++55 ++55 ++55 ++28 ++28 ++28 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++76 ++76 ++76 ++203 ++203 ++203 ++203 ++203 ++203 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++251 ++251 ++251 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++47 ++47 ++47 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++41 ++41 ++41 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++28 ++28 ++28 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++112 ++112 ++111 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++35 ++35 ++35 ++167 ++167 ++167 ++255 ++255 ++255 ++255 ++255 ++255 ++254 ++254 ++254 ++254 ++254 ++254 ++253 ++253 ++253 ++251 ++251 ++251 ++245 ++245 ++245 ++242 ++242 ++242 ++76 ++76 ++76 ++230 ++230 ++230 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++61 ++61 ++61 ++122 ++121 ++121 ++254 ++254 ++254 ++251 ++251 ++251 ++248 ++248 ++248 ++251 ++251 ++251 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++91 ++91 ++91 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++98 ++98 ++97 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++41 ++41 ++41 ++35 ++35 ++35 ++28 ++28 ++28 ++19 ++19 ++19 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++11 ++6 ++0 ++146 ++73 ++0 ++193 ++96 ++0 ++210 ++105 ++0 ++225 ++112 ++0 ++231 ++116 ++0 ++236 ++118 ++1 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++183 ++141 ++99 ++84 ++84 ++83 ++61 ++61 ++61 ++41 ++41 ++41 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++76 ++76 ++76 ++203 ++203 ++203 ++203 ++203 ++203 ++219 ++219 ++219 ++230 ++230 ++230 ++238 ++238 ++238 ++248 ++248 ++248 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++84 ++84 ++83 ++219 ++219 ++219 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++190 ++190 ++190 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++212 ++212 ++212 ++41 ++41 ++41 ++146 ++146 ++146 ++255 ++255 ++255 ++254 ++254 ++254 ++253 ++253 ++253 ++253 ++253 ++253 ++253 ++253 ++253 ++251 ++251 ++251 ++245 ++245 ++245 ++242 ++242 ++242 ++203 ++203 ++203 ++238 ++238 ++238 ++238 ++238 ++238 ++242 ++242 ++242 ++251 ++251 ++251 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++28 ++28 ++28 ++167 ++167 ++167 ++251 ++251 ++251 ++248 ++248 ++248 ++248 ++248 ++248 ++251 ++251 ++251 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++47 ++47 ++47 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++146 ++146 ++146 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++112 ++112 ++111 ++41 ++41 ++41 ++35 ++35 ++35 ++28 ++28 ++28 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++133 ++67 ++0 ++189 ++94 ++0 ++205 ++103 ++0 ++219 ++110 ++0 ++231 ++116 ++0 ++236 ++118 ++1 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++183 ++141 ++99 ++84 ++84 ++83 ++71 ++70 ++69 ++41 ++41 ++41 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++35 ++35 ++35 ++190 ++190 ++190 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++212 ++212 ++212 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++106 ++106 ++106 ++219 ++219 ++219 ++230 ++230 ++230 ++238 ++238 ++238 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++28 ++28 ++28 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++190 ++190 ++190 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++35 ++35 ++35 ++91 ++91 ++91 ++255 ++255 ++255 ++253 ++253 ++253 ++251 ++251 ++251 ++253 ++253 ++253 ++253 ++253 ++253 ++251 ++251 ++251 ++248 ++248 ++248 ++245 ++245 ++245 ++242 ++242 ++242 ++242 ++242 ++242 ++245 ++245 ++245 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++98 ++98 ++97 ++19 ++19 ++19 ++190 ++190 ++190 ++248 ++248 ++248 ++245 ++245 ++245 ++248 ++248 ++248 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++242 ++242 ++242 ++28 ++28 ++28 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++84 ++84 ++83 ++41 ++41 ++41 ++28 ++28 ++28 ++19 ++19 ++19 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++111 ++56 ++0 ++185 ++93 ++0 ++200 ++100 ++0 ++218 ++109 ++0 ++229 ++114 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++211 ++151 ++92 ++91 ++91 ++91 ++71 ++70 ++69 ++47 ++47 ++47 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++28 ++28 ++28 ++190 ++190 ++190 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++238 ++238 ++238 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++13 ++13 ++13 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++35 ++35 ++35 ++76 ++76 ++76 ++255 ++255 ++255 ++251 ++251 ++251 ++248 ++248 ++248 ++251 ++251 ++251 ++253 ++253 ++253 ++253 ++253 ++253 ++251 ++251 ++251 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++219 ++219 ++219 ++35 ++35 ++35 ++8 ++8 ++8 ++248 ++248 ++248 ++245 ++245 ++245 ++242 ++242 ++242 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++225 ++225 ++225 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++35 ++35 ++35 ++28 ++28 ++28 ++19 ++19 ++19 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++66 ++33 ++0 ++183 ++92 ++0 ++199 ++99 ++0 ++217 ++108 ++0 ++229 ++114 ++0 ++236 ++118 ++1 ++237 ++123 ++9 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++211 ++151 ++92 ++98 ++98 ++97 ++76 ++76 ++76 ++47 ++47 ++47 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++13 ++13 ++13 ++167 ++167 ++167 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++253 ++253 ++253 ++219 ++219 ++219 ++190 ++190 ++190 ++167 ++167 ++167 ++167 ++167 ++167 ++167 ++167 ++167 ++146 ++146 ++146 ++146 ++146 ++146 ++167 ++167 ++167 ++190 ++190 ++190 ++225 ++225 ++225 ++233 ++233 ++233 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++91 ++91 ++91 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++55 ++55 ++55 ++225 ++225 ++225 ++230 ++230 ++230 ++233 ++233 ++233 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++35 ++35 ++35 ++28 ++28 ++28 ++253 ++253 ++253 ++248 ++248 ++248 ++248 ++248 ++248 ++251 ++251 ++251 ++253 ++253 ++253 ++253 ++253 ++253 ++253 ++253 ++253 ++253 ++253 ++253 ++251 ++251 ++251 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++28 ++28 ++28 ++35 ++35 ++35 ++245 ++245 ++245 ++242 ++242 ++242 ++242 ++242 ++242 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++19 ++19 ++19 ++2 ++1 ++0 ++0 ++0 ++0 ++41 ++41 ++41 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++190 ++190 ++190 ++13 ++13 ++13 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++66 ++33 ++0 ++182 ++91 ++0 ++195 ++98 ++0 ++213 ++106 ++0 ++226 ++113 ++0 ++235 ++118 ++0 ++237 ++123 ++9 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++211 ++151 ++92 ++98 ++98 ++97 ++76 ++76 ++76 ++52 ++52 ++52 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++254 ++254 ++254 ++253 ++253 ++253 ++251 ++251 ++251 ++245 ++245 ++245 ++233 ++233 ++233 ++230 ++230 ++230 ++219 ++219 ++219 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++35 ++35 ++35 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++98 ++98 ++97 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++98 ++98 ++97 ++35 ++35 ++35 ++13 ++13 ++13 ++253 ++253 ++253 ++248 ++248 ++248 ++248 ++248 ++248 ++251 ++251 ++251 ++253 ++253 ++253 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++230 ++230 ++230 ++47 ++47 ++47 ++19 ++19 ++19 ++61 ++61 ++61 ++242 ++242 ++242 ++238 ++238 ++238 ++242 ++242 ++242 ++245 ++245 ++245 ++251 ++251 ++251 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++84 ++84 ++83 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++66 ++33 ++0 ++180 ++90 ++0 ++194 ++97 ++0 ++211 ++106 ++0 ++225 ++112 ++0 ++235 ++118 ++0 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++211 ++151 ++92 ++103 ++103 ++102 ++76 ++76 ++76 ++55 ++55 ++55 ++19 ++19 ++19 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++122 ++121 ++121 ++190 ++190 ++190 ++212 ++212 ++212 ++219 ++219 ++219 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++253 ++253 ++253 ++251 ++251 ++251 ++245 ++245 ++245 ++242 ++242 ++242 ++233 ++233 ++233 ++225 ++225 ++225 ++225 ++225 ++225 ++219 ++219 ++219 ++225 ++225 ++225 ++225 ++225 ++225 ++233 ++233 ++233 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++242 ++242 ++242 ++28 ++28 ++28 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++122 ++121 ++121 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++55 ++55 ++55 ++28 ++28 ++28 ++8 ++8 ++8 ++203 ++203 ++203 ++245 ++245 ++245 ++245 ++245 ++245 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++41 ++41 ++41 ++8 ++8 ++8 ++122 ++121 ++121 ++238 ++238 ++238 ++238 ++238 ++238 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++91 ++91 ++91 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++112 ++112 ++111 ++225 ++225 ++225 ++230 ++230 ++230 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++253 ++253 ++253 ++106 ++106 ++106 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++66 ++33 ++0 ++180 ++90 ++0 ++194 ++97 ++0 ++210 ++105 ++0 ++225 ++112 ++0 ++234 ++117 ++0 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++211 ++151 ++92 ++98 ++98 ++97 ++76 ++76 ++76 ++55 ++55 ++55 ++19 ++19 ++19 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++98 ++98 ++97 ++203 ++203 ++203 ++212 ++212 ++212 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++254 ++254 ++254 ++251 ++251 ++251 ++245 ++245 ++245 ++242 ++242 ++242 ++238 ++238 ++238 ++238 ++238 ++238 ++233 ++233 ++233 ++238 ++238 ++238 ++238 ++238 ++238 ++242 ++242 ++242 ++245 ++245 ++245 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++242 ++242 ++242 ++41 ++41 ++41 ++28 ++28 ++28 ++8 ++8 ++8 ++190 ++190 ++190 ++245 ++245 ++245 ++245 ++245 ++245 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++242 ++242 ++242 ++71 ++70 ++69 ++28 ++28 ++28 ++0 ++0 ++0 ++167 ++167 ++167 ++233 ++233 ++233 ++238 ++238 ++238 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++47 ++47 ++47 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++253 ++253 ++253 ++245 ++245 ++245 ++61 ++61 ++61 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++68 ++34 ++0 ++182 ++91 ++0 ++194 ++97 ++0 ++210 ++105 ++0 ++225 ++112 ++0 ++235 ++118 ++0 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++211 ++151 ++92 ++103 ++103 ++102 ++84 ++84 ++83 ++55 ++55 ++55 ++19 ++19 ++19 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++76 ++76 ++76 ++203 ++203 ++203 ++203 ++203 ++203 ++219 ++219 ++219 ++230 ++230 ++230 ++242 ++242 ++242 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++254 ++254 ++254 ++251 ++251 ++251 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++248 ++251 ++251 ++251 ++251 ++251 ++251 ++253 ++253 ++253 ++254 ++254 ++254 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++212 ++212 ++212 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++41 ++41 ++41 ++28 ++28 ++28 ++4 ++4 ++4 ++122 ++121 ++121 ++242 ++242 ++242 ++245 ++245 ++245 ++248 ++248 ++248 ++253 ++253 ++253 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++190 ++190 ++190 ++47 ++47 ++47 ++19 ++19 ++19 ++0 ++0 ++0 ++190 ++190 ++190 ++233 ++233 ++233 ++238 ++238 ++238 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++242 ++242 ++242 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++212 ++212 ++212 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++253 ++253 ++253 ++248 ++248 ++248 ++242 ++242 ++242 ++167 ++167 ++167 ++167 ++167 ++167 ++167 ++167 ++167 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++167 ++167 ++167 ++167 ++167 ++167 ++122 ++121 ++121 ++0 ++0 ++0 ++0 ++0 ++0 ++36 ++18 ++0 ++186 ++93 ++0 ++194 ++97 ++0 ++210 ++105 ++0 ++225 ++112 ++0 ++236 ++118 ++1 ++238 ++129 ++21 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++183 ++141 ++99 ++98 ++98 ++97 ++76 ++76 ++76 ++55 ++55 ++55 ++19 ++19 ++19 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++47 ++47 ++47 ++203 ++203 ++203 ++203 ++203 ++203 ++219 ++219 ++219 ++230 ++230 ++230 ++238 ++238 ++238 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++13 ++13 ++13 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++47 ++47 ++47 ++28 ++28 ++28 ++4 ++4 ++4 ++122 ++121 ++121 ++242 ++242 ++242 ++242 ++242 ++242 ++248 ++248 ++248 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++84 ++84 ++83 ++41 ++41 ++41 ++8 ++8 ++8 ++0 ++0 ++0 ++233 ++233 ++233 ++233 ++233 ++233 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++28 ++28 ++28 ++4 ++4 ++4 ++0 ++0 ++0 ++13 ++13 ++13 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++254 ++254 ++254 ++253 ++253 ++253 ++248 ++248 ++248 ++242 ++242 ++242 ++233 ++233 ++233 ++225 ++225 ++225 ++212 ++212 ++212 ++212 ++212 ++212 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++225 ++225 ++225 ++233 ++233 ++233 ++146 ++146 ++146 ++0 ++0 ++0 ++0 ++0 ++0 ++87 ++44 ++2 ++196 ++98 ++0 ++210 ++105 ++0 ++225 ++112 ++0 ++236 ++118 ++1 ++238 ++129 ++21 ++240 ++151 ++63 ++242 ++167 ++91 ++242 ++167 ++91 ++183 ++141 ++99 ++98 ++98 ++97 ++76 ++76 ++76 ++55 ++55 ++55 ++19 ++19 ++19 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++35 ++35 ++35 ++190 ++190 ++190 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++238 ++238 ++238 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++91 ++91 ++91 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++55 ++55 ++55 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++41 ++41 ++41 ++28 ++28 ++28 ++2 ++1 ++0 ++61 ++61 ++61 ++242 ++242 ++242 ++242 ++242 ++242 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++212 ++212 ++212 ++55 ++55 ++55 ++28 ++28 ++28 ++0 ++0 ++0 ++47 ++47 ++47 ++230 ++230 ++230 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++61 ++61 ++61 ++225 ++225 ++225 ++225 ++225 ++225 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++254 ++254 ++254 ++253 ++253 ++253 ++248 ++248 ++248 ++245 ++245 ++245 ++238 ++238 ++238 ++230 ++230 ++230 ++225 ++225 ++225 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++212 ++219 ++219 ++219 ++225 ++225 ++225 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++112 ++112 ++111 ++4 ++4 ++4 ++8 ++8 ++8 ++114 ++59 ++3 ++205 ++103 ++0 ++221 ++111 ++0 ++236 ++118 ++1 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++242 ++167 ++91 ++163 ++132 ++100 ++98 ++98 ++97 ++76 ++76 ++76 ++52 ++52 ++52 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++13 ++13 ++13 ++167 ++167 ++167 ++203 ++203 ++203 ++212 ++212 ++212 ++225 ++225 ++225 ++238 ++238 ++238 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++61 ++61 ++61 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++98 ++98 ++97 ++225 ++225 ++225 ++230 ++230 ++230 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++98 ++98 ++97 ++41 ++41 ++41 ++28 ++28 ++28 ++0 ++0 ++0 ++47 ++47 ++47 ++242 ++242 ++242 ++242 ++242 ++242 ++245 ++245 ++245 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++112 ++112 ++111 ++52 ++52 ++52 ++19 ++19 ++19 ++0 ++0 ++0 ++76 ++76 ++76 ++230 ++230 ++230 ++233 ++233 ++233 ++238 ++238 ++238 ++245 ++245 ++245 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++112 ++112 ++111 ++225 ++225 ++225 ++233 ++233 ++233 ++242 ++242 ++242 ++248 ++248 ++248 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++254 ++254 ++254 ++253 ++253 ++253 ++248 ++248 ++248 ++245 ++245 ++245 ++242 ++242 ++242 ++238 ++238 ++238 ++233 ++233 ++233 ++233 ++233 ++233 ++230 ++230 ++230 ++230 ++230 ++230 ++230 ++230 ++230 ++230 ++230 ++230 ++230 ++230 ++230 ++230 ++230 ++230 ++233 ++233 ++233 ++233 ++233 ++233 ++238 ++238 ++238 ++245 ++245 ++245 ++251 ++251 ++251 ++255 ++255 ++255 ++76 ++76 ++76 ++19 ++19 ++19 ++19 ++19 ++19 ++155 ++79 ++3 ++214 ++107 ++0 ++234 ++117 ++0 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++242 ++167 ++91 ++138 ++122 ++105 ++91 ++91 ++91 ++71 ++70 ++69 ++47 ++47 ++47 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++13 ++13 ++13 ++167 ++167 ++167 ++203 ++203 ++203 ++219 ++219 ++219 ++225 ++225 ++225 ++238 ++238 ++238 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++212 ++212 ++212 ++212 ++212 ++212 ++203 ++203 ++203 ++230 ++230 ++230 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++35 ++35 ++35 ++19 ++19 ++19 ++0 ++0 ++0 ++0 ++0 ++0 ++122 ++121 ++121 ++233 ++233 ++233 ++238 ++238 ++238 ++248 ++248 ++248 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++84 ++84 ++83 ++41 ++41 ++41 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++242 ++242 ++242 ++242 ++242 ++242 ++248 ++248 ++248 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++233 ++233 ++233 ++66 ++66 ++66 ++41 ++41 ++41 ++8 ++8 ++8 ++0 ++0 ++0 ++112 ++112 ++111 ++230 ++230 ++230 ++233 ++233 ++233 ++242 ++242 ++242 ++251 ++251 ++251 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++91 ++91 ++91 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++230 ++230 ++230 ++238 ++238 ++238 ++245 ++245 ++245 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++254 ++254 ++254 ++253 ++253 ++253 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++251 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++35 ++35 ++35 ++28 ++28 ++28 ++19 ++19 ++19 ++210 ++105 ++0 ++229 ++114 ++0 ++239 ++139 ++39 ++240 ++151 ++63 ++242 ++167 ++91 ++211 ++151 ++92 ++112 ++112 ++111 ++91 ++91 ++91 ++66 ++66 ++66 ++41 ++41 ++41 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++146 ++146 ++146 ++212 ++212 ++212 ++225 ++225 ++225 ++233 ++233 ++233 ++245 ++245 ++245 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++112 ++112 ++111 ++112 ++112 ++111 ++112 ++112 ++111 ++112 ++112 ++111 ++112 ++112 ++111 ++112 ++112 ++111 ++106 ++106 ++106 ++106 ++106 ++106 ++98 ++98 ++97 ++84 ++84 ++83 ++66 ++66 ++66 ++47 ++47 ++47 ++146 ++146 ++146 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++219 ++219 ++219 ++41 ++41 ++41 ++28 ++28 ++28 ++0 ++0 ++0 ++0 ++0 ++0 ++190 ++190 ++190 ++238 ++238 ++238 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++55 ++55 ++55 ++47 ++47 ++47 ++28 ++28 ++28 ++4 ++4 ++4 ++0 ++0 ++0 ++230 ++230 ++230 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++61 ++61 ++61 ++41 ++41 ++41 ++4 ++4 ++4 ++0 ++0 ++0 ++167 ++167 ++167 ++238 ++238 ++238 ++242 ++242 ++242 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++55 ++55 ++55 ++28 ++28 ++28 ++4 ++4 ++4 ++0 ++0 ++0 ++190 ++190 ++190 ++242 ++242 ++242 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++230 ++230 ++230 ++47 ++47 ++47 ++41 ++41 ++41 ++64 ++44 ++24 ++223 ++112 ++0 ++238 ++129 ++21 ++240 ++151 ++63 ++242 ++167 ++91 ++183 ++141 ++99 ++106 ++106 ++106 ++84 ++84 ++83 ++61 ++61 ++61 ++35 ++35 ++35 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++146 ++146 ++146 ++225 ++225 ++225 ++233 ++233 ++233 ++245 ++245 ++245 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++233 ++233 ++233 ++122 ++121 ++121 ++112 ++112 ++111 ++106 ++106 ++106 ++103 ++103 ++102 ++98 ++98 ++97 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++84 ++84 ++83 ++76 ++76 ++76 ++66 ++66 ++66 ++52 ++52 ++52 ++35 ++35 ++35 ++203 ++203 ++203 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++190 ++190 ++190 ++47 ++47 ++47 ++35 ++35 ++35 ++8 ++8 ++8 ++0 ++0 ++0 ++230 ++230 ++230 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++219 ++219 ++219 ++61 ++61 ++61 ++47 ++47 ++47 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++190 ++190 ++190 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++242 ++242 ++242 ++91 ++91 ++91 ++61 ++61 ++61 ++35 ++35 ++35 ++4 ++4 ++4 ++0 ++0 ++0 ++212 ++212 ++212 ++245 ++245 ++245 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++242 ++242 ++242 ++55 ++55 ++55 ++35 ++35 ++35 ++13 ++13 ++13 ++0 ++0 ++0 ++248 ++248 ++248 ++254 ++254 ++254 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++61 ++61 ++61 ++41 ++41 ++41 ++92 ++57 ++22 ++237 ++123 ++9 ++240 ++151 ++63 ++242 ++167 ++91 ++138 ++122 ++105 ++98 ++98 ++97 ++76 ++76 ++76 ++55 ++55 ++55 ++19 ++19 ++19 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++91 ++91 ++91 ++233 ++233 ++233 ++245 ++245 ++245 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++103 ++103 ++102 ++98 ++98 ++97 ++84 ++84 ++83 ++76 ++76 ++76 ++71 ++70 ++69 ++71 ++70 ++69 ++66 ++66 ++66 ++66 ++66 ++66 ++61 ++61 ++61 ++55 ++55 ++55 ++47 ++47 ++47 ++35 ++35 ++35 ++28 ++28 ++28 ++212 ++212 ++212 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++61 ++61 ++61 ++41 ++41 ++41 ++19 ++19 ++19 ++28 ++28 ++28 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++212 ++212 ++212 ++66 ++66 ++66 ++52 ++52 ++52 ++35 ++35 ++35 ++19 ++19 ++19 ++8 ++8 ++8 ++167 ++167 ++167 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++76 ++76 ++76 ++61 ++61 ++61 ++35 ++35 ++35 ++8 ++8 ++8 ++0 ++0 ++0 ++253 ++253 ++253 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++212 ++212 ++212 ++61 ++61 ++61 ++47 ++47 ++47 ++28 ++28 ++28 ++76 ++76 ++76 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++61 ++61 ++61 ++47 ++47 ++47 ++140 ++82 ++22 ++239 ++139 ++39 ++211 ++151 ++92 ++103 ++103 ++102 ++91 ++91 ++91 ++71 ++70 ++69 ++47 ++47 ++47 ++13 ++13 ++13 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++91 ++91 ++91 ++248 ++248 ++248 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++190 ++190 ++190 ++98 ++98 ++97 ++91 ++91 ++91 ++76 ++76 ++76 ++61 ++61 ++61 ++52 ++52 ++52 ++47 ++47 ++47 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++35 ++35 ++35 ++35 ++35 ++35 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++66 ++66 ++66 ++47 ++47 ++47 ++35 ++35 ++35 ++84 ++84 ++83 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++71 ++70 ++69 ++52 ++52 ++52 ++35 ++35 ++35 ++19 ++19 ++19 ++19 ++19 ++19 ++146 ++146 ++146 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++112 ++112 ++111 ++76 ++76 ++76 ++55 ++55 ++55 ++35 ++35 ++35 ++19 ++19 ++19 ++71 ++70 ++69 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++190 ++190 ++190 ++71 ++70 ++69 ++55 ++55 ++55 ++41 ++41 ++41 ++122 ++121 ++121 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++66 ++66 ++66 ++55 ++55 ++55 ++186 ++120 ++54 ++151 ++115 ++79 ++76 ++76 ++76 ++76 ++76 ++76 ++61 ++61 ++61 ++35 ++35 ++35 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++167 ++167 ++167 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++212 ++212 ++212 ++103 ++103 ++102 ++91 ++91 ++91 ++71 ++70 ++69 ++55 ++55 ++55 ++41 ++41 ++41 ++13 ++13 ++13 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++13 ++13 ++13 ++13 ++13 ++13 ++19 ++19 ++19 ++41 ++41 ++41 ++203 ++203 ++203 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++112 ++112 ++111 ++66 ++66 ++66 ++52 ++52 ++52 ++41 ++41 ++41 ++55 ++55 ++55 ++103 ++103 ++102 ++112 ++112 ++111 ++122 ++121 ++121 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++106 ++106 ++106 ++66 ++66 ++66 ++47 ++47 ++47 ++35 ++35 ++35 ++28 ++28 ++28 ++28 ++28 ++28 ++98 ++98 ++97 ++167 ++167 ++167 ++167 ++167 ++167 ++167 ++167 ++167 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++190 ++167 ++167 ++167 ++84 ++84 ++83 ++66 ++66 ++66 ++47 ++47 ++47 ++35 ++35 ++35 ++28 ++28 ++28 ++84 ++84 ++83 ++203 ++203 ++203 ++203 ++203 ++203 ++212 ++212 ++212 ++212 ++212 ++212 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++219 ++212 ++212 ++212 ++146 ++146 ++146 ++76 ++76 ++76 ++61 ++61 ++61 ++47 ++47 ++47 ++71 ++70 ++69 ++106 ++106 ++106 ++122 ++121 ++121 ++122 ++121 ++121 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++146 ++84 ++84 ++83 ++66 ++66 ++66 ++55 ++55 ++55 ++55 ++55 ++55 ++61 ++61 ++61 ++55 ++55 ++55 ++47 ++47 ++47 ++19 ++19 ++19 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++4 ++4 ++4 ++13 ++13 ++13 ++28 ++28 ++28 ++41 ++41 ++41 ++61 ++61 ++61 ++76 ++76 ++76 ++91 ++91 ++91 ++98 ++98 ++97 ++106 ++106 ++106 ++112 ++112 ++111 ++112 ++112 ++111 ++112 ++112 ++111 ++112 ++112 ++111 ++106 ++106 ++106 ++98 ++98 ++97 ++84 ++84 ++83 ++71 ++70 ++69 ++52 ++52 ++52 ++35 ++35 ++35 ++19 ++19 ++19 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++4 ++4 ++4 ++8 ++8 ++8 ++19 ++19 ++19 ++28 ++28 ++28 ++47 ++47 ++47 ++66 ++66 ++66 ++84 ++84 ++83 ++98 ++98 ++97 ++103 ++103 ++102 ++106 ++106 ++106 ++112 ++112 ++111 ++112 ++112 ++111 ++112 ++112 ++111 ++112 ++112 ++111 ++106 ++106 ++106 ++103 ++103 ++102 ++91 ++91 ++91 ++76 ++76 ++76 ++61 ++61 ++61 ++47 ++47 ++47 ++41 ++41 ++41 ++41 ++41 ++41 ++52 ++52 ++52 ++66 ++66 ++66 ++84 ++84 ++83 ++91 ++91 ++91 ++98 ++98 ++97 ++98 ++98 ++97 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++91 ++91 ++91 ++84 ++84 ++83 ++71 ++70 ++69 ++55 ++55 ++55 ++41 ++41 ++41 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++41 ++41 ++41 ++61 ++61 ++61 ++76 ++76 ++76 ++91 ++91 ++91 ++98 ++98 ++97 ++103 ++103 ++102 ++106 ++106 ++106 ++103 ++103 ++102 ++91 ++91 ++91 ++84 ++84 ++83 ++76 ++76 ++76 ++55 ++55 ++55 ++41 ++41 ++41 ++28 ++28 ++28 ++28 ++28 ++28 ++35 ++35 ++35 ++52 ++52 ++52 ++71 ++70 ++69 ++84 ++84 ++83 ++98 ++98 ++97 ++106 ++106 ++106 ++112 ++112 ++111 ++112 ++112 ++111 ++112 ++112 ++111 ++112 ++112 ++111 ++103 ++103 ++102 ++91 ++91 ++91 ++84 ++84 ++83 ++66 ++66 ++66 ++52 ++52 ++52 ++47 ++47 ++47 ++47 ++47 ++47 ++55 ++55 ++55 ++71 ++70 ++69 ++84 ++84 ++83 ++91 ++91 ++91 ++98 ++98 ++97 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++98 ++98 ++97 ++91 ++91 ++91 ++84 ++84 ++83 ++66 ++66 ++66 ++55 ++55 ++55 ++47 ++47 ++47 ++41 ++41 ++41 ++35 ++35 ++35 ++28 ++28 ++28 ++8 ++8 ++8 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++4 ++4 ++4 ++8 ++8 ++8 ++19 ++19 ++19 ++28 ++28 ++28 ++47 ++47 ++47 ++61 ++61 ++61 ++71 ++70 ++69 ++84 ++84 ++83 ++84 ++84 ++83 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++84 ++84 ++83 ++76 ++76 ++76 ++66 ++66 ++66 ++47 ++47 ++47 ++35 ++35 ++35 ++19 ++19 ++19 ++8 ++8 ++8 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++8 ++8 ++8 ++19 ++19 ++19 ++28 ++28 ++28 ++47 ++47 ++47 ++61 ++61 ++61 ++76 ++76 ++76 ++84 ++84 ++83 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++84 ++84 ++83 ++71 ++70 ++69 ++61 ++61 ++61 ++47 ++47 ++47 ++35 ++35 ++35 ++35 ++35 ++35 ++35 ++35 ++35 ++47 ++47 ++47 ++55 ++55 ++55 ++66 ++66 ++66 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++84 ++84 ++83 ++76 ++76 ++76 ++76 ++76 ++76 ++71 ++70 ++69 ++66 ++66 ++66 ++52 ++52 ++52 ++41 ++41 ++41 ++28 ++28 ++28 ++19 ++19 ++19 ++19 ++19 ++19 ++28 ++28 ++28 ++41 ++41 ++41 ++52 ++52 ++52 ++66 ++66 ++66 ++76 ++76 ++76 ++84 ++84 ++83 ++84 ++84 ++83 ++84 ++84 ++83 ++84 ++84 ++83 ++76 ++76 ++76 ++66 ++66 ++66 ++52 ++52 ++52 ++41 ++41 ++41 ++28 ++28 ++28 ++19 ++19 ++19 ++28 ++28 ++28 ++35 ++35 ++35 ++47 ++47 ++47 ++61 ++61 ++61 ++76 ++76 ++76 ++84 ++84 ++83 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++91 ++84 ++84 ++83 ++76 ++76 ++76 ++61 ++61 ++61 ++47 ++47 ++47 ++41 ++41 ++41 ++35 ++35 ++35 ++41 ++41 ++41 ++47 ++47 ++47 ++61 ++61 ++61 ++66 ++66 ++66 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++84 ++84 ++83 ++76 ++76 ++76 ++76 ++76 ++76 ++84 ++84 ++83 ++76 ++76 ++76 ++76 ++76 ++76 ++84 ++84 ++83 ++76 ++76 ++76 ++76 ++76 ++76 ++84 ++84 ++83 ++76 ++76 ++76 ++76 ++76 ++76 ++84 ++84 ++83 ++76 ++76 ++76 ++76 ++76 ++76 ++84 ++84 ++83 ++76 ++76 ++76 ++76 ++76 ++76 ++84 ++84 ++83 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++76 ++71 ++70 ++69 ++61 ++61 ++61 ++47 ++47 ++47 ++35 ++35 ++35 ++19 ++19 ++19 ++13 ++13 ++13 ++4 ++4 ++4 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++4 ++4 ++4 ++8 ++8 ++8 ++19 ++19 ++19 ++28 ++28 ++28 ++35 ++35 ++35 ++47 ++47 ++47 ++55 ++55 ++55 ++61 ++61 ++61 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++61 ++61 ++61 ++52 ++52 ++52 ++41 ++41 ++41 ++28 ++28 ++28 ++19 ++19 ++19 ++8 ++8 ++8 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++4 ++4 ++4 ++8 ++8 ++8 ++13 ++13 ++13 ++28 ++28 ++28 ++35 ++35 ++35 ++47 ++47 ++47 ++55 ++55 ++55 ++61 ++61 ++61 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++61 ++61 ++61 ++61 ++61 ++61 ++47 ++47 ++47 ++41 ++41 ++41 ++28 ++28 ++28 ++28 ++28 ++28 ++19 ++19 ++19 ++28 ++28 ++28 ++28 ++28 ++28 ++41 ++41 ++41 ++47 ++47 ++47 ++47 ++47 ++47 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++47 ++47 ++47 ++41 ++41 ++41 ++35 ++35 ++35 ++19 ++19 ++19 ++19 ++19 ++19 ++13 ++13 ++13 ++13 ++13 ++13 ++19 ++19 ++19 ++28 ++28 ++28 ++35 ++35 ++35 ++47 ++47 ++47 ++52 ++52 ++52 ++55 ++55 ++55 ++61 ++61 ++61 ++61 ++61 ++61 ++55 ++55 ++55 ++52 ++52 ++52 ++41 ++41 ++41 ++35 ++35 ++35 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++28 ++28 ++28 ++35 ++35 ++35 ++47 ++47 ++47 ++55 ++55 ++55 ++61 ++61 ++61 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++66 ++61 ++61 ++61 ++52 ++52 ++52 ++41 ++41 ++41 ++35 ++35 ++35 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++35 ++35 ++35 ++41 ++41 ++41 ++47 ++47 ++47 ++47 ++47 ++47 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++52 ++47 ++47 ++47 ++41 ++41 ++41 ++28 ++28 ++28 ++19 ++19 ++19 ++13 ++13 ++13 ++8 ++8 ++8 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++4 ++4 ++4 ++8 ++8 ++8 ++13 ++13 ++13 ++19 ++19 ++19 ++28 ++28 ++28 ++28 ++28 ++28 ++35 ++35 ++35 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++35 ++35 ++35 ++35 ++35 ++35 ++28 ++28 ++28 ++19 ++19 ++19 ++13 ++13 ++13 ++4 ++4 ++4 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++4 ++4 ++4 ++8 ++8 ++8 ++13 ++13 ++13 ++19 ++19 ++19 ++28 ++28 ++28 ++35 ++35 ++35 ++35 ++35 ++35 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++35 ++35 ++35 ++35 ++35 ++35 ++28 ++28 ++28 ++19 ++19 ++19 ++13 ++13 ++13 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++13 ++13 ++13 ++13 ++13 ++13 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++13 ++13 ++13 ++13 ++13 ++13 ++13 ++13 ++13 ++8 ++8 ++8 ++8 ++8 ++8 ++4 ++4 ++4 ++4 ++4 ++4 ++4 ++4 ++4 ++8 ++8 ++8 ++8 ++8 ++8 ++19 ++19 ++19 ++19 ++19 ++19 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++28 ++19 ++19 ++19 ++19 ++19 ++19 ++13 ++13 ++13 ++8 ++8 ++8 ++4 ++4 ++4 ++8 ++8 ++8 ++13 ++13 ++13 ++19 ++19 ++19 ++19 ++19 ++19 ++28 ++28 ++28 ++35 ++35 ++35 ++35 ++35 ++35 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++41 ++35 ++35 ++35 ++35 ++35 ++35 ++28 ++28 ++28 ++28 ++28 ++28 ++19 ++19 ++19 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++8 ++13 ++13 ++13 ++13 ++13 ++13 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++19 ++13 ++13 ++13 ++13 ++13 ++13 ++13 ++13 ++13 ++8 ++8 ++8 ++8 ++8 ++8 ++4 ++4 ++4 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++35 ++35 ++35 ++190 ++190 ++190 ++255 ++255 ++255 ++255 ++255 ++255 ++190 ++190 ++190 ++35 ++35 ++35 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++255 ++255 ++255 ++103 ++103 ++102 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++2 ++1 ++0 ++0 ++0 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++219 ++219 ++219 ++203 ++203 ++203 ++84 ++84 ++83 ++103 ++103 ++102 ++219 ++219 ++219 ++219 ++219 ++219 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++1 ++0 ++0 ++1 ++0 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++0 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++0 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++84 ++84 ++83 ++255 ++255 ++255 ++35 ++35 ++35 ++1 ++0 ++0 ++2 ++1 ++0 ++52 ++52 ++52 ++255 ++255 ++255 ++84 ++84 ++83 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++2 ++1 ++0 ++19 ++19 ++19 ++71 ++70 ++69 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++19 ++19 ++19 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++103 ++103 ++102 ++35 ++35 ++35 ++238 ++238 ++238 ++167 ++167 ++167 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++71 ++70 ++69 ++255 ++255 ++255 ++71 ++70 ++69 ++35 ++35 ++35 ++203 ++203 ++203 ++255 ++255 ++255 ++203 ++203 ++203 ++35 ++35 ++35 ++71 ++70 ++69 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++35 ++35 ++35 ++2 ++1 ++0 ++19 ++19 ++19 ++167 ++167 ++167 ++255 ++255 ++255 ++255 ++255 ++255 ++219 ++219 ++219 ++122 ++121 ++121 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++122 ++121 ++121 ++238 ++238 ++238 ++255 ++255 ++255 ++219 ++219 ++219 ++84 ++84 ++83 ++2 ++1 ++0 ++146 ++146 ++146 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++19 ++19 ++19 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++255 ++255 ++255 ++122 ++121 ++121 ++1 ++0 ++0 ++238 ++238 ++238 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++1 ++0 ++0 ++1 ++0 ++0 ++122 ++121 ++121 ++203 ++203 ++203 ++255 ++255 ++255 ++255 ++255 ++255 ++219 ++219 ++219 ++122 ++121 ++121 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++103 ++103 ++102 ++219 ++219 ++219 ++203 ++203 ++203 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++103 ++103 ++102 ++255 ++255 ++255 ++1 ++0 ++0 ++2 ++1 ++0 ++255 ++255 ++255 ++146 ++146 ++146 ++190 ++190 ++190 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++71 ++70 ++69 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++219 ++219 ++219 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++35 ++35 ++35 ++255 ++255 ++255 ++103 ++103 ++102 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++35 ++35 ++35 ++255 ++255 ++255 ++190 ++190 ++190 ++71 ++70 ++69 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++19 ++19 ++19 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++190 ++190 ++190 ++219 ++219 ++219 ++2 ++1 ++0 ++203 ++203 ++203 ++203 ++203 ++203 ++84 ++84 ++83 ++203 ++203 ++203 ++219 ++219 ++219 ++19 ++19 ++19 ++103 ++103 ++102 ++146 ++146 ++146 ++255 ++255 ++255 ++103 ++103 ++102 ++103 ++103 ++102 ++2 ++1 ++0 ++35 ++35 ++35 ++238 ++238 ++238 ++203 ++203 ++203 ++103 ++103 ++102 ++84 ++84 ++83 ++146 ++146 ++146 ++238 ++238 ++238 ++167 ++167 ++167 ++2 ++1 ++0 ++1 ++0 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++238 ++238 ++238 ++122 ++121 ++121 ++84 ++84 ++83 ++146 ++146 ++146 ++255 ++255 ++255 ++203 ++203 ++203 ++225 ++225 ++225 ++103 ++103 ++102 ++103 ++103 ++102 ++219 ++219 ++219 ++190 ++190 ++190 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++52 ++52 ++52 ++255 ++255 ++255 ++146 ++146 ++146 ++122 ++121 ++121 ++255 ++255 ++255 ++52 ++52 ++52 ++71 ++70 ++69 ++103 ++103 ++102 ++255 ++255 ++255 ++146 ++146 ++146 ++103 ++103 ++102 ++35 ++35 ++35 ++2 ++1 ++0 ++190 ++190 ++190 ++255 ++255 ++255 ++146 ++146 ++146 ++91 ++91 ++91 ++84 ++84 ++83 ++146 ++146 ++146 ++238 ++238 ++238 ++255 ++255 ++255 ++255 ++255 ++255 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++238 ++238 ++238 ++167 ++167 ++167 ++52 ++52 ++52 ++103 ++103 ++102 ++146 ++146 ++146 ++255 ++255 ++255 ++103 ++103 ++102 ++103 ++103 ++102 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++2 ++1 ++0 ++255 ++255 ++255 ++255 ++255 ++255 ++190 ++190 ++190 ++84 ++84 ++83 ++103 ++103 ++102 ++190 ++190 ++190 ++255 ++255 ++255 ++71 ++70 ++69 ++2 ++1 ++0 ++2 ++1 ++0 ++190 ++190 ++190 ++238 ++238 ++238 ++146 ++146 ++146 ++103 ++103 ++102 ++103 ++103 ++102 ++203 ++203 ++203 ++238 ++238 ++238 ++255 ++255 ++255 ++122 ++121 ++121 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++71 ++70 ++69 ++238 ++238 ++238 ++255 ++255 ++255 ++238 ++238 ++238 ++146 ++146 ++146 ++2 ++1 ++0 ++2 ++1 ++0 ++19 ++19 ++19 ++255 ++255 ++255 ++122 ++121 ++121 ++2 ++1 ++0 ++2 ++1 ++0 ++35 ++35 ++35 ++255 ++255 ++255 ++103 ++103 ++102 ++2 ++1 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++2 ++1 ++0 ++47 ++47 ++47 ++146 ++146 ++146 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++203 ++203 ++203 ++190 ++190 ++190 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++6 ++3 ++0 ++52 ++52 ++52 ++255 ++255 ++255 ++103 ++103 ++102 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++84 ++84 ++83 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++190 ++190 ++190 ++255 ++255 ++255 ++71 ++70 ++69 ++2 ++1 ++0 ++2 ++1 ++0 ++71 ++70 ++69 ++255 ++255 ++255 ++52 ++52 ++52 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++19 ++19 ++19 ++2 ++1 ++0 ++146 ++146 ++146 ++52 ++52 ++52 ++2 ++1 ++0 ++1 ++0 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++52 ++52 ++52 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++52 ++52 ++52 ++238 ++238 ++238 ++255 ++255 ++255 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++103 ++103 ++102 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++2 ++1 ++0 ++255 ++255 ++255 ++203 ++203 ++203 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++203 ++203 ++203 ++203 ++203 ++203 ++2 ++1 ++0 ++146 ++146 ++146 ++238 ++238 ++238 ++52 ++52 ++52 ++0 ++0 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++190 ++190 ++190 ++255 ++255 ++255 ++122 ++121 ++121 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++1 ++0 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++71 ++70 ++69 ++167 ++167 ++167 ++255 ++255 ++255 ++190 ++190 ++190 ++1 ++0 ++0 ++2 ++1 ++0 ++167 ++167 ++167 ++219 ++219 ++219 ++2 ++1 ++0 ++6 ++3 ++0 ++146 ++146 ++146 ++238 ++238 ++238 ++2 ++1 ++0 ++2 ++1 ++0 ++190 ++190 ++190 ++238 ++238 ++238 ++146 ++146 ++146 ++35 ++35 ++35 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++2 ++1 ++0 ++52 ++52 ++52 ++255 ++255 ++255 ++52 ++52 ++52 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++167 ++167 ++167 ++203 ++203 ++203 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++255 ++255 ++255 ++103 ++103 ++102 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++35 ++35 ++35 ++255 ++255 ++255 ++203 ++203 ++203 ++103 ++103 ++102 ++19 ++19 ++19 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++238 ++238 ++238 ++146 ++146 ++146 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++146 ++146 ++146 ++255 ++255 ++255 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++19 ++19 ++19 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++238 ++238 ++238 ++146 ++146 ++146 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++35 ++35 ++35 ++255 ++255 ++255 ++122 ++121 ++121 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++52 ++52 ++52 ++2 ++1 ++0 ++71 ++70 ++69 ++255 ++255 ++255 ++71 ++70 ++69 ++19 ++19 ++19 ++238 ++238 ++238 ++146 ++146 ++146 ++1 ++0 ++0 ++4 ++2 ++0 ++19 ++19 ++19 ++146 ++146 ++146 ++238 ++238 ++238 ++255 ++255 ++255 ++146 ++146 ++146 ++4 ++2 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++255 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++52 ++52 ++52 ++203 ++203 ++203 ++255 ++255 ++255 ++238 ++238 ++238 ++71 ++70 ++69 ++4 ++2 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++2 ++1 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++146 ++146 ++146 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++2 ++1 ++0 ++2 ++1 ++0 ++219 ++219 ++219 ++167 ++167 ++167 ++103 ++103 ++102 ++255 ++255 ++255 ++35 ++35 ++35 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++146 ++146 ++146 ++255 ++255 ++255 ++71 ++70 ++69 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++84 ++84 ++83 ++255 ++255 ++255 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++103 ++103 ++102 ++84 ++84 ++83 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++35 ++35 ++35 ++203 ++203 ++203 ++238 ++238 ++238 ++4 ++2 ++0 ++2 ++1 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++238 ++238 ++238 ++146 ++146 ++146 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++146 ++146 ++146 ++255 ++255 ++255 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++2 ++1 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++238 ++238 ++238 ++146 ++146 ++146 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++35 ++35 ++35 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++146 ++146 ++146 ++238 ++238 ++238 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++71 ++70 ++69 ++255 ++255 ++255 ++71 ++70 ++69 ++4 ++2 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++238 ++238 ++238 ++238 ++238 ++238 ++167 ++167 ++167 ++4 ++2 ++0 ++2 ++1 ++0 ++84 ++84 ++83 ++238 ++238 ++238 ++19 ++19 ++19 ++1 ++0 ++0 ++2 ++1 ++0 ++255 ++255 ++255 ++103 ++103 ++102 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++19 ++19 ++19 ++238 ++238 ++238 ++167 ++167 ++167 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++35 ++35 ++35 ++238 ++238 ++238 ++146 ++146 ++146 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++238 ++238 ++238 ++103 ++103 ++102 ++4 ++2 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++238 ++238 ++238 ++52 ++52 ++52 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++52 ++52 ++52 ++238 ++238 ++238 ++255 ++255 ++255 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++6 ++3 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++2 ++1 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++146 ++146 ++146 ++238 ++238 ++238 ++52 ++52 ++52 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++190 ++190 ++190 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++2 ++1 ++0 ++71 ++70 ++69 ++19 ++19 ++19 ++4 ++2 ++0 ++4 ++2 ++0 ++19 ++19 ++19 ++71 ++70 ++69 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++71 ++70 ++69 ++19 ++19 ++19 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++6 ++3 ++0 ++2 ++1 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++35 ++35 ++35 ++255 ++255 ++255 ++190 ++190 ++190 ++84 ++84 ++83 ++103 ++103 ++102 ++219 ++219 ++219 ++190 ++190 ++190 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++19 ++19 ++19 ++238 ++238 ++238 ++255 ++255 ++255 ++71 ++70 ++69 ++4 ++2 ++0 ++4 ++2 ++0 ++35 ++35 ++35 ++255 ++255 ++255 ++167 ++167 ++167 ++103 ++103 ++102 ++167 ++167 ++167 ++255 ++255 ++255 ++35 ++35 ++35 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++71 ++70 ++69 ++255 ++255 ++255 ++203 ++203 ++203 ++103 ++103 ++102 ++84 ++84 ++83 ++146 ++146 ++146 ++238 ++238 ++238 ++190 ++190 ++190 ++4 ++2 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++190 ++190 ++190 ++219 ++219 ++219 ++103 ++103 ++102 ++103 ++103 ++102 ++219 ++219 ++219 ++190 ++190 ++190 ++4 ++2 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++190 ++190 ++190 ++255 ++255 ++255 ++146 ++146 ++146 ++84 ++84 ++83 ++91 ++91 ++91 ++146 ++146 ++146 ++238 ++238 ++238 ++238 ++238 ++238 ++255 ++255 ++255 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++190 ++190 ++190 ++238 ++238 ++238 ++146 ++146 ++146 ++103 ++103 ++102 ++103 ++103 ++102 ++203 ++203 ++203 ++219 ++219 ++219 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++2 ++1 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++52 ++52 ++52 ++203 ++203 ++203 ++255 ++255 ++255 ++255 ++255 ++255 ++146 ++146 ++146 ++19 ++19 ++19 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++190 ++190 ++190 ++203 ++203 ++203 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++71 ++70 ++69 ++219 ++219 ++219 ++255 ++255 ++255 ++219 ++219 ++219 ++84 ++84 ++83 ++6 ++3 ++0 ++4 ++2 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++35 ++35 ++35 ++167 ++167 ++167 ++255 ++255 ++255 ++255 ++255 ++255 ++219 ++219 ++219 ++122 ++121 ++121 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++255 ++255 ++255 ++103 ++103 ++102 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++19 ++19 ++19 ++167 ++167 ++167 ++255 ++255 ++255 ++255 ++255 ++255 ++190 ++190 ++190 ++35 ++35 ++35 ++4 ++2 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++103 ++103 ++102 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++122 ++121 ++121 ++203 ++203 ++203 ++255 ++255 ++255 ++255 ++255 ++255 ++225 ++225 ++225 ++103 ++103 ++102 ++103 ++103 ++102 ++255 ++255 ++255 ++6 ++3 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++255 ++255 ++255 ++103 ++103 ++102 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++6 ++3 ++0 ++52 ++52 ++52 ++71 ++70 ++69 ++122 ++121 ++121 ++219 ++219 ++219 ++255 ++255 ++255 ++255 ++255 ++255 ++167 ++167 ++167 ++55 ++55 ++55 ++255 ++255 ++255 ++84 ++84 ++83 ++4 ++2 ++0 ++6 ++3 ++0 ++255 ++255 ++255 ++103 ++103 ++102 ++4 ++2 ++0 ++4 ++2 ++0 ++103 ++103 ++102 ++255 ++255 ++255 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++255 ++255 ++255 ++103 ++103 ++102 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++7 ++4 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++19 ++19 ++19 ++255 ++255 ++255 ++103 ++103 ++102 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++2 ++1 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++52 ++52 ++52 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++122 ++121 ++121 ++255 ++255 ++255 ++35 ++35 ++35 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++7 ++4 ++0 ++146 ++146 ++146 ++238 ++238 ++238 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++190 ++190 ++190 ++255 ++255 ++255 ++146 ++146 ++146 ++84 ++84 ++83 ++89 ++84 ++79 ++167 ++167 ++167 ++255 ++255 ++255 ++122 ++121 ++121 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++255 ++255 ++255 ++146 ++146 ++146 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++122 ++121 ++121 ++225 ++225 ++225 ++255 ++255 ++255 ++255 ++255 ++255 ++203 ++203 ++203 ++84 ++84 ++83 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++4 ++2 ++0 ++7 ++4 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++4 ++2 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++10 ++5 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++6 ++3 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++6 ++3 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++6 ++3 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++6 ++3 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++7 ++4 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++7 ++4 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++8 ++4 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++8 ++4 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++8 ++4 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++14 ++7 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++14 ++7 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++10 ++5 ++0 ++11 ++6 ++0 ++8 ++4 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++14 ++7 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++11 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++10 ++5 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++11 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++10 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++16 ++8 ++0 ++12 ++6 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++14 ++7 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++14 ++7 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++19 ++9 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++16 ++8 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++16 ++8 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++16 ++8 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++22 ++11 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++9 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++9 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++19 ++9 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++23 ++12 ++0 ++20 ++10 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++19 ++9 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++19 ++9 ++0 ++19 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++26 ++13 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++19 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++26 ++13 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++26 ++13 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++20 ++10 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++19 ++9 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++20 ++10 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++20 ++10 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++26 ++13 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++26 ++13 ++0 ++22 ++11 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++26 ++13 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++22 ++11 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++22 ++11 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++22 ++11 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++23 ++12 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++30 ++15 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++23 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++30 ++15 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++23 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++23 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++23 ++12 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++24 ++12 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++26 ++13 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++24 ++12 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++26 ++13 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++26 ++13 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++32 ++16 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++32 ++16 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++26 ++13 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++29 ++14 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++30 ++15 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++29 ++14 ++0 ++30 ++15 ++0 ++32 ++16 ++0 ++35 ++18 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++30 ++15 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++35 ++18 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++29 ++14 ++0 ++31 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++34 ++17 ++0 ++30 ++15 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++30 ++15 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++31 ++16 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++31 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++32 ++16 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++32 ++16 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++32 ++16 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++39 ++19 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++39 ++20 ++1 ++35 ++18 ++0 ++35 ++18 ++0 ++40 ++20 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++20 ++1 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++34 ++17 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++39 ++20 ++1 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++39 ++20 ++1 ++39 ++20 ++1 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++35 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++34 ++17 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++34 ++17 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++34 ++17 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++35 ++18 ++0 ++36 ++18 ++0 ++36 ++18 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++39 ++19 ++0 ++43 ++21 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++43 ++22 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++43 ++21 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++43 ++22 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++39 ++19 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++43 ++21 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++36 ++18 ++0 ++39 ++19 ++0 ++40 ++20 ++0 ++39 ++19 ++0 ++39 ++19 ++0 ++44 ++22 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++39 ++19 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++22 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++46 ++23 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++40 ++20 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++44 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++40 ++20 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++40 ++20 ++0 ++43 ++22 ++0 ++43 ++22 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++40 ++20 ++0 ++43 ++22 ++0 ++44 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++22 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++22 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++21 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++43 ++22 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++50 ++25 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++43 ++22 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++48 ++24 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++47 ++24 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++43 ++21 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++47 ++24 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++47 ++24 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++43 ++21 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++47 ++24 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++43 ++21 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++46 ++23 ++0 ++43 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++43 ++22 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++46 ++23 ++0 ++43 ++21 ++0 ++46 ++23 ++0 ++46 ++23 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++43 ++21 ++0 ++44 ++22 ++0 ++48 ++24 ++0 ++47 ++24 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++47 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++46 ++23 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++51 ++26 ++1 ++47 ++24 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++46 ++23 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++46 ++23 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++46 ++23 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++46 ++23 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++46 ++23 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++46 ++23 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++47 ++24 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++47 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++46 ++23 ++0 ++48 ++24 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++46 ++23 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++46 ++23 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++46 ++23 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++51 ++26 ++1 ++47 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++51 ++26 ++1 ++48 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++47 ++24 ++0 ++47 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++47 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++44 ++22 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++50 ++25 ++0 ++47 ++24 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++48 ++24 ++0 ++46 ++23 ++0 ++47 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++48 ++24 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++51 ++26 ++1 ++51 ++26 ++1 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++54 ++28 ++1 ++50 ++25 ++0 ++53 ++26 ++0 ++51 ++26 ++1 ++50 ++25 ++0 ++53 ++26 ++0 ++54 ++28 ++1 ++53 ++26 ++0 ++51 ++26 ++1 ++54 ++28 ++1 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++50 ++25 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++48 ++24 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++58 ++29 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++53 ++26 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++50 ++25 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++50 ++25 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++56 ++28 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++54 ++28 ++1 ++54 ++28 ++1 ++54 ++28 ++1 ++55 ++27 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++56 ++28 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++54 ++28 ++1 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++54 ++28 ++1 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++54 ++28 ++1 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++56 ++28 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++55 ++27 ++0 ++53 ++26 ++0 ++53 ++26 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++59 ++30 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++59 ++30 ++0 ++59 ++30 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++56 ++28 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++59 ++30 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++59 ++30 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++55 ++27 ++0 ++59 ++30 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++59 ++30 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++55 ++27 ++0 ++58 ++29 ++0 ++59 ++30 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++59 ++30 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++58 ++29 ++0 ++56 ++28 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++65 ++32 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++59 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++65 ++32 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++59 ++30 ++0 ++63 ++31 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++63 ++31 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++65 ++32 ++0 ++59 ++30 ++0 ++59 ++30 ++0 ++63 ++31 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++65 ++32 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++63 ++31 ++0 ++59 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++59 ++30 ++0 ++59 ++30 ++0 ++63 ++31 ++0 ++59 ++30 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++59 ++30 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++58 ++29 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++60 ++30 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++63 ++31 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++63 ++31 ++0 ++66 ++33 ++0 ++63 ++31 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++63 ++31 ++0 ++66 ++33 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++63 ++31 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++63 ++31 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++63 ++31 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++63 ++31 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++60 ++30 ++0 ++63 ++31 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++63 ++31 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++65 ++32 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++63 ++31 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++71 ++36 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++71 ++36 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++1 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++68 ++34 ++1 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++71 ++36 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++1 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++66 ++33 ++0 ++68 ++34 ++1 ++66 ++33 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++1 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++65 ++32 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++66 ++33 ++0 ++70 ++35 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++68 ++34 ++0 ++66 ++33 ++0 ++68 ++34 ++0 ++70 ++35 ++0 ++71 ++36 ++0 ++68 ++34 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++75 ++37 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++68 ++34 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++68 ++34 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++75 ++37 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++75 ++37 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++75 ++37 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++71 ++36 ++0 ++75 ++37 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++68 ++34 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++75 ++37 ++0 ++70 ++35 ++0 ++75 ++37 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++72 ++36 ++0 ++71 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++71 ++36 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++72 ++36 ++0 ++70 ++35 ++0 ++70 ++35 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++79 ++39 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++79 ++39 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++79 ++39 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++79 ++39 ++0 ++75 ++37 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++79 ++39 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++79 ++39 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++79 ++39 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++79 ++39 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++79 ++39 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++79 ++39 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++79 ++39 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++81 ++40 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++72 ++36 ++0 ++79 ++39 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++79 ++39 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++72 ++36 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++79 ++39 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++79 ++39 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++76 ++38 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++75 ++37 ++0 ++72 ++36 ++0 ++75 ++37 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++82 ++41 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++82 ++41 ++0 ++82 ++41 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++82 ++41 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++82 ++41 ++0 ++82 ++41 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++82 ++41 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++82 ++41 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++83 ++42 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++82 ++41 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++82 ++41 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++82 ++41 ++0 ++79 ++39 ++0 ++82 ++41 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++82 ++41 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++82 ++41 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++82 ++41 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++76 ++38 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++82 ++41 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++82 ++41 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++82 ++41 ++0 ++79 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++40 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++76 ++38 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++82 ++41 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++76 ++38 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++76 ++38 ++0 ++82 ++41 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++81 ++40 ++0 ++79 ++39 ++0 ++79 ++39 ++0 ++76 ++38 ++0 ++79 ++39 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++83 ++42 ++0 ++83 ++42 ++0 ++83 ++42 ++0 ++87 ++43 ++0 ++82 ++41 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++82 ++41 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++83 ++42 ++0 ++83 ++42 ++0 ++87 ++43 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++82 ++41 ++0 ++87 ++43 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++87 ++43 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++83 ++42 ++0 ++83 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++83 ++42 ++0 ++87 ++43 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++83 ++42 ++0 ++82 ++41 ++0 ++87 ++43 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++82 ++41 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++83 ++42 ++0 ++82 ++41 ++0 ++83 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++82 ++41 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++87 ++43 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++83 ++42 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++81 ++40 ++0 ++83 ++42 ++0 ++82 ++41 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++82 ++41 ++0 ++83 ++42 ++0 ++83 ++42 ++0 ++83 ++42 ++0 ++83 ++42 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++82 ++41 ++0 ++84 ++42 ++0 ++81 ++40 ++0 ++82 ++41 ++0 ++82 ++41 ++0 ++82 ++41 ++0 ++82 ++41 ++0 ++81 ++40 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++84 ++42 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++93 ++46 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++91 ++45 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++91 ++45 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++91 ++46 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++84 ++42 ++0 ++88 ++44 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++91 ++45 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++88 ++44 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++87 ++43 ++0 ++84 ++42 ++0 ++93 ++46 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++91 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++95 ++48 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++88 ++44 ++0 ++91 ++45 ++0 ++91 ++45 ++0 ++93 ++46 ++0 ++88 ++44 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++99 ++50 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++101 ++50 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++99 ++50 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++99 ++50 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++99 ++50 ++0 ++99 ++50 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++99 ++50 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++99 ++50 ++0 ++99 ++50 ++0 ++95 ++48 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++99 ++50 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++101 ++50 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++99 ++50 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++99 ++50 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++99 ++50 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++99 ++50 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++99 ++50 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++99 ++50 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++99 ++50 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++99 ++50 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++95 ++48 ++0 ++98 ++49 ++0 ++95 ++48 ++0 ++95 ++48 ++0 ++95 ++48 ++0 ++93 ++46 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++95 ++48 ++0 ++93 ++46 ++0 ++96 ++48 ++0 ++95 ++48 ++0 ++95 ++48 ++0 ++95 ++48 ++0 ++95 ++48 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++99 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++105 ++52 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++105 ++52 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++105 ++52 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++105 ++52 ++0 ++102 ++51 ++0 ++105 ++52 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++105 ++52 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++105 ++52 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++105 ++52 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++105 ++52 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++105 ++52 ++0 ++102 ++51 ++0 ++99 ++50 ++0 ++102 ++51 ++0 ++99 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++105 ++52 ++0 ++101 ++50 ++0 ++105 ++52 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++99 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++99 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++99 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++99 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++99 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++99 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++99 ++50 ++0 ++102 ++51 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++99 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++101 ++50 ++0 ++99 ++50 ++0 ++99 ++50 ++0 ++98 ++49 ++0 ++101 ++50 ++0 ++99 ++50 ++0 ++99 ++50 ++0 ++101 ++50 ++0 ++98 ++49 ++0 ++101 ++50 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++110 ++55 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++107 ++54 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++107 ++54 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++107 ++54 ++0 ++102 ++51 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++106 ++53 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++107 ++54 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++102 ++51 ++0 ++105 ++52 ++0 ++105 ++52 ++0 ++102 ++51 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++114 ++57 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++111 ++56 ++0 ++114 ++57 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++114 ++57 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++114 ++57 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++114 ++57 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++107 ++54 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++107 ++54 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++107 ++54 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++111 ++56 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++110 ++55 ++0 ++114 ++57 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++107 ++54 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++107 ++54 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++110 ++55 ++0 ++111 ++56 ++0 ++107 ++54 ++0 ++107 ++54 ++0 ++106 ++53 ++0 ++110 ++55 ++0 ++110 ++55 ++0 ++107 ++54 ++0 ++107 ++54 ++0 ++107 ++54 ++0 ++110 ++55 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++106 ++53 ++0 ++107 ++54 ++0 ++107 ++54 ++0 ++107 ++54 ++0 ++111 ++56 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++111 ++56 ++0 ++114 ++57 ++0 ++111 ++56 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++111 ++56 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++111 ++56 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++111 ++56 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++111 ++56 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++117 ++59 ++0 ++114 ++57 ++0 ++111 ++56 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++111 ++56 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++114 ++57 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++111 ++56 ++0 ++114 ++57 ++0 ++111 ++56 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++122 ++62 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++124 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++119 ++60 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++117 ++59 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++122 ++62 ++0 ++122 ++62 ++0 ++122 ++62 ++0 ++122 ++62 ++0 ++122 ++62 ++0 ++122 ++62 ++0 ++124 ++62 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++122 ++62 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++119 ++60 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++129 ++64 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++126 ++63 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++132 ++66 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++126 ++63 ++0 ++130 ++65 ++0 ++132 ++66 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++132 ++66 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++132 ++66 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++132 ++66 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++132 ++66 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++126 ++63 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++126 ++63 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++126 ++63 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++126 ++63 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++126 ++63 ++0 ++129 ++64 ++0 ++132 ++66 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++126 ++63 ++0 ++129 ++64 ++0 ++126 ++63 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++126 ++63 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++126 ++63 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++126 ++63 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++126 ++63 ++0 ++129 ++64 ++0 ++129 ++64 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++124 ++62 ++0 ++126 ++63 ++0 ++126 ++63 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++135 ++68 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++135 ++68 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++135 ++68 ++0 ++137 ++68 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++135 ++68 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++137 ++68 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++135 ++68 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++130 ++65 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++133 ++67 ++0 ++132 ++66 ++0 ++130 ++65 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++130 ++65 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++132 ++66 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++129 ++64 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++130 ++65 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++142 ++71 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++142 ++71 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++142 ++71 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++142 ++71 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++139 ++69 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++135 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++135 ++68 ++0 ++135 ++68 ++0 ++137 ++68 ++0 ++137 ++68 ++0 ++135 ++68 ++0 ++135 ++68 ++0 ++135 ++68 ++0 ++137 ++68 ++0 ++133 ++67 ++0 ++133 ++67 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++146 ++73 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++146 ++73 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++146 ++73 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++146 ++73 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++146 ++73 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++139 ++69 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++139 ++69 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++139 ++69 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++142 ++71 ++0 ++139 ++69 ++0 ++142 ++71 ++0 ++139 ++69 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++139 ++69 ++0 ++142 ++71 ++0 ++139 ++69 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++142 ++71 ++0 ++139 ++69 ++0 ++142 ++71 ++0 ++143 ++72 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++151 ++75 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++151 ++75 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++151 ++75 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++143 ++72 ++0 ++146 ++73 ++0 ++143 ++72 ++0 ++146 ++73 ++0 ++143 ++72 ++0 ++146 ++73 ++0 ++143 ++72 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++143 ++72 ++0 ++146 ++73 ++0 ++146 ++73 ++0 ++143 ++72 ++0 ++146 ++73 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++143 ++72 ++0 ++146 ++73 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++154 ++77 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++154 ++77 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++155 ++78 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++152 ++76 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++151 ++75 ++0 ++148 ++74 ++0 ++151 ++75 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++151 ++75 ++0 ++148 ++74 ++0 ++151 ++75 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++148 ++74 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++154 ++77 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++155 ++78 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++155 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++155 ++78 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++160 ++80 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++154 ++77 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++158 ++79 ++0 ++155 ++78 ++0 ++158 ++79 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++154 ++77 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++156 ++78 ++0 ++154 ++77 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++158 ++79 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++154 ++77 ++0 ++154 ++77 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++155 ++78 ++0 ++154 ++77 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++155 ++78 ++0 ++152 ++76 ++0 ++154 ++77 ++0 ++154 ++77 ++0 ++151 ++75 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++158 ++79 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++165 ++82 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++165 ++82 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++158 ++79 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++162 ++81 ++0 ++160 ++80 ++0 ++158 ++79 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++160 ++80 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++158 ++79 ++0 ++158 ++79 ++0 ++156 ++78 ++0 ++158 ++79 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++169 ++85 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++162 ++81 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++162 ++81 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++166 ++83 ++0 ++165 ++82 ++0 ++162 ++81 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++162 ++81 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++165 ++82 ++0 ++162 ++81 ++0 ++165 ++82 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++165 ++82 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++162 ++81 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++171 ++86 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++169 ++85 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++169 ++85 ++0 ++171 ++86 ++0 ++169 ++85 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++170 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++169 ++85 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++166 ++83 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++173 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++177 ++88 ++0 ++173 ++87 ++0 ++175 ++88 ++0 ++173 ++87 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++177 ++88 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++177 ++88 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++177 ++88 ++0 ++174 ++87 ++0 ++177 ++88 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++177 ++88 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++177 ++88 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++177 ++88 ++0 ++173 ++87 ++0 ++177 ++88 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++173 ++87 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++177 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++171 ++86 ++0 ++174 ++87 ++0 ++173 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++173 ++87 ++0 ++175 ++88 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++171 ++86 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++175 ++88 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++171 ++86 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++171 ++86 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++171 ++86 ++0 ++174 ++87 ++0 ++171 ++86 ++0 ++173 ++87 ++0 ++174 ++87 ++0 ++174 ++87 ++0 ++171 ++86 ++0 ++173 ++87 ++0 ++173 ++87 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++170 ++85 ++0 ++171 ++86 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++177 ++88 ++0 ++179 ++89 ++0 ++177 ++88 ++0 ++175 ++88 ++0 ++177 ++88 ++0 ++175 ++88 ++0 ++177 ++88 ++0 ++174 ++87 ++0 ++175 ++88 ++0 ++175 ++88 ++0 ++174 ++87 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++182 ++91 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++180 ++90 ++0 ++179 ++89 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++183 ++92 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++183 ++92 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++183 ++92 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++183 ++92 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++183 ++92 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++183 ++92 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++183 ++92 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++183 ++92 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++186 ++93 ++0 ++185 ++93 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++185 ++93 ++0 ++185 ++93 ++0 ++183 ++92 ++0 ++186 ++93 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++185 ++93 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++183 ++92 ++0 ++182 ++91 ++0 ++182 ++91 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++193 ++96 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++193 ++96 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++193 ++96 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++190 ++95 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++186 ++93 ++0 ++190 ++95 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++195 ++98 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++190 ++95 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++190 ++95 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++190 ++95 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++190 ++95 ++0 ++193 ++96 ++0 ++193 ++96 ++0 ++190 ++95 ++0 ++193 ++96 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++193 ++96 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++190 ++95 ++0 ++194 ++97 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++194 ++97 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++199 ++99 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++199 ++99 ++0 ++196 ++98 ++0 ++199 ++99 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++199 ++99 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++199 ++99 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++199 ++99 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++199 ++99 ++0 ++196 ++98 ++0 ++199 ++99 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++199 ++99 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++199 ++99 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++199 ++99 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++194 ++97 ++0 ++195 ++98 ++0 ++196 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++195 ++98 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++195 ++98 ++0 ++194 ++97 ++0 ++195 ++98 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++194 ++97 ++0 ++193 ++96 ++0 ++194 ++97 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++203 ++101 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++203 ++101 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++199 ++99 ++0 ++196 ++98 ++0 ++199 ++99 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++200 ++100 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++200 ++100 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++200 ++100 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++200 ++100 ++0 ++203 ++101 ++0 ++200 ++100 ++0 ++203 ++101 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++203 ++101 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++199 ++99 ++0 ++200 ++100 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++207 ++104 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++207 ++104 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++207 ++104 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++207 ++104 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++203 ++101 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++207 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++207 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++210 ++105 ++0 ++207 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++208 ++104 ++0 ++206 ++103 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++206 ++103 ++0 ++207 ++104 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++206 ++103 ++0 ++207 ++104 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++205 ++103 ++0 ++205 ++103 ++0 ++206 ++103 ++0 ++206 ++103 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++210 ++105 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++210 ++105 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++213 ++106 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++213 ++106 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++211 ++106 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++208 ++104 ++0 ++207 ++104 ++0 ++208 ++104 ++0 ++210 ++105 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++211 ++106 ++0 ++213 ++106 ++0 ++210 ++105 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++214 ++107 ++0 ++213 ++106 ++0 ++213 ++106 ++0 ++214 ++107 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++218 ++109 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++217 ++108 ++0 ++214 ++107 ++0 ++218 ++109 ++0 ++219 ++110 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++218 ++109 ++0 ++219 ++110 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++218 ++109 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++218 ++109 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++218 ++109 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++218 ++109 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++219 ++110 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++219 ++110 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++218 ++109 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++223 ++112 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++222 ++111 ++0 ++219 ++110 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++219 ++110 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++219 ++110 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++221 ++111 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++218 ++109 ++0 ++219 ++110 ++0 ++219 ++110 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++221 ++111 ++0 ++223 ++112 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++222 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++221 ++111 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++222 ++111 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++223 ++112 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++226 ++113 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++229 ++114 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++230 ++115 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++231 ++116 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++233 ++117 ++0 ++233 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++234 ++117 ++0 ++235 ++118 ++0 ++235 ++118 ++0 ++234 ++117 ++0 +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/video/logo/Makefile linux-2.6.25-m8050/drivers/video/logo/Makefile +--- linux-git/drivers/video/logo/Makefile 2008-11-10 12:20:29.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/video/logo/Makefile 2008-08-13 12:20:14.000000000 +0200 +@@ -13,6 +13,7 @@ + obj-$(CONFIG_LOGO_SUPERH_VGA16) += logo_superh_vga16.o + obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o + obj-$(CONFIG_LOGO_M32R_CLUT224) += logo_m32r_clut224.o ++obj-$(CONFIG_LOGO_M8050_CLUT224) += logo_m8050_clut224.o + + obj-$(CONFIG_SPU_BASE) += logo_spe_clut224.o + +diff -X linux-git/Documentation/dontdiff -Naur linux-git/drivers/video/s3c2410fb.c linux-2.6.25-m8050/drivers/video/s3c2410fb.c +--- linux-git/drivers/video/s3c2410fb.c 2008-11-10 12:20:29.000000000 +0100 ++++ linux-2.6.25-m8050/drivers/video/s3c2410fb.c 2008-10-03 16:17:18.000000000 +0200 +@@ -91,8 +91,11 @@ + #include + #include + #include ++#include + #include + ++#include ++ + #ifdef CONFIG_PM + #include + #endif +@@ -456,6 +459,9 @@ + dprintk("lcdcon[4] = 0x%08lx\n", fbi->regs.lcdcon4); + dprintk("lcdcon[5] = 0x%08lx\n", fbi->regs.lcdcon5); + ++ /* turn off backlight */ ++// s3c2410_gpio_setpin(S3C2410_GPB3, 0); ++ + writel(fbi->regs.lcdcon1 & ~S3C2410_LCDCON1_ENVID, + regs + S3C2410_LCDCON1); + writel(fbi->regs.lcdcon2, regs + S3C2410_LCDCON2); +@@ -468,6 +474,9 @@ + + fbi->regs.lcdcon1 |= S3C2410_LCDCON1_ENVID, + writel(fbi->regs.lcdcon1, regs + S3C2410_LCDCON1); ++ /* turn on backlight */ ++// s3c2410_gpio_setpin(S3C2410_GPB3, 1); ++ + } + + /* +@@ -1051,6 +1060,10 @@ + + msleep(1); + clk_disable(info->clk); ++ s3c2410_gpio_setpin(S3C2410_GPC0,0); ++// s3c2410_gpio_setpin(S3C2410_GPC7,1); ++ s3c2410_gpio_setpin(S3C2440_GPJ3,1); ++ s3c2410_gpio_setpin(S3C2440_GPJ0,1); + + return 0; + } +@@ -1065,6 +1078,25 @@ + + s3c2410fb_init_registers(fbinfo); + ++ /*restart the backlight*/ ++ s3c2410_gpio_cfgpin(S3C2410_GPC0, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2410_GPC0, 1); ++ s3c2410_gpio_cfgpin(S3C2410_GPB3, S3C2410_GPIO_OUTPUT); ++ s3c2410_gpio_setpin(S3C2410_GPB3, 0); ++ s3c2410_gpio_cfgpin(S3C2410_GPB0, S3C2410_GPB0_TOUT0); ++ ++ __raw_writel(0x00000002,S3C2410_TCMPB(0)); ++ __raw_writel(0x000002ff,S3C2410_TCFG0); ++ __raw_writel(0x00000000,S3C2410_TCFG1); ++ __raw_writel(0x00000003,S3C2410_TCNTB(0)); ++ __raw_writel(0x00080001,S3C2410_TCMPB(0)); ++ __raw_writel(0x0050000a,S3C2410_TCON); ++ __raw_writel(0x00500009,S3C2410_TCON); ++ ++ s3c2410_gpio_setpin(S3C2410_GPB3, 1); ++ ++// s3c2410_gpio_setpin(S3C2410_GPC7, 0); ++ + return 0; + } + +diff -X linux-git/Documentation/dontdiff -Naur linux-git/include/asm-arm/arch-s3c2410/keypad.h linux-2.6.25-m8050/include/asm-arm/arch-s3c2410/keypad.h +--- linux-git/include/asm-arm/arch-s3c2410/keypad.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/include/asm-arm/arch-s3c2410/keypad.h 2008-10-14 12:57:38.000000000 +0200 +@@ -0,0 +1,42 @@ ++/* ++ * linux/include/asm-arm/arch-omap/keypad.h ++ * ++ * Copyright (C) 2006 Komal Shah ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++#ifndef ASMARM_ARCH_KEYPAD_H ++#define ASMARM_ARCH_KEYPAD_H ++ ++struct m8050_kp_platform_data { ++ int rows; ++ int cols; ++ int *keymap; ++ int *keymap_a; ++ int *keymap_b; ++ int *keymap_c; ++ int *keymap_d; ++ unsigned int keymapsize; ++ unsigned int rep:1; ++ unsigned long delay; ++ unsigned int dbounce:1; ++ unsigned int *row_gpios; ++ unsigned int *col_gpios; ++}; ++ ++/* Group (0..3) -- when multiple keys are pressed, only the ++ * keys pressed in the same group are considered as pressed. This is ++ * in order to workaround certain crappy HW designs that produce ghost ++ * keypresses. */ ++#define GROUP_0 (0 << 16) ++#define GROUP_1 (1 << 16) ++#define GROUP_2 (2 << 16) ++#define GROUP_3 (3 << 16) ++#define GROUP_MASK GROUP_3 ++ ++#define KEY(col, row, val) (((col) << 28) | ((row) << 24) | (val)) ++ ++#endif ++ +diff -X linux-git/Documentation/dontdiff -Naur linux-git/include/asm-arm/arch-s3c2410/map.h linux-2.6.25-m8050/include/asm-arm/arch-s3c2410/map.h +--- linux-git/include/asm-arm/arch-s3c2410/map.h 2008-11-10 12:20:29.000000000 +0100 ++++ linux-2.6.25-m8050/include/asm-arm/arch-s3c2410/map.h 2008-08-21 12:06:50.000000000 +0200 +@@ -100,6 +100,7 @@ + #define S3C24XX_SZ_ADC SZ_1M + + /* SPI */ ++#define S3C24XX_VA_SPI S3C_VA_SPI + #define S3C2410_PA_SPI (0x59000000) + #define S3C24XX_SZ_SPI SZ_1M + +diff -X linux-git/Documentation/dontdiff -Naur linux-git/include/asm-arm/arch-s3c2410/regs-sdi.h linux-2.6.25-m8050/include/asm-arm/arch-s3c2410/regs-sdi.h +--- linux-git/include/asm-arm/arch-s3c2410/regs-sdi.h 2008-11-10 12:20:29.000000000 +0100 ++++ linux-2.6.25-m8050/include/asm-arm/arch-s3c2410/regs-sdi.h 2008-07-01 13:32:15.000000000 +0200 +@@ -28,9 +28,15 @@ + #define S3C2410_SDIDCNT (0x30) + #define S3C2410_SDIDSTA (0x34) + #define S3C2410_SDIFSTA (0x38) ++ + #define S3C2410_SDIDATA (0x3C) + #define S3C2410_SDIIMSK (0x40) + ++#define S3C2440_SDIDATA (0x40) ++#define S3C2440_SDIIMSK (0x3C) ++ ++#define S3C2440_SDICON_SDRESET (1<<8) ++#define S3C2440_SDICON_MMCCLOCK (1<<5) + #define S3C2410_SDICON_BYTEORDER (1<<4) + #define S3C2410_SDICON_SDIOIRQ (1<<3) + #define S3C2410_SDICON_RWAITEN (1<<2) +@@ -42,7 +48,8 @@ + #define S3C2410_SDICMDCON_LONGRSP (1<<10) + #define S3C2410_SDICMDCON_WAITRSP (1<<9) + #define S3C2410_SDICMDCON_CMDSTART (1<<8) +-#define S3C2410_SDICMDCON_INDEX (0xff) ++#define S3C2410_SDICMDCON_SENDERHOST (1<<6) ++#define S3C2410_SDICMDCON_INDEX (0x3f) + + #define S3C2410_SDICMDSTAT_CRCFAIL (1<<12) + #define S3C2410_SDICMDSTAT_CMDSENT (1<<11) +@@ -51,6 +58,9 @@ + #define S3C2410_SDICMDSTAT_XFERING (1<<8) + #define S3C2410_SDICMDSTAT_INDEX (0xff) + ++#define S3C2440_SDIDCON_DS_BYTE (0<<22) ++#define S3C2440_SDIDCON_DS_HALFWORD (1<<22) ++#define S3C2440_SDIDCON_DS_WORD (2<<22) + #define S3C2410_SDIDCON_IRQPERIOD (1<<21) + #define S3C2410_SDIDCON_TXAFTERRESP (1<<20) + #define S3C2410_SDIDCON_RXAFTERCMD (1<<19) +@@ -59,6 +69,7 @@ + #define S3C2410_SDIDCON_WIDEBUS (1<<16) + #define S3C2410_SDIDCON_DMAEN (1<<15) + #define S3C2410_SDIDCON_STOP (1<<14) ++#define S3C2440_SDIDCON_DATSTART (1<<14) + #define S3C2410_SDIDCON_DATMODE (3<<12) + #define S3C2410_SDIDCON_BLKNUM (0x7ff) + +@@ -68,6 +79,7 @@ + #define S3C2410_SDIDCON_XFER_RXSTART (2<<12) + #define S3C2410_SDIDCON_XFER_TXSTART (3<<12) + ++#define S3C2410_SDIDCON_BLKNUM_MASK (0xFFF) + #define S3C2410_SDIDCNT_BLKNUM_SHIFT (12) + + #define S3C2410_SDIDSTA_RDYWAITREQ (1<<10) +@@ -82,10 +94,12 @@ + #define S3C2410_SDIDSTA_TXDATAON (1<<1) + #define S3C2410_SDIDSTA_RXDATAON (1<<0) + ++#define S3C2440_SDIFSTA_FIFORESET (1<<16) ++#define S3C2440_SDIFSTA_FIFOFAIL (3<<14) /* 3 is correct (2 bits) */ + #define S3C2410_SDIFSTA_TFDET (1<<13) + #define S3C2410_SDIFSTA_RFDET (1<<12) +-#define S3C2410_SDIFSTA_TXHALF (1<<11) +-#define S3C2410_SDIFSTA_TXEMPTY (1<<10) ++#define S3C2410_SDIFSTA_TFHALF (1<<11) ++#define S3C2410_SDIFSTA_TFEMPTY (1<<10) + #define S3C2410_SDIFSTA_RFLAST (1<<9) + #define S3C2410_SDIFSTA_RFFULL (1<<8) + #define S3C2410_SDIFSTA_RFHALF (1<<7) +diff -X linux-git/Documentation/dontdiff -Naur linux-git/include/asm-arm/arch-s3c2410/ts.h linux-2.6.25-m8050/include/asm-arm/arch-s3c2410/ts.h +--- linux-git/include/asm-arm/arch-s3c2410/ts.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/include/asm-arm/arch-s3c2410/ts.h 2008-05-29 07:57:07.000000000 +0200 +@@ -0,0 +1,28 @@ ++/* linux/include/asm/arch-s3c2410/ts.h ++ * ++ * Copyright (c) 2005 Arnaud Patard ++ * ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ * ++ * Changelog: ++ * 24-Mar-2005 RTP Created file ++ * 03-Aug-2005 RTP Renamed to ts.h ++ */ ++ ++#ifndef __ASM_ARM_TS_H ++#define __ASM_ARM_TS_H ++ ++struct s3c2410_ts_mach_info { ++ int delay; ++ int presc; ++ int oversampling_shift; ++}; ++ ++void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info); ++ ++#endif /* __ASM_ARM_TS_H */ ++ +diff -X linux-git/Documentation/dontdiff -Naur linux-git/include/asm-arm/plat-s3c/map.h linux-2.6.25-m8050/include/asm-arm/plat-s3c/map.h +--- linux-git/include/asm-arm/plat-s3c/map.h 2008-11-10 12:20:31.000000000 +0100 ++++ linux-2.6.25-m8050/include/asm-arm/plat-s3c/map.h 2008-08-21 12:06:14.000000000 +0200 +@@ -36,5 +36,6 @@ + #define S3C_VA_TIMER S3C_ADDR(0x00300000) /* timer block */ + #define S3C_VA_WATCHDOG S3C_ADDR(0x00400000) /* watchdog */ + #define S3C_VA_UART S3C_ADDR(0x01000000) /* UART */ ++#define S3C_VA_SPI S3C_ADDR(0x01100000) /* SPI */ + + #endif /* __ASM_PLAT_MAP_H */ +diff -X linux-git/Documentation/dontdiff -Naur linux-git/include/asm-arm/plat-s3c/regs-serial.h linux-2.6.25-m8050/include/asm-arm/plat-s3c/regs-serial.h +--- linux-git/include/asm-arm/plat-s3c/regs-serial.h 2008-11-10 12:20:31.000000000 +0100 ++++ linux-2.6.25-m8050/include/asm-arm/plat-s3c/regs-serial.h 2008-07-17 15:41:40.000000000 +0200 +@@ -214,6 +214,8 @@ + unsigned long ulcon; /* value of ulcon for port */ + unsigned long ufcon; /* value of ufcon for port */ + ++ unsigned long ri_pin; /* gpio to use for Ring Indicator */ ++ + struct s3c24xx_uart_clksrc *clocks; + unsigned int clocks_size; + }; +diff -X linux-git/Documentation/dontdiff -Naur linux-git/include/asm-arm/plat-s3c24xx/devs.h linux-2.6.25-m8050/include/asm-arm/plat-s3c24xx/devs.h +--- linux-git/include/asm-arm/plat-s3c24xx/devs.h 2008-11-10 12:20:31.000000000 +0100 ++++ linux-2.6.25-m8050/include/asm-arm/plat-s3c24xx/devs.h 2008-05-29 07:57:07.000000000 +0200 +@@ -41,6 +41,7 @@ + extern struct platform_device s3c_device_timer2; + extern struct platform_device s3c_device_timer3; + ++extern struct platform_device s3c_device_ts; + extern struct platform_device s3c_device_usbgadget; + + /* s3c2440 specific devices */ +diff -X linux-git/Documentation/dontdiff -Naur linux-git/include/asm-arm/plat-s3c24xx/mci.h linux-2.6.25-m8050/include/asm-arm/plat-s3c24xx/mci.h +--- linux-git/include/asm-arm/plat-s3c24xx/mci.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/include/asm-arm/plat-s3c24xx/mci.h 2008-07-01 13:32:52.000000000 +0200 +@@ -0,0 +1,15 @@ ++#ifndef _ARCH_MCI_H ++#define _ARCH_MCI_H ++ ++struct s3c24xx_mci_pdata { ++ unsigned int wprotect_invert : 1; ++ unsigned int detect_invert : 1; /* set => detect active high. */ ++ ++ unsigned int gpio_detect; ++ unsigned int gpio_wprotect; ++ unsigned long ocr_avail; ++ void (*set_power)(unsigned char power_mode, ++ unsigned short vdd); ++}; ++ ++#endif /* _ARCH_NCI_H */ +diff -X linux-git/Documentation/dontdiff -Naur linux-git/include/asm-arm/plat-s3c24xx/regs-spi.h linux-2.6.25-m8050/include/asm-arm/plat-s3c24xx/regs-spi.h +--- linux-git/include/asm-arm/plat-s3c24xx/regs-spi.h 2008-11-10 12:20:31.000000000 +0100 ++++ linux-2.6.25-m8050/include/asm-arm/plat-s3c24xx/regs-spi.h 2008-08-21 11:57:05.000000000 +0200 +@@ -15,6 +15,23 @@ + #define S3C2410_SPI1 (0x20) + #define S3C2412_SPI1 (0x100) + ++#define S3C2410_SPI0REG(x) ((x) + S3C24XX_VA_SPI) ++#define S3C2410_SPI1REG(x) ((x) + S3C24XX_VA_SPI + 0x20) ++ ++#define S3C2410_SPI0CON S3C2410_SPI0REG(0x00) ++#define S3C2410_SPI0STA S3C2410_SPI0REG(0x04) ++#define S3C2410_SPI0PIN S3C2410_SPI0REG(0x08) ++#define S3C2410_SPI0PRE S3C2410_SPI0REG(0x0c) ++#define S3C2410_SPI0DTX S3C2410_SPI0REG(0x10) ++#define S3C2410_SPI0DRX S3C2410_SPI0REG(0x14) ++ ++#define S3C2410_SPI1CON S3C2410_SPI1REG(0x00) ++#define S3C2410_SPI1STA S3C2410_SPI1REG(0x04) ++#define S3C2410_SPI1PIN S3C2410_SPI1REG(0x08) ++#define S3C2410_SPI1PRE S3C2410_SPI1REG(0x0c) ++#define S3C2410_SPI1DTX S3C2410_SPI1REG(0x10) ++#define S3C2410_SPI1DRX S3C2410_SPI1REG(0x14) ++ + #define S3C2410_SPCON (0x00) + + #define S3C2412_SPCON_RXFIFO_RB2 (0<<14) +diff -X linux-git/Documentation/dontdiff -Naur linux-git/include/linux/leds.h linux-2.6.25-m8050/include/linux/leds.h +--- linux-git/include/linux/leds.h 2008-11-10 12:20:32.000000000 +0100 ++++ linux-2.6.25-m8050/include/linux/leds.h 2008-10-10 15:50:40.000000000 +0200 +@@ -123,6 +123,15 @@ + #define ledtrig_ide_activity() do {} while(0) + #endif + ++/* Trigger specific functions */ ++#ifdef CONFIG_LEDS_TRIGGER_EV_LED ++extern void ledtrig_ev_led_activity(void); ++extern void scanner_data(void); ++#else ++#define ledtrig_ev_led_activity() do {} while(0) ++#define scanner_data() do {} while(0) ++#endif ++ + /* For the leds-gpio driver */ + struct gpio_led { + const char *name; +diff -X linux-git/Documentation/dontdiff -Naur linux-git/kernel/printk.c linux-2.6.25-m8050/kernel/printk.c +--- linux-git/kernel/printk.c 2008-11-10 12:20:34.000000000 +0100 ++++ linux-2.6.25-m8050/kernel/printk.c 2008-09-30 12:08:46.000000000 +0200 +@@ -42,6 +42,8 @@ + { + } + ++extern void printascii(const char *); ++ + #define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT) + + /* printk's without a loglevel use this.. */ +@@ -715,6 +717,8 @@ + printed_len += vscnprintf(printk_buf + printed_len, + sizeof(printk_buf) - printed_len, fmt, args); + ++// printascii(printk_buf); ++ + /* + * Copy the output into log_buf. If the caller didn't provide + * appropriate log level tags, we insert them here +diff -X linux-git/Documentation/dontdiff -Naur linux-git/m8050-config linux-2.6.25-m8050/m8050-config +--- linux-git/m8050-config 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/m8050-config 2008-09-12 18:47:50.000000000 +0200 +@@ -0,0 +1,950 @@ ++# ++# Automatically generated make config: don't edit ++# Linux kernel version: 2.6.25 ++# Fri Sep 12 09:23:16 2008 ++# ++CONFIG_ARM=y ++CONFIG_SYS_SUPPORTS_APM_EMULATION=y ++CONFIG_GENERIC_GPIO=y ++# CONFIG_GENERIC_TIME is not set ++# CONFIG_GENERIC_CLOCKEVENTS is not set ++CONFIG_MMU=y ++CONFIG_NO_IOPORT=y ++CONFIG_GENERIC_HARDIRQS=y ++CONFIG_STACKTRACE_SUPPORT=y ++CONFIG_LOCKDEP_SUPPORT=y ++CONFIG_TRACE_IRQFLAGS_SUPPORT=y ++CONFIG_HARDIRQS_SW_RESEND=y ++CONFIG_GENERIC_IRQ_PROBE=y ++CONFIG_RWSEM_GENERIC_SPINLOCK=y ++# CONFIG_ARCH_HAS_ILOG2_U32 is not set ++# CONFIG_ARCH_HAS_ILOG2_U64 is not set ++CONFIG_GENERIC_HWEIGHT=y ++CONFIG_GENERIC_CALIBRATE_DELAY=y ++CONFIG_ARCH_SUPPORTS_AOUT=y ++CONFIG_ZONE_DMA=y ++CONFIG_VECTORS_BASE=0xffff0000 ++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" ++ ++# ++# General setup ++# ++CONFIG_EXPERIMENTAL=y ++CONFIG_BROKEN_ON_SMP=y ++CONFIG_INIT_ENV_ARG_LIMIT=32 ++CONFIG_LOCALVERSION="" ++CONFIG_LOCALVERSION_AUTO=y ++CONFIG_SWAP=y ++CONFIG_SYSVIPC=y ++CONFIG_SYSVIPC_SYSCTL=y ++# CONFIG_POSIX_MQUEUE is not set ++# CONFIG_BSD_PROCESS_ACCT is not set ++# CONFIG_TASKSTATS is not set ++# CONFIG_AUDIT is not set ++# CONFIG_IKCONFIG is not set ++CONFIG_LOG_BUF_SHIFT=16 ++# CONFIG_CGROUPS is not set ++CONFIG_GROUP_SCHED=y ++CONFIG_FAIR_GROUP_SCHED=y ++# CONFIG_RT_GROUP_SCHED is not set ++CONFIG_USER_SCHED=y ++# CONFIG_CGROUP_SCHED is not set ++CONFIG_SYSFS_DEPRECATED=y ++CONFIG_SYSFS_DEPRECATED_V2=y ++# CONFIG_RELAY is not set ++# CONFIG_NAMESPACES is not set ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_INITRAMFS_SOURCE="" ++CONFIG_CC_OPTIMIZE_FOR_SIZE=y ++CONFIG_SYSCTL=y ++CONFIG_EMBEDDED=y ++CONFIG_UID16=y ++CONFIG_SYSCTL_SYSCALL=y ++CONFIG_KALLSYMS=y ++# CONFIG_KALLSYMS_ALL is not set ++# CONFIG_KALLSYMS_EXTRA_PASS is not set ++CONFIG_HOTPLUG=y ++CONFIG_PRINTK=y ++CONFIG_BUG=y ++CONFIG_ELF_CORE=y ++CONFIG_COMPAT_BRK=y ++CONFIG_BASE_FULL=y ++CONFIG_FUTEX=y ++CONFIG_ANON_INODES=y ++CONFIG_EPOLL=y ++CONFIG_SIGNALFD=y ++CONFIG_TIMERFD=y ++CONFIG_EVENTFD=y ++CONFIG_SHMEM=y ++CONFIG_VM_EVENT_COUNTERS=y ++CONFIG_SLAB=y ++# CONFIG_SLUB is not set ++# CONFIG_SLOB is not set ++# CONFIG_PROFILING is not set ++# CONFIG_MARKERS is not set ++CONFIG_HAVE_OPROFILE=y ++# CONFIG_KPROBES is not set ++CONFIG_HAVE_KPROBES=y ++CONFIG_HAVE_KRETPROBES=y ++CONFIG_PROC_PAGE_MONITOR=y ++CONFIG_SLABINFO=y ++CONFIG_RT_MUTEXES=y ++# CONFIG_TINY_SHMEM is not set ++CONFIG_BASE_SMALL=0 ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++# CONFIG_MODULE_FORCE_UNLOAD is not set ++# CONFIG_MODVERSIONS is not set ++# CONFIG_MODULE_SRCVERSION_ALL is not set ++# CONFIG_KMOD is not set ++CONFIG_BLOCK=y ++# CONFIG_LBD is not set ++# CONFIG_BLK_DEV_IO_TRACE is not set ++# CONFIG_LSF is not set ++# CONFIG_BLK_DEV_BSG is not set ++ ++# ++# IO Schedulers ++# ++CONFIG_IOSCHED_NOOP=y ++CONFIG_IOSCHED_AS=y ++CONFIG_IOSCHED_DEADLINE=y ++CONFIG_IOSCHED_CFQ=y ++CONFIG_DEFAULT_AS=y ++# CONFIG_DEFAULT_DEADLINE is not set ++# CONFIG_DEFAULT_CFQ is not set ++# CONFIG_DEFAULT_NOOP is not set ++CONFIG_DEFAULT_IOSCHED="anticipatory" ++CONFIG_CLASSIC_RCU=y ++ ++# ++# System Type ++# ++# CONFIG_ARCH_AAEC2000 is not set ++# CONFIG_ARCH_INTEGRATOR is not set ++# CONFIG_ARCH_REALVIEW is not set ++# CONFIG_ARCH_VERSATILE is not set ++# CONFIG_ARCH_AT91 is not set ++# CONFIG_ARCH_CLPS7500 is not set ++# CONFIG_ARCH_CLPS711X is not set ++# CONFIG_ARCH_CO285 is not set ++# CONFIG_ARCH_EBSA110 is not set ++# CONFIG_ARCH_EP93XX is not set ++# CONFIG_ARCH_FOOTBRIDGE is not set ++# CONFIG_ARCH_NETX is not set ++# CONFIG_ARCH_H720X is not set ++# CONFIG_ARCH_IMX is not set ++# CONFIG_ARCH_IOP13XX is not set ++# CONFIG_ARCH_IOP32X is not set ++# CONFIG_ARCH_IOP33X is not set ++# CONFIG_ARCH_IXP23XX is not set ++# CONFIG_ARCH_IXP2000 is not set ++# CONFIG_ARCH_IXP4XX is not set ++# CONFIG_ARCH_L7200 is not set ++# CONFIG_ARCH_KS8695 is not set ++# CONFIG_ARCH_NS9XXX is not set ++# CONFIG_ARCH_MXC is not set ++# CONFIG_ARCH_ORION is not set ++# CONFIG_ARCH_PNX4008 is not set ++# CONFIG_ARCH_PXA is not set ++# CONFIG_ARCH_RPC is not set ++# CONFIG_ARCH_SA1100 is not set ++CONFIG_ARCH_S3C2410=y ++# CONFIG_ARCH_SHARK is not set ++# CONFIG_ARCH_LH7A40X is not set ++# CONFIG_ARCH_DAVINCI is not set ++# CONFIG_ARCH_OMAP is not set ++# CONFIG_ARCH_MSM7X00A is not set ++CONFIG_PLAT_S3C24XX=y ++CONFIG_CPU_S3C244X=y ++CONFIG_S3C2410_DMA=y ++# CONFIG_S3C2410_DMA_DEBUG is not set ++CONFIG_PLAT_S3C=y ++CONFIG_CPU_LLSERIAL_S3C2440_ONLY=y ++CONFIG_CPU_LLSERIAL_S3C2440=y ++ ++# ++# Boot options ++# ++# CONFIG_S3C_BOOT_ERROR_RESET is not set ++ ++# ++# Power management ++# ++CONFIG_S3C2410_PM_DEBUG=y ++# CONFIG_S3C2410_PM_CHECK is not set ++CONFIG_S3C_LOWLEVEL_UART_PORT=1 ++ ++# ++# S3C2400 Machines ++# ++CONFIG_S3C2410_PM=y ++CONFIG_S3C2410_GPIO=y ++CONFIG_S3C2410_CLOCK=y ++ ++# ++# S3C2410 Machines ++# ++# CONFIG_ARCH_SMDK2410 is not set ++# CONFIG_ARCH_H1940 is not set ++# CONFIG_MACH_N30 is not set ++# CONFIG_ARCH_BAST is not set ++# CONFIG_MACH_OTOM is not set ++# CONFIG_MACH_AML_M5900 is not set ++# CONFIG_MACH_VR1000 is not set ++# CONFIG_MACH_QT2410 is not set ++ ++# ++# S3C2412 Machines ++# ++# CONFIG_MACH_SMDK2413 is not set ++# CONFIG_MACH_SMDK2412 is not set ++# CONFIG_MACH_VSTMS is not set ++CONFIG_CPU_S3C2440=y ++CONFIG_S3C2440_DMA=y ++ ++# ++# S3C2440 Machines ++# ++CONFIG_MACH_AML_M8050=y ++# CONFIG_MACH_ANUBIS is not set ++# CONFIG_MACH_OSIRIS is not set ++# CONFIG_MACH_RX3715 is not set ++# CONFIG_ARCH_S3C2440 is not set ++# CONFIG_MACH_NEXCODER_2440 is not set ++ ++# ++# S3C2442 Machines ++# ++ ++# ++# S3C2443 Machines ++# ++# CONFIG_MACH_SMDK2443 is not set ++ ++# ++# Processor Type ++# ++CONFIG_CPU_32=y ++CONFIG_CPU_ARM920T=y ++CONFIG_CPU_32v4T=y ++CONFIG_CPU_ABRT_EV4T=y ++CONFIG_CPU_CACHE_V4WT=y ++CONFIG_CPU_CACHE_VIVT=y ++CONFIG_CPU_COPY_V4WB=y ++CONFIG_CPU_TLB_V4WBI=y ++CONFIG_CPU_CP15=y ++CONFIG_CPU_CP15_MMU=y ++ ++# ++# Processor Features ++# ++# CONFIG_ARM_THUMB is not set ++# CONFIG_CPU_ICACHE_DISABLE is not set ++# CONFIG_CPU_DCACHE_DISABLE is not set ++# CONFIG_CPU_DCACHE_WRITETHROUGH is not set ++# CONFIG_OUTER_CACHE is not set ++ ++# ++# Bus support ++# ++# CONFIG_PCI_SYSCALL is not set ++# CONFIG_ARCH_SUPPORTS_MSI is not set ++# CONFIG_PCCARD is not set ++ ++# ++# Kernel Features ++# ++# CONFIG_TICK_ONESHOT is not set ++# CONFIG_PREEMPT is not set ++# CONFIG_NO_IDLE_HZ is not set ++CONFIG_HZ=200 ++CONFIG_AEABI=y ++# CONFIG_OABI_COMPAT is not set ++# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set ++CONFIG_SELECT_MEMORY_MODEL=y ++CONFIG_FLATMEM_MANUAL=y ++# CONFIG_DISCONTIGMEM_MANUAL is not set ++# CONFIG_SPARSEMEM_MANUAL is not set ++CONFIG_FLATMEM=y ++CONFIG_FLAT_NODE_MEM_MAP=y ++# CONFIG_SPARSEMEM_STATIC is not set ++# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set ++CONFIG_SPLIT_PTLOCK_CPUS=4096 ++# CONFIG_RESOURCES_64BIT is not set ++CONFIG_ZONE_DMA_FLAG=1 ++CONFIG_BOUNCE=y ++CONFIG_VIRT_TO_BUS=y ++CONFIG_ALIGNMENT_TRAP=y ++ ++# ++# Boot options ++# ++CONFIG_ZBOOT_ROM_TEXT=0x0 ++CONFIG_ZBOOT_ROM_BSS=0x0 ++CONFIG_CMDLINE="console=ttySAC0 root=/dev/ram0" ++# CONFIG_XIP_KERNEL is not set ++# CONFIG_KEXEC is not set ++ ++# ++# Floating point emulation ++# ++ ++# ++# At least one emulation must be selected ++# ++ ++# ++# Userspace binary formats ++# ++CONFIG_BINFMT_ELF=y ++CONFIG_BINFMT_AOUT=y ++# CONFIG_BINFMT_MISC is not set ++ ++# ++# Power management options ++# ++CONFIG_PM=y ++# CONFIG_PM_LEGACY is not set ++CONFIG_PM_DEBUG=y ++CONFIG_PM_VERBOSE=y ++CONFIG_CAN_PM_TRACE=y ++CONFIG_PM_SLEEP=y ++CONFIG_SUSPEND=y ++CONFIG_SUSPEND_FREEZER=y ++CONFIG_APM_EMULATION=y ++CONFIG_ARCH_SUSPEND_POSSIBLE=y ++ ++# ++# Networking ++# ++CONFIG_NET=y ++ ++# ++# Networking options ++# ++CONFIG_PACKET=y ++CONFIG_PACKET_MMAP=y ++CONFIG_UNIX=y ++# CONFIG_NET_KEY is not set ++CONFIG_INET=y ++# CONFIG_IP_MULTICAST is not set ++# CONFIG_IP_ADVANCED_ROUTER is not set ++CONFIG_IP_FIB_HASH=y ++# CONFIG_IP_PNP is not set ++# CONFIG_NET_IPIP is not set ++# CONFIG_NET_IPGRE is not set ++# CONFIG_ARPD is not set ++# CONFIG_SYN_COOKIES is not set ++# CONFIG_INET_AH is not set ++# CONFIG_INET_ESP is not set ++# CONFIG_INET_IPCOMP is not set ++# CONFIG_INET_XFRM_TUNNEL is not set ++# CONFIG_INET_TUNNEL is not set ++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set ++# CONFIG_INET_XFRM_MODE_TUNNEL is not set ++# CONFIG_INET_XFRM_MODE_BEET is not set ++# CONFIG_INET_LRO is not set ++# CONFIG_INET_DIAG is not set ++# CONFIG_TCP_CONG_ADVANCED is not set ++CONFIG_TCP_CONG_CUBIC=y ++CONFIG_DEFAULT_TCP_CONG="cubic" ++# CONFIG_TCP_MD5SIG is not set ++CONFIG_IPV6=y ++# CONFIG_IPV6_PRIVACY is not set ++# CONFIG_IPV6_ROUTER_PREF is not set ++# CONFIG_IPV6_OPTIMISTIC_DAD is not set ++# CONFIG_INET6_AH is not set ++# CONFIG_INET6_ESP is not set ++# CONFIG_INET6_IPCOMP is not set ++# CONFIG_IPV6_MIP6 is not set ++# CONFIG_INET6_XFRM_TUNNEL is not set ++# CONFIG_INET6_TUNNEL is not set ++# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set ++# CONFIG_INET6_XFRM_MODE_TUNNEL is not set ++# CONFIG_INET6_XFRM_MODE_BEET is not set ++# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set ++# CONFIG_IPV6_SIT is not set ++# CONFIG_IPV6_TUNNEL is not set ++# CONFIG_IPV6_MULTIPLE_TABLES is not set ++# CONFIG_NETWORK_SECMARK is not set ++# CONFIG_NETFILTER is not set ++# CONFIG_IP_DCCP is not set ++# CONFIG_IP_SCTP is not set ++# CONFIG_TIPC is not set ++# CONFIG_ATM is not set ++# CONFIG_BRIDGE is not set ++# CONFIG_VLAN_8021Q is not set ++# CONFIG_DECNET is not set ++# CONFIG_LLC2 is not set ++# CONFIG_IPX is not set ++# CONFIG_ATALK is not set ++# CONFIG_X25 is not set ++# CONFIG_LAPB is not set ++# CONFIG_ECONET is not set ++# CONFIG_WAN_ROUTER is not set ++# CONFIG_NET_SCHED is not set ++ ++# ++# Network testing ++# ++# CONFIG_NET_PKTGEN is not set ++# CONFIG_HAMRADIO is not set ++# CONFIG_CAN is not set ++# CONFIG_IRDA is not set ++# CONFIG_BT is not set ++# CONFIG_AF_RXRPC is not set ++ ++# ++# Wireless ++# ++# CONFIG_CFG80211 is not set ++CONFIG_WIRELESS_EXT=y ++# CONFIG_MAC80211 is not set ++CONFIG_IEEE80211=y ++# CONFIG_IEEE80211_DEBUG is not set ++# CONFIG_IEEE80211_CRYPT_WEP is not set ++# CONFIG_IEEE80211_CRYPT_CCMP is not set ++# CONFIG_IEEE80211_CRYPT_TKIP is not set ++# CONFIG_IEEE80211_SOFTMAC is not set ++# CONFIG_RFKILL is not set ++# CONFIG_NET_9P is not set ++ ++# ++# Device Drivers ++# ++ ++# ++# Generic Driver Options ++# ++CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" ++CONFIG_STANDALONE=y ++CONFIG_PREVENT_FIRMWARE_BUILD=y ++CONFIG_FW_LOADER=y ++# CONFIG_DEBUG_DRIVER is not set ++# CONFIG_DEBUG_DEVRES is not set ++# CONFIG_SYS_HYPERVISOR is not set ++# CONFIG_CONNECTOR is not set ++CONFIG_MTD=y ++# CONFIG_MTD_DEBUG is not set ++# CONFIG_MTD_CONCAT is not set ++CONFIG_MTD_PARTITIONS=y ++# CONFIG_MTD_REDBOOT_PARTS is not set ++# CONFIG_MTD_CMDLINE_PARTS is not set ++# CONFIG_MTD_AFS_PARTS is not set ++ ++# ++# User Modules And Translation Layers ++# ++CONFIG_MTD_CHAR=y ++CONFIG_MTD_BLKDEVS=y ++CONFIG_MTD_BLOCK=y ++# CONFIG_FTL is not set ++# CONFIG_NFTL is not set ++# CONFIG_INFTL is not set ++# CONFIG_RFD_FTL is not set ++# CONFIG_SSFDC is not set ++# CONFIG_MTD_OOPS is not set ++ ++# ++# RAM/ROM/Flash chip drivers ++# ++# CONFIG_MTD_CFI is not set ++# CONFIG_MTD_JEDECPROBE is not set ++CONFIG_MTD_MAP_BANK_WIDTH_1=y ++CONFIG_MTD_MAP_BANK_WIDTH_2=y ++CONFIG_MTD_MAP_BANK_WIDTH_4=y ++# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set ++# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set ++# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set ++CONFIG_MTD_CFI_I1=y ++CONFIG_MTD_CFI_I2=y ++# CONFIG_MTD_CFI_I4 is not set ++# CONFIG_MTD_CFI_I8 is not set ++# CONFIG_MTD_RAM is not set ++# CONFIG_MTD_ROM is not set ++# CONFIG_MTD_ABSENT is not set ++ ++# ++# Mapping drivers for chip access ++# ++# CONFIG_MTD_COMPLEX_MAPPINGS is not set ++# CONFIG_MTD_PLATRAM is not set ++ ++# ++# Self-contained MTD device drivers ++# ++# CONFIG_MTD_DATAFLASH is not set ++# CONFIG_MTD_M25P80 is not set ++# CONFIG_MTD_SLRAM is not set ++# CONFIG_MTD_PHRAM is not set ++# CONFIG_MTD_MTDRAM is not set ++# CONFIG_MTD_BLOCK2MTD is not set ++ ++# ++# Disk-On-Chip Device Drivers ++# ++# CONFIG_MTD_DOC2000 is not set ++# CONFIG_MTD_DOC2001 is not set ++# CONFIG_MTD_DOC2001PLUS is not set ++CONFIG_MTD_NAND=y ++# CONFIG_MTD_NAND_VERIFY_WRITE is not set ++# CONFIG_MTD_NAND_ECC_SMC is not set ++# CONFIG_MTD_NAND_MUSEUM_IDS is not set ++CONFIG_MTD_NAND_IDS=y ++CONFIG_MTD_NAND_S3C2410=y ++# CONFIG_MTD_NAND_S3C2410_DEBUG is not set ++# CONFIG_MTD_NAND_S3C2410_HWECC is not set ++# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set ++# CONFIG_MTD_NAND_DISKONCHIP is not set ++# CONFIG_MTD_NAND_NANDSIM is not set ++# CONFIG_MTD_NAND_PLATFORM is not set ++# CONFIG_MTD_ONENAND is not set ++ ++# ++# UBI - Unsorted block images ++# ++# CONFIG_MTD_UBI is not set ++# CONFIG_PARPORT is not set ++CONFIG_BLK_DEV=y ++# CONFIG_BLK_DEV_COW_COMMON is not set ++CONFIG_BLK_DEV_LOOP=y ++# CONFIG_BLK_DEV_CRYPTOLOOP is not set ++# CONFIG_BLK_DEV_NBD is not set ++CONFIG_BLK_DEV_RAM=y ++CONFIG_BLK_DEV_RAM_COUNT=8 ++CONFIG_BLK_DEV_RAM_SIZE=8192 ++# CONFIG_BLK_DEV_XIP is not set ++# CONFIG_CDROM_PKTCDVD is not set ++# CONFIG_ATA_OVER_ETH is not set ++CONFIG_MISC_DEVICES=y ++# CONFIG_EEPROM_93CX6 is not set ++# CONFIG_ENCLOSURE_SERVICES is not set ++CONFIG_AML_M8052=y ++CONFIG_HAVE_IDE=y ++# CONFIG_IDE is not set ++ ++# ++# SCSI device support ++# ++# CONFIG_RAID_ATTRS is not set ++# CONFIG_SCSI is not set ++# CONFIG_SCSI_DMA is not set ++# CONFIG_SCSI_NETLINK is not set ++# CONFIG_ATA is not set ++# CONFIG_MD is not set ++# CONFIG_NETDEVICES is not set ++# CONFIG_ISDN is not set ++ ++# ++# Input device support ++# ++CONFIG_INPUT=y ++# CONFIG_INPUT_FF_MEMLESS is not set ++CONFIG_INPUT_POLLDEV=y ++ ++# ++# Userland interfaces ++# ++CONFIG_INPUT_MOUSEDEV=y ++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set ++CONFIG_INPUT_MOUSEDEV_SCREEN_X=320 ++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240 ++# CONFIG_INPUT_JOYDEV is not set ++CONFIG_INPUT_EVDEV=y ++# CONFIG_INPUT_EVBUG is not set ++CONFIG_INPUT_APMPOWER=y ++ ++# ++# Input Device Drivers ++# ++CONFIG_INPUT_KEYBOARD=y ++# CONFIG_KEYBOARD_ATKBD is not set ++# CONFIG_KEYBOARD_SUNKBD is not set ++# CONFIG_KEYBOARD_LKKBD is not set ++# CONFIG_KEYBOARD_XTKBD is not set ++# CONFIG_KEYBOARD_NEWTON is not set ++# CONFIG_KEYBOARD_STOWAWAY is not set ++CONFIG_KEYBOARD_M8050=y ++CONFIG_KEYBOARD_GPIO=y ++# CONFIG_INPUT_MOUSE is not set ++# CONFIG_INPUT_JOYSTICK is not set ++# CONFIG_INPUT_TABLET is not set ++CONFIG_INPUT_TOUCHSCREEN=y ++# CONFIG_TOUCHSCREEN_ADS7846 is not set ++# CONFIG_TOUCHSCREEN_FUJITSU is not set ++CONFIG_TOUCHSCREEN_S3C2410=y ++# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set ++# CONFIG_TOUCHSCREEN_GUNZE is not set ++# CONFIG_TOUCHSCREEN_ELO is not set ++# CONFIG_TOUCHSCREEN_MTOUCH is not set ++# CONFIG_TOUCHSCREEN_MK712 is not set ++# CONFIG_TOUCHSCREEN_PENMOUNT is not set ++# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set ++# CONFIG_TOUCHSCREEN_TOUCHWIN is not set ++# CONFIG_TOUCHSCREEN_UCB1400 is not set ++# CONFIG_INPUT_MISC is not set ++ ++# ++# Hardware I/O ports ++# ++CONFIG_SERIO=y ++CONFIG_SERIO_SERPORT=y ++CONFIG_SERIO_LIBPS2=y ++# CONFIG_SERIO_RAW is not set ++# CONFIG_GAMEPORT is not set ++ ++# ++# Character devices ++# ++CONFIG_VT=y ++CONFIG_VT_CONSOLE=y ++CONFIG_HW_CONSOLE=y ++CONFIG_VT_HW_CONSOLE_BINDING=y ++# CONFIG_SERIAL_NONSTANDARD is not set ++# CONFIG_INTELLIHEAD is not set ++ ++# ++# Serial drivers ++# ++CONFIG_SERIAL_8250=y ++CONFIG_SERIAL_8250_CONSOLE=y ++CONFIG_SERIAL_8250_NR_UARTS=8 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=4 ++CONFIG_SERIAL_8250_EXTENDED=y ++CONFIG_SERIAL_8250_MANY_PORTS=y ++CONFIG_SERIAL_8250_SHARE_IRQ=y ++# CONFIG_SERIAL_8250_DETECT_IRQ is not set ++# CONFIG_SERIAL_8250_RSA is not set ++ ++# ++# Non-8250 serial port support ++# ++CONFIG_SERIAL_S3C2410=y ++CONFIG_SERIAL_S3C2410_CONSOLE=y ++CONFIG_SERIAL_CORE=y ++CONFIG_SERIAL_CORE_CONSOLE=y ++CONFIG_UNIX98_PTYS=y ++CONFIG_LEGACY_PTYS=y ++CONFIG_LEGACY_PTY_COUNT=256 ++# CONFIG_IPMI_HANDLER is not set ++# CONFIG_HW_RANDOM is not set ++# CONFIG_NVRAM is not set ++# CONFIG_R3964 is not set ++# CONFIG_RAW_DRIVER is not set ++# CONFIG_TCG_TPM is not set ++# CONFIG_I2C is not set ++ ++# ++# SPI support ++# ++CONFIG_SPI=y ++# CONFIG_SPI_DEBUG is not set ++CONFIG_SPI_MASTER=y ++ ++# ++# SPI Master Controller Drivers ++# ++CONFIG_SPI_BITBANG=y ++CONFIG_SPI_S3C24XX=y ++CONFIG_SPI_S3C24XX_GPIO=y ++ ++# ++# SPI Protocol Masters ++# ++# CONFIG_SPI_AT25 is not set ++# CONFIG_SPI_SPIDEV is not set ++# CONFIG_SPI_TLE62X0 is not set ++# CONFIG_W1 is not set ++# CONFIG_POWER_SUPPLY is not set ++# CONFIG_HWMON is not set ++# CONFIG_WATCHDOG is not set ++ ++# ++# Sonics Silicon Backplane ++# ++CONFIG_SSB_POSSIBLE=y ++# CONFIG_SSB is not set ++ ++# ++# Multifunction device drivers ++# ++# CONFIG_MFD_SM501 is not set ++# CONFIG_MFD_ASIC3 is not set ++ ++# ++# Multimedia devices ++# ++# CONFIG_VIDEO_DEV is not set ++# CONFIG_DVB_CORE is not set ++# CONFIG_DAB is not set ++ ++# ++# Graphics support ++# ++# CONFIG_VGASTATE is not set ++# CONFIG_VIDEO_OUTPUT_CONTROL is not set ++CONFIG_FB=y ++# CONFIG_FIRMWARE_EDID is not set ++# CONFIG_FB_DDC is not set ++CONFIG_FB_CFB_FILLRECT=y ++CONFIG_FB_CFB_COPYAREA=y ++CONFIG_FB_CFB_IMAGEBLIT=y ++# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set ++# CONFIG_FB_SYS_FILLRECT is not set ++# CONFIG_FB_SYS_COPYAREA is not set ++# CONFIG_FB_SYS_IMAGEBLIT is not set ++# CONFIG_FB_SYS_FOPS is not set ++CONFIG_FB_DEFERRED_IO=y ++# CONFIG_FB_SVGALIB is not set ++# CONFIG_FB_MACMODES is not set ++# CONFIG_FB_BACKLIGHT is not set ++# CONFIG_FB_MODE_HELPERS is not set ++# CONFIG_FB_TILEBLITTING is not set ++ ++# ++# Frame buffer hardware drivers ++# ++# CONFIG_FB_S1D13XXX is not set ++CONFIG_FB_S3C2410=y ++CONFIG_FB_S3C2410_DEBUG=y ++# CONFIG_FB_VIRTUAL is not set ++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set ++ ++# ++# Display device support ++# ++# CONFIG_DISPLAY_SUPPORT is not set ++ ++# ++# Console display driver support ++# ++# CONFIG_VGA_CONSOLE is not set ++CONFIG_DUMMY_CONSOLE=y ++CONFIG_FRAMEBUFFER_CONSOLE=y ++# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set ++CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y ++# CONFIG_FONTS is not set ++CONFIG_FONT_8x8=y ++CONFIG_FONT_8x16=y ++# CONFIG_LOGO is not set ++ ++# ++# Sound ++# ++# CONFIG_SOUND is not set ++# CONFIG_HID_SUPPORT is not set ++# CONFIG_USB_SUPPORT is not set ++CONFIG_MMC=y ++# CONFIG_MMC_DEBUG is not set ++# CONFIG_MMC_UNSAFE_RESUME is not set ++ ++# ++# MMC/SD Card Drivers ++# ++CONFIG_MMC_BLOCK=y ++CONFIG_MMC_BLOCK_BOUNCE=y ++# CONFIG_SDIO_UART is not set ++ ++# ++# MMC/SD Host Controller Drivers ++# ++CONFIG_MMC_SPI=y ++# CONFIG_MMC_S3C is not set ++# CONFIG_NEW_LEDS is not set ++CONFIG_RTC_LIB=y ++# CONFIG_RTC_CLASS is not set ++ ++# ++# File systems ++# ++CONFIG_EXT2_FS=y ++# CONFIG_EXT2_FS_XATTR is not set ++# CONFIG_EXT2_FS_XIP is not set ++# CONFIG_EXT3_FS is not set ++# CONFIG_EXT4DEV_FS is not set ++# CONFIG_REISERFS_FS is not set ++# CONFIG_JFS_FS is not set ++# CONFIG_FS_POSIX_ACL is not set ++# CONFIG_XFS_FS is not set ++# CONFIG_GFS2_FS is not set ++# CONFIG_OCFS2_FS is not set ++CONFIG_DNOTIFY=y ++CONFIG_INOTIFY=y ++CONFIG_INOTIFY_USER=y ++# CONFIG_QUOTA is not set ++# CONFIG_AUTOFS_FS is not set ++# CONFIG_AUTOFS4_FS is not set ++# CONFIG_FUSE_FS is not set ++ ++# ++# CD-ROM/DVD Filesystems ++# ++# CONFIG_ISO9660_FS is not set ++# CONFIG_UDF_FS is not set ++ ++# ++# DOS/FAT/NT Filesystems ++# ++# CONFIG_MSDOS_FS is not set ++# CONFIG_VFAT_FS is not set ++# CONFIG_NTFS_FS is not set ++ ++# ++# Pseudo filesystems ++# ++CONFIG_PROC_FS=y ++CONFIG_PROC_SYSCTL=y ++CONFIG_SYSFS=y ++CONFIG_TMPFS=y ++# CONFIG_TMPFS_POSIX_ACL is not set ++# CONFIG_HUGETLB_PAGE is not set ++# CONFIG_CONFIGFS_FS is not set ++ ++# ++# Miscellaneous filesystems ++# ++# CONFIG_ADFS_FS is not set ++# CONFIG_AFFS_FS is not set ++# CONFIG_HFS_FS is not set ++# CONFIG_HFSPLUS_FS is not set ++# CONFIG_BEFS_FS is not set ++# CONFIG_BFS_FS is not set ++# CONFIG_EFS_FS is not set ++CONFIG_JFFS2_FS=y ++CONFIG_JFFS2_FS_DEBUG=0 ++CONFIG_JFFS2_FS_WRITEBUFFER=y ++# CONFIG_JFFS2_FS_WBUF_VERIFY is not set ++# CONFIG_JFFS2_SUMMARY is not set ++# CONFIG_JFFS2_FS_XATTR is not set ++# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set ++CONFIG_JFFS2_ZLIB=y ++# CONFIG_JFFS2_LZO is not set ++CONFIG_JFFS2_RTIME=y ++# CONFIG_JFFS2_RUBIN is not set ++# CONFIG_CRAMFS is not set ++# CONFIG_VXFS_FS is not set ++# CONFIG_MINIX_FS is not set ++# CONFIG_HPFS_FS is not set ++# CONFIG_QNX4FS_FS is not set ++# CONFIG_ROMFS_FS is not set ++# CONFIG_SYSV_FS is not set ++# CONFIG_UFS_FS is not set ++# CONFIG_NETWORK_FILESYSTEMS is not set ++ ++# ++# Partition Types ++# ++# CONFIG_PARTITION_ADVANCED is not set ++CONFIG_MSDOS_PARTITION=y ++CONFIG_NLS=y ++CONFIG_NLS_DEFAULT="iso8859-1" ++CONFIG_NLS_CODEPAGE_437=y ++# CONFIG_NLS_CODEPAGE_737 is not set ++# CONFIG_NLS_CODEPAGE_775 is not set ++# CONFIG_NLS_CODEPAGE_850 is not set ++# CONFIG_NLS_CODEPAGE_852 is not set ++# CONFIG_NLS_CODEPAGE_855 is not set ++# CONFIG_NLS_CODEPAGE_857 is not set ++# CONFIG_NLS_CODEPAGE_860 is not set ++# CONFIG_NLS_CODEPAGE_861 is not set ++# CONFIG_NLS_CODEPAGE_862 is not set ++# CONFIG_NLS_CODEPAGE_863 is not set ++# CONFIG_NLS_CODEPAGE_864 is not set ++# CONFIG_NLS_CODEPAGE_865 is not set ++# CONFIG_NLS_CODEPAGE_866 is not set ++# CONFIG_NLS_CODEPAGE_869 is not set ++# CONFIG_NLS_CODEPAGE_936 is not set ++# CONFIG_NLS_CODEPAGE_950 is not set ++# CONFIG_NLS_CODEPAGE_932 is not set ++# CONFIG_NLS_CODEPAGE_949 is not set ++# CONFIG_NLS_CODEPAGE_874 is not set ++# CONFIG_NLS_ISO8859_8 is not set ++# CONFIG_NLS_CODEPAGE_1250 is not set ++# CONFIG_NLS_CODEPAGE_1251 is not set ++# CONFIG_NLS_ASCII is not set ++# CONFIG_NLS_ISO8859_1 is not set ++# CONFIG_NLS_ISO8859_2 is not set ++# CONFIG_NLS_ISO8859_3 is not set ++# CONFIG_NLS_ISO8859_4 is not set ++# CONFIG_NLS_ISO8859_5 is not set ++# CONFIG_NLS_ISO8859_6 is not set ++# CONFIG_NLS_ISO8859_7 is not set ++# CONFIG_NLS_ISO8859_9 is not set ++# CONFIG_NLS_ISO8859_13 is not set ++# CONFIG_NLS_ISO8859_14 is not set ++# CONFIG_NLS_ISO8859_15 is not set ++# CONFIG_NLS_KOI8_R is not set ++# CONFIG_NLS_KOI8_U is not set ++# CONFIG_NLS_UTF8 is not set ++# CONFIG_DLM is not set ++ ++# ++# Kernel hacking ++# ++# CONFIG_PRINTK_TIME is not set ++CONFIG_ENABLE_WARN_DEPRECATED=y ++CONFIG_ENABLE_MUST_CHECK=y ++CONFIG_MAGIC_SYSRQ=y ++# CONFIG_UNUSED_SYMBOLS is not set ++# CONFIG_DEBUG_FS is not set ++# CONFIG_HEADERS_CHECK is not set ++CONFIG_DEBUG_KERNEL=y ++# CONFIG_DEBUG_SHIRQ is not set ++CONFIG_DETECT_SOFTLOCKUP=y ++CONFIG_SCHED_DEBUG=y ++# CONFIG_SCHEDSTATS is not set ++# CONFIG_TIMER_STATS is not set ++# CONFIG_DEBUG_SLAB is not set ++# CONFIG_DEBUG_RT_MUTEXES is not set ++# CONFIG_RT_MUTEX_TESTER is not set ++# CONFIG_DEBUG_SPINLOCK is not set ++CONFIG_DEBUG_MUTEXES=y ++# CONFIG_DEBUG_LOCK_ALLOC is not set ++# CONFIG_PROVE_LOCKING is not set ++# CONFIG_LOCK_STAT is not set ++# CONFIG_DEBUG_SPINLOCK_SLEEP is not set ++# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set ++# CONFIG_DEBUG_KOBJECT is not set ++# CONFIG_DEBUG_BUGVERBOSE is not set ++CONFIG_DEBUG_INFO=y ++# CONFIG_DEBUG_VM is not set ++# CONFIG_DEBUG_LIST is not set ++# CONFIG_DEBUG_SG is not set ++CONFIG_FRAME_POINTER=y ++# CONFIG_BOOT_PRINTK_DELAY is not set ++# CONFIG_RCU_TORTURE_TEST is not set ++# CONFIG_BACKTRACE_SELF_TEST is not set ++# CONFIG_FAULT_INJECTION is not set ++# CONFIG_SAMPLES is not set ++CONFIG_DEBUG_USER=y ++# CONFIG_DEBUG_ERRORS is not set ++# CONFIG_DEBUG_STACK_USAGE is not set ++CONFIG_DEBUG_LL=y ++# CONFIG_DEBUG_ICEDCC is not set ++CONFIG_DEBUG_S3C_PORT=y ++CONFIG_DEBUG_S3C_UART=1 ++ ++# ++# Security options ++# ++# CONFIG_KEYS is not set ++# CONFIG_SECURITY is not set ++# CONFIG_SECURITY_FILE_CAPABILITIES is not set ++# CONFIG_CRYPTO is not set ++ ++# ++# Library routines ++# ++CONFIG_BITREVERSE=y ++# CONFIG_CRC_CCITT is not set ++# CONFIG_CRC16 is not set ++CONFIG_CRC_ITU_T=y ++CONFIG_CRC32=y ++CONFIG_CRC7=y ++# CONFIG_LIBCRC32C is not set ++CONFIG_ZLIB_INFLATE=y ++CONFIG_ZLIB_DEFLATE=y ++CONFIG_PLIST=y ++CONFIG_HAS_IOMEM=y ++CONFIG_HAS_DMA=y +diff -X linux-git/Documentation/dontdiff -Naur linux-git/m8050-wireless linux-2.6.25-m8050/m8050-wireless +--- linux-git/m8050-wireless 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/m8050-wireless 2008-10-31 14:29:36.000000000 +0100 +@@ -0,0 +1,1009 @@ ++# ++# Automatically generated make config: don't edit ++# Linux kernel version: 2.6.25 ++# Fri Oct 31 08:29:20 2008 ++# ++CONFIG_ARM=y ++CONFIG_SYS_SUPPORTS_APM_EMULATION=y ++CONFIG_GENERIC_GPIO=y ++# CONFIG_GENERIC_TIME is not set ++# CONFIG_GENERIC_CLOCKEVENTS is not set ++CONFIG_MMU=y ++CONFIG_NO_IOPORT=y ++CONFIG_GENERIC_HARDIRQS=y ++CONFIG_STACKTRACE_SUPPORT=y ++CONFIG_LOCKDEP_SUPPORT=y ++CONFIG_TRACE_IRQFLAGS_SUPPORT=y ++CONFIG_HARDIRQS_SW_RESEND=y ++CONFIG_GENERIC_IRQ_PROBE=y ++CONFIG_RWSEM_GENERIC_SPINLOCK=y ++# CONFIG_ARCH_HAS_ILOG2_U32 is not set ++# CONFIG_ARCH_HAS_ILOG2_U64 is not set ++CONFIG_GENERIC_HWEIGHT=y ++CONFIG_GENERIC_CALIBRATE_DELAY=y ++CONFIG_ARCH_SUPPORTS_AOUT=y ++CONFIG_ZONE_DMA=y ++CONFIG_VECTORS_BASE=0xffff0000 ++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" ++ ++# ++# General setup ++# ++CONFIG_EXPERIMENTAL=y ++CONFIG_BROKEN_ON_SMP=y ++CONFIG_INIT_ENV_ARG_LIMIT=32 ++CONFIG_LOCALVERSION="" ++CONFIG_LOCALVERSION_AUTO=y ++CONFIG_SWAP=y ++CONFIG_SYSVIPC=y ++CONFIG_SYSVIPC_SYSCTL=y ++# CONFIG_POSIX_MQUEUE is not set ++# CONFIG_BSD_PROCESS_ACCT is not set ++# CONFIG_TASKSTATS is not set ++# CONFIG_AUDIT is not set ++# CONFIG_IKCONFIG is not set ++CONFIG_LOG_BUF_SHIFT=18 ++# CONFIG_CGROUPS is not set ++CONFIG_GROUP_SCHED=y ++CONFIG_FAIR_GROUP_SCHED=y ++# CONFIG_RT_GROUP_SCHED is not set ++CONFIG_USER_SCHED=y ++# CONFIG_CGROUP_SCHED is not set ++CONFIG_SYSFS_DEPRECATED=y ++CONFIG_SYSFS_DEPRECATED_V2=y ++# CONFIG_RELAY is not set ++# CONFIG_NAMESPACES is not set ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_INITRAMFS_SOURCE="" ++CONFIG_CC_OPTIMIZE_FOR_SIZE=y ++CONFIG_SYSCTL=y ++CONFIG_EMBEDDED=y ++CONFIG_UID16=y ++CONFIG_SYSCTL_SYSCALL=y ++CONFIG_KALLSYMS=y ++# CONFIG_KALLSYMS_EXTRA_PASS is not set ++CONFIG_HOTPLUG=y ++CONFIG_PRINTK=y ++# CONFIG_BUG is not set ++CONFIG_ELF_CORE=y ++CONFIG_COMPAT_BRK=y ++CONFIG_BASE_FULL=y ++CONFIG_FUTEX=y ++CONFIG_ANON_INODES=y ++CONFIG_EPOLL=y ++CONFIG_SIGNALFD=y ++CONFIG_TIMERFD=y ++CONFIG_EVENTFD=y ++CONFIG_SHMEM=y ++CONFIG_VM_EVENT_COUNTERS=y ++CONFIG_SLAB=y ++# CONFIG_SLUB is not set ++# CONFIG_SLOB is not set ++# CONFIG_PROFILING is not set ++# CONFIG_MARKERS is not set ++CONFIG_HAVE_OPROFILE=y ++# CONFIG_KPROBES is not set ++CONFIG_HAVE_KPROBES=y ++CONFIG_HAVE_KRETPROBES=y ++CONFIG_PROC_PAGE_MONITOR=y ++CONFIG_SLABINFO=y ++CONFIG_RT_MUTEXES=y ++# CONFIG_TINY_SHMEM is not set ++CONFIG_BASE_SMALL=0 ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++# CONFIG_MODULE_FORCE_UNLOAD is not set ++# CONFIG_MODVERSIONS is not set ++# CONFIG_MODULE_SRCVERSION_ALL is not set ++# CONFIG_KMOD is not set ++CONFIG_BLOCK=y ++# CONFIG_LBD is not set ++# CONFIG_BLK_DEV_IO_TRACE is not set ++# CONFIG_LSF is not set ++# CONFIG_BLK_DEV_BSG is not set ++ ++# ++# IO Schedulers ++# ++CONFIG_IOSCHED_NOOP=y ++CONFIG_IOSCHED_AS=y ++CONFIG_IOSCHED_DEADLINE=y ++CONFIG_IOSCHED_CFQ=y ++CONFIG_DEFAULT_AS=y ++# CONFIG_DEFAULT_DEADLINE is not set ++# CONFIG_DEFAULT_CFQ is not set ++# CONFIG_DEFAULT_NOOP is not set ++CONFIG_DEFAULT_IOSCHED="anticipatory" ++CONFIG_CLASSIC_RCU=y ++ ++# ++# System Type ++# ++# CONFIG_ARCH_AAEC2000 is not set ++# CONFIG_ARCH_INTEGRATOR is not set ++# CONFIG_ARCH_REALVIEW is not set ++# CONFIG_ARCH_VERSATILE is not set ++# CONFIG_ARCH_AT91 is not set ++# CONFIG_ARCH_CLPS7500 is not set ++# CONFIG_ARCH_CLPS711X is not set ++# CONFIG_ARCH_CO285 is not set ++# CONFIG_ARCH_EBSA110 is not set ++# CONFIG_ARCH_EP93XX is not set ++# CONFIG_ARCH_FOOTBRIDGE is not set ++# CONFIG_ARCH_NETX is not set ++# CONFIG_ARCH_H720X is not set ++# CONFIG_ARCH_IMX is not set ++# CONFIG_ARCH_IOP13XX is not set ++# CONFIG_ARCH_IOP32X is not set ++# CONFIG_ARCH_IOP33X is not set ++# CONFIG_ARCH_IXP23XX is not set ++# CONFIG_ARCH_IXP2000 is not set ++# CONFIG_ARCH_IXP4XX is not set ++# CONFIG_ARCH_L7200 is not set ++# CONFIG_ARCH_KS8695 is not set ++# CONFIG_ARCH_NS9XXX is not set ++# CONFIG_ARCH_MXC is not set ++# CONFIG_ARCH_ORION is not set ++# CONFIG_ARCH_PNX4008 is not set ++# CONFIG_ARCH_PXA is not set ++# CONFIG_ARCH_RPC is not set ++# CONFIG_ARCH_SA1100 is not set ++CONFIG_ARCH_S3C2410=y ++# CONFIG_ARCH_SHARK is not set ++# CONFIG_ARCH_LH7A40X is not set ++# CONFIG_ARCH_DAVINCI is not set ++# CONFIG_ARCH_OMAP is not set ++# CONFIG_ARCH_MSM7X00A is not set ++CONFIG_PLAT_S3C24XX=y ++CONFIG_CPU_S3C244X=y ++CONFIG_S3C2410_DMA=y ++CONFIG_S3C2410_DMA_DEBUG=y ++CONFIG_PLAT_S3C=y ++CONFIG_CPU_LLSERIAL_S3C2440_ONLY=y ++CONFIG_CPU_LLSERIAL_S3C2440=y ++ ++# ++# Boot options ++# ++# CONFIG_S3C_BOOT_ERROR_RESET is not set ++ ++# ++# Power management ++# ++CONFIG_S3C_LOWLEVEL_UART_PORT=1 ++ ++# ++# S3C2400 Machines ++# ++CONFIG_S3C2410_GPIO=y ++CONFIG_S3C2410_CLOCK=y ++ ++# ++# S3C2410 Machines ++# ++# CONFIG_ARCH_SMDK2410 is not set ++# CONFIG_ARCH_H1940 is not set ++# CONFIG_MACH_N30 is not set ++# CONFIG_ARCH_BAST is not set ++# CONFIG_MACH_OTOM is not set ++# CONFIG_MACH_AML_M5900 is not set ++# CONFIG_MACH_VR1000 is not set ++# CONFIG_MACH_QT2410 is not set ++ ++# ++# S3C2412 Machines ++# ++# CONFIG_MACH_SMDK2413 is not set ++# CONFIG_MACH_SMDK2412 is not set ++# CONFIG_MACH_VSTMS is not set ++CONFIG_CPU_S3C2440=y ++CONFIG_S3C2440_DMA=y ++ ++# ++# S3C2440 Machines ++# ++CONFIG_MACH_AML_M8050=y ++# CONFIG_MACH_ANUBIS is not set ++# CONFIG_MACH_OSIRIS is not set ++# CONFIG_MACH_RX3715 is not set ++# CONFIG_ARCH_S3C2440 is not set ++# CONFIG_MACH_NEXCODER_2440 is not set ++ ++# ++# S3C2442 Machines ++# ++ ++# ++# S3C2443 Machines ++# ++# CONFIG_MACH_SMDK2443 is not set ++ ++# ++# Processor Type ++# ++CONFIG_CPU_32=y ++CONFIG_CPU_ARM920T=y ++CONFIG_CPU_32v4T=y ++CONFIG_CPU_ABRT_EV4T=y ++CONFIG_CPU_CACHE_V4WT=y ++CONFIG_CPU_CACHE_VIVT=y ++CONFIG_CPU_COPY_V4WB=y ++CONFIG_CPU_TLB_V4WBI=y ++CONFIG_CPU_CP15=y ++CONFIG_CPU_CP15_MMU=y ++ ++# ++# Processor Features ++# ++# CONFIG_ARM_THUMB is not set ++# CONFIG_CPU_ICACHE_DISABLE is not set ++# CONFIG_CPU_DCACHE_DISABLE is not set ++# CONFIG_CPU_DCACHE_WRITETHROUGH is not set ++# CONFIG_OUTER_CACHE is not set ++ ++# ++# Bus support ++# ++# CONFIG_PCI_SYSCALL is not set ++# CONFIG_ARCH_SUPPORTS_MSI is not set ++# CONFIG_PCCARD is not set ++ ++# ++# Kernel Features ++# ++# CONFIG_TICK_ONESHOT is not set ++# CONFIG_PREEMPT is not set ++# CONFIG_NO_IDLE_HZ is not set ++CONFIG_HZ=200 ++CONFIG_AEABI=y ++# CONFIG_OABI_COMPAT is not set ++# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set ++CONFIG_SELECT_MEMORY_MODEL=y ++CONFIG_FLATMEM_MANUAL=y ++# CONFIG_DISCONTIGMEM_MANUAL is not set ++# CONFIG_SPARSEMEM_MANUAL is not set ++CONFIG_FLATMEM=y ++CONFIG_FLAT_NODE_MEM_MAP=y ++# CONFIG_SPARSEMEM_STATIC is not set ++# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set ++CONFIG_SPLIT_PTLOCK_CPUS=4096 ++# CONFIG_RESOURCES_64BIT is not set ++CONFIG_ZONE_DMA_FLAG=1 ++CONFIG_BOUNCE=y ++CONFIG_VIRT_TO_BUS=y ++CONFIG_ALIGNMENT_TRAP=y ++ ++# ++# Boot options ++# ++CONFIG_ZBOOT_ROM_TEXT=0x0 ++CONFIG_ZBOOT_ROM_BSS=0x0 ++CONFIG_CMDLINE="console=ttySAC0 root=/dev/ram0" ++# CONFIG_XIP_KERNEL is not set ++# CONFIG_KEXEC is not set ++ ++# ++# Floating point emulation ++# ++ ++# ++# At least one emulation must be selected ++# ++ ++# ++# Userspace binary formats ++# ++CONFIG_BINFMT_ELF=y ++CONFIG_BINFMT_AOUT=y ++# CONFIG_BINFMT_MISC is not set ++ ++# ++# Power management options ++# ++# CONFIG_PM is not set ++CONFIG_ARCH_SUSPEND_POSSIBLE=y ++ ++# ++# Networking ++# ++CONFIG_NET=y ++ ++# ++# Networking options ++# ++CONFIG_PACKET=y ++CONFIG_PACKET_MMAP=y ++CONFIG_UNIX=y ++# CONFIG_NET_KEY is not set ++CONFIG_INET=y ++# CONFIG_IP_MULTICAST is not set ++# CONFIG_IP_ADVANCED_ROUTER is not set ++CONFIG_IP_FIB_HASH=y ++# CONFIG_IP_PNP is not set ++# CONFIG_NET_IPIP is not set ++# CONFIG_NET_IPGRE is not set ++# CONFIG_ARPD is not set ++# CONFIG_SYN_COOKIES is not set ++# CONFIG_INET_AH is not set ++# CONFIG_INET_ESP is not set ++# CONFIG_INET_IPCOMP is not set ++# CONFIG_INET_XFRM_TUNNEL is not set ++# CONFIG_INET_TUNNEL is not set ++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set ++# CONFIG_INET_XFRM_MODE_TUNNEL is not set ++# CONFIG_INET_XFRM_MODE_BEET is not set ++# CONFIG_INET_LRO is not set ++# CONFIG_INET_DIAG is not set ++# CONFIG_TCP_CONG_ADVANCED is not set ++CONFIG_TCP_CONG_CUBIC=y ++CONFIG_DEFAULT_TCP_CONG="cubic" ++# CONFIG_TCP_MD5SIG is not set ++CONFIG_IPV6=y ++# CONFIG_IPV6_PRIVACY is not set ++# CONFIG_IPV6_ROUTER_PREF is not set ++# CONFIG_IPV6_OPTIMISTIC_DAD is not set ++# CONFIG_INET6_AH is not set ++# CONFIG_INET6_ESP is not set ++# CONFIG_INET6_IPCOMP is not set ++# CONFIG_IPV6_MIP6 is not set ++# CONFIG_INET6_XFRM_TUNNEL is not set ++# CONFIG_INET6_TUNNEL is not set ++# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set ++# CONFIG_INET6_XFRM_MODE_TUNNEL is not set ++# CONFIG_INET6_XFRM_MODE_BEET is not set ++# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set ++# CONFIG_IPV6_SIT is not set ++# CONFIG_IPV6_TUNNEL is not set ++# CONFIG_IPV6_MULTIPLE_TABLES is not set ++# CONFIG_NETWORK_SECMARK is not set ++# CONFIG_NETFILTER is not set ++# CONFIG_IP_DCCP is not set ++# CONFIG_IP_SCTP is not set ++# CONFIG_TIPC is not set ++# CONFIG_ATM is not set ++# CONFIG_BRIDGE is not set ++# CONFIG_VLAN_8021Q is not set ++# CONFIG_DECNET is not set ++# CONFIG_LLC2 is not set ++# CONFIG_IPX is not set ++# CONFIG_ATALK is not set ++# CONFIG_X25 is not set ++# CONFIG_LAPB is not set ++# CONFIG_ECONET is not set ++# CONFIG_WAN_ROUTER is not set ++# CONFIG_NET_SCHED is not set ++ ++# ++# Network testing ++# ++# CONFIG_NET_PKTGEN is not set ++# CONFIG_HAMRADIO is not set ++# CONFIG_CAN is not set ++# CONFIG_IRDA is not set ++# CONFIG_BT is not set ++# CONFIG_AF_RXRPC is not set ++ ++# ++# Wireless ++# ++# CONFIG_CFG80211 is not set ++CONFIG_WIRELESS_EXT=y ++# CONFIG_MAC80211 is not set ++CONFIG_IEEE80211=y ++# CONFIG_IEEE80211_DEBUG is not set ++# CONFIG_IEEE80211_CRYPT_WEP is not set ++# CONFIG_IEEE80211_CRYPT_CCMP is not set ++# CONFIG_IEEE80211_CRYPT_TKIP is not set ++# CONFIG_IEEE80211_SOFTMAC is not set ++# CONFIG_RFKILL is not set ++# CONFIG_NET_9P is not set ++ ++# ++# Device Drivers ++# ++ ++# ++# Generic Driver Options ++# ++CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" ++CONFIG_STANDALONE=y ++CONFIG_PREVENT_FIRMWARE_BUILD=y ++CONFIG_FW_LOADER=y ++# CONFIG_SYS_HYPERVISOR is not set ++# CONFIG_CONNECTOR is not set ++CONFIG_MTD=y ++# CONFIG_MTD_DEBUG is not set ++# CONFIG_MTD_CONCAT is not set ++CONFIG_MTD_PARTITIONS=y ++# CONFIG_MTD_REDBOOT_PARTS is not set ++# CONFIG_MTD_CMDLINE_PARTS is not set ++# CONFIG_MTD_AFS_PARTS is not set ++ ++# ++# User Modules And Translation Layers ++# ++CONFIG_MTD_CHAR=y ++CONFIG_MTD_BLKDEVS=y ++CONFIG_MTD_BLOCK=y ++# CONFIG_FTL is not set ++# CONFIG_NFTL is not set ++# CONFIG_INFTL is not set ++# CONFIG_RFD_FTL is not set ++# CONFIG_SSFDC is not set ++# CONFIG_MTD_OOPS is not set ++ ++# ++# RAM/ROM/Flash chip drivers ++# ++# CONFIG_MTD_CFI is not set ++# CONFIG_MTD_JEDECPROBE is not set ++CONFIG_MTD_MAP_BANK_WIDTH_1=y ++CONFIG_MTD_MAP_BANK_WIDTH_2=y ++CONFIG_MTD_MAP_BANK_WIDTH_4=y ++# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set ++# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set ++# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set ++CONFIG_MTD_CFI_I1=y ++CONFIG_MTD_CFI_I2=y ++# CONFIG_MTD_CFI_I4 is not set ++# CONFIG_MTD_CFI_I8 is not set ++# CONFIG_MTD_RAM is not set ++# CONFIG_MTD_ROM is not set ++# CONFIG_MTD_ABSENT is not set ++ ++# ++# Mapping drivers for chip access ++# ++# CONFIG_MTD_COMPLEX_MAPPINGS is not set ++# CONFIG_MTD_PLATRAM is not set ++ ++# ++# Self-contained MTD device drivers ++# ++# CONFIG_MTD_DATAFLASH is not set ++# CONFIG_MTD_M25P80 is not set ++# CONFIG_MTD_SLRAM is not set ++# CONFIG_MTD_PHRAM is not set ++# CONFIG_MTD_MTDRAM is not set ++# CONFIG_MTD_BLOCK2MTD is not set ++ ++# ++# Disk-On-Chip Device Drivers ++# ++# CONFIG_MTD_DOC2000 is not set ++# CONFIG_MTD_DOC2001 is not set ++# CONFIG_MTD_DOC2001PLUS is not set ++CONFIG_MTD_NAND=y ++CONFIG_MTD_NAND_VERIFY_WRITE=y ++# CONFIG_MTD_NAND_ECC_SMC is not set ++# CONFIG_MTD_NAND_MUSEUM_IDS is not set ++CONFIG_MTD_NAND_IDS=y ++CONFIG_MTD_NAND_S3C2410=y ++# CONFIG_MTD_NAND_S3C2410_DEBUG is not set ++# CONFIG_MTD_NAND_S3C2410_HWECC is not set ++# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set ++# CONFIG_MTD_NAND_DISKONCHIP is not set ++# CONFIG_MTD_NAND_NANDSIM is not set ++# CONFIG_MTD_NAND_PLATFORM is not set ++# CONFIG_MTD_ONENAND is not set ++ ++# ++# UBI - Unsorted block images ++# ++# CONFIG_MTD_UBI is not set ++# CONFIG_PARPORT is not set ++CONFIG_BLK_DEV=y ++# CONFIG_BLK_DEV_COW_COMMON is not set ++CONFIG_BLK_DEV_LOOP=y ++# CONFIG_BLK_DEV_CRYPTOLOOP is not set ++# CONFIG_BLK_DEV_NBD is not set ++CONFIG_BLK_DEV_RAM=y ++CONFIG_BLK_DEV_RAM_COUNT=4 ++CONFIG_BLK_DEV_RAM_SIZE=4096 ++# CONFIG_BLK_DEV_XIP is not set ++# CONFIG_CDROM_PKTCDVD is not set ++# CONFIG_ATA_OVER_ETH is not set ++# CONFIG_MISC_DEVICES is not set ++CONFIG_HAVE_IDE=y ++# CONFIG_IDE is not set ++ ++# ++# SCSI device support ++# ++# CONFIG_RAID_ATTRS is not set ++# CONFIG_SCSI is not set ++# CONFIG_SCSI_DMA is not set ++# CONFIG_SCSI_NETLINK is not set ++# CONFIG_ATA is not set ++# CONFIG_MD is not set ++CONFIG_NETDEVICES=y ++# CONFIG_NETDEVICES_MULTIQUEUE is not set ++# CONFIG_DUMMY is not set ++# CONFIG_BONDING is not set ++# CONFIG_MACVLAN is not set ++# CONFIG_EQUALIZER is not set ++# CONFIG_TUN is not set ++# CONFIG_VETH is not set ++# CONFIG_NET_ETHERNET is not set ++# CONFIG_NETDEV_1000 is not set ++# CONFIG_NETDEV_10000 is not set ++ ++# ++# Wireless LAN ++# ++# CONFIG_WLAN_PRE80211 is not set ++CONFIG_WLAN_80211=y ++CONFIG_LIBERTAS=m ++CONFIG_LIBERTAS_SDIO=m ++# CONFIG_LIBERTAS_DEBUG is not set ++# CONFIG_HOSTAP is not set ++# CONFIG_WAN is not set ++# CONFIG_PPP is not set ++# CONFIG_SLIP is not set ++# CONFIG_NETCONSOLE is not set ++# CONFIG_NETPOLL is not set ++# CONFIG_NET_POLL_CONTROLLER is not set ++# CONFIG_ISDN is not set ++ ++# ++# Input device support ++# ++CONFIG_INPUT=y ++# CONFIG_INPUT_FF_MEMLESS is not set ++# CONFIG_INPUT_POLLDEV is not set ++ ++# ++# Userland interfaces ++# ++CONFIG_INPUT_MOUSEDEV=y ++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set ++CONFIG_INPUT_MOUSEDEV_SCREEN_X=320 ++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240 ++# CONFIG_INPUT_JOYDEV is not set ++CONFIG_INPUT_EVDEV=y ++# CONFIG_INPUT_EVBUG is not set ++# CONFIG_INPUT_GENERICLEDS is not set ++ ++# ++# Input Device Drivers ++# ++# CONFIG_INPUT_KEYBOARD is not set ++# CONFIG_INPUT_MOUSE is not set ++# CONFIG_INPUT_JOYSTICK is not set ++# CONFIG_INPUT_TABLET is not set ++CONFIG_INPUT_TOUCHSCREEN=y ++# CONFIG_TOUCHSCREEN_ADS7846 is not set ++# CONFIG_TOUCHSCREEN_FUJITSU is not set ++CONFIG_TOUCHSCREEN_S3C2410=y ++# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set ++# CONFIG_TOUCHSCREEN_GUNZE is not set ++# CONFIG_TOUCHSCREEN_ELO is not set ++# CONFIG_TOUCHSCREEN_MTOUCH is not set ++# CONFIG_TOUCHSCREEN_MK712 is not set ++# CONFIG_TOUCHSCREEN_PENMOUNT is not set ++# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set ++# CONFIG_TOUCHSCREEN_TOUCHWIN is not set ++# CONFIG_TOUCHSCREEN_UCB1400 is not set ++# CONFIG_INPUT_MISC is not set ++ ++# ++# Hardware I/O ports ++# ++CONFIG_SERIO=y ++CONFIG_SERIO_SERPORT=y ++# CONFIG_SERIO_LIBPS2 is not set ++# CONFIG_SERIO_RAW is not set ++# CONFIG_GAMEPORT is not set ++ ++# ++# Character devices ++# ++CONFIG_VT=y ++CONFIG_VT_CONSOLE=y ++CONFIG_HW_CONSOLE=y ++CONFIG_VT_HW_CONSOLE_BINDING=y ++# CONFIG_SERIAL_NONSTANDARD is not set ++# CONFIG_INTELLIHEAD is not set ++ ++# ++# Serial drivers ++# ++# CONFIG_SERIAL_8250 is not set ++ ++# ++# Non-8250 serial port support ++# ++CONFIG_SERIAL_S3C2410=y ++CONFIG_SERIAL_S3C2410_CONSOLE=y ++CONFIG_SERIAL_CORE=y ++CONFIG_SERIAL_CORE_CONSOLE=y ++CONFIG_UNIX98_PTYS=y ++CONFIG_LEGACY_PTYS=y ++CONFIG_LEGACY_PTY_COUNT=32 ++# CONFIG_IPMI_HANDLER is not set ++# CONFIG_HW_RANDOM is not set ++# CONFIG_NVRAM is not set ++# CONFIG_R3964 is not set ++# CONFIG_RAW_DRIVER is not set ++# CONFIG_TCG_TPM is not set ++CONFIG_I2C=y ++CONFIG_I2C_BOARDINFO=y ++# CONFIG_I2C_CHARDEV is not set ++ ++# ++# I2C Algorithms ++# ++# CONFIG_I2C_ALGOBIT is not set ++# CONFIG_I2C_ALGOPCF is not set ++# CONFIG_I2C_ALGOPCA is not set ++ ++# ++# I2C Hardware Bus support ++# ++# CONFIG_I2C_GPIO is not set ++# CONFIG_I2C_OCORES is not set ++# CONFIG_I2C_PARPORT_LIGHT is not set ++CONFIG_I2C_S3C2410=y ++# CONFIG_I2C_SIMTEC is not set ++# CONFIG_I2C_TAOS_EVM is not set ++# CONFIG_I2C_STUB is not set ++ ++# ++# Miscellaneous I2C Chip support ++# ++# CONFIG_DS1682 is not set ++# CONFIG_SENSORS_EEPROM is not set ++# CONFIG_SENSORS_PCF8574 is not set ++# CONFIG_PCF8575 is not set ++# CONFIG_SENSORS_PCF8591 is not set ++# CONFIG_TPS65010 is not set ++# CONFIG_SENSORS_MAX6875 is not set ++# CONFIG_SENSORS_TSL2550 is not set ++# CONFIG_I2C_DEBUG_CORE is not set ++# CONFIG_I2C_DEBUG_ALGO is not set ++# CONFIG_I2C_DEBUG_BUS is not set ++# CONFIG_I2C_DEBUG_CHIP is not set ++ ++# ++# SPI support ++# ++CONFIG_SPI=y ++CONFIG_SPI_MASTER=y ++ ++# ++# SPI Master Controller Drivers ++# ++CONFIG_SPI_BITBANG=y ++CONFIG_SPI_S3C24XX=y ++CONFIG_SPI_S3C24XX_GPIO=y ++ ++# ++# SPI Protocol Masters ++# ++# CONFIG_SPI_AT25 is not set ++# CONFIG_SPI_SPIDEV is not set ++# CONFIG_SPI_TLE62X0 is not set ++# CONFIG_W1 is not set ++# CONFIG_POWER_SUPPLY is not set ++# CONFIG_HWMON is not set ++# CONFIG_WATCHDOG is not set ++ ++# ++# Sonics Silicon Backplane ++# ++CONFIG_SSB_POSSIBLE=y ++# CONFIG_SSB is not set ++ ++# ++# Multifunction device drivers ++# ++# CONFIG_MFD_SM501 is not set ++# CONFIG_MFD_ASIC3 is not set ++ ++# ++# Multimedia devices ++# ++# CONFIG_VIDEO_DEV is not set ++# CONFIG_DVB_CORE is not set ++# CONFIG_DAB is not set ++ ++# ++# Graphics support ++# ++# CONFIG_VGASTATE is not set ++# CONFIG_VIDEO_OUTPUT_CONTROL is not set ++CONFIG_FB=y ++# CONFIG_FIRMWARE_EDID is not set ++# CONFIG_FB_DDC is not set ++CONFIG_FB_CFB_FILLRECT=y ++CONFIG_FB_CFB_COPYAREA=y ++CONFIG_FB_CFB_IMAGEBLIT=y ++# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set ++# CONFIG_FB_SYS_FILLRECT is not set ++# CONFIG_FB_SYS_COPYAREA is not set ++# CONFIG_FB_SYS_IMAGEBLIT is not set ++# CONFIG_FB_SYS_FOPS is not set ++CONFIG_FB_DEFERRED_IO=y ++# CONFIG_FB_SVGALIB is not set ++# CONFIG_FB_MACMODES is not set ++# CONFIG_FB_BACKLIGHT is not set ++# CONFIG_FB_MODE_HELPERS is not set ++# CONFIG_FB_TILEBLITTING is not set ++ ++# ++# Frame buffer hardware drivers ++# ++# CONFIG_FB_S1D13XXX is not set ++CONFIG_FB_S3C2410=y ++# CONFIG_FB_S3C2410_DEBUG is not set ++# CONFIG_FB_VIRTUAL is not set ++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set ++ ++# ++# Display device support ++# ++# CONFIG_DISPLAY_SUPPORT is not set ++ ++# ++# Console display driver support ++# ++# CONFIG_VGA_CONSOLE is not set ++CONFIG_DUMMY_CONSOLE=y ++CONFIG_FRAMEBUFFER_CONSOLE=y ++# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set ++CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y ++# CONFIG_FONTS is not set ++CONFIG_FONT_8x8=y ++CONFIG_FONT_8x16=y ++CONFIG_LOGO=y ++# CONFIG_LOGO_LINUX_MONO is not set ++# CONFIG_LOGO_LINUX_VGA16 is not set ++# CONFIG_LOGO_LINUX_CLUT224 is not set ++CONFIG_LOGO_M8050_CLUT224=y ++ ++# ++# Sound ++# ++CONFIG_SOUND=y ++ ++# ++# Advanced Linux Sound Architecture ++# ++CONFIG_SND=y ++CONFIG_SND_TIMER=y ++CONFIG_SND_PCM=y ++CONFIG_SND_SEQUENCER=y ++# CONFIG_SND_SEQ_DUMMY is not set ++# CONFIG_SND_MIXER_OSS is not set ++# CONFIG_SND_PCM_OSS is not set ++# CONFIG_SND_SEQUENCER_OSS is not set ++# CONFIG_SND_DYNAMIC_MINORS is not set ++# CONFIG_SND_SUPPORT_OLD_API is not set ++# CONFIG_SND_VERBOSE_PROCFS is not set ++# CONFIG_SND_VERBOSE_PRINTK is not set ++# CONFIG_SND_DEBUG is not set ++ ++# ++# Generic devices ++# ++# CONFIG_SND_DUMMY is not set ++# CONFIG_SND_VIRMIDI is not set ++# CONFIG_SND_MTPAV is not set ++# CONFIG_SND_SERIAL_U16550 is not set ++# CONFIG_SND_MPU401 is not set ++ ++# ++# ALSA ARM devices ++# ++ ++# ++# SPI devices ++# ++ ++# ++# System on Chip audio support ++# ++CONFIG_SND_SOC=y ++CONFIG_SND_S3C24XX_SOC=y ++CONFIG_SND_S3C24XX_SOC_I2S=y ++CONFIG_SND_S3C24XX_SOC_M8050_WM8750=y ++# CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650 is not set ++ ++# ++# SoC Audio support for SuperH ++# ++ ++# ++# ALSA SoC audio for Freescale SOCs ++# ++CONFIG_SND_SOC_WM8750=y ++ ++# ++# Open Sound System ++# ++# CONFIG_SOUND_PRIME is not set ++# CONFIG_HID_SUPPORT is not set ++# CONFIG_USB_SUPPORT is not set ++CONFIG_MMC=y ++# CONFIG_MMC_DEBUG is not set ++# CONFIG_MMC_UNSAFE_RESUME is not set ++ ++# ++# MMC/SD Card Drivers ++# ++CONFIG_MMC_BLOCK=y ++CONFIG_MMC_BLOCK_BOUNCE=y ++# CONFIG_SDIO_UART is not set ++ ++# ++# MMC/SD Host Controller Drivers ++# ++CONFIG_MMC_SPI=y ++# CONFIG_MMC_S3C is not set ++# CONFIG_NEW_LEDS is not set ++CONFIG_RTC_LIB=y ++# CONFIG_RTC_CLASS is not set ++ ++# ++# File systems ++# ++CONFIG_EXT2_FS=y ++# CONFIG_EXT2_FS_XATTR is not set ++# CONFIG_EXT2_FS_XIP is not set ++# CONFIG_EXT3_FS is not set ++# CONFIG_EXT4DEV_FS is not set ++# CONFIG_REISERFS_FS is not set ++# CONFIG_JFS_FS is not set ++# CONFIG_FS_POSIX_ACL is not set ++# CONFIG_XFS_FS is not set ++# CONFIG_GFS2_FS is not set ++# CONFIG_OCFS2_FS is not set ++CONFIG_DNOTIFY=y ++CONFIG_INOTIFY=y ++CONFIG_INOTIFY_USER=y ++# CONFIG_QUOTA is not set ++# CONFIG_AUTOFS_FS is not set ++# CONFIG_AUTOFS4_FS is not set ++# CONFIG_FUSE_FS is not set ++ ++# ++# CD-ROM/DVD Filesystems ++# ++# CONFIG_ISO9660_FS is not set ++# CONFIG_UDF_FS is not set ++ ++# ++# DOS/FAT/NT Filesystems ++# ++# CONFIG_MSDOS_FS is not set ++# CONFIG_VFAT_FS is not set ++# CONFIG_NTFS_FS is not set ++ ++# ++# Pseudo filesystems ++# ++CONFIG_PROC_FS=y ++CONFIG_PROC_SYSCTL=y ++CONFIG_SYSFS=y ++CONFIG_TMPFS=y ++# CONFIG_TMPFS_POSIX_ACL is not set ++# CONFIG_HUGETLB_PAGE is not set ++# CONFIG_CONFIGFS_FS is not set ++ ++# ++# Miscellaneous filesystems ++# ++# CONFIG_ADFS_FS is not set ++# CONFIG_AFFS_FS is not set ++# CONFIG_HFS_FS is not set ++# CONFIG_HFSPLUS_FS is not set ++# CONFIG_BEFS_FS is not set ++# CONFIG_BFS_FS is not set ++# CONFIG_EFS_FS is not set ++CONFIG_JFFS2_FS=y ++CONFIG_JFFS2_FS_DEBUG=0 ++CONFIG_JFFS2_FS_WRITEBUFFER=y ++CONFIG_JFFS2_FS_WBUF_VERIFY=y ++# CONFIG_JFFS2_SUMMARY is not set ++# CONFIG_JFFS2_FS_XATTR is not set ++# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set ++CONFIG_JFFS2_ZLIB=y ++# CONFIG_JFFS2_LZO is not set ++CONFIG_JFFS2_RTIME=y ++# CONFIG_JFFS2_RUBIN is not set ++# CONFIG_CRAMFS is not set ++# CONFIG_VXFS_FS is not set ++# CONFIG_MINIX_FS is not set ++# CONFIG_HPFS_FS is not set ++# CONFIG_QNX4FS_FS is not set ++# CONFIG_ROMFS_FS is not set ++# CONFIG_SYSV_FS is not set ++# CONFIG_UFS_FS is not set ++# CONFIG_NETWORK_FILESYSTEMS is not set ++ ++# ++# Partition Types ++# ++# CONFIG_PARTITION_ADVANCED is not set ++CONFIG_MSDOS_PARTITION=y ++CONFIG_NLS=y ++CONFIG_NLS_DEFAULT="iso8859-1" ++CONFIG_NLS_CODEPAGE_437=y ++# CONFIG_NLS_CODEPAGE_737 is not set ++# CONFIG_NLS_CODEPAGE_775 is not set ++# CONFIG_NLS_CODEPAGE_850 is not set ++# CONFIG_NLS_CODEPAGE_852 is not set ++# CONFIG_NLS_CODEPAGE_855 is not set ++# CONFIG_NLS_CODEPAGE_857 is not set ++# CONFIG_NLS_CODEPAGE_860 is not set ++# CONFIG_NLS_CODEPAGE_861 is not set ++# CONFIG_NLS_CODEPAGE_862 is not set ++# CONFIG_NLS_CODEPAGE_863 is not set ++# CONFIG_NLS_CODEPAGE_864 is not set ++# CONFIG_NLS_CODEPAGE_865 is not set ++# CONFIG_NLS_CODEPAGE_866 is not set ++# CONFIG_NLS_CODEPAGE_869 is not set ++# CONFIG_NLS_CODEPAGE_936 is not set ++# CONFIG_NLS_CODEPAGE_950 is not set ++# CONFIG_NLS_CODEPAGE_932 is not set ++# CONFIG_NLS_CODEPAGE_949 is not set ++# CONFIG_NLS_CODEPAGE_874 is not set ++# CONFIG_NLS_ISO8859_8 is not set ++# CONFIG_NLS_CODEPAGE_1250 is not set ++# CONFIG_NLS_CODEPAGE_1251 is not set ++# CONFIG_NLS_ASCII is not set ++# CONFIG_NLS_ISO8859_1 is not set ++# CONFIG_NLS_ISO8859_2 is not set ++# CONFIG_NLS_ISO8859_3 is not set ++# CONFIG_NLS_ISO8859_4 is not set ++# CONFIG_NLS_ISO8859_5 is not set ++# CONFIG_NLS_ISO8859_6 is not set ++# CONFIG_NLS_ISO8859_7 is not set ++# CONFIG_NLS_ISO8859_9 is not set ++# CONFIG_NLS_ISO8859_13 is not set ++# CONFIG_NLS_ISO8859_14 is not set ++# CONFIG_NLS_ISO8859_15 is not set ++# CONFIG_NLS_KOI8_R is not set ++# CONFIG_NLS_KOI8_U is not set ++# CONFIG_NLS_UTF8 is not set ++# CONFIG_DLM is not set ++ ++# ++# Kernel hacking ++# ++CONFIG_PRINTK_TIME=y ++# CONFIG_ENABLE_WARN_DEPRECATED is not set ++# CONFIG_ENABLE_MUST_CHECK is not set ++# CONFIG_MAGIC_SYSRQ is not set ++# CONFIG_UNUSED_SYMBOLS is not set ++# CONFIG_DEBUG_FS is not set ++# CONFIG_HEADERS_CHECK is not set ++# CONFIG_DEBUG_KERNEL is not set ++CONFIG_FRAME_POINTER=y ++# CONFIG_SAMPLES is not set ++# CONFIG_DEBUG_USER is not set ++CONFIG_DEBUG_S3C_UART=1 ++ ++# ++# Security options ++# ++# CONFIG_KEYS is not set ++# CONFIG_SECURITY is not set ++# CONFIG_SECURITY_FILE_CAPABILITIES is not set ++# CONFIG_CRYPTO is not set ++ ++# ++# Library routines ++# ++CONFIG_BITREVERSE=y ++# CONFIG_CRC_CCITT is not set ++# CONFIG_CRC16 is not set ++CONFIG_CRC_ITU_T=y ++CONFIG_CRC32=y ++CONFIG_CRC7=y ++# CONFIG_LIBCRC32C is not set ++CONFIG_ZLIB_INFLATE=y ++CONFIG_ZLIB_DEFLATE=y ++CONFIG_PLIST=y ++CONFIG_HAS_IOMEM=y ++CONFIG_HAS_DMA=y +diff -X linux-git/Documentation/dontdiff -Naur linux-git/MAINTAINERS linux-2.6.25-m8050/MAINTAINERS +--- linux-git/MAINTAINERS 2008-11-10 12:20:12.000000000 +0100 ++++ linux-2.6.25-m8050/MAINTAINERS 2008-07-01 13:32:58.000000000 +0200 +@@ -3419,6 +3419,13 @@ + W: http://www.ibm.com/developerworks/linux/linux390/ + S: Supported + ++S3C24XX SD/MMC Driver ++P: Ben Dooks ++M: ben-linux@fluff.org ++L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) ++L: linux-kernel@vger.kernel.org ++S: Supported ++ + SAA7146 VIDEO4LINUX-2 DRIVER + P: Michael Hunold + M: michael@mihu.de +diff -X linux-git/Documentation/dontdiff -Naur linux-git/pm-config-base linux-2.6.25-m8050/pm-config-base +--- linux-git/pm-config-base 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/pm-config-base 2008-07-24 15:40:01.000000000 +0200 +@@ -0,0 +1,1000 @@ ++# ++# Automatically generated make config: don't edit ++# Linux kernel version: 2.6.25 ++# Thu Jul 24 07:48:15 2008 ++# ++CONFIG_ARM=y ++CONFIG_SYS_SUPPORTS_APM_EMULATION=y ++CONFIG_GENERIC_GPIO=y ++# CONFIG_GENERIC_TIME is not set ++# CONFIG_GENERIC_CLOCKEVENTS is not set ++CONFIG_MMU=y ++CONFIG_NO_IOPORT=y ++CONFIG_GENERIC_HARDIRQS=y ++CONFIG_STACKTRACE_SUPPORT=y ++CONFIG_LOCKDEP_SUPPORT=y ++CONFIG_TRACE_IRQFLAGS_SUPPORT=y ++CONFIG_HARDIRQS_SW_RESEND=y ++CONFIG_GENERIC_IRQ_PROBE=y ++CONFIG_RWSEM_GENERIC_SPINLOCK=y ++# CONFIG_ARCH_HAS_ILOG2_U32 is not set ++# CONFIG_ARCH_HAS_ILOG2_U64 is not set ++CONFIG_GENERIC_HWEIGHT=y ++CONFIG_GENERIC_CALIBRATE_DELAY=y ++CONFIG_ARCH_SUPPORTS_AOUT=y ++CONFIG_ZONE_DMA=y ++CONFIG_VECTORS_BASE=0xffff0000 ++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" ++ ++# ++# General setup ++# ++CONFIG_EXPERIMENTAL=y ++CONFIG_BROKEN_ON_SMP=y ++CONFIG_INIT_ENV_ARG_LIMIT=32 ++CONFIG_LOCALVERSION="" ++CONFIG_LOCALVERSION_AUTO=y ++CONFIG_SWAP=y ++CONFIG_SYSVIPC=y ++CONFIG_SYSVIPC_SYSCTL=y ++# CONFIG_POSIX_MQUEUE is not set ++# CONFIG_BSD_PROCESS_ACCT is not set ++# CONFIG_TASKSTATS is not set ++# CONFIG_AUDIT is not set ++# CONFIG_IKCONFIG is not set ++CONFIG_LOG_BUF_SHIFT=16 ++# CONFIG_CGROUPS is not set ++CONFIG_GROUP_SCHED=y ++CONFIG_FAIR_GROUP_SCHED=y ++# CONFIG_RT_GROUP_SCHED is not set ++CONFIG_USER_SCHED=y ++# CONFIG_CGROUP_SCHED is not set ++CONFIG_SYSFS_DEPRECATED=y ++CONFIG_SYSFS_DEPRECATED_V2=y ++# CONFIG_RELAY is not set ++CONFIG_NAMESPACES=y ++# CONFIG_UTS_NS is not set ++# CONFIG_IPC_NS is not set ++# CONFIG_USER_NS is not set ++# CONFIG_PID_NS is not set ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_INITRAMFS_SOURCE="" ++CONFIG_CC_OPTIMIZE_FOR_SIZE=y ++CONFIG_SYSCTL=y ++# CONFIG_EMBEDDED is not set ++CONFIG_UID16=y ++CONFIG_SYSCTL_SYSCALL=y ++CONFIG_KALLSYMS=y ++# CONFIG_KALLSYMS_ALL is not set ++# CONFIG_KALLSYMS_EXTRA_PASS is not set ++CONFIG_HOTPLUG=y ++CONFIG_PRINTK=y ++CONFIG_BUG=y ++CONFIG_ELF_CORE=y ++CONFIG_COMPAT_BRK=y ++CONFIG_BASE_FULL=y ++CONFIG_FUTEX=y ++CONFIG_ANON_INODES=y ++CONFIG_EPOLL=y ++CONFIG_SIGNALFD=y ++CONFIG_TIMERFD=y ++CONFIG_EVENTFD=y ++CONFIG_SHMEM=y ++CONFIG_VM_EVENT_COUNTERS=y ++CONFIG_SLAB=y ++# CONFIG_SLUB is not set ++# CONFIG_SLOB is not set ++# CONFIG_PROFILING is not set ++# CONFIG_MARKERS is not set ++CONFIG_HAVE_OPROFILE=y ++# CONFIG_KPROBES is not set ++CONFIG_HAVE_KPROBES=y ++CONFIG_HAVE_KRETPROBES=y ++CONFIG_PROC_PAGE_MONITOR=y ++CONFIG_SLABINFO=y ++CONFIG_RT_MUTEXES=y ++# CONFIG_TINY_SHMEM is not set ++CONFIG_BASE_SMALL=0 ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++# CONFIG_MODULE_FORCE_UNLOAD is not set ++# CONFIG_MODVERSIONS is not set ++# CONFIG_MODULE_SRCVERSION_ALL is not set ++# CONFIG_KMOD is not set ++CONFIG_BLOCK=y ++# CONFIG_LBD is not set ++# CONFIG_BLK_DEV_IO_TRACE is not set ++# CONFIG_LSF is not set ++# CONFIG_BLK_DEV_BSG is not set ++ ++# ++# IO Schedulers ++# ++CONFIG_IOSCHED_NOOP=y ++CONFIG_IOSCHED_AS=y ++CONFIG_IOSCHED_DEADLINE=y ++CONFIG_IOSCHED_CFQ=y ++CONFIG_DEFAULT_AS=y ++# CONFIG_DEFAULT_DEADLINE is not set ++# CONFIG_DEFAULT_CFQ is not set ++# CONFIG_DEFAULT_NOOP is not set ++CONFIG_DEFAULT_IOSCHED="anticipatory" ++CONFIG_CLASSIC_RCU=y ++ ++# ++# System Type ++# ++# CONFIG_ARCH_AAEC2000 is not set ++# CONFIG_ARCH_INTEGRATOR is not set ++# CONFIG_ARCH_REALVIEW is not set ++# CONFIG_ARCH_VERSATILE is not set ++# CONFIG_ARCH_AT91 is not set ++# CONFIG_ARCH_CLPS7500 is not set ++# CONFIG_ARCH_CLPS711X is not set ++# CONFIG_ARCH_CO285 is not set ++# CONFIG_ARCH_EBSA110 is not set ++# CONFIG_ARCH_EP93XX is not set ++# CONFIG_ARCH_FOOTBRIDGE is not set ++# CONFIG_ARCH_NETX is not set ++# CONFIG_ARCH_H720X is not set ++# CONFIG_ARCH_IMX is not set ++# CONFIG_ARCH_IOP13XX is not set ++# CONFIG_ARCH_IOP32X is not set ++# CONFIG_ARCH_IOP33X is not set ++# CONFIG_ARCH_IXP23XX is not set ++# CONFIG_ARCH_IXP2000 is not set ++# CONFIG_ARCH_IXP4XX is not set ++# CONFIG_ARCH_L7200 is not set ++# CONFIG_ARCH_KS8695 is not set ++# CONFIG_ARCH_NS9XXX is not set ++# CONFIG_ARCH_MXC is not set ++# CONFIG_ARCH_ORION is not set ++# CONFIG_ARCH_PNX4008 is not set ++# CONFIG_ARCH_PXA is not set ++# CONFIG_ARCH_RPC is not set ++# CONFIG_ARCH_SA1100 is not set ++CONFIG_ARCH_S3C2410=y ++# CONFIG_ARCH_SHARK is not set ++# CONFIG_ARCH_LH7A40X is not set ++# CONFIG_ARCH_DAVINCI is not set ++# CONFIG_ARCH_OMAP is not set ++# CONFIG_ARCH_MSM7X00A is not set ++CONFIG_PLAT_S3C24XX=y ++CONFIG_CPU_S3C244X=y ++CONFIG_S3C2410_DMA=y ++# CONFIG_S3C2410_DMA_DEBUG is not set ++CONFIG_PLAT_S3C=y ++CONFIG_CPU_LLSERIAL_S3C2440_ONLY=y ++CONFIG_CPU_LLSERIAL_S3C2440=y ++ ++# ++# Boot options ++# ++# CONFIG_S3C_BOOT_ERROR_RESET is not set ++ ++# ++# Power management ++# ++CONFIG_S3C2410_PM_DEBUG=y ++# CONFIG_S3C2410_PM_CHECK is not set ++CONFIG_S3C_LOWLEVEL_UART_PORT=1 ++ ++# ++# S3C2400 Machines ++# ++CONFIG_S3C2410_PM=y ++CONFIG_S3C2410_GPIO=y ++CONFIG_S3C2410_CLOCK=y ++ ++# ++# S3C2410 Machines ++# ++# CONFIG_ARCH_SMDK2410 is not set ++# CONFIG_ARCH_H1940 is not set ++# CONFIG_MACH_N30 is not set ++# CONFIG_ARCH_BAST is not set ++# CONFIG_MACH_OTOM is not set ++# CONFIG_MACH_AML_M5900 is not set ++# CONFIG_MACH_VR1000 is not set ++# CONFIG_MACH_QT2410 is not set ++ ++# ++# S3C2412 Machines ++# ++# CONFIG_MACH_SMDK2413 is not set ++# CONFIG_MACH_SMDK2412 is not set ++# CONFIG_MACH_VSTMS is not set ++CONFIG_CPU_S3C2440=y ++CONFIG_S3C2440_DMA=y ++ ++# ++# S3C2440 Machines ++# ++CONFIG_MACH_AML_M8050=y ++# CONFIG_MACH_ANUBIS is not set ++# CONFIG_MACH_OSIRIS is not set ++# CONFIG_MACH_RX3715 is not set ++# CONFIG_ARCH_S3C2440 is not set ++# CONFIG_MACH_NEXCODER_2440 is not set ++ ++# ++# S3C2442 Machines ++# ++ ++# ++# S3C2443 Machines ++# ++# CONFIG_MACH_SMDK2443 is not set ++ ++# ++# Processor Type ++# ++CONFIG_CPU_32=y ++CONFIG_CPU_ARM920T=y ++CONFIG_CPU_32v4T=y ++CONFIG_CPU_ABRT_EV4T=y ++CONFIG_CPU_CACHE_V4WT=y ++CONFIG_CPU_CACHE_VIVT=y ++CONFIG_CPU_COPY_V4WB=y ++CONFIG_CPU_TLB_V4WBI=y ++CONFIG_CPU_CP15=y ++CONFIG_CPU_CP15_MMU=y ++ ++# ++# Processor Features ++# ++# CONFIG_ARM_THUMB is not set ++# CONFIG_CPU_ICACHE_DISABLE is not set ++# CONFIG_CPU_DCACHE_DISABLE is not set ++# CONFIG_CPU_DCACHE_WRITETHROUGH is not set ++# CONFIG_OUTER_CACHE is not set ++ ++# ++# Bus support ++# ++# CONFIG_PCI_SYSCALL is not set ++# CONFIG_ARCH_SUPPORTS_MSI is not set ++# CONFIG_PCCARD is not set ++ ++# ++# Kernel Features ++# ++# CONFIG_TICK_ONESHOT is not set ++# CONFIG_PREEMPT is not set ++# CONFIG_NO_IDLE_HZ is not set ++CONFIG_HZ=200 ++CONFIG_AEABI=y ++# CONFIG_OABI_COMPAT is not set ++# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set ++CONFIG_SELECT_MEMORY_MODEL=y ++CONFIG_FLATMEM_MANUAL=y ++# CONFIG_DISCONTIGMEM_MANUAL is not set ++# CONFIG_SPARSEMEM_MANUAL is not set ++CONFIG_FLATMEM=y ++CONFIG_FLAT_NODE_MEM_MAP=y ++# CONFIG_SPARSEMEM_STATIC is not set ++# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set ++CONFIG_SPLIT_PTLOCK_CPUS=4096 ++# CONFIG_RESOURCES_64BIT is not set ++CONFIG_ZONE_DMA_FLAG=1 ++CONFIG_BOUNCE=y ++CONFIG_VIRT_TO_BUS=y ++CONFIG_ALIGNMENT_TRAP=y ++ ++# ++# Boot options ++# ++CONFIG_ZBOOT_ROM_TEXT=0x0 ++CONFIG_ZBOOT_ROM_BSS=0x0 ++CONFIG_CMDLINE="console=ttySAC0 root=/dev/ram0" ++# CONFIG_XIP_KERNEL is not set ++# CONFIG_KEXEC is not set ++ ++# ++# Floating point emulation ++# ++ ++# ++# At least one emulation must be selected ++# ++ ++# ++# Userspace binary formats ++# ++CONFIG_BINFMT_ELF=y ++CONFIG_BINFMT_AOUT=y ++# CONFIG_BINFMT_MISC is not set ++ ++# ++# Power management options ++# ++CONFIG_PM=y ++# CONFIG_PM_LEGACY is not set ++CONFIG_PM_DEBUG=y ++CONFIG_PM_VERBOSE=y ++CONFIG_CAN_PM_TRACE=y ++CONFIG_PM_SLEEP=y ++CONFIG_SUSPEND=y ++CONFIG_SUSPEND_FREEZER=y ++# CONFIG_APM_EMULATION is not set ++CONFIG_ARCH_SUSPEND_POSSIBLE=y ++ ++# ++# Networking ++# ++CONFIG_NET=y ++ ++# ++# Networking options ++# ++CONFIG_PACKET=y ++CONFIG_PACKET_MMAP=y ++CONFIG_UNIX=y ++# CONFIG_NET_KEY is not set ++CONFIG_INET=y ++# CONFIG_IP_MULTICAST is not set ++# CONFIG_IP_ADVANCED_ROUTER is not set ++CONFIG_IP_FIB_HASH=y ++# CONFIG_IP_PNP is not set ++# CONFIG_NET_IPIP is not set ++# CONFIG_NET_IPGRE is not set ++# CONFIG_ARPD is not set ++# CONFIG_SYN_COOKIES is not set ++# CONFIG_INET_AH is not set ++# CONFIG_INET_ESP is not set ++# CONFIG_INET_IPCOMP is not set ++# CONFIG_INET_XFRM_TUNNEL is not set ++# CONFIG_INET_TUNNEL is not set ++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set ++# CONFIG_INET_XFRM_MODE_TUNNEL is not set ++# CONFIG_INET_XFRM_MODE_BEET is not set ++# CONFIG_INET_LRO is not set ++# CONFIG_INET_DIAG is not set ++# CONFIG_TCP_CONG_ADVANCED is not set ++CONFIG_TCP_CONG_CUBIC=y ++CONFIG_DEFAULT_TCP_CONG="cubic" ++# CONFIG_TCP_MD5SIG is not set ++CONFIG_IPV6=y ++# CONFIG_IPV6_PRIVACY is not set ++# CONFIG_IPV6_ROUTER_PREF is not set ++# CONFIG_IPV6_OPTIMISTIC_DAD is not set ++# CONFIG_INET6_AH is not set ++# CONFIG_INET6_ESP is not set ++# CONFIG_INET6_IPCOMP is not set ++# CONFIG_IPV6_MIP6 is not set ++# CONFIG_INET6_XFRM_TUNNEL is not set ++# CONFIG_INET6_TUNNEL is not set ++# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set ++# CONFIG_INET6_XFRM_MODE_TUNNEL is not set ++# CONFIG_INET6_XFRM_MODE_BEET is not set ++# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set ++# CONFIG_IPV6_SIT is not set ++# CONFIG_IPV6_TUNNEL is not set ++# CONFIG_IPV6_MULTIPLE_TABLES is not set ++# CONFIG_NETWORK_SECMARK is not set ++# CONFIG_NETFILTER is not set ++# CONFIG_IP_DCCP is not set ++# CONFIG_IP_SCTP is not set ++# CONFIG_TIPC is not set ++# CONFIG_ATM is not set ++# CONFIG_BRIDGE is not set ++# CONFIG_VLAN_8021Q is not set ++# CONFIG_DECNET is not set ++# CONFIG_LLC2 is not set ++# CONFIG_IPX is not set ++# CONFIG_ATALK is not set ++# CONFIG_X25 is not set ++# CONFIG_LAPB is not set ++# CONFIG_ECONET is not set ++# CONFIG_WAN_ROUTER is not set ++# CONFIG_NET_SCHED is not set ++ ++# ++# Network testing ++# ++# CONFIG_NET_PKTGEN is not set ++# CONFIG_HAMRADIO is not set ++# CONFIG_CAN is not set ++# CONFIG_IRDA is not set ++# CONFIG_BT is not set ++# CONFIG_AF_RXRPC is not set ++ ++# ++# Wireless ++# ++# CONFIG_CFG80211 is not set ++CONFIG_WIRELESS_EXT=y ++# CONFIG_MAC80211 is not set ++CONFIG_IEEE80211=y ++# CONFIG_IEEE80211_DEBUG is not set ++# CONFIG_IEEE80211_CRYPT_WEP is not set ++# CONFIG_IEEE80211_CRYPT_CCMP is not set ++# CONFIG_IEEE80211_CRYPT_TKIP is not set ++# CONFIG_IEEE80211_SOFTMAC is not set ++# CONFIG_RFKILL is not set ++# CONFIG_NET_9P is not set ++ ++# ++# Device Drivers ++# ++ ++# ++# Generic Driver Options ++# ++CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" ++CONFIG_STANDALONE=y ++CONFIG_PREVENT_FIRMWARE_BUILD=y ++CONFIG_FW_LOADER=y ++# CONFIG_DEBUG_DRIVER is not set ++# CONFIG_DEBUG_DEVRES is not set ++# CONFIG_SYS_HYPERVISOR is not set ++# CONFIG_CONNECTOR is not set ++CONFIG_MTD=y ++# CONFIG_MTD_DEBUG is not set ++# CONFIG_MTD_CONCAT is not set ++CONFIG_MTD_PARTITIONS=y ++# CONFIG_MTD_REDBOOT_PARTS is not set ++# CONFIG_MTD_CMDLINE_PARTS is not set ++# CONFIG_MTD_AFS_PARTS is not set ++ ++# ++# User Modules And Translation Layers ++# ++CONFIG_MTD_CHAR=y ++CONFIG_MTD_BLKDEVS=y ++CONFIG_MTD_BLOCK=y ++# CONFIG_FTL is not set ++# CONFIG_NFTL is not set ++# CONFIG_INFTL is not set ++# CONFIG_RFD_FTL is not set ++# CONFIG_SSFDC is not set ++# CONFIG_MTD_OOPS is not set ++ ++# ++# RAM/ROM/Flash chip drivers ++# ++# CONFIG_MTD_CFI is not set ++# CONFIG_MTD_JEDECPROBE is not set ++CONFIG_MTD_MAP_BANK_WIDTH_1=y ++CONFIG_MTD_MAP_BANK_WIDTH_2=y ++CONFIG_MTD_MAP_BANK_WIDTH_4=y ++# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set ++# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set ++# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set ++CONFIG_MTD_CFI_I1=y ++CONFIG_MTD_CFI_I2=y ++# CONFIG_MTD_CFI_I4 is not set ++# CONFIG_MTD_CFI_I8 is not set ++# CONFIG_MTD_RAM is not set ++# CONFIG_MTD_ROM is not set ++# CONFIG_MTD_ABSENT is not set ++ ++# ++# Mapping drivers for chip access ++# ++# CONFIG_MTD_COMPLEX_MAPPINGS is not set ++# CONFIG_MTD_PLATRAM is not set ++ ++# ++# Self-contained MTD device drivers ++# ++# CONFIG_MTD_DATAFLASH is not set ++# CONFIG_MTD_M25P80 is not set ++# CONFIG_MTD_SLRAM is not set ++# CONFIG_MTD_PHRAM is not set ++# CONFIG_MTD_MTDRAM is not set ++# CONFIG_MTD_BLOCK2MTD is not set ++ ++# ++# Disk-On-Chip Device Drivers ++# ++# CONFIG_MTD_DOC2000 is not set ++# CONFIG_MTD_DOC2001 is not set ++# CONFIG_MTD_DOC2001PLUS is not set ++CONFIG_MTD_NAND=y ++# CONFIG_MTD_NAND_VERIFY_WRITE is not set ++# CONFIG_MTD_NAND_ECC_SMC is not set ++# CONFIG_MTD_NAND_MUSEUM_IDS is not set ++CONFIG_MTD_NAND_IDS=y ++CONFIG_MTD_NAND_S3C2410=y ++# CONFIG_MTD_NAND_S3C2410_DEBUG is not set ++# CONFIG_MTD_NAND_S3C2410_HWECC is not set ++# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set ++# CONFIG_MTD_NAND_DISKONCHIP is not set ++# CONFIG_MTD_NAND_NANDSIM is not set ++# CONFIG_MTD_NAND_PLATFORM is not set ++# CONFIG_MTD_ONENAND is not set ++ ++# ++# UBI - Unsorted block images ++# ++# CONFIG_MTD_UBI is not set ++# CONFIG_PARPORT is not set ++CONFIG_BLK_DEV=y ++# CONFIG_BLK_DEV_COW_COMMON is not set ++CONFIG_BLK_DEV_LOOP=y ++# CONFIG_BLK_DEV_CRYPTOLOOP is not set ++# CONFIG_BLK_DEV_NBD is not set ++CONFIG_BLK_DEV_RAM=y ++CONFIG_BLK_DEV_RAM_COUNT=8 ++CONFIG_BLK_DEV_RAM_SIZE=8192 ++# CONFIG_BLK_DEV_XIP is not set ++# CONFIG_CDROM_PKTCDVD is not set ++# CONFIG_ATA_OVER_ETH is not set ++# CONFIG_MISC_DEVICES is not set ++CONFIG_HAVE_IDE=y ++# CONFIG_IDE is not set ++ ++# ++# SCSI device support ++# ++# CONFIG_RAID_ATTRS is not set ++# CONFIG_SCSI is not set ++# CONFIG_SCSI_DMA is not set ++# CONFIG_SCSI_NETLINK is not set ++# CONFIG_ATA is not set ++# CONFIG_MD is not set ++CONFIG_NETDEVICES=y ++# CONFIG_NETDEVICES_MULTIQUEUE is not set ++# CONFIG_DUMMY is not set ++# CONFIG_BONDING is not set ++# CONFIG_MACVLAN is not set ++# CONFIG_EQUALIZER is not set ++# CONFIG_TUN is not set ++# CONFIG_VETH is not set ++# CONFIG_NET_ETHERNET is not set ++# CONFIG_NETDEV_1000 is not set ++# CONFIG_NETDEV_10000 is not set ++ ++# ++# Wireless LAN ++# ++# CONFIG_WLAN_PRE80211 is not set ++CONFIG_WLAN_80211=y ++CONFIG_LIBERTAS=m ++CONFIG_LIBERTAS_SDIO=m ++CONFIG_LIBERTAS_DEBUG=y ++# CONFIG_HOSTAP is not set ++# CONFIG_WAN is not set ++# CONFIG_PPP is not set ++# CONFIG_SLIP is not set ++# CONFIG_NETCONSOLE is not set ++# CONFIG_NETPOLL is not set ++# CONFIG_NET_POLL_CONTROLLER is not set ++# CONFIG_ISDN is not set ++ ++# ++# Input device support ++# ++CONFIG_INPUT=y ++# CONFIG_INPUT_FF_MEMLESS is not set ++CONFIG_INPUT_POLLDEV=y ++ ++# ++# Userland interfaces ++# ++CONFIG_INPUT_MOUSEDEV=y ++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set ++CONFIG_INPUT_MOUSEDEV_SCREEN_X=320 ++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240 ++# CONFIG_INPUT_JOYDEV is not set ++CONFIG_INPUT_EVDEV=y ++# CONFIG_INPUT_EVBUG is not set ++ ++# ++# Input Device Drivers ++# ++CONFIG_INPUT_KEYBOARD=y ++CONFIG_KEYBOARD_ATKBD=y ++# CONFIG_KEYBOARD_SUNKBD is not set ++# CONFIG_KEYBOARD_LKKBD is not set ++# CONFIG_KEYBOARD_XTKBD is not set ++# CONFIG_KEYBOARD_NEWTON is not set ++# CONFIG_KEYBOARD_STOWAWAY is not set ++CONFIG_KEYBOARD_M8050=y ++CONFIG_KEYBOARD_GPIO=y ++CONFIG_INPUT_MOUSE=y ++# CONFIG_MOUSE_PS2 is not set ++# CONFIG_MOUSE_SERIAL is not set ++# CONFIG_MOUSE_VSXXXAA is not set ++CONFIG_MOUSE_GPIO=y ++# CONFIG_INPUT_JOYSTICK is not set ++# CONFIG_INPUT_TABLET is not set ++CONFIG_INPUT_TOUCHSCREEN=y ++# CONFIG_TOUCHSCREEN_ADS7846 is not set ++# CONFIG_TOUCHSCREEN_FUJITSU is not set ++CONFIG_TOUCHSCREEN_S3C2410=y ++# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set ++# CONFIG_TOUCHSCREEN_GUNZE is not set ++# CONFIG_TOUCHSCREEN_ELO is not set ++# CONFIG_TOUCHSCREEN_MTOUCH is not set ++# CONFIG_TOUCHSCREEN_MK712 is not set ++# CONFIG_TOUCHSCREEN_PENMOUNT is not set ++# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set ++# CONFIG_TOUCHSCREEN_TOUCHWIN is not set ++# CONFIG_TOUCHSCREEN_UCB1400 is not set ++# CONFIG_INPUT_MISC is not set ++ ++# ++# Hardware I/O ports ++# ++CONFIG_SERIO=y ++CONFIG_SERIO_SERPORT=y ++CONFIG_SERIO_LIBPS2=y ++# CONFIG_SERIO_RAW is not set ++# CONFIG_GAMEPORT is not set ++ ++# ++# Character devices ++# ++CONFIG_VT=y ++CONFIG_VT_CONSOLE=y ++CONFIG_HW_CONSOLE=y ++CONFIG_VT_HW_CONSOLE_BINDING=y ++CONFIG_SERIAL_NONSTANDARD=y ++# CONFIG_N_HDLC is not set ++# CONFIG_RISCOM8 is not set ++# CONFIG_SPECIALIX is not set ++# CONFIG_RIO is not set ++# CONFIG_STALDRV is not set ++CONFIG_INTELLIHEAD=m ++ ++# ++# Serial drivers ++# ++CONFIG_SERIAL_8250=y ++CONFIG_SERIAL_8250_CONSOLE=y ++CONFIG_SERIAL_8250_NR_UARTS=8 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=4 ++CONFIG_SERIAL_8250_EXTENDED=y ++CONFIG_SERIAL_8250_MANY_PORTS=y ++CONFIG_SERIAL_8250_SHARE_IRQ=y ++# CONFIG_SERIAL_8250_DETECT_IRQ is not set ++# CONFIG_SERIAL_8250_RSA is not set ++ ++# ++# Non-8250 serial port support ++# ++CONFIG_SERIAL_S3C2410=y ++CONFIG_SERIAL_S3C2410_CONSOLE=y ++CONFIG_SERIAL_CORE=y ++CONFIG_SERIAL_CORE_CONSOLE=y ++CONFIG_UNIX98_PTYS=y ++CONFIG_LEGACY_PTYS=y ++CONFIG_LEGACY_PTY_COUNT=256 ++# CONFIG_IPMI_HANDLER is not set ++CONFIG_HW_RANDOM=y ++# CONFIG_NVRAM is not set ++# CONFIG_R3964 is not set ++# CONFIG_RAW_DRIVER is not set ++# CONFIG_TCG_TPM is not set ++# CONFIG_I2C is not set ++ ++# ++# SPI support ++# ++CONFIG_SPI=y ++# CONFIG_SPI_DEBUG is not set ++CONFIG_SPI_MASTER=y ++ ++# ++# SPI Master Controller Drivers ++# ++CONFIG_SPI_BITBANG=y ++CONFIG_SPI_S3C24XX=y ++CONFIG_SPI_S3C24XX_GPIO=y ++ ++# ++# SPI Protocol Masters ++# ++# CONFIG_SPI_AT25 is not set ++# CONFIG_SPI_SPIDEV is not set ++# CONFIG_SPI_TLE62X0 is not set ++# CONFIG_W1 is not set ++# CONFIG_POWER_SUPPLY is not set ++# CONFIG_HWMON is not set ++# CONFIG_WATCHDOG is not set ++ ++# ++# Sonics Silicon Backplane ++# ++CONFIG_SSB_POSSIBLE=y ++# CONFIG_SSB is not set ++ ++# ++# Multifunction device drivers ++# ++# CONFIG_MFD_SM501 is not set ++# CONFIG_MFD_ASIC3 is not set ++ ++# ++# Multimedia devices ++# ++# CONFIG_VIDEO_DEV is not set ++# CONFIG_DVB_CORE is not set ++# CONFIG_DAB is not set ++ ++# ++# Graphics support ++# ++# CONFIG_VGASTATE is not set ++# CONFIG_VIDEO_OUTPUT_CONTROL is not set ++CONFIG_FB=y ++# CONFIG_FIRMWARE_EDID is not set ++# CONFIG_FB_DDC is not set ++CONFIG_FB_CFB_FILLRECT=y ++CONFIG_FB_CFB_COPYAREA=y ++CONFIG_FB_CFB_IMAGEBLIT=y ++# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set ++# CONFIG_FB_SYS_FILLRECT is not set ++# CONFIG_FB_SYS_COPYAREA is not set ++# CONFIG_FB_SYS_IMAGEBLIT is not set ++# CONFIG_FB_SYS_FOPS is not set ++CONFIG_FB_DEFERRED_IO=y ++# CONFIG_FB_SVGALIB is not set ++# CONFIG_FB_MACMODES is not set ++# CONFIG_FB_BACKLIGHT is not set ++# CONFIG_FB_MODE_HELPERS is not set ++# CONFIG_FB_TILEBLITTING is not set ++ ++# ++# Frame buffer hardware drivers ++# ++# CONFIG_FB_S1D13XXX is not set ++CONFIG_FB_S3C2410=y ++CONFIG_FB_S3C2410_DEBUG=y ++# CONFIG_FB_VIRTUAL is not set ++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set ++ ++# ++# Display device support ++# ++CONFIG_DISPLAY_SUPPORT=y ++ ++# ++# Display hardware drivers ++# ++ ++# ++# Console display driver support ++# ++# CONFIG_VGA_CONSOLE is not set ++CONFIG_DUMMY_CONSOLE=y ++CONFIG_FRAMEBUFFER_CONSOLE=y ++# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set ++CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y ++CONFIG_FONTS=y ++CONFIG_FONT_8x8=y ++# CONFIG_FONT_8x16 is not set ++# CONFIG_FONT_6x11 is not set ++# CONFIG_FONT_7x14 is not set ++# CONFIG_FONT_PEARL_8x8 is not set ++# CONFIG_FONT_ACORN_8x8 is not set ++# CONFIG_FONT_MINI_4x6 is not set ++# CONFIG_FONT_SUN8x16 is not set ++# CONFIG_FONT_SUN12x22 is not set ++# CONFIG_FONT_10x18 is not set ++CONFIG_LOGO=y ++# CONFIG_LOGO_LINUX_MONO is not set ++CONFIG_LOGO_LINUX_VGA16=y ++# CONFIG_LOGO_LINUX_CLUT224 is not set ++ ++# ++# Sound ++# ++# CONFIG_SOUND is not set ++# CONFIG_HID_SUPPORT is not set ++# CONFIG_USB_SUPPORT is not set ++CONFIG_MMC=y ++# CONFIG_MMC_DEBUG is not set ++CONFIG_MMC_UNSAFE_RESUME=y ++ ++# ++# MMC/SD Card Drivers ++# ++CONFIG_MMC_BLOCK=y ++CONFIG_MMC_BLOCK_BOUNCE=y ++# CONFIG_SDIO_UART is not set ++ ++# ++# MMC/SD Host Controller Drivers ++# ++CONFIG_MMC_SPI=y ++CONFIG_MMC_S3C=m ++# CONFIG_NEW_LEDS is not set ++CONFIG_RTC_LIB=y ++# CONFIG_RTC_CLASS is not set ++ ++# ++# File systems ++# ++CONFIG_EXT2_FS=y ++# CONFIG_EXT2_FS_XATTR is not set ++# CONFIG_EXT2_FS_XIP is not set ++# CONFIG_EXT3_FS is not set ++# CONFIG_EXT4DEV_FS is not set ++# CONFIG_REISERFS_FS is not set ++# CONFIG_JFS_FS is not set ++# CONFIG_FS_POSIX_ACL is not set ++# CONFIG_XFS_FS is not set ++# CONFIG_GFS2_FS is not set ++# CONFIG_OCFS2_FS is not set ++CONFIG_DNOTIFY=y ++CONFIG_INOTIFY=y ++CONFIG_INOTIFY_USER=y ++# CONFIG_QUOTA is not set ++# CONFIG_AUTOFS_FS is not set ++# CONFIG_AUTOFS4_FS is not set ++# CONFIG_FUSE_FS is not set ++ ++# ++# CD-ROM/DVD Filesystems ++# ++# CONFIG_ISO9660_FS is not set ++# CONFIG_UDF_FS is not set ++ ++# ++# DOS/FAT/NT Filesystems ++# ++# CONFIG_MSDOS_FS is not set ++# CONFIG_VFAT_FS is not set ++# CONFIG_NTFS_FS is not set ++ ++# ++# Pseudo filesystems ++# ++CONFIG_PROC_FS=y ++CONFIG_PROC_SYSCTL=y ++CONFIG_SYSFS=y ++CONFIG_TMPFS=y ++# CONFIG_TMPFS_POSIX_ACL is not set ++# CONFIG_HUGETLB_PAGE is not set ++# CONFIG_CONFIGFS_FS is not set ++ ++# ++# Miscellaneous filesystems ++# ++# CONFIG_ADFS_FS is not set ++# CONFIG_AFFS_FS is not set ++# CONFIG_HFS_FS is not set ++# CONFIG_HFSPLUS_FS is not set ++# CONFIG_BEFS_FS is not set ++# CONFIG_BFS_FS is not set ++# CONFIG_EFS_FS is not set ++CONFIG_JFFS2_FS=y ++CONFIG_JFFS2_FS_DEBUG=0 ++CONFIG_JFFS2_FS_WRITEBUFFER=y ++# CONFIG_JFFS2_FS_WBUF_VERIFY is not set ++# CONFIG_JFFS2_SUMMARY is not set ++# CONFIG_JFFS2_FS_XATTR is not set ++# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set ++CONFIG_JFFS2_ZLIB=y ++# CONFIG_JFFS2_LZO is not set ++CONFIG_JFFS2_RTIME=y ++# CONFIG_JFFS2_RUBIN is not set ++# CONFIG_CRAMFS is not set ++# CONFIG_VXFS_FS is not set ++# CONFIG_MINIX_FS is not set ++# CONFIG_HPFS_FS is not set ++# CONFIG_QNX4FS_FS is not set ++# CONFIG_ROMFS_FS is not set ++# CONFIG_SYSV_FS is not set ++# CONFIG_UFS_FS is not set ++# CONFIG_NETWORK_FILESYSTEMS is not set ++ ++# ++# Partition Types ++# ++# CONFIG_PARTITION_ADVANCED is not set ++CONFIG_MSDOS_PARTITION=y ++CONFIG_NLS=y ++CONFIG_NLS_DEFAULT="iso8859-1" ++CONFIG_NLS_CODEPAGE_437=y ++# CONFIG_NLS_CODEPAGE_737 is not set ++# CONFIG_NLS_CODEPAGE_775 is not set ++# CONFIG_NLS_CODEPAGE_850 is not set ++# CONFIG_NLS_CODEPAGE_852 is not set ++# CONFIG_NLS_CODEPAGE_855 is not set ++# CONFIG_NLS_CODEPAGE_857 is not set ++# CONFIG_NLS_CODEPAGE_860 is not set ++# CONFIG_NLS_CODEPAGE_861 is not set ++# CONFIG_NLS_CODEPAGE_862 is not set ++# CONFIG_NLS_CODEPAGE_863 is not set ++# CONFIG_NLS_CODEPAGE_864 is not set ++# CONFIG_NLS_CODEPAGE_865 is not set ++# CONFIG_NLS_CODEPAGE_866 is not set ++# CONFIG_NLS_CODEPAGE_869 is not set ++# CONFIG_NLS_CODEPAGE_936 is not set ++# CONFIG_NLS_CODEPAGE_950 is not set ++# CONFIG_NLS_CODEPAGE_932 is not set ++# CONFIG_NLS_CODEPAGE_949 is not set ++# CONFIG_NLS_CODEPAGE_874 is not set ++# CONFIG_NLS_ISO8859_8 is not set ++# CONFIG_NLS_CODEPAGE_1250 is not set ++# CONFIG_NLS_CODEPAGE_1251 is not set ++# CONFIG_NLS_ASCII is not set ++# CONFIG_NLS_ISO8859_1 is not set ++# CONFIG_NLS_ISO8859_2 is not set ++# CONFIG_NLS_ISO8859_3 is not set ++# CONFIG_NLS_ISO8859_4 is not set ++# CONFIG_NLS_ISO8859_5 is not set ++# CONFIG_NLS_ISO8859_6 is not set ++# CONFIG_NLS_ISO8859_7 is not set ++# CONFIG_NLS_ISO8859_9 is not set ++# CONFIG_NLS_ISO8859_13 is not set ++# CONFIG_NLS_ISO8859_14 is not set ++# CONFIG_NLS_ISO8859_15 is not set ++# CONFIG_NLS_KOI8_R is not set ++# CONFIG_NLS_KOI8_U is not set ++# CONFIG_NLS_UTF8 is not set ++# CONFIG_DLM is not set ++ ++# ++# Kernel hacking ++# ++# CONFIG_PRINTK_TIME is not set ++CONFIG_ENABLE_WARN_DEPRECATED=y ++CONFIG_ENABLE_MUST_CHECK=y ++CONFIG_MAGIC_SYSRQ=y ++# CONFIG_UNUSED_SYMBOLS is not set ++# CONFIG_DEBUG_FS is not set ++# CONFIG_HEADERS_CHECK is not set ++CONFIG_DEBUG_KERNEL=y ++# CONFIG_DEBUG_SHIRQ is not set ++CONFIG_DETECT_SOFTLOCKUP=y ++CONFIG_SCHED_DEBUG=y ++# CONFIG_SCHEDSTATS is not set ++# CONFIG_TIMER_STATS is not set ++# CONFIG_DEBUG_SLAB is not set ++# CONFIG_DEBUG_RT_MUTEXES is not set ++# CONFIG_RT_MUTEX_TESTER is not set ++# CONFIG_DEBUG_SPINLOCK is not set ++CONFIG_DEBUG_MUTEXES=y ++# CONFIG_DEBUG_LOCK_ALLOC is not set ++# CONFIG_PROVE_LOCKING is not set ++# CONFIG_LOCK_STAT is not set ++# CONFIG_DEBUG_SPINLOCK_SLEEP is not set ++# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set ++# CONFIG_DEBUG_KOBJECT is not set ++CONFIG_DEBUG_BUGVERBOSE=y ++CONFIG_DEBUG_INFO=y ++# CONFIG_DEBUG_VM is not set ++# CONFIG_DEBUG_LIST is not set ++# CONFIG_DEBUG_SG is not set ++CONFIG_FRAME_POINTER=y ++# CONFIG_BOOT_PRINTK_DELAY is not set ++# CONFIG_RCU_TORTURE_TEST is not set ++# CONFIG_BACKTRACE_SELF_TEST is not set ++# CONFIG_FAULT_INJECTION is not set ++# CONFIG_SAMPLES is not set ++CONFIG_DEBUG_USER=y ++# CONFIG_DEBUG_ERRORS is not set ++# CONFIG_DEBUG_STACK_USAGE is not set ++CONFIG_DEBUG_LL=y ++# CONFIG_DEBUG_ICEDCC is not set ++# CONFIG_DEBUG_S3C_PORT is not set ++CONFIG_DEBUG_S3C_UART=1 ++ ++# ++# Security options ++# ++# CONFIG_KEYS is not set ++# CONFIG_SECURITY is not set ++# CONFIG_SECURITY_FILE_CAPABILITIES is not set ++# CONFIG_CRYPTO is not set ++ ++# ++# Library routines ++# ++CONFIG_BITREVERSE=y ++# CONFIG_CRC_CCITT is not set ++# CONFIG_CRC16 is not set ++CONFIG_CRC_ITU_T=y ++CONFIG_CRC32=y ++CONFIG_CRC7=y ++# CONFIG_LIBCRC32C is not set ++CONFIG_ZLIB_INFLATE=y ++CONFIG_ZLIB_DEFLATE=y ++CONFIG_PLIST=y ++CONFIG_HAS_IOMEM=y ++CONFIG_HAS_DMA=y +diff -X linux-git/Documentation/dontdiff -Naur linux-git/scripts/aml_logo.c linux-2.6.25-m8050/scripts/aml_logo.c +--- linux-git/scripts/aml_logo.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/scripts/aml_logo.c 2008-08-13 12:17:31.000000000 +0200 +@@ -0,0 +1,6442 @@ ++/* ++ * DO NOT EDIT THIS FILE! ++ * ++ * It was automatically generated from System_boot-aml.ppm ++ * ++ * Linux logo linux_logo ++ */ ++ ++#include ++ ++static unsigned char linux_logo_data[] __initdata = { ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x21, 0x21, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x20, ++ 0x20, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x20, ++ 0x20, 0x21, 0x20, 0x20, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x21, 0x21, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x21, 0x21, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x22, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, ++ 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62 ++}; ++ ++static unsigned char linux_logo_clut[] __initdata = { ++ 0x00, 0x00, 0x00, 0xc4, 0x62, 0x00, 0x02, 0x02, 0x02, 0x04, 0x02, 0x00, ++ 0x08, 0x04, 0x00, 0x0c, 0x06, 0x00, 0x0f, 0x08, 0x00, 0x13, 0x0a, 0x00, ++ 0x16, 0x0a, 0x00, 0x1a, 0x0c, 0x00, 0x1e, 0x0e, 0x00, 0x21, 0x10, 0x00, ++ 0x25, 0x12, 0x00, 0x28, 0x14, 0x00, 0x2c, 0x16, 0x00, 0x30, 0x18, 0x00, ++ 0x33, 0x1a, 0x00, 0x37, 0x1c, 0x00, 0x3a, 0x1d, 0x00, 0x3e, 0x1e, 0x00, ++ 0x42, 0x20, 0x00, 0x45, 0x22, 0x00, 0x49, 0x24, 0x00, 0x4c, 0x26, 0x00, ++ 0x50, 0x28, 0x00, 0x54, 0x2a, 0x00, 0x57, 0x2c, 0x00, 0x5b, 0x2e, 0x00, ++ 0x5e, 0x2f, 0x00, 0x62, 0x30, 0x00, 0x66, 0x32, 0x00, 0x6a, 0x34, 0x00, ++ 0x6d, 0x36, 0x00, 0x71, 0x38, 0x00, 0x74, 0x3a, 0x00, 0x78, 0x3c, 0x00, ++ 0x7c, 0x3e, 0x00, 0x7f, 0x40, 0x00, 0x83, 0x42, 0x00, 0x86, 0x42, 0x00, ++ 0x8a, 0x44, 0x00, 0x8e, 0x46, 0x00, 0x91, 0x48, 0x00, 0x95, 0x4a, 0x00, ++ 0x98, 0x4c, 0x00, 0x9c, 0x4e, 0x00, 0xa0, 0x50, 0x00, 0xa3, 0x52, 0x00, ++ 0xa7, 0x54, 0x00, 0xaa, 0x55, 0x00, 0xae, 0x56, 0x00, 0xb2, 0x58, 0x00, ++ 0xb5, 0x5a, 0x00, 0xb9, 0x5c, 0x00, 0xbd, 0x5e, 0x00, 0xc0, 0x60, 0x00, ++ 0xc8, 0x64, 0x00, 0xcb, 0x66, 0x00, 0xcf, 0x68, 0x00, 0xd2, 0x68, 0x00, ++ 0xd6, 0x6a, 0x00, 0xda, 0x6c, 0x00, 0xdd, 0x6e, 0x00, 0xe1, 0x70, 0x00, ++ 0xe4, 0x72, 0x00, 0xe8, 0x74, 0x00, 0xec, 0x76, 0x00 ++}; ++ ++struct linux_logo linux_logo __initdata = { ++ .type = LINUX_LOGO_CLUT224, ++ .width = 240, ++ .height = 320, ++ .clutsize = 67, ++ .clut = linux_logo_clut, ++ .data = linux_logo_data ++}; ++ +diff -X linux-git/Documentation/dontdiff -Naur linux-git/scripts/System_boot-aml.ppm linux-2.6.25-m8050/scripts/System_boot-aml.ppm +--- linux-git/scripts/System_boot-aml.ppm 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/scripts/System_boot-aml.ppm 2008-08-13 12:17:24.000000000 +0200 +@@ -0,0 +1,230404 @@ ++P3 ++# CREATOR: The GIMP's PNM Filter Version 1.0 ++240 320 ++255 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++2 ++2 ++2 ++2 ++2 ++2 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++4 ++2 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++8 ++4 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++12 ++6 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++15 ++8 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++19 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++22 ++10 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++26 ++12 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++30 ++14 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++33 ++16 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++37 ++18 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++40 ++20 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++44 ++22 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++48 ++24 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++51 ++26 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++55 ++28 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++58 ++29 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++62 ++30 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++66 ++32 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++69 ++34 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++73 ++36 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++76 ++38 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++80 ++40 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++84 ++42 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++87 ++44 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++91 ++46 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++94 ++47 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++98 ++48 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++102 ++50 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++106 ++52 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++109 ++54 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++113 ++56 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++116 ++58 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++120 ++60 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++124 ++62 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++127 ++64 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++131 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++134 ++66 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++138 ++68 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++142 ++70 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++145 ++72 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++149 ++74 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++152 ++76 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++156 ++78 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++160 ++80 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++163 ++82 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++167 ++84 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++170 ++85 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++174 ++86 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++178 ++88 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++181 ++90 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++185 ++92 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++189 ++94 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++192 ++96 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++196 ++98 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++200 ++100 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++203 ++102 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++207 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++210 ++104 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++214 ++106 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++218 ++108 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++221 ++110 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++225 ++112 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++228 ++114 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++232 ++116 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 ++236 ++118 ++0 +diff -X linux-git/Documentation/dontdiff -Naur linux-git/sound/soc/codecs/wm8750.c linux-2.6.25-m8050/sound/soc/codecs/wm8750.c +--- linux-git/sound/soc/codecs/wm8750.c 2008-11-10 12:20:38.000000000 +0100 ++++ linux-2.6.25-m8050/sound/soc/codecs/wm8750.c 2008-10-27 15:38:27.000000000 +0100 +@@ -110,6 +110,7 @@ + data[0] = (reg << 1) | ((value >> 8) & 0x0001); + data[1] = value & 0x00ff; + ++// printk("WM8750: writing 0x%x to register 0x%x\n",value,reg); + wm8750_write_reg_cache (codec, reg, value); + if (codec->hw_write(codec->control_data, data, 2) == 2) + return 0; +@@ -520,7 +521,7 @@ + {12000000, 16000, 750, 0xa, 0x1}, + + /* 22.05k */ +- {11289600, 22050, 512, 0x1a, 0x0}, ++ {11289600, 22050, 256, 0x1a, 0x0}, + {16934400, 22050, 768, 0x1b, 0x0}, + {12000000, 22050, 544, 0x1b, 0x1}, + +@@ -636,6 +637,7 @@ + return -EINVAL; + } + ++ printk("writing to IFACE: 0x%x\n",iface); + wm8750_write(codec, WM8750_IFACE, iface); + return 0; + } +@@ -654,20 +656,29 @@ + /* bit size */ + switch (params_format(params)) { + case SNDRV_PCM_FORMAT_S16_LE: ++ printk("PCM FORMAT S16_LE!\n"); + break; + case SNDRV_PCM_FORMAT_S20_3LE: ++ printk("PCM FORMAT S20_LE!\n"); + iface |= 0x0004; + break; + case SNDRV_PCM_FORMAT_S24_LE: ++ printk("PCM FORMAT S24_LE!\n"); + iface |= 0x0008; + break; + case SNDRV_PCM_FORMAT_S32_LE: ++ printk("PCM FORMAT S32_LE!\n"); + iface |= 0x000c; + break; + } + + /* set iface & srate */ + wm8750_write(codec, WM8750_IFACE, iface); ++ printk("iface=0x%x\n",iface); ++ printk("coeff=%d\n",coeff); ++ printk("coeff_div=0x%x\n",coeff_div[coeff].sr); ++ printk("coeff_div=0x%x\n",coeff_div[coeff].usb); ++ + if (coeff >= 0) + wm8750_write(codec, WM8750_SRATE, srate | + (coeff_div[coeff].sr << 1) | coeff_div[coeff].usb); +@@ -680,10 +691,14 @@ + struct snd_soc_codec *codec = dai->codec; + u16 mute_reg = wm8750_read_reg_cache(codec, WM8750_ADCDAC) & 0xfff7; + +- if (mute) ++ if (mute){ + wm8750_write(codec, WM8750_ADCDAC, mute_reg | 0x8); +- else ++ printk("mute on!\n"); ++ } ++ else { + wm8750_write(codec, WM8750_ADCDAC, mute_reg); ++ printk("mute off!\n"); ++ } + return 0; + } + +diff -X linux-git/Documentation/dontdiff -Naur linux-git/sound/soc/s3c24xx/Kconfig linux-2.6.25-m8050/sound/soc/s3c24xx/Kconfig +--- linux-git/sound/soc/s3c24xx/Kconfig 2008-11-10 12:20:38.000000000 +0100 ++++ linux-2.6.25-m8050/sound/soc/s3c24xx/Kconfig 2008-05-19 09:34:46.000000000 +0200 +@@ -28,6 +28,15 @@ + Say Y if you want to add support for SoC audio on smdk2440 + with the WM8753. + ++config SND_S3C24XX_SOC_M8050_WM8750 ++ tristate "SoC I2S Audio support for M8050 - WM8750" ++ depends on SND_S3C24XX_SOC && MACH_AML_M8050 ++ select SND_S3C24XX_SOC_I2S ++ select SND_SOC_WM8750 ++ help ++ Say Y if you want to add support for SoC audio on AML M8050 ++ with the WM8750. ++ + config SND_S3C24XX_SOC_SMDK2443_WM9710 + tristate "SoC AC97 Audio support for SMDK2443 - WM9710" + depends on SND_S3C24XX_SOC && MACH_SMDK2443 +diff -X linux-git/Documentation/dontdiff -Naur linux-git/sound/soc/s3c24xx/m8050_wm8750.c linux-2.6.25-m8050/sound/soc/s3c24xx/m8050_wm8750.c +--- linux-git/sound/soc/s3c24xx/m8050_wm8750.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/sound/soc/s3c24xx/m8050_wm8750.c 2008-10-22 11:53:25.000000000 +0200 +@@ -0,0 +1,297 @@ ++/* sound/soc/s3c24xx/m8050_wm8750.c ++ * ++ * Based on sound/soc/s3c24xx/jive_wm8750.c ++ * Copyright 2007 Simtec Electronics ++ * Author: Ben Dooks ++ * ++ * Based on sound/soc/pxa/spitz.c ++ * Copyright 2005 Wolfson Microelectronics PLC. ++ * Copyright 2005 Openedhand Ltd. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License as published by the ++ * Free Software Foundation; either version 2 of the License, or (at your ++ * option) any later version. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "s3c24xx-pcm.h" ++#include "s3c24xx-i2s.h" ++ ++#include "../codecs/wm8750.h" ++ ++static const char *audio_map[][2] = { ++ [0] = { "Internal Speaker", "LOUT2" }, ++ [1] = { "Internal Speaker", "ROUT2" }, ++ [2] = { NULL, NULL }, ++ ++/* ++ [0] = { "Headphone Jack", "LOUT1" }, ++ [1] = { "Headphone Jack", "ROUT1" }, ++ [2] = { "Internal Speaker", "LOUT2" }, ++ [3] = { "Internal Speaker", "ROUT2" }, ++ [4] = { "LINPUT1", "Line Input" }, ++ [5] = { "RINPUT1", "Line Input" }, ++ [6] = { NULL, NULL }, ++*/ ++}; ++ ++static const struct snd_soc_dapm_widget wm8750_dapm_widgets[] = { ++// SND_SOC_DAPM_HP("Headphone Jack", NULL), ++ SND_SOC_DAPM_SPK("Internal Speaker", NULL), ++// SND_SOC_DAPM_LINE("Line In", NULL), ++}; ++ ++static int m8050_startup(struct snd_pcm_substream *substream) ++{ ++ struct snd_soc_pcm_runtime *rtd = substream->private_data; ++ struct snd_soc_codec *codec = rtd->socdev->codec; ++ ++ ++ snd_soc_dapm_sync_endpoints(codec); ++ ++ return 0; ++} ++ ++static inline int codec_set_dai_fmt(struct snd_soc_codec_dai *dai, ++ unsigned int format) ++{ ++ return dai->dai_ops.set_fmt(dai, format); ++} ++ ++static inline int codec_set_dai_sysclk(struct snd_soc_codec_dai *dai, ++ unsigned int clk, ++ unsigned int arg, ++ unsigned int arg2) ++{ ++ return dai->dai_ops.set_sysclk(dai, clk, arg, arg2); ++} ++ ++static inline int cpu_set_dai_fmt(struct snd_soc_cpu_dai *dai, ++ unsigned int format) ++{ ++ return dai->dai_ops.set_fmt(dai, format); ++} ++ ++static inline int cpu_set_dai_sysclk(struct snd_soc_cpu_dai *dai, ++ unsigned int clk, ++ unsigned int arg, ++ unsigned int arg2) ++{ ++ return dai->dai_ops.set_sysclk(dai, clk, arg, arg2); ++} ++ ++static inline int cpu_set_dai_clkdiv(struct snd_soc_cpu_dai *dai, ++ unsigned int clk, ++ unsigned int arg) ++{ ++ return dai->dai_ops.set_clkdiv(dai, clk, arg); ++} ++ ++ ++ ++static int m8050_hw_params(struct snd_pcm_substream *substream, ++ struct snd_pcm_hw_params *params) ++{ ++ struct snd_soc_pcm_runtime *rtd = substream->private_data; ++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai; ++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai; ++ unsigned int clk = 0; ++ unsigned int pll_out = 0, bclk = 0; ++ int ret = 0; ++ unsigned long iis_clkrate; ++ ++ iis_clkrate = s3c24xx_i2s_get_clockrate(); ++ ++ switch (params_rate(params)) { ++ case 8000: ++ case 16000: ++ case 48000: ++ case 96000: ++ case 8012: ++ case 11025: ++ case 22050: ++ case 44100: ++ clk = 12000000; ++ bclk=0; ++ break; ++ } ++ ++ /* set codec DAI configuration */ ++ ret = codec_set_dai_fmt(codec_dai, SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM); ++ if (ret < 0) ++ return ret; ++ ++ /* set cpu DAI configuration */ ++ ret = cpu_set_dai_fmt(cpu_dai, SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM); ++ if (ret < 0) ++ return ret; ++ ++ /* set the codec system clock for DAC and ADC */ ++ ret = codec_set_dai_sysclk(codec_dai, WM8750_SYSCLK, clk, ++ SND_SOC_CLOCK_IN); ++ if (ret < 0) ++ return ret; ++ ++ /* set MCLK division for sample rate */ ++ ret = cpu_dai->dai_ops.set_sysclk(cpu_dai, S3C24XX_CLKSRC_MPLL, ++ 12000000,SND_SOC_CLOCK_OUT ); ++ if (ret < 0) ++ return ret; ++ ++ /* set MCLK division for sample rate */ ++ ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, S3C24XX_DIV_MCLK, ++ S3C2410_IISMOD_32FS ); ++ if (ret < 0) ++ return ret; ++ ++ /* set BCLK division for sample rate */ ++ ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, S3C24XX_DIV_BCLK, ++ 384 ); ++ if (ret < 0) ++ return ret; ++ ++ /* set prescaler division for sample rate */ ++ ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, S3C24XX_DIV_PRESCALER, ++ S3C24XX_PRESCALE(bclk,bclk)); ++ if (ret < 0) ++ return ret; ++ ++ return 0; ++ ++} ++ ++static struct snd_soc_ops m8050_ops = { ++ .startup = m8050_startup, ++ .hw_params = m8050_hw_params, ++}; ++ ++static const struct snd_kcontrol_new wm8750_m8050_controls[] = { ++ ++}; ++ ++static int m8050_wm8750_init(struct snd_soc_codec *codec) ++{ ++ int i, err; ++ ++// snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1); ++ snd_soc_dapm_set_endpoint(codec, "Internal Speaker", 1); ++ snd_soc_dapm_set_endpoint(codec, "Line In", 0); ++ ++ /* These endpoints are not being used. */ ++ snd_soc_dapm_set_endpoint(codec, "ROUT1", 0); ++ snd_soc_dapm_set_endpoint(codec, "LOUT1", 0); ++ ++ snd_soc_dapm_set_endpoint(codec, "LINPUT1", 0); ++ snd_soc_dapm_set_endpoint(codec, "LINPUT2", 0); ++ snd_soc_dapm_set_endpoint(codec, "LINPUT3", 0); ++ snd_soc_dapm_set_endpoint(codec, "RINPUT2", 0); ++ snd_soc_dapm_set_endpoint(codec, "RINPUT3", 0); ++ snd_soc_dapm_set_endpoint(codec, "OUT3", 0); ++ snd_soc_dapm_set_endpoint(codec, "MONO", 0); ++ ++ /* Add m8050 specific controls */ ++ for (i = 0; i < ARRAY_SIZE(wm8750_m8050_controls); i++) { ++ err = snd_ctl_add(codec->card, ++ snd_soc_cnew(&wm8750_m8050_controls[i], codec, NULL)); ++ if (err < 0) ++ return err; ++ } ++ ++ /* Add m8050 specific widgets */ ++ for (i = 0; i < ARRAY_SIZE(wm8750_dapm_widgets); i++) { ++ snd_soc_dapm_new_control(codec, &wm8750_dapm_widgets[i]); ++ } ++ ++ /* Set up m8050 specific audio path audio_map */ ++ for (i = 0; audio_map[i][0] != NULL; i++) { ++ printk(KERN_INFO "mapping %s => %s\n", audio_map[i][0], audio_map[i][1]); ++ snd_soc_dapm_connect_input(codec, audio_map[i][0], NULL, ++ audio_map[i][1]); ++ } ++ ++ snd_soc_dapm_sync_endpoints(codec); ++ return 0; ++} ++ ++static struct snd_soc_dai_link m8050_dai = { ++ .name = "wm8750", ++ .stream_name = "WM8750", ++ .cpu_dai = &s3c24xx_i2s_dai, ++ .codec_dai = &wm8750_dai, ++ .init = m8050_wm8750_init, ++ .ops = &m8050_ops, ++}; ++ ++/* m8050 audio machine driver */ ++static struct snd_soc_machine snd_soc_machine_m8050 = { ++ .name = "M8050", ++ .dai_link = &m8050_dai, ++ .num_links = 1, ++}; ++ ++/* m8050 audio private data */ ++static struct wm8750_setup_data m8050_wm8750_setup = { ++ .i2c_address = 0x1a, ++}; ++ ++/* m8050 audio subsystem */ ++static struct snd_soc_device m8050_snd_devdata = { ++ .machine = &snd_soc_machine_m8050, ++ .platform = &s3c24xx_soc_platform, ++ .codec_dev = &soc_codec_dev_wm8750, ++ .codec_data = &m8050_wm8750_setup, ++}; ++ ++static struct platform_device *m8050_snd_device; ++ ++static int __init m8050_init(void) ++{ ++ int ret; ++ ++ printk("M8050 WM8750 Audio support\n"); ++ ++ if (!machine_is_aml_m8050()) ++ return 0; ++ ++ m8050_snd_device = platform_device_alloc("soc-audio", -1); ++ if (!m8050_snd_device) ++ return -ENOMEM; ++ ++ platform_set_drvdata(m8050_snd_device, &m8050_snd_devdata); ++ m8050_snd_devdata.dev = &m8050_snd_device->dev; ++ ret = platform_device_add(m8050_snd_device); ++ ++ if (ret) ++ platform_device_put(m8050_snd_device); ++ ++ return ret; ++} ++ ++static void __exit m8050_exit(void) ++{ ++ platform_device_unregister(m8050_snd_device); ++} ++ ++module_init(m8050_init); ++module_exit(m8050_exit); ++ ++MODULE_AUTHOR("David Anders"); ++MODULE_DESCRIPTION("ALSA SoC M8050"); ++MODULE_LICENSE("GPL"); +diff -X linux-git/Documentation/dontdiff -Naur linux-git/sound/soc/s3c24xx/m8050_wm8750-working.c linux-2.6.25-m8050/sound/soc/s3c24xx/m8050_wm8750-working.c +--- linux-git/sound/soc/s3c24xx/m8050_wm8750-working.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/sound/soc/s3c24xx/m8050_wm8750-working.c 2008-10-15 15:52:28.000000000 +0200 +@@ -0,0 +1,338 @@ ++/* sound/soc/s3c24xx/m8050_wm8750.c ++ * ++ * Based on sound/soc/s3c24xx/jive_wm8750.c ++ * Copyright 2007 Simtec Electronics ++ * Author: Ben Dooks ++ * ++ * Based on sound/soc/pxa/spitz.c ++ * Copyright 2005 Wolfson Microelectronics PLC. ++ * Copyright 2005 Openedhand Ltd. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License as published by the ++ * Free Software Foundation; either version 2 of the License, or (at your ++ * option) any later version. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "s3c24xx-pcm.h" ++#include "s3c24xx-i2s.h" ++ ++#include "../codecs/wm8750.h" ++ ++static const char *audio_map[][2] = { ++ [0] = { "Internal Speaker", "LOUT2" }, ++ [1] = { "Internal Speaker", "ROUT2" }, ++ [2] = { NULL, NULL }, ++ ++/* ++ [0] = { "Headphone Jack", "LOUT1" }, ++ [1] = { "Headphone Jack", "ROUT1" }, ++ [2] = { "Internal Speaker", "LOUT2" }, ++ [3] = { "Internal Speaker", "ROUT2" }, ++ [4] = { "LINPUT1", "Line Input" }, ++ [5] = { "RINPUT1", "Line Input" }, ++ [6] = { NULL, NULL }, ++*/ ++}; ++ ++static const struct snd_soc_dapm_widget wm8750_dapm_widgets[] = { ++// SND_SOC_DAPM_HP("Headphone Jack", NULL), ++ SND_SOC_DAPM_SPK("Internal Speaker", NULL), ++// SND_SOC_DAPM_LINE("Line In", NULL), ++}; ++ ++static int m8050_startup(struct snd_pcm_substream *substream) ++{ ++ struct snd_soc_pcm_runtime *rtd = substream->private_data; ++ struct snd_soc_codec *codec = rtd->socdev->codec; ++ ++ ++ snd_soc_dapm_sync_endpoints(codec); ++ ++ return 0; ++} ++ ++static inline int codec_set_dai_fmt(struct snd_soc_codec_dai *dai, ++ unsigned int format) ++{ ++ return dai->dai_ops.set_fmt(dai, format); ++} ++ ++static inline int codec_set_dai_sysclk(struct snd_soc_codec_dai *dai, ++ unsigned int clk, ++ unsigned int arg, ++ unsigned int arg2) ++{ ++ return dai->dai_ops.set_sysclk(dai, clk, arg, arg2); ++} ++ ++static inline int cpu_set_dai_fmt(struct snd_soc_cpu_dai *dai, ++ unsigned int format) ++{ ++ return dai->dai_ops.set_fmt(dai, format); ++} ++ ++static inline int cpu_set_dai_sysclk(struct snd_soc_cpu_dai *dai, ++ unsigned int clk, ++ unsigned int arg, ++ unsigned int arg2) ++{ ++ return dai->dai_ops.set_sysclk(dai, clk, arg, arg2); ++} ++ ++static inline int cpu_set_dai_clkdiv(struct snd_soc_cpu_dai *dai, ++ unsigned int clk, ++ unsigned int arg) ++{ ++ return dai->dai_ops.set_clkdiv(dai, clk, arg); ++} ++ ++ ++ ++static int m8050_hw_params(struct snd_pcm_substream *substream, ++ struct snd_pcm_hw_params *params) ++{ ++#define WM8750SLAVE 0 ++ ++ struct snd_soc_pcm_runtime *rtd = substream->private_data; ++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai; ++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai; ++ unsigned int clk = 0; ++ unsigned int pll_out = 0, bclk = 0; ++ int ret = 0; ++ unsigned long iis_clkrate; ++#if WM8750SLAVE ++ ++ iis_clkrate = s3c24xx_i2s_get_clockrate(); ++ ++ switch (params_rate(params)) { ++ case 8000: ++ case 16000: ++ case 48000: ++ case 96000: ++ clk = 12288000; ++ break; ++ case 11025: ++ case 22050: ++ case 44100: ++ clk = 11289600; ++ break; ++ } ++ ++ /* set codec DAI configuration */ ++ ret = codec_set_dai_fmt(codec_dai, SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM); ++ if (ret < 0) ++ return ret; ++ ++ /* set cpu DAI configuration */ ++ ret = cpu_set_dai_fmt(cpu_dai, SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM); ++ if (ret < 0) ++ return ret; ++ ++ /* set the codec system clock for DAC and ADC */ ++ ret = codec_set_dai_sysclk(codec_dai, WM8750_SYSCLK, clk, ++ SND_SOC_CLOCK_IN); ++ if (ret < 0) ++ return ret; ++ ++ /* set MCLK division for sample rate */ ++ ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, S3C24XX_DIV_MCLK, ++ S3C2410_IISMOD_16FS ); ++ if (ret < 0) ++ return ret; ++ ++ /* set prescaler division for sample rate */ ++ ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, S3C24XX_DIV_PRESCALER, ++ S3C24XX_PRESCALE(5,5)); ++ if (ret < 0) ++ return ret; ++ ++ return 0; ++#else ++ struct s3c24xx_rate_calc div; ++ ++ switch (params_rate(params)) { ++ case 8000: ++ case 16000: ++ case 48000: ++ case 96000: ++ clk = 12288000; ++ break; ++ case 11025: ++ case 22050: ++ case 44100: ++ clk = 11289600; ++ break; ++ } ++ ++ s3c24xx_iis_calc_rate(&div, NULL, params_rate(params), ++ s3c24xx_get_iisclk()); ++ ++ /* set codec DAI configuration */ ++ ret = codec_set_dai_fmt(codec_dai, SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS); ++ if (ret < 0) ++ return ret; ++ ++ /* set cpu DAI configuration */ ++ ret = cpu_set_dai_fmt(cpu_dai, SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS); ++ if (ret < 0) ++ return ret; ++ ++ /* set the codec system clock for DAC and ADC */ ++ ret = codec_set_dai_sysclk(codec_dai, WM8750_SYSCLK, clk, ++ SND_SOC_CLOCK_IN); ++ if (ret < 0) ++ return ret; ++ ++// ret = cpu_set_dai_clkdiv(cpu_dai, S3C24XX_DIV_MCLK, div.fs_div); ++// if (ret < 0) ++// return ret; ++ ++ ret = cpu_set_dai_clkdiv(cpu_dai, S3C24XX_DIV_PRESCALER, div.clk_div - 1); ++ if (ret < 0) ++ return ret; ++ ++ return 0; ++ ++ ++#endif ++ ++} ++ ++static struct snd_soc_ops m8050_ops = { ++ .startup = m8050_startup, ++ .hw_params = m8050_hw_params, ++}; ++ ++static const struct snd_kcontrol_new wm8750_m8050_controls[] = { ++ ++}; ++ ++static int m8050_wm8750_init(struct snd_soc_codec *codec) ++{ ++ int i, err; ++ ++// snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1); ++ snd_soc_dapm_set_endpoint(codec, "Internal Speaker", 1); ++ snd_soc_dapm_set_endpoint(codec, "Line In", 0); ++ ++ /* These endpoints are not being used. */ ++ snd_soc_dapm_set_endpoint(codec, "ROUT1", 0); ++ snd_soc_dapm_set_endpoint(codec, "LOUT1", 0); ++ ++ snd_soc_dapm_set_endpoint(codec, "LINPUT1", 0); ++ snd_soc_dapm_set_endpoint(codec, "LINPUT2", 0); ++ snd_soc_dapm_set_endpoint(codec, "LINPUT3", 0); ++ snd_soc_dapm_set_endpoint(codec, "RINPUT2", 0); ++ snd_soc_dapm_set_endpoint(codec, "RINPUT3", 0); ++ snd_soc_dapm_set_endpoint(codec, "OUT3", 0); ++ snd_soc_dapm_set_endpoint(codec, "MONO", 0); ++ ++ /* Add m8050 specific controls */ ++ for (i = 0; i < ARRAY_SIZE(wm8750_m8050_controls); i++) { ++ err = snd_ctl_add(codec->card, ++ snd_soc_cnew(&wm8750_m8050_controls[i], codec, NULL)); ++ if (err < 0) ++ return err; ++ } ++ ++ /* Add m8050 specific widgets */ ++ for (i = 0; i < ARRAY_SIZE(wm8750_dapm_widgets); i++) { ++ snd_soc_dapm_new_control(codec, &wm8750_dapm_widgets[i]); ++ } ++ ++ /* Set up m8050 specific audio path audio_map */ ++ for (i = 0; audio_map[i][0] != NULL; i++) { ++ printk(KERN_INFO "mapping %s => %s\n", audio_map[i][0], audio_map[i][1]); ++ snd_soc_dapm_connect_input(codec, audio_map[i][0], NULL, ++ audio_map[i][1]); ++ } ++ ++ snd_soc_dapm_sync_endpoints(codec); ++ return 0; ++} ++ ++static struct snd_soc_dai_link m8050_dai = { ++ .name = "wm8750", ++ .stream_name = "WM8750", ++ .cpu_dai = &s3c24xx_i2s_dai, ++ .codec_dai = &wm8750_dai, ++ .init = m8050_wm8750_init, ++ .ops = &m8050_ops, ++}; ++ ++/* m8050 audio machine driver */ ++static struct snd_soc_machine snd_soc_machine_m8050 = { ++ .name = "M8050", ++ .dai_link = &m8050_dai, ++ .num_links = 1, ++}; ++ ++/* m8050 audio private data */ ++static struct wm8750_setup_data m8050_wm8750_setup = { ++ .i2c_address = 0x1a, ++}; ++ ++/* m8050 audio subsystem */ ++static struct snd_soc_device m8050_snd_devdata = { ++ .machine = &snd_soc_machine_m8050, ++ .platform = &s3c24xx_soc_platform, ++ .codec_dev = &soc_codec_dev_wm8750, ++ .codec_data = &m8050_wm8750_setup, ++}; ++ ++static struct platform_device *m8050_snd_device; ++ ++static int __init m8050_init(void) ++{ ++ int ret; ++ ++ printk("M8050 WM8750 Audio support\n"); ++ ++ if (!machine_is_aml_m8050()) ++ return 0; ++ ++ m8050_snd_device = platform_device_alloc("soc-audio", -1); ++ if (!m8050_snd_device) ++ return -ENOMEM; ++ ++ platform_set_drvdata(m8050_snd_device, &m8050_snd_devdata); ++ m8050_snd_devdata.dev = &m8050_snd_device->dev; ++ ret = platform_device_add(m8050_snd_device); ++ ++ if (ret) ++ platform_device_put(m8050_snd_device); ++ ++ return ret; ++} ++ ++static void __exit m8050_exit(void) ++{ ++ platform_device_unregister(m8050_snd_device); ++} ++ ++module_init(m8050_init); ++module_exit(m8050_exit); ++ ++MODULE_AUTHOR("David Anders"); ++MODULE_DESCRIPTION("ALSA SoC M8050"); ++MODULE_LICENSE("GPL"); +diff -X linux-git/Documentation/dontdiff -Naur linux-git/sound/soc/s3c24xx/m8050_wm8750.x.c linux-2.6.25-m8050/sound/soc/s3c24xx/m8050_wm8750.x.c +--- linux-git/sound/soc/s3c24xx/m8050_wm8750.x.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-m8050/sound/soc/s3c24xx/m8050_wm8750.x.c 2008-10-15 12:18:47.000000000 +0200 +@@ -0,0 +1,310 @@ ++/* sound/soc/s3c24xx/m8050_wm8750.c ++ * ++ * Based on sound/soc/s3c24xx/jive_wm8750.c ++ * Copyright 2007 Simtec Electronics ++ * Author: Ben Dooks ++ * ++ * Based on sound/soc/pxa/spitz.c ++ * Copyright 2005 Wolfson Microelectronics PLC. ++ * Copyright 2005 Openedhand Ltd. ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License as published by the ++ * Free Software Foundation; either version 2 of the License, or (at your ++ * option) any later version. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "s3c24xx-pcm.h" ++#include "s3c24xx-i2s.h" ++ ++#include "../codecs/wm8750.h" ++ ++static const char *audio_map[][2] = { ++// [0] = { "Internal Speaker", "LOUT2" }, ++// [1] = { "Internal Speaker", "ROUT2" }, ++// [2] = { NULL, NULL }, ++ ++ ++ [0] = { "Headphone Jack", "LOUT1" }, ++ [1] = { "Headphone Jack", "ROUT1" }, ++ [2] = { "Internal Speaker", "LOUT2" }, ++ [3] = { "Internal Speaker", "ROUT2" }, ++ [4] = { "LINPUT1", "Line Input" }, ++ [5] = { "RINPUT1", "Line Input" }, ++ [6] = { NULL, NULL }, ++ ++}; ++ ++static const struct snd_soc_dapm_widget wm8750_dapm_widgets[] = { ++ SND_SOC_DAPM_HP("Headphone Jack", NULL), ++ SND_SOC_DAPM_SPK("Internal Speaker", NULL), ++ SND_SOC_DAPM_LINE("Line In", NULL), ++}; ++ ++static int m8050_startup(struct snd_pcm_substream *substream) ++{ ++ struct snd_soc_pcm_runtime *rtd = substream->private_data; ++ struct snd_soc_codec *codec = rtd->socdev->codec; ++ ++ ++ snd_soc_dapm_sync_endpoints(codec); ++ ++ return 0; ++} ++ ++static inline int codec_set_dai_fmt(struct snd_soc_codec_dai *dai, ++ unsigned int format) ++{ ++ return dai->dai_ops.set_fmt(dai, format); ++} ++ ++static inline int codec_set_dai_sysclk(struct snd_soc_codec_dai *dai, ++ unsigned int clk, ++ unsigned int arg, ++ unsigned int arg2) ++{ ++ return dai->dai_ops.set_sysclk(dai, clk, arg, arg2); ++} ++ ++static inline int cpu_set_dai_fmt(struct snd_soc_cpu_dai *dai, ++ unsigned int format) ++{ ++ return dai->dai_ops.set_fmt(dai, format); ++} ++ ++static inline int cpu_set_dai_sysclk(struct snd_soc_cpu_dai *dai, ++ unsigned int clk, ++ unsigned int arg, ++ unsigned int arg2) ++{ ++ return dai->dai_ops.set_sysclk(dai, clk, arg, arg2); ++} ++ ++static inline int cpu_set_dai_clkdiv(struct snd_soc_cpu_dai *dai, ++ unsigned int clk, ++ unsigned int arg) ++{ ++ return dai->dai_ops.set_clkdiv(dai, clk, arg); ++} ++ ++ ++ ++static int m8050_hw_params(struct snd_pcm_substream *substream, ++ struct snd_pcm_hw_params *params) ++{ ++ struct snd_soc_pcm_runtime *rtd = substream->private_data; ++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai; ++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai; ++ struct s3c24xx_rate_calc div; ++ unsigned int clk = 0; ++ unsigned int pll_out = 0, bclk = 0; ++ int ret = 0; ++ unsigned long iis_clkrate; ++ ++// iis_clkrate = s3c24xx_i2s_get_clockrate(); ++ ++ switch (params_rate(params)) { ++ case 8000: ++ case 16000: ++ case 48000: ++ case 96000: ++ clk = 12288000; ++ break; ++ case 11025: ++ case 22050: ++ case 44100: ++ clk = 11289600; ++ break; ++ } ++ ++ /* set codec DAI configuration */ ++ ret = codec_set_dai_fmt(codec_dai, SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM); ++ if (ret < 0) ++ return ret; ++ ++ /* set cpu DAI configuration */ ++ ret = cpu_set_dai_fmt(cpu_dai, SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM); ++ if (ret < 0) ++ return ret; ++ ++ ++ /* section for master */ ++ /* set codec DAI configuration */ ++// ret = codec_set_dai_fmt(codec_dai, SND_SOC_DAIFMT_I2S | ++// SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS); ++// if (ret < 0) ++// return ret; ++// ++ /* set cpu DAI configuration */ ++// ret = cpu_set_dai_fmt(cpu_dai, SND_SOC_DAIFMT_I2S | ++// SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS); ++// if (ret < 0) ++// return ret; ++ ++ /* set the codec system clock for DAC and ADC */ ++ ret = codec_set_dai_sysclk(codec_dai, WM8750_SYSCLK, clk, ++ SND_SOC_CLOCK_IN); ++ if (ret < 0) ++ return ret; ++ ++// /* set MCLK division for sample rate */ ++// ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, S3C24XX_DIV_MCLK, ++// S3C2410_IISMOD_16FS ); ++// if (ret < 0) ++// return ret; ++ ++ /* set prescaler division for sample rate */ ++// ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, S3C24XX_DIV_PRESCALER, ++// S3C24XX_PRESCALE(3,3)); ++// if (ret < 0) ++// return ret; ++ ++ s3c24xx_iis_calc_rate(&div, NULL, params_rate(params), ++ s3c24xx_get_iisclk()); ++ ++ ret = cpu_set_dai_clkdiv(cpu_dai, S3C24XX_DIV_BCLK, div.fs_div); ++ if (ret < 0) ++ return ret; ++ ++ ret = cpu_set_dai_clkdiv(cpu_dai, S3C24XX_DIV_MCLK, div.clk_div - 1); ++ if (ret < 0) ++ return ret; ++ ++ return 0; ++} ++ ++static struct snd_soc_ops m8050_ops = { ++ .startup = m8050_startup, ++ .hw_params = m8050_hw_params, ++}; ++ ++static const struct snd_kcontrol_new wm8750_m8050_controls[] = { ++ ++}; ++ ++static int m8050_wm8750_init(struct snd_soc_codec *codec) ++{ ++ int i, err; ++ ++ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1); ++ snd_soc_dapm_set_endpoint(codec, "Internal Speaker", 1); ++ snd_soc_dapm_set_endpoint(codec, "Line In", 0); ++ ++ /* These endpoints are not being used. */ ++// snd_soc_dapm_set_endpoint(codec, "ROUT1", 0); ++// snd_soc_dapm_set_endpoint(codec, "LOUT1", 0); ++ ++ snd_soc_dapm_set_endpoint(codec, "LINPUT1", 0); ++ snd_soc_dapm_set_endpoint(codec, "LINPUT2", 0); ++ snd_soc_dapm_set_endpoint(codec, "LINPUT3", 0); ++ snd_soc_dapm_set_endpoint(codec, "RINPUT2", 0); ++ snd_soc_dapm_set_endpoint(codec, "RINPUT3", 0); ++ snd_soc_dapm_set_endpoint(codec, "OUT3", 0); ++ snd_soc_dapm_set_endpoint(codec, "MONO", 0); ++ ++ /* Add m8050 specific controls */ ++ for (i = 0; i < ARRAY_SIZE(wm8750_m8050_controls); i++) { ++ err = snd_ctl_add(codec->card, ++ snd_soc_cnew(&wm8750_m8050_controls[i], codec, NULL)); ++ if (err < 0) ++ return err; ++ } ++ ++ /* Add m8050 specific widgets */ ++ for (i = 0; i < ARRAY_SIZE(wm8750_dapm_widgets); i++) { ++ snd_soc_dapm_new_control(codec, &wm8750_dapm_widgets[i]); ++ } ++ ++ /* Set up m8050 specific audio path audio_map */ ++ for (i = 0; audio_map[i][0] != NULL; i++) { ++ printk(KERN_INFO "mapping %s => %s\n", audio_map[i][0], audio_map[i][1]); ++ snd_soc_dapm_connect_input(codec, audio_map[i][0], NULL, ++ audio_map[i][1]); ++ } ++ ++ snd_soc_dapm_sync_endpoints(codec); ++ return 0; ++} ++ ++static struct snd_soc_dai_link m8050_dai = { ++ .name = "wm8750", ++ .stream_name = "WM8750", ++ .cpu_dai = &s3c24xx_i2s_dai, ++ .codec_dai = &wm8750_dai, ++ .init = m8050_wm8750_init, ++ .ops = &m8050_ops, ++}; ++ ++/* m8050 audio machine driver */ ++static struct snd_soc_machine snd_soc_machine_m8050 = { ++ .name = "M8050", ++ .dai_link = &m8050_dai, ++ .num_links = 1, ++}; ++ ++/* m8050 audio private data */ ++static struct wm8750_setup_data m8050_wm8750_setup = { ++ .i2c_address = 0x1a, ++}; ++ ++/* m8050 audio subsystem */ ++static struct snd_soc_device m8050_snd_devdata = { ++ .machine = &snd_soc_machine_m8050, ++ .platform = &s3c24xx_soc_platform, ++ .codec_dev = &soc_codec_dev_wm8750, ++ .codec_data = &m8050_wm8750_setup, ++}; ++ ++static struct platform_device *m8050_snd_device; ++ ++static int __init m8050_init(void) ++{ ++ int ret; ++ ++ printk("M8050 WM8750 Audio support\n"); ++ ++ if (!machine_is_aml_m8050()) ++ return 0; ++ ++ m8050_snd_device = platform_device_alloc("soc-audio", -1); ++ if (!m8050_snd_device) ++ return -ENOMEM; ++ ++ platform_set_drvdata(m8050_snd_device, &m8050_snd_devdata); ++ m8050_snd_devdata.dev = &m8050_snd_device->dev; ++ ret = platform_device_add(m8050_snd_device); ++ ++ if (ret) ++ platform_device_put(m8050_snd_device); ++ ++ return ret; ++} ++ ++static void __exit m8050_exit(void) ++{ ++ platform_device_unregister(m8050_snd_device); ++} ++ ++module_init(m8050_init); ++module_exit(m8050_exit); ++ ++MODULE_AUTHOR("David Anders"); ++MODULE_DESCRIPTION("ALSA SoC M8050"); ++MODULE_LICENSE("GPL"); +diff -X linux-git/Documentation/dontdiff -Naur linux-git/sound/soc/s3c24xx/Makefile linux-2.6.25-m8050/sound/soc/s3c24xx/Makefile +--- linux-git/sound/soc/s3c24xx/Makefile 2008-11-10 12:19:41.000000000 +0100 ++++ linux-2.6.25-m8050/sound/soc/s3c24xx/Makefile 2008-08-04 11:51:00.000000000 +0200 +@@ -10,10 +10,12 @@ + obj-$(CONFIG_SND_S3C2412_SOC_I2S) += snd-soc-s3c2412-i2s.o + + # S3C24XX Machine Support ++snd-soc-m8050-wm8750-objs := m8050_wm8750.o + snd-soc-neo1973-wm8753-objs := neo1973_wm8753.o + snd-soc-smdk2443-wm9710-objs := smdk2443_wm9710.o + snd-soc-ln2440sbc-alc650-objs := ln2440sbc_alc650.o + ++obj-$(CONFIG_SND_S3C24XX_SOC_M8050_WM8750) += snd-soc-m8050-wm8750.o + obj-$(CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753) += snd-soc-neo1973-wm8753.o + obj-$(CONFIG_SND_S3C24XX_SOC_SMDK2443_WM9710) += snd-soc-smdk2443-wm9710.o + obj-$(CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650) += snd-soc-ln2440sbc-alc650.o +diff -X linux-git/Documentation/dontdiff -Naur linux-git/sound/soc/s3c24xx/s3c2412-i2s.c linux-2.6.25-m8050/sound/soc/s3c24xx/s3c2412-i2s.c +--- linux-git/sound/soc/s3c24xx/s3c2412-i2s.c 2008-11-10 12:20:38.000000000 +0100 ++++ linux-2.6.25-m8050/sound/soc/s3c24xx/s3c2412-i2s.c 2008-08-08 16:42:54.000000000 +0200 +@@ -361,11 +361,15 @@ + + switch (params_format(params)) { + case SNDRV_PCM_FORMAT_S8: ++ printk("setting for S8 format!\n"); + iismod |= S3C2412_IISMOD_8BIT; + break; + case SNDRV_PCM_FORMAT_S16_LE: ++ printk("setting for S16_LE format!\n"); + iismod &= ~S3C2412_IISMOD_8BIT; + break; ++ default: ++ printk("unknown data format!\n"); + } + + writel(iismod, s3c2412_i2s.regs + S3C2412_IISMOD); +diff -X linux-git/Documentation/dontdiff -Naur linux-git/sound/soc/s3c24xx/s3c24xx-i2s.c linux-2.6.25-m8050/sound/soc/s3c24xx/s3c24xx-i2s.c +--- linux-git/sound/soc/s3c24xx/s3c24xx-i2s.c 2008-11-10 12:20:38.000000000 +0100 ++++ linux-2.6.25-m8050/sound/soc/s3c24xx/s3c24xx-i2s.c 2008-10-28 16:53:07.000000000 +0100 +@@ -46,7 +46,7 @@ + + #define S3C24XX_I2S_DEBUG 0 + #if S3C24XX_I2S_DEBUG +-#define DBG(x...) printk(KERN_DEBUG x) ++#define DBG(x...) printk(x) + #else + #define DBG(x...) + #endif +@@ -184,15 +184,15 @@ + + DBG("Entered %s\n", __FUNCTION__); + +- while (1) { +- iiscon = readl(s3c24xx_i2s.regs + S3C2410_IISCON); +- if (iiscon & S3C2410_IISCON_LRINDEX) +- break; +- +- if (time_after(jiffies, timeout)) +- return -ETIMEDOUT; +- } +- ++// while (1) { ++// iiscon = readl(s3c24xx_i2s.regs + S3C2410_IISCON); ++// if (iiscon & S3C2410_IISCON_LRINDEX) ++// break; ++// ++// if (time_after(jiffies, timeout)) ++// return -ETIMEDOUT; ++// } ++// udelay(500); + return 0; + } + +@@ -221,19 +221,24 @@ + + switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { + case SND_SOC_DAIFMT_CBM_CFM: ++// printk("set for CFM!!\n"); + iismod |= S3C2410_IISMOD_SLAVE; + break; + case SND_SOC_DAIFMT_CBS_CFS: ++// printk("set for CFS!!\n"); ++ iismod &= ~S3C2410_IISMOD_SLAVE; + break; + default: + return -EINVAL; + } ++ DBG("hw_params t: IISMOD: %lx \n", iismod); + + switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { + case SND_SOC_DAIFMT_LEFT_J: + iismod |= S3C2410_IISMOD_MSB; + break; + case SND_SOC_DAIFMT_I2S: ++ iismod &= ~S3C2410_IISMOD_MSB; + break; + default: + return -EINVAL; +@@ -263,10 +268,15 @@ + + switch (params_format(params)) { + case SNDRV_PCM_FORMAT_S8: ++// printk("setting for S8 format!\n"); + break; + case SNDRV_PCM_FORMAT_S16_LE: + iismod |= S3C2410_IISMOD_16BIT; ++// printk("setting for S16_LE format!\n"); + break; ++ default: ++ printk("unknown data format!\n"); ++ + } + + writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD); +@@ -284,11 +294,11 @@ + case SNDRV_PCM_TRIGGER_START: + case SNDRV_PCM_TRIGGER_RESUME: + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: +- if (!s3c24xx_snd_is_clkmaster()) { ++// if (!s3c24xx_snd_is_clkmaster()) { + ret = s3c24xx_snd_lrsync(); + if (ret) + goto exit_err; +- } ++// } + + if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) + s3c24xx_snd_rxctrl(1); +@@ -312,6 +322,78 @@ + return ret; + } + ++/* default table of all avaialable root fs divisors */ ++static unsigned int s3c24xx_iis_fs[] = { 256, 384, 0 }; ++//static unsigned int s3c24xx_iis_fs[] = { 256, 512, 384, 768, 0 }; ++ ++int s3c24xx_iis_calc_rate(struct s3c24xx_rate_calc *info, ++ unsigned int *fstab, ++ unsigned int rate, struct clk *clk) ++{ ++ unsigned long clkrate = clk_get_rate(clk); ++ unsigned int div; ++ unsigned int fsclk; ++ unsigned int actual; ++ unsigned int fs; ++ unsigned int fsdiv; ++ signed int deviation = 0; ++ unsigned int best_fs = 0; ++ unsigned int best_div = 0; ++ unsigned int best_rate = 0; ++ unsigned int best_deviation = INT_MAX; ++ ++ ++ if (fstab == NULL) ++ fstab = s3c24xx_iis_fs; ++ ++ for (fs = 0;; fs++) { ++ fsdiv = s3c24xx_iis_fs[fs]; ++ ++ if (fsdiv == 0) ++ break; ++ ++ fsclk = clkrate / fsdiv; ++ div = fsclk / rate; ++ ++ if ((fsclk % rate) > (rate / 2)) ++ div++; ++ ++ if (div <= 1) ++ continue; ++ ++ actual = clkrate / (fsdiv * div); ++ deviation = actual - rate; ++ ++// printk(KERN_DEBUG "%dfs: div %d => result %d, deviation %d\n", ++// fsdiv, div, actual, deviation); ++// printk("%dfs: div %d => result %d, deviation %d\n", ++// fsdiv, div, actual, deviation); ++ ++ deviation = abs(deviation); ++ ++ if (deviation < best_deviation) { ++ best_fs = fsdiv; ++ best_div = div; ++ best_rate = actual; ++ best_deviation = deviation; ++ } ++ ++ if (deviation == 0) ++ break; ++ } ++ ++// printk(KERN_DEBUG "best: fs=%d, div=%d, rate=%d\n", ++// best_fs, best_div, best_rate); ++// printk("best: fs=%d, div=%d, rate=%d\n", ++// best_fs, best_div, best_rate); ++ ++ info->fs_div = best_fs; ++ info->clk_div = best_div; ++ ++ return 0; ++} ++EXPORT_SYMBOL_GPL(s3c24xx_iis_calc_rate); ++ + /* + * Set S3C24xx Clock source + */ +@@ -347,17 +429,31 @@ + u32 reg; + + DBG("Entered %s\n", __FUNCTION__); +- ++ DBG("started with 0x%x\n",readl(s3c24xx_i2s.regs + S3C2410_IISMOD)); + switch (div_id) { + case S3C24XX_DIV_BCLK: ++ DBG("setting bclk with div=0x%x\n",div); + reg = readl(s3c24xx_i2s.regs + S3C2410_IISMOD) & ~S3C2410_IISMOD_FS_MASK; ++ DBG("before reg=0x%x\n",reg); ++ switch (div) { ++ case 256: ++ div = 0x00; ++ break; ++ case 384: ++ div = 0x04; ++ break; ++ } ++ + writel(reg | div, s3c24xx_i2s.regs + S3C2410_IISMOD); ++ DBG("afterreg=0x%x\n",reg|div); + break; + case S3C24XX_DIV_MCLK: ++ DBG("setting mclk\n"); + reg = readl(s3c24xx_i2s.regs + S3C2410_IISMOD) & ~(S3C2410_IISMOD_384FS); + writel(reg | div, s3c24xx_i2s.regs + S3C2410_IISMOD); + break; + case S3C24XX_DIV_PRESCALER: ++ DBG("setting prescaler\n"); + writel(div, s3c24xx_i2s.regs + S3C2410_IISPSR); + reg = readl(s3c24xx_i2s.regs + S3C2410_IISCON); + writel(reg | S3C2410_IISCON_PSCEN, s3c24xx_i2s.regs + S3C2410_IISCON); +@@ -365,10 +461,17 @@ + default: + return -EINVAL; + } ++ DBG("left with 0x%x\n",readl(s3c24xx_i2s.regs + S3C2410_IISMOD)); + + return 0; + } + ++struct clk *s3c24xx_get_iisclk(void) ++{ ++ return s3c24xx_i2s.iis_clk; ++} ++EXPORT_SYMBOL_GPL(s3c24xx_get_iisclk); ++ + /* + * To avoid duplicating clock code, allow machine driver to + * get the clockrate from here. +diff -X linux-git/Documentation/dontdiff -Naur linux-git/sound/soc/s3c24xx/s3c24xx-i2s.h linux-2.6.25-m8050/sound/soc/s3c24xx/s3c24xx-i2s.h +--- linux-git/sound/soc/s3c24xx/s3c24xx-i2s.h 2008-11-10 12:20:38.000000000 +0100 ++++ linux-2.6.25-m8050/sound/soc/s3c24xx/s3c24xx-i2s.h 2008-08-11 18:17:34.000000000 +0200 +@@ -34,4 +34,15 @@ + + extern struct snd_soc_cpu_dai s3c24xx_i2s_dai; + ++struct s3c24xx_rate_calc { ++ unsigned int clk_div; /* for prescaler */ ++ unsigned int fs_div; /* for root frame clock */ ++}; ++ ++extern int s3c24xx_iis_calc_rate(struct s3c24xx_rate_calc *info, ++ unsigned int *fstab, ++ unsigned int rate, struct clk *clk); ++ ++extern struct clk *s3c24xx_get_iisclk(void); ++ + #endif /*S3C24XXI2S_H_*/ +diff -X linux-git/Documentation/dontdiff -Naur linux-git/sound/soc/s3c24xx/s3c24xx-pcm.c linux-2.6.25-m8050/sound/soc/s3c24xx/s3c24xx-pcm.c +--- linux-git/sound/soc/s3c24xx/s3c24xx-pcm.c 2008-11-10 12:20:38.000000000 +0100 ++++ linux-2.6.25-m8050/sound/soc/s3c24xx/s3c24xx-pcm.c 2008-10-28 18:10:26.000000000 +0100 +@@ -23,6 +23,8 @@ + #include + #include + #include ++#include ++#include + + #include + #include +@@ -37,13 +39,14 @@ + + #include "s3c24xx-pcm.h" + +-#define S3C24XX_PCM_DEBUG 0 ++#define S3C24XX_PCM_DEBUG 1 + #if S3C24XX_PCM_DEBUG +-#define DBG(x...) printk(KERN_DEBUG x) ++#define DBG(x...) printk(x) + #else + #define DBG(x...) + #endif + ++ + static const struct snd_pcm_hardware s3c24xx_pcm_hardware = { + .info = SNDRV_PCM_INFO_INTERLEAVED | + SNDRV_PCM_INFO_BLOCK_TRANSFER | +@@ -77,6 +80,7 @@ + struct s3c24xx_pcm_dma_params *params; + }; + ++ + /* s3c24xx_pcm_enqueue + * + * place a dma buffer onto the queue for the dma system +@@ -87,13 +91,29 @@ + struct s3c24xx_runtime_data *prtd = substream->runtime->private_data; + dma_addr_t pos = prtd->dma_pos; + int ret; ++ int dmalimit; + + DBG("Entered %s\n", __FUNCTION__); ++ DBG("dma limit: %x\n",prtd->dma_limit); + +- while (prtd->dma_loaded < prtd->dma_limit) { ++ if (prtd->dma_loaded == 0){ ++ printk("setting dma limit to 1\n"); ++ dmalimit=1; ++ } ++ else { ++ printk("setting dma limit to %d\n",prtd->dma_limit); ++ dmalimit=prtd->dma_limit; ++ } ++ ++ while (prtd->dma_loaded < dmalimit) { + unsigned long len = prtd->dma_period; + + DBG("dma_loaded: %d\n",prtd->dma_loaded); ++ DBG("dma start: %x\n",prtd->dma_start); ++ DBG("period len: %x\n",prtd->dma_period); ++ DBG("dma pos: %x\n",prtd->dma_pos); ++ DBG("dma end: %x\n",prtd->dma_end); ++ DBG("dma limit: %x\n",prtd->dma_limit); + + if ((pos + len) > prtd->dma_end) { + len = prtd->dma_end - pos; +@@ -106,16 +126,43 @@ + + if (ret == 0) { + prtd->dma_loaded++; ++// printk("added 1 to dma_loaded: 0x%d\n",prtd->dma_loaded); + pos += prtd->dma_period; +- if (pos >= prtd->dma_end) ++ if (pos >= prtd->dma_end) { ++// printk("length of dma excedded reseting to start of 0x%x\n",prtd->dma_start); + pos = prtd->dma_start; ++ } ++ + } else + break; + } + ++ DBG("setting dma_pos=%x\n",pos); + prtd->dma_pos = pos; + } + ++static void pcm_enqueue_tasklet(unsigned long data){ ++ struct snd_pcm_substream *substream = (struct snd_pcm_substream *) data; ++ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data; ++ dma_addr_t src, dst; ++ ++ printk("tasklet ran!!\n"); ++ while (1) { ++ s3c2410_dma_getposition(prtd->params->channel, &src, &dst); ++ printk("tasklet reports 0x%x , 0x%x\n",src,dst); ++ if (prtd->dma_start != src){ ++ printk("tasklet pcm_enqueue!\n"); ++ s3c24xx_pcm_enqueue(substream); ++ return; ++ } ++ else { ++ udelay(5); ++ } ++ } ++} ++ ++DECLARE_TASKLET_DISABLED(enqueue_tasklet, pcm_enqueue_tasklet, 0); ++ + static void s3c24xx_audio_buffdone(struct s3c2410_dma_chan *channel, + void *dev_id, int size, + enum s3c2410_dma_buffresult result) +@@ -171,7 +218,7 @@ + ret = s3c2410_dma_request(prtd->params->channel, + prtd->params->client, NULL); + +- if (ret) { ++ if (ret < 0) { + DBG(KERN_ERR "failed to get dma channel\n"); + return ret; + } +@@ -182,8 +229,12 @@ + + snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer); + ++// printk("total bytes=0x%x",totbytes); ++ + runtime->dma_bytes = totbytes; + ++ printk("total bytes=0x%x\n",runtime->dma_bytes); ++ + spin_lock_irq(&prtd->lock); + prtd->dma_loaded = 0; + prtd->dma_limit = runtime->hw.periods_min; +@@ -269,16 +320,42 @@ + + switch (cmd) { + case SNDRV_PCM_TRIGGER_START: ++ printk("PCM Start!\n"); ++ prtd->state |= ST_RUNNING; ++ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_START); ++ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_STARTED); ++ tasklet_enable(&enqueue_tasklet); ++ enqueue_tasklet.data = (unsigned long) substream; ++ tasklet_schedule(&enqueue_tasklet); ++// s3c24xx_pcm_enqueue(substream); ++ break; + case SNDRV_PCM_TRIGGER_RESUME: ++// printk("PCM Resume!\n"); ++ prtd->state |= ST_RUNNING; ++ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_START); ++ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_STARTED); ++ break; + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: ++// printk("PCM Pause Release!\n"); + prtd->state |= ST_RUNNING; + s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_START); + s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_STARTED); + break; + + case SNDRV_PCM_TRIGGER_STOP: ++ printk("PCM Stop!\n"); ++ prtd->state &= ~ST_RUNNING; ++ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_STOP); ++ tasklet_disable(&enqueue_tasklet); ++// tasklet_kill(&kp_tasklet); ++ break; + case SNDRV_PCM_TRIGGER_SUSPEND: ++// printk("PCM Suspend!\n"); ++ prtd->state &= ~ST_RUNNING; ++ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_STOP); ++ break; + case SNDRV_PCM_TRIGGER_PAUSE_PUSH: ++// printk("PCM Pause Push!\n"); + prtd->state &= ~ST_RUNNING; + s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_STOP); + break; +@@ -313,7 +390,8 @@ + + spin_unlock(&prtd->lock); + +- DBG("Pointer %x %x\n",src,dst); ++ DBG("Pointer %x %x %x\n",src,dst,prtd->dma_start); ++// printk("Pointer %x %x %x\n",src,dst,prtd->dma_start); + + /* we seem to be getting the odd error from the pcm library due + * to out-of-bounds pointers. this is maybe due to the dma engine +@@ -322,10 +400,14 @@ + */ + + if (res >= snd_pcm_lib_buffer_bytes(substream)) { +- if (res == snd_pcm_lib_buffer_bytes(substream)) ++ DBG("res>= snd_pcm_lib_buffer\n"); ++ if (res == snd_pcm_lib_buffer_bytes(substream)){ ++ DBG("res == snd_pcm_lib_buffer\n"); + res = 0; ++ } + } + ++ printk("pcm_pointer returns: %d\n",bytes_to_frames(substream->runtime,res)); + return bytes_to_frames(substream->runtime, res); + } + diff --git a/packages/linux/linux-2.6.25/m8050/update-mach-types.diff b/packages/linux/linux-2.6.25/m8050/update-mach-types.diff new file mode 100644 index 0000000000..7e950ad453 --- /dev/null +++ b/packages/linux/linux-2.6.25/m8050/update-mach-types.diff @@ -0,0 +1,13 @@ +--- + arch/arm/tools/mach-types | 1 + + 2 files changed, 2 insertions(+) + +--- linux-2.6.25.orig/arch/arm/tools/mach-types ++++ linux-2.6.25/arch/arm/tools/mach-types +@@ -1609,5 +1609,6 @@ tnb MACH_TNB TNB 1610 + toepath MACH_TOEPATH TOEPATH 1611 + kb9263 MACH_KB9263 KB9263 1612 + mt7108 MACH_MT7108 MT7108 1613 + smtr2440 MACH_SMTR2440 SMTR2440 1614 + manao MACH_MANAO MANAO 1615 ++aml_m8050 MACH_AML_M8050 AML_M8050 1644 diff --git a/packages/linux/linux_2.6.25.bb b/packages/linux/linux_2.6.25.bb index c095e5c3a2..5da65469b1 100644 --- a/packages/linux/linux_2.6.25.bb +++ b/packages/linux/linux_2.6.25.bb @@ -12,6 +12,7 @@ DEFAULT_PREFERENCE_alix = "1" DEFAULT_PREFERENCE_at32stk1000 = "1" DEFAULT_PREFERENCE_at91-l9260 = "1" DEFAULT_PREFERENCE_db1200 = "1" +DEFAULT_PREFERENCE_m8050 = "1" SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.25.tar.bz2 \ file://defconfig" @@ -40,6 +41,8 @@ SRC_URI_append_at91-l9260 = " \ http://maxim.org.za/AT91RM9200/2.6/2.6.25-at91.patch.gz;patch=1 \ " +SRC_URI_append_m8050 = " file://m8050.diff;patch=1 file://update-mach-types.diff;patch=1" + CMDLINE_cm-x270 = "console=${CMX270_CONSOLE_SERIAL_PORT},38400 monitor=1 mem=64M mtdparts=physmap-flash.0:256k(boot)ro,0x180000(kernel),-(root);cm-x270-nand:64m(app),-(data) rdinit=/sbin/init root=mtd3 rootfstype=jffs2" FILES_kernel-image_cm-x270 = "" -- cgit v1.2.3 From f2c19b17e9aee0209cb5aeca4b462b555c6277a0 Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Tue, 11 Nov 2008 20:39:53 +0100 Subject: checksums.ini: added gpe-theme-industrial --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 196e05b166..7cb09de659 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -5822,6 +5822,10 @@ sha256=6aeb1dd991f0e0bcc11562061148051520562c81dc6bf18c03f0cc86a72f6093 md5=756f38d53eaae09d87655f3ed3a660c2 sha256=4524df3931041dc31985014b5f581396217b0b3f6aa00225d98060f1a9cc1b67 +[http://dominion.thruhere.net/koen/pda/files/gpe-theme-industrial-0.2.tar.gz] +md5=756f38d53eaae09d87655f3ed3a660c2 +sha256=4524df3931041dc31985014b5f581396217b0b3f6aa00225d98060f1a9cc1b67 + [http://gpe.linuxtogo.org/download/source/gpe-timesheet-0.18.tar.gz] md5=07f5ede2c7865fc542d7a0957aef55d3 sha256=a066ca50bfc3ca7fc1dcab619e042c9b2d4789acda61eaa43483d561ed8a0fcb -- cgit v1.2.3 From 2a006869b9abbf838076fb776db79460fa7b31ca Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Tue, 11 Nov 2008 22:52:16 +0000 Subject: checksums.ini: Add i2c-tools --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 7cb09de659..c34e6ce706 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -6918,6 +6918,10 @@ sha256=1019b3fbeb3e7e2d0c8faf81191e722bfabc714ee03ec08703faf91dab443b64 md5=01f5cc3adbe9d161cf8e1855cec4fa15 sha256=9a9b7092f2e48786e8f83e5bef99fd31988f87140ad9ca840583f91b3623d628 +[http://dl.lm-sensors.org/i2c-tools/releases/i2c-tools-3.0.1.tar.bz2] +md5=0f5c7ce5fd3c65113909db0ef3a3a8c8 +sha256=8cf39f7c447b0b8f7a24eaed243ad4d8c654c2e94a146a796dba9ed08e857209 + [http://svn.o-hand.com/repos/web/trunk/patches/iain-mem-leak.patch] md5=4e11dc7899d68f2be2e06ccee01d296d sha256=1e2cc080e654c1839c5cb4b4adf4c62a23e7da208427f3ba0b16cfed9e5cfa98 -- cgit v1.2.3 From fede4a0c02553e48a586abc38998f1754cdfe112 Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Wed, 12 Nov 2008 02:39:35 +0100 Subject: opkg_nogpg: Properly repair the damage by FSO people Refresh reduce-nogpg-noise.patch --- packages/opkg/files/reduce-nogpg-noise.patch | 8 ++++---- packages/opkg/opkg-nogpg_svn.bb | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/opkg/files/reduce-nogpg-noise.patch b/packages/opkg/files/reduce-nogpg-noise.patch index b72560876e..47b4d23ca3 100644 --- a/packages/opkg/files/reduce-nogpg-noise.patch +++ b/packages/opkg/files/reduce-nogpg-noise.patch @@ -1,10 +1,10 @@ ---- opkg/libopkg/opkg_cmd.c.orig 2008-08-21 22:18:43.000000000 -0500 -+++ opkg/libopkg/opkg_cmd.c 2008-08-21 22:19:20.000000000 -0500 -@@ -288,7 +288,7 @@ static int opkg_update_cmd(opkg_conf_t * +--- opkg/libopkg/opkg_cmd.c.old 2008-11-12 02:32:20.000000000 +0100 ++++ opkg/libopkg/opkg_cmd.c 2008-11-12 02:30:20.000000000 +0100 +@@ -288,7 +288,7 @@ free (tmp_file_name); free (url); #else -- opkg_message (conf, OPKG_NOTICE, "Signiture check for %s skipped " +- opkg_message (conf, OPKG_NOTICE, "Signature check for %s skipped " + opkg_message (conf, OPKG_INFO, "Signature check for %s skipped " "because GPG support was not enabled in this build\n", src->name); #endif diff --git a/packages/opkg/opkg-nogpg_svn.bb b/packages/opkg/opkg-nogpg_svn.bb index ddccc15d46..7a56b4d7fd 100644 --- a/packages/opkg/opkg-nogpg_svn.bb +++ b/packages/opkg/opkg-nogpg_svn.bb @@ -3,7 +3,7 @@ require opkg_svn.bb DEPENDS = "curl" PROVIDES += "opkg" -SRC_URI += "file://reduce-nogpg-noise.patch;patch=1;maxrev=4641" +SRC_URI += "file://reduce-nogpg-noise.patch;patch=1" PR = "r1" SRCREV = "${SRCREV_pn-opkg}" -- cgit v1.2.3 From 303c72a5e65e2821fa15d6611ab90514cac3ba19 Mon Sep 17 00:00:00 2001 From: Elena ``of Valhalla'' Grandi Date: Wed, 12 Nov 2008 10:36:05 +0100 Subject: checksums.ini: added entry for gnuchess 5.05 --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 12be6980bd..3bd9e8f6cf 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -5134,6 +5134,10 @@ sha256=77cb4bd39a4cec2aa3d61b0519134f9e4a65613960b3b3ee34dd2452d5e12ba7 md5=c42dfaebc37fe81eab0b5676b124ab63 sha256=417922d35e66ee90cf93cf3e93fdf281ec6b92de4f7436c9c1a97c0cc35b94a8 +[ftp://ftp.gnu.org/gnu/chess/gnuchess-5.05.tar.gz] +md5=008820142c414517512ab0ad3e036c8b +sha256=d97ee0f1c45e1bfa880305a33e7e0ef695927094adce100cc76a76a0f57ef789 + [http://ftp.gnome.org/pub/GNOME/sources/gnumeric/1.6/gnumeric-1.6.3.tar.bz2] md5=78ffd75ae6abc3bb20dd04407a082a26 sha256=badaa6899f71ef112515ce81aee02e559e18b5fa87c7f2262390764aaf9b1dc0 -- cgit v1.2.3 From 003d23b18cad8c51f6f5bff894fcc28934200237 Mon Sep 17 00:00:00 2001 From: Elena ``of Valhalla'' Grandi Date: Wed, 12 Nov 2008 11:02:16 +0100 Subject: ipython 0.9.1: new recipe --- packages/ipython/ipython_0.9.1.bb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 packages/ipython/ipython_0.9.1.bb diff --git a/packages/ipython/ipython_0.9.1.bb b/packages/ipython/ipython_0.9.1.bb new file mode 100644 index 0000000000..7ab8d724e3 --- /dev/null +++ b/packages/ipython/ipython_0.9.1.bb @@ -0,0 +1,15 @@ +DESCRIPTION = "Enhanced Python Shell" +HOMEPAGE = "http://ipython.scipy.org/moin/" +SECTION = "devel/python" +LICENSE = "BSD" +DEPENDS = "less" +RDEPENDS = "python-pprint python-io python-shell python-misc python-lang \ + python-stringold python-codecs python-crypt python-threading \ + python-pydoc python-debugger python-textutils python-pickle \ + python-subprocess" + +SRC_URI = "http://ipython.scipy.org/dist/ipython-${PV}.tar.gz" + +inherit distutils + +FILES_${PN} = "/" -- cgit v1.2.3 From 590c0be276f66ed712ef3c2ec8e4ac14da0e28f6 Mon Sep 17 00:00:00 2001 From: Elena ``of Valhalla'' Grandi Date: Wed, 12 Nov 2008 11:38:36 +0100 Subject: checksums.ini: added entry for ipython 0.9.1 --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 4fa771d273..7b4ae23979 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -7278,6 +7278,10 @@ sha256=c5c8a091ed9a1fa2dab86b4d87719064b50c202e8503046f50f299a361e6211c md5=b5493f7a2997130a4f86c486c9993b86 sha256=25d45acf19e3acd09745df47581ac7a13e3694ee51fe4e642108f9f228cacca9 +[http://ipython.scipy.org/dist/ipython-0.9.1.tar.gz] +md5=8a1bd1a9be272f4ddf4de99e5c1ad0dc +sha256=5540bc1a01f11ca66c3d7c31a43af670fd0f0044b8e38d142614872956548006 + [http://www.vanille.de/mirror/iqnotes-2.0.2-src.tar.bz2] md5=9d9504055b37247ece87b31895eb2e5b sha256=27badd5d9f3167443099c6b6cf66b05b9e32cc71f03d692cff474c2279c4f4cd -- cgit v1.2.3 From 6a5adf6d9e42d9df88957a517403de224effa67d Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Wed, 12 Nov 2008 12:24:03 +0100 Subject: xf86-video-omapfb: bump SRCREV to attempt to fix init with 24bit displays --- packages/xorg-driver/xf86-video-omapfb_git.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/xorg-driver/xf86-video-omapfb_git.bb b/packages/xorg-driver/xf86-video-omapfb_git.bb index 9e43ad6466..348711c43a 100644 --- a/packages/xorg-driver/xf86-video-omapfb_git.bb +++ b/packages/xorg-driver/xf86-video-omapfb_git.bb @@ -2,9 +2,9 @@ require xorg-driver-video.inc DESCRIPTION = "X.Org X server -- OMAP display driver" -PR ="r12" +PR ="r13" -SRCREV = "c1d44a1b11bb4e60331dd39f2deb9b3df9149e37" +SRCREV = "e33601fe4c4c5e0d093321f86a633047056c7445" PV = "0.0.1+${PR}+git${SRCREV}" SRC_URI = "git://git.pingu.fi/xf86-video-omapfb.git;protocol=http" -- cgit v1.2.3 From 018287091f618cbaf71ce8c3d68bc143586d1c20 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Wed, 12 Nov 2008 15:14:23 +0100 Subject: opencv: disable GTK+ since it isn't present in DEPENDS --- packages/opencv/opencv_1.0.0.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opencv/opencv_1.0.0.bb b/packages/opencv/opencv_1.0.0.bb index 5b6450eca4..e9737007f8 100644 --- a/packages/opencv/opencv_1.0.0.bb +++ b/packages/opencv/opencv_1.0.0.bb @@ -32,7 +32,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/opencvlibrary/opencv-${PV}.tar.gz \ inherit distutils-base autotools pkgconfig -EXTRA_OECONF = "--disable-debug --without-python --disable-apps az_python_cspec=${STAGING_INCDIR}/${PYTHON_DIR}" +EXTRA_OECONF = "--disable-debug --without-gtk --without-python --disable-apps az_python_cspec=${STAGING_INCDIR}/${PYTHON_DIR}" export BUILD_SYS export HOST_SYS -- cgit v1.2.3 From edf3fc7a96037ea5e06bd174df97580f26dc93e9 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Wed, 12 Nov 2008 15:15:35 +0100 Subject: avahi: add 0.6.23, a bigfix release for 0.6.22 --- packages/avahi/avahi_0.6.23.bb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/avahi/avahi_0.6.23.bb diff --git a/packages/avahi/avahi_0.6.23.bb b/packages/avahi/avahi_0.6.23.bb new file mode 100644 index 0000000000..15f56ffa95 --- /dev/null +++ b/packages/avahi/avahi_0.6.23.bb @@ -0,0 +1,5 @@ +require avahi.inc + +DEPENDS += "intltool-native" + +PACKAGES =+ "libavahi-gobject" -- cgit v1.2.3 From b26215c11d614a8814d6e84f3ceac0f226e5844d Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Wed, 12 Nov 2008 15:22:01 +0100 Subject: checksums.ini: added php 5.2.6 --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 7b4ae23979..c5d1359063 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -12478,6 +12478,10 @@ sha256=e105b6aad55589aecf20ae70ab7aa81eb202296fc52531f62e546af23077cca1 md5=1fe14ca892460b09f06729941a1bb605 sha256=5cac1e70df5019ebdfdab2e0b8b216f7fdf56b9895c9f68c993313918249bba3 +[http://us2.php.net/distributions/php-5.2.6.tar.bz2] +md5=7380ffecebd95c6edb317ef861229ebd +sha256=1892b2dd50b56ae2c9aec027fcd9035b76673f113555bc2bc1007bab8ae4db81 + [http://efault.net/npat/hacks/picocom/dist/picocom-1.3.tar.gz] md5=21865bf2891222082afc44afdd80aeaa sha256=ed3e0190a1940cf08a167429aa3fd25b3ae7313fdf126f851a9abccc89845ee6 -- cgit v1.2.3 From 2ec759475472d68418dc70b8ef82132a70c34e02 Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Wed, 12 Nov 2008 14:13:50 +0100 Subject: vala[-native] 0.4.0: bump to 0.5.1 --- packages/vala/vala-native_0.4.0.bb | 6 ------ packages/vala/vala-native_0.5.1.bb | 6 ++++++ packages/vala/vala_0.4.0.bb | 4 ---- packages/vala/vala_0.5.1.bb | 6 ++++++ 4 files changed, 12 insertions(+), 10 deletions(-) delete mode 100644 packages/vala/vala-native_0.4.0.bb create mode 100644 packages/vala/vala-native_0.5.1.bb delete mode 100644 packages/vala/vala_0.4.0.bb create mode 100644 packages/vala/vala_0.5.1.bb diff --git a/packages/vala/vala-native_0.4.0.bb b/packages/vala/vala-native_0.4.0.bb deleted file mode 100644 index 13ed6ad275..0000000000 --- a/packages/vala/vala-native_0.4.0.bb +++ /dev/null @@ -1,6 +0,0 @@ -require vala_${PV}.bb - -inherit native -DEPENDS = "glib-2.0-native" - - diff --git a/packages/vala/vala-native_0.5.1.bb b/packages/vala/vala-native_0.5.1.bb new file mode 100644 index 0000000000..13ed6ad275 --- /dev/null +++ b/packages/vala/vala-native_0.5.1.bb @@ -0,0 +1,6 @@ +require vala_${PV}.bb + +inherit native +DEPENDS = "glib-2.0-native" + + diff --git a/packages/vala/vala_0.4.0.bb b/packages/vala/vala_0.4.0.bb deleted file mode 100644 index 4104fd1718..0000000000 --- a/packages/vala/vala_0.4.0.bb +++ /dev/null @@ -1,4 +0,0 @@ -require vala.inc - -SRC_URI = "http://download.gnome.org/sources/vala/0.4/vala-${PV}.tar.bz2" - diff --git a/packages/vala/vala_0.5.1.bb b/packages/vala/vala_0.5.1.bb new file mode 100644 index 0000000000..4620a31aca --- /dev/null +++ b/packages/vala/vala_0.5.1.bb @@ -0,0 +1,6 @@ +require vala.inc + +MAJV = "${@bb.data.getVar('PV',d,1)[:3]}" + +SRC_URI = "http://download.gnome.org/sources/vala/${MAJV}/vala-${PV}.tar.bz2" + -- cgit v1.2.3 From 20275dbddea6d075c74eab578eb0058ec5bdf34c Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Wed, 12 Nov 2008 15:46:01 +0100 Subject: vala 0.5.1: add patch working around a vte bug remove older ones --- packages/vala/files/HACK-work-around-vte-bug.patch | 15 +++++++++++++++ packages/vala/vala-native_0.1.5.bb | 5 ----- packages/vala/vala-native_0.3.5.bb | 5 ----- packages/vala/vala_0.1.5.bb | 15 --------------- packages/vala/vala_0.3.5.bb | 5 ----- packages/vala/vala_0.5.1.bb | 6 ++++-- 6 files changed, 19 insertions(+), 32 deletions(-) create mode 100644 packages/vala/files/HACK-work-around-vte-bug.patch delete mode 100644 packages/vala/vala-native_0.1.5.bb delete mode 100644 packages/vala/vala-native_0.3.5.bb delete mode 100644 packages/vala/vala_0.1.5.bb delete mode 100644 packages/vala/vala_0.3.5.bb diff --git a/packages/vala/files/HACK-work-around-vte-bug.patch b/packages/vala/files/HACK-work-around-vte-bug.patch new file mode 100644 index 0000000000..cdccadf9c3 --- /dev/null +++ b/packages/vala/files/HACK-work-around-vte-bug.patch @@ -0,0 +1,15 @@ +:M: + +Index: vala-0.5.1/vapi/vte.vapi +=================================================================== +--- vala-0.5.1.orig/vapi/vte.vapi ++++ vala-0.5.1/vapi/vte.vapi +@@ -37,7 +37,7 @@ namespace Vte { + public void feed_child (string text, long length); + public void feed_child_binary (string data, long length); + [NoArrayLength] +- public int fork_command (string? command, string[]? argv, string[]? envv, string? directory, bool lastlog, bool utmp, bool wtmp); ++ public int fork_command (string command, string[] argv, string[]? envv, string? directory, bool lastlog, bool utmp, bool wtmp); + public int forkpty (string[] envv, string directory, bool lastlog, bool utmp, bool wtmp); + public weak Gtk.Adjustment get_adjustment (); + public bool get_allow_bold (); diff --git a/packages/vala/vala-native_0.1.5.bb b/packages/vala/vala-native_0.1.5.bb deleted file mode 100644 index f097e7db74..0000000000 --- a/packages/vala/vala-native_0.1.5.bb +++ /dev/null @@ -1,5 +0,0 @@ -require vala_${PV}.bb - -inherit native -DEPENDS = "glib-2.0-native" - diff --git a/packages/vala/vala-native_0.3.5.bb b/packages/vala/vala-native_0.3.5.bb deleted file mode 100644 index f097e7db74..0000000000 --- a/packages/vala/vala-native_0.3.5.bb +++ /dev/null @@ -1,5 +0,0 @@ -require vala_${PV}.bb - -inherit native -DEPENDS = "glib-2.0-native" - diff --git a/packages/vala/vala_0.1.5.bb b/packages/vala/vala_0.1.5.bb deleted file mode 100644 index 0d357945b7..0000000000 --- a/packages/vala/vala_0.1.5.bb +++ /dev/null @@ -1,15 +0,0 @@ -DESCRIPTION = "Vala is a C#-like language dedicated to ease GObject programming. Vala compiles to C" -SECTION = "devel" -DEPENDS = "glib-2.0" -HOMEPAGE = "http://live.gnome.org/Vala" -LICENSE = "LGPL" - -SRC_URI = "http://download.gnome.org/sources/vala/0.1/vala-${PV}.tar.bz2" -S = "${WORKDIR}/vala-${PV}" - -inherit autotools lib_package - -do_stage() { - autotools_stage_all -} - diff --git a/packages/vala/vala_0.3.5.bb b/packages/vala/vala_0.3.5.bb deleted file mode 100644 index 61d736ae98..0000000000 --- a/packages/vala/vala_0.3.5.bb +++ /dev/null @@ -1,5 +0,0 @@ - -require vala.inc - -SRC_URI = "http://download.gnome.org/sources/vala/0.3/vala-${PV}.tar.bz2" - diff --git a/packages/vala/vala_0.5.1.bb b/packages/vala/vala_0.5.1.bb index 4620a31aca..a70f00e49b 100644 --- a/packages/vala/vala_0.5.1.bb +++ b/packages/vala/vala_0.5.1.bb @@ -2,5 +2,7 @@ require vala.inc MAJV = "${@bb.data.getVar('PV',d,1)[:3]}" -SRC_URI = "http://download.gnome.org/sources/vala/${MAJV}/vala-${PV}.tar.bz2" - +SRC_URI = "\ + http://download.gnome.org/sources/vala/${MAJV}/vala-${PV}.tar.bz2 \ + file://HACK-work-around-vte-bug.patch;patch=1 \ +" -- cgit v1.2.3 From ca4d4bbc6fe5ab80de2e938fed10dfe61fdf8788 Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Wed, 12 Nov 2008 15:46:55 +0100 Subject: preferred-om-2008-versions.inc: prefer vala 0.5.1 --- conf/distro/include/preferred-om-2008-versions.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/distro/include/preferred-om-2008-versions.inc b/conf/distro/include/preferred-om-2008-versions.inc index 43bdc8f259..5cf079de84 100644 --- a/conf/distro/include/preferred-om-2008-versions.inc +++ b/conf/distro/include/preferred-om-2008-versions.inc @@ -1932,8 +1932,8 @@ PREFERRED_VERSION_util-macros ?= "1.1.5" PREFERRED_VERSION_util-macros-native ?= "1.1.5" PREFERRED_VERSION_uucp ?= "1.07" PREFERRED_VERSION_v4l2apps ?= "20020317" -PREFERRED_VERSION_vala ?= "0.3.5" -PREFERRED_VERSION_vala-native ?= "0.3.5" +PREFERRED_VERSION_vala ?= "0.5.1" +PREFERRED_VERSION_vala-native ?= "0.5.1" PREFERRED_VERSION_vde ?= "2.0.2" PREFERRED_VERSION_vectoroids ?= "1.1.0" PREFERRED_VERSION_videoplayer ?= "0.1" -- cgit v1.2.3 From 0ca834811d8f08197d8e2e06c2e1367bedf62aae Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Wed, 12 Nov 2008 15:49:15 +0100 Subject: ecore: bring back software-16 engine -- courtesy Michael 'emdete' Dietrich. --- packages/efl1/ecore_svn.bb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/efl1/ecore_svn.bb b/packages/efl1/ecore_svn.bb index 3bc51849d2..e518be539d 100644 --- a/packages/efl1/ecore_svn.bb +++ b/packages/efl1/ecore_svn.bb @@ -1,5 +1,5 @@ require ecore.inc -PR = "r5" +PR = "r6" EXTRA_OECONF = "\ --x-includes=${STAGING_INCDIR}/X11 \ @@ -15,8 +15,7 @@ EXTRA_OECONF = "\ --disable-ecore-sdl \ --enable-ecore-fb \ --enable-ecore-evas \ - --enable-ecore-evas-x11-16 \ - --enable-ecore-evas-16-x11 \ + --enable-ecore-evas-software-16-x11 \ --disable-ecore-evas-x11-gl \ --enable-ecore-evas-xrender \ --disable-ecore-evas-dfb \ -- cgit v1.2.3 From 67109c8919b3201cfaa9f7e984b8fd20eb716f44 Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Wed, 12 Nov 2008 15:52:27 +0100 Subject: sane-srcrevs.inc: bump openmoko-terminal2 --- conf/distro/include/sane-srcrevs.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc index 5368d6d953..e01711d245 100644 --- a/conf/distro/include/sane-srcrevs.inc +++ b/conf/distro/include/sane-srcrevs.inc @@ -150,7 +150,7 @@ SRCREV_pn-openmoko-sample2 ?= "3537" SRCREV_pn-openmoko-set-root-password ?= "4590" SRCREV_pn-openmoko-sound-theme-standard2 ?= "4271" SRCREV_pn-openmoko-tasks2 ?= "399" -SRCREV_pn-openmoko-terminal2 ?= "4726" +SRCREV_pn-openmoko-terminal2 ?= "4782" SRCREV_pn-openmoko-theme-standard2 ?= "4338" SRCREV_pn-openmoko-theme-standard2-qvga ?= "3425" SRCREV_pn-openmoko-today2 ?= "4168" -- cgit v1.2.3 From 7c2aa0001eed1c0dbc15d5eaeef78a5d92be3d4e Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 21 Oct 2008 14:16:32 +0100 Subject: om-gta02.conf : preliminary switch to xorg from Xglamo --- conf/machine/om-gta02.conf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/conf/machine/om-gta02.conf b/conf/machine/om-gta02.conf index 9876ebecbd..6098f47f9f 100644 --- a/conf/machine/om-gta02.conf +++ b/conf/machine/om-gta02.conf @@ -17,7 +17,11 @@ MACHINE_DISPLAY_WIDTH_PIXELS = "480" MACHINE_DISPLAY_HEIGHT_PIXELS = "640" MACHINE_DISPLAY_ORIENTATION = "0" MACHINE_DISPLAY_PPI = "285" -XSERVER = "xserver-kdrive-glamo xserver-kdrive-fbdev" +XSERVER = "xserver-xorg \ + xf86-input-evdev \ + xf86-input-mouse \ + xf86-video-fbdev \ + xf86-input-keyboard" # package machine specific modules MACHINE_EXTRA_RRECOMMENDS = "\ -- cgit v1.2.3 From c3b150f9b649a3e9d60f18f71f9f864ce2f11526 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 28 Oct 2008 10:43:59 +0000 Subject: xwd_1.0.2.bb : new version for X11R7.4 --- packages/xorg-app/xwd_1.0.2.bb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/xorg-app/xwd_1.0.2.bb diff --git a/packages/xorg-app/xwd_1.0.2.bb b/packages/xorg-app/xwd_1.0.2.bb new file mode 100644 index 0000000000..7b712390c6 --- /dev/null +++ b/packages/xorg-app/xwd_1.0.2.bb @@ -0,0 +1,5 @@ +require xorg-app-common.inc +PE = "1" + +DEPENDS += " libxmu virtual/libx11" + -- cgit v1.2.3 From fe57f804af1f62c2882dc833b20e6216d2f10ee5 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 28 Oct 2008 10:44:23 +0000 Subject: xwininfo_1.0.4.bb : new version for X11R7.4 --- packages/xorg-app/xwininfo_1.0.4.bb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/xorg-app/xwininfo_1.0.4.bb diff --git a/packages/xorg-app/xwininfo_1.0.4.bb b/packages/xorg-app/xwininfo_1.0.4.bb new file mode 100644 index 0000000000..069dd30aa8 --- /dev/null +++ b/packages/xorg-app/xwininfo_1.0.4.bb @@ -0,0 +1,5 @@ +require xorg-app-common.inc +PE = "1" + +DEPENDS += " libxmu libxext virtual/libx11" + -- cgit v1.2.3 From d85576bcaced88ed82fe6a4752bc0d12a74db1c5 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 28 Oct 2008 10:44:44 +0000 Subject: xserver-xorg_1.5.1.bb : new version for X11R7.4 drmfix.patch was refreshed for this version, problem still there though --- packages/xorg-xserver/xserver-xorg-1.5.1/drmfix.patch | 13 +++++++++++++ packages/xorg-xserver/xserver-xorg_1.5.1.bb | 15 +++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 packages/xorg-xserver/xserver-xorg-1.5.1/drmfix.patch create mode 100644 packages/xorg-xserver/xserver-xorg_1.5.1.bb diff --git a/packages/xorg-xserver/xserver-xorg-1.5.1/drmfix.patch b/packages/xorg-xserver/xserver-xorg-1.5.1/drmfix.patch new file mode 100644 index 0000000000..e0f633bc24 --- /dev/null +++ b/packages/xorg-xserver/xserver-xorg-1.5.1/drmfix.patch @@ -0,0 +1,13 @@ +Index: xorg-server-1.5.1/hw/xfree86/os-support/linux/Makefile.am +=================================================================== +--- xorg-server-1.5.1.orig/hw/xfree86/os-support/linux/Makefile.am 2008-09-23 19:24:59.000000000 +0100 ++++ xorg-server-1.5.1/hw/xfree86/os-support/linux/Makefile.am 2008-10-27 13:27:40.000000000 +0000 +@@ -40,7 +40,7 @@ + + AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(DIX_CFLAGS) $(XORG_CFLAGS) $(PLATFORM_DEFINES) + +-INCLUDES = $(XORG_INCS) $(PLATFORM_INCLUDES) -I/usr/include/drm # FIXME this last part is crack ++INCLUDES = $(XORG_INCS) $(PLATFORM_INCLUDES) $(LIBDRM_CFLAGS) + + # FIXME: These need to be added to the build + LNX_EXTRA_SRCS = \ diff --git a/packages/xorg-xserver/xserver-xorg_1.5.1.bb b/packages/xorg-xserver/xserver-xorg_1.5.1.bb new file mode 100644 index 0000000000..087692d700 --- /dev/null +++ b/packages/xorg-xserver/xserver-xorg_1.5.1.bb @@ -0,0 +1,15 @@ +require xorg-xserver-common.inc + +DESCRIPTION = "the X.Org X server" +DEPENDS += "pixman libpciaccess" +PE = "1" +PR = "r0" + +SRC_URI += "file://drmfix.patch;patch=1 \ + file://sysroot_fix.patch;patch=1" + +MESA_VER = "7.2" + +EXTRA_OECONF += " ac_cv_file__usr_share_sgml_X11_defs_ent=no " + +export LDFLAGS += " -ldl " -- cgit v1.2.3 From 48a174c26d7992075f954f39a2c2046246616290 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 28 Oct 2008 10:46:10 +0000 Subject: angstrom-2008.1.conf : move to using X11R7.4 --- conf/distro/angstrom-2008.1.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/distro/angstrom-2008.1.conf b/conf/distro/angstrom-2008.1.conf index 33349fcde1..9bc0273466 100644 --- a/conf/distro/angstrom-2008.1.conf +++ b/conf/distro/angstrom-2008.1.conf @@ -116,7 +116,7 @@ PREFERRED_VERSION_gcc-cross-intermediate ?= "${ANGSTROM_GCC_VERSION}" #Loads preferred versions from files, these have weak assigments (?=), so put them at the bottom require conf/distro/include/preferred-e-versions.inc -require conf/distro/include/preferred-xorg-versions-X11R7.3.inc +require conf/distro/include/preferred-xorg-versions-X11R7.4.inc #avr32 only has patches for binutils 2.17 in OE PREFERRED_VERSION_binutils_avr32 = "2.17" -- cgit v1.2.3 From 959024bb7e1db6c0066bcf83f7bca199db764010 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 28 Oct 2008 10:46:31 +0000 Subject: angstrom-2008-preferred-versions.inc : update xserver-xorg to 1.5.1 for X11R7.4 --- conf/distro/include/angstrom-2008-preferred-versions.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/distro/include/angstrom-2008-preferred-versions.inc b/conf/distro/include/angstrom-2008-preferred-versions.inc index bd47256322..c1dc088ead 100644 --- a/conf/distro/include/angstrom-2008-preferred-versions.inc +++ b/conf/distro/include/angstrom-2008-preferred-versions.inc @@ -28,4 +28,4 @@ PREFERRED_VERSION_pulseaudio = "0.9.10" PREFERRED_VERSION_tiff = "3.8.2+4.0.0beta2" PREFERRED_VERSION_udev = "124" PREFERRED_VERSION_xserver-kdrive = "1.4.0.90" -PREFERRED_VERSION_xserver-xorg = "1.4.2" +PREFERRED_VERSION_xserver-xorg = "1.5.1" -- cgit v1.2.3 From ad07edb1dde8005c726c0931ef98e3d221542f26 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 28 Oct 2008 10:49:21 +0000 Subject: checksums.ini : add some new checksums for X11R7.4 stuff --- conf/checksums.ini | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index c5d1359063..2e3a800e09 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -17594,6 +17594,10 @@ sha256=51b142df328d427143705371f139a08ff3bcd6efe0eab91f4178ca4017c0ebc2 md5=9a817e5f7374d45b4dbe64b21bc0fb61 sha256=9a0687812eaceaccc21d55dead47f1fbecf8300a28604bd2c08aae6ff7874cd0 +[http://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.5.1.tar.bz2] +md5=d16f5a033f001c9069b4141194614da2 +sha256=2f36880bffaee0a5b2b704376a02b22066b6842445e1d77da698854e5973eb21 + [http://xorg.freedesktop.org/releases/X11R7.0/src/xserver/xorg-server-X11R7.0-1.0.1.tar.bz2] md5=0e7527480fb845a3c2e333bd0f47ff50 sha256=0419124e1bab473f8f9e2d7de1dba8bae2ed1375b72d55cdfb9471dac357ed47 @@ -17942,6 +17946,10 @@ sha256=126e2a612ac723f9688904fcfa612688d62e520ce55c56eb34eb5390074cf150 md5=39d79590345bed51da6df838f6490cbf sha256=5b52a7241aef8e3372fb15f58f2276e043e19a87269aa6a0330b5823bc3697f6 +[http://xorg.freedesktop.org/releases/individual/app/xwd-1.0.2.tar.bz2] +md5=0a6ef08a2ac08ad5c4dd1522eb3788a3 +sha256=ab8974e010c1957a9a65a54656215463dea324adcaa9954147ecdcc6e9307f61 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xwd-X11R7.0-1.0.1.tar.bz2] md5=596c443465ab9ab67c59c794261d4571 sha256=8ec0abf34ec88f3681666c7727749bac1ccf3f935c1c7f78c009a764f7f0fb11 @@ -17950,6 +17958,10 @@ sha256=8ec0abf34ec88f3681666c7727749bac1ccf3f935c1c7f78c009a764f7f0fb11 md5=721f84332c98c33152460bb22ba9ded6 sha256=fbe3a1aafbc6fa113e58971ff2a82605a7e106af8b810eea4b7512de58a5478a +[http://xorg.freedesktop.org/releases/individual/app/xwininfo-1.0.4.tar.bz2] +md5=e2a9bf5ab7f2a0866700a3b49dd8c6bf +sha256=df9a52788632cd3338e7bd7107ac732b11b8e2c367d4600578cd77e350428ee4 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xwininfo-X11R7.0-1.0.1.tar.bz2] md5=3ec67e4e1b9f5a1fe7e56b56ab931893 sha256=75bc03d2eafd4c7139d707fb86b023376d5a5ad2e9315dad53b250cb19e8bce1 -- cgit v1.2.3 From c2187973adcacda45f2c44aed1f054d2cd4c4969 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 28 Oct 2008 10:49:45 +0000 Subject: preferred-xorg-versions-X11R7.4.inc : update some versions to be correct for this release --- .../include/preferred-xorg-versions-X11R7.4.inc | 46 +++++++++++----------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.4.inc b/conf/distro/include/preferred-xorg-versions-X11R7.4.inc index d6cdc13d5d..1a24297d03 100644 --- a/conf/distro/include/preferred-xorg-versions-X11R7.4.inc +++ b/conf/distro/include/preferred-xorg-versions-X11R7.4.inc @@ -56,7 +56,7 @@ PREFERRED_VERSION_proxymngr ?= "1.0.1" PREFERRED_VERSION_rgb ?= "1.0.3" PREFERRED_VERSION_rstart ?= "1.0.2" PREFERRED_VERSION_scripts ?= "1.0.1" -PREFERRED_VERSION_sessreg ?= "1.0.3" +PREFERRED_VERSION_sessreg ?= "1.0.4" PREFERRED_VERSION_setxkbmap ?= "1.0.4" PREFERRED_VERSION_showfont ?= "1.0.2" PREFERRED_VERSION_smproxy ?= "1.0.2" @@ -118,7 +118,7 @@ PREFERRED_VERSION_xrandr ?= "1.2.3" PREFERRED_VERSION_xrdb ?= "1.0.5" PREFERRED_VERSION_xrefresh ?= "1.0.2" PREFERRED_VERSION_xrx ?= "1.0.1" -PREFERRED_VERSION_xset ?= "1.0.4" +PREFERRED_VERSION_set ?= "1.0.4" PREFERRED_VERSION_xsetmode ?= "1.0.0" PREFERRED_VERSION_xsetpointer ?= "1.0.1" PREFERRED_VERSION_xsetroot ?= "1.0.2" @@ -127,8 +127,8 @@ PREFERRED_VERSION_xstdcmap ?= "1.0.1" PREFERRED_VERSION_xtrap ?= "1.0.2" PREFERRED_VERSION_xvidtune ?= "1.0.1" PREFERRED_VERSION_xvinfo ?= "1.0.2" -PREFERRED_VERSION_xwd ?= "1.0.1" -PREFERRED_VERSION_xwininfo ?= "1.0.3" +PREFERRED_VERSION_xwd ?= "1.0.2" +PREFERRED_VERSION_xwininfo ?= "1.0.4" PREFERRED_VERSION_xwud ?= "1.0.1" # data @@ -149,11 +149,11 @@ PREFERRED_VERSION_xf86-input-dmc ?= "1.1.2" PREFERRED_VERSION_xf86-input-dynapro ?= "1.1.2" PREFERRED_VERSION_xf86-input-elo2300 ?= "1.1.2" PREFERRED_VERSION_xf86-input-elographics ?= "1.2.2" -PREFERRED_VERSION_xf86-input-evdev ?= "1.99.4" +PREFERRED_VERSION_xf86-input-evdev ?= "2.0.4" PREFERRED_VERSION_xf86-input-fpit ?= "1.2.0" PREFERRED_VERSION_xf86-input-hyperpen ?= "1.2.0" PREFERRED_VERSION_xf86-input-jamstudio ?= "1.2.0" -PREFERRED_VERSION_xf86-input-joystick ?= "1.3.1" +PREFERRED_VERSION_xf86-input-joystick ?= "1.3.2" PREFERRED_VERSION_xf86-input-keyboard ?= "1.3.1" PREFERRED_VERSION_xf86-input-magellan ?= "1.2.0" PREFERRED_VERSION_xf86-input-magictouch ?= "1.0.0.5" @@ -171,25 +171,25 @@ PREFERRED_VERSION_xf86-input-void ?= "1.1.1" PREFERRED_VERSION_xf86-video-apm ?= "1.2.0" PREFERRED_VERSION_xf86-video-ark ?= "0.7.0" PREFERRED_VERSION_xf86-video-ast ?= "0.85.0" -PREFERRED_VERSION_xf86-video-ati ?= "6.8.0" +PREFERRED_VERSION_xf86-video-ati ?= "6.9.0" PREFERRED_VERSION_xf86-video-chips ?= "1.2.0" PREFERRED_VERSION_xf86-video-cirrus ?= "1.2.1" PREFERRED_VERSION_xf86-video-cyrix ?= "1.1.0" PREFERRED_VERSION_xf86-video-dummy ?= "0.3.0" PREFERRED_VERSION_xf86-video-fbdev ?= "0.4.0" -PREFERRED_VERSION_xf86-video-geode ?= "2.9.0" -PREFERRED_VERSION_xf86-video-glide ?= "1.0.0" -PREFERRED_VERSION_xf86-video-glint ?= "1.2.0" -PREFERRED_VERSION_xf86-video-i128 ?= "1.3.0" +PREFERRED_VERSION_xf86-video-geode ?= "2.10.1" +PREFERRED_VERSION_xf86-video-glide ?= "1.0.1" +PREFERRED_VERSION_xf86-video-glint ?= "1.2.1" +PREFERRED_VERSION_xf86-video-i128 ?= "1.3.1" PREFERRED_VERSION_xf86-video-i740 ?= "1.2.0" PREFERRED_VERSION_xf86-video-i810 ?= "1.6.5" PREFERRED_VERSION_xf86-video-imstt ?= "1.1.0" -PREFERRED_VERSION_xf86-video-intel ?= "2.2.1" -PREFERRED_VERSION_xf86-video-mga ?= "1.4.8" +PREFERRED_VERSION_xf86-video-intel ?= "2.4.2" +PREFERRED_VERSION_xf86-video-mga ?= "1.4.9" PREFERRED_VERSION_xf86-video-neomagic ?= "1.2.1" PREFERRED_VERSION_xf86-video-newport ?= "0.2.1" PREFERRED_VERSION_xf86-video-nsc ?= "2.8.3" -PREFERRED_VERSION_xf86-video-nv ?= "2.1.9" +PREFERRED_VERSION_xf86-video-nv ?= "2.1.12" PREFERRED_VERSION_xf86-video-radeonhd ?= "1.2.0" PREFERRED_VERSION_xf86-video-rendition ?= "4.2.0" PREFERRED_VERSION_xf86-video-s3 ?= "0.6.0" @@ -198,7 +198,7 @@ PREFERRED_VERSION_xf86-video-savage ?= "2.2.1" PREFERRED_VERSION_xf86-video-siliconmotion ?= "1.6.0" PREFERRED_VERSION_xf86-video-sis ?= "0.10.0" PREFERRED_VERSION_xf86-video-sisusb ?= "0.9.0" -PREFERRED_VERSION_xf86-video-sunbw2 ?= "1.1.0" +PREFERRED_VERSION_xf86-video-sunbw2 ?= "1.2.0" PREFERRED_VERSION_xf86-video-suncg14 ?= "1.1.0" PREFERRED_VERSION_xf86-video-suncg3 ?= "1.1.0" PREFERRED_VERSION_xf86-video-suncg6 ?= "1.1.0" @@ -206,15 +206,15 @@ PREFERRED_VERSION_xf86-video-sunffb ?= "1.1.0" PREFERRED_VERSION_xf86-video-sunleo ?= "1.1.0" PREFERRED_VERSION_xf86-video-suntcx ?= "1.1.0" PREFERRED_VERSION_xf86-video-tdfx ?= "1.4.0" -PREFERRED_VERSION_xf86-video-tga ?= "1.1.0" +PREFERRED_VERSION_xf86-video-tga ?= "1.2.0" PREFERRED_VERSION_xf86-video-trident ?= "1.3.0" PREFERRED_VERSION_xf86-video-tseng ?= "1.2.0" PREFERRED_VERSION_xf86-video-v4l ?= "0.2.0" -PREFERRED_VERSION_xf86-video-vermilion ?= "1.0.0" -PREFERRED_VERSION_xf86-video-vesa ?= "1.3.0" +PREFERRED_VERSION_xf86-video-vermilion ?= "1.0.1" +PREFERRED_VERSION_xf86-video-vesa ?= "2.0.0" PREFERRED_VERSION_xf86-video-vga ?= "4.1.0" PREFERRED_VERSION_xf86-video-via ?= "0.2.2" -PREFERRED_VERSION_xf86-video-vmware ?= "10.16.1" +PREFERRED_VERSION_xf86-video-vmware ?= "10.16.5" PREFERRED_VERSION_xf86-video-voodoo ?= "1.2.0" PREFERRED_VERSION_xf86-video-xgixp ?= "1.7.99.3" @@ -226,14 +226,14 @@ PREFERRED_VERSION_font-util ?= "1.0.1" PREFERRED_VERSION_font-xfree86-type1 ?= "1.0.1" # lib -PREFERRED_VERSION_diet-x11 ?= "1.1.3" +PREFERRED_VERSION_diet-x11 ?= "1.1.5" PREFERRED_VERSION_libdmx ?= "1.0.2" PREFERRED_VERSION_libfs ?= "1.0.1" PREFERRED_VERSION_libfontenc ?= "1.0.4" PREFERRED_VERSION_libice ?= "1.0.4" PREFERRED_VERSION_liblbxutil ?= "1.0.1" PREFERRED_VERSION_libsm ?= "1.0.3" -PREFERRED_VERSION_libx11 ?= "1.1.4" +PREFERRED_VERSION_libx11 ?= "1.1.5" PREFERRED_VERSION_libx11-native ?= "1.1.1" PREFERRED_VERSION_libxau ?= "1.0.3" PREFERRED_VERSION_libxaw ?= "1.0.4" @@ -265,7 +265,7 @@ PREFERRED_VERSION_libxxf86dga ?= "1.0.2" PREFERRED_VERSION_libxxf86misc ?= "1.0.1" PREFERRED_VERSION_libxxf86vm ?= "1.0.1" PREFERRED_VERSION_pixman ?= "0.10.0" -PREFERRED_VERSION_xtrans ?= "1.2" +PREFERRED_VERSION_xtrans ?= "1.2.1" # proto PREFERRED_VERSION_compositeproto ?= "0.4" @@ -292,7 +292,7 @@ PREFERRED_VERSION_xorg-cf-files ?= "1.0.2" # xserver PREFERRED_VERSION_xserver-kdrive ?= "1.4" -PREFERRED_VERSION_xserver-xorg ?= "1.4" +PREFERRED_VERSION_xserver-xorg ?= "1.5.1" # Unreleased packages SRCREV_pn-libxcalibrate ?= "7b8e29186097170e930de634a4a68072558aa056" -- cgit v1.2.3 From 78aea95c4966bdb65f0a2f499ea971bc3d0e9042 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 28 Oct 2008 11:44:07 +0000 Subject: libx11_1.1.5.bb : add new version for X11R7.4, keysymdef patch had to be refreshed for this version. --- packages/xorg-lib/libx11/keysymdef_include.patch | 29 ++++++++++++++++++++++ packages/xorg-lib/libx11_1.1.5.bb | 31 ++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 packages/xorg-lib/libx11/keysymdef_include.patch create mode 100644 packages/xorg-lib/libx11_1.1.5.bb diff --git a/packages/xorg-lib/libx11/keysymdef_include.patch b/packages/xorg-lib/libx11/keysymdef_include.patch new file mode 100644 index 0000000000..07487b6b2e --- /dev/null +++ b/packages/xorg-lib/libx11/keysymdef_include.patch @@ -0,0 +1,29 @@ +Index: libX11-1.1.5/configure.ac +=================================================================== +--- libX11-1.1.5.orig/configure.ac 2008-10-28 11:36:49.000000000 +0000 ++++ libX11-1.1.5/configure.ac 2008-10-28 11:40:05.000000000 +0000 +@@ -221,13 +221,21 @@ + # Find keysymdef.h + # + AC_MSG_CHECKING([keysymdef.h]) +-dir=`pkg-config --variable=includedir xproto` +-KEYSYMDEF="$dir/X11/keysymdef.h" ++AC_ARG_WITH(keysymdef, ++ AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]), ++ KEYSYMDEF=$withval, KEYSYMDEF="") ++ ++if test x$KEYSYMDEF = x; then ++ dir=`pkg-config --variable=includedir xproto` ++ KEYSYMDEF="$dir/X11/keysymdef.h" ++fi ++ + if test -f "$KEYSYMDEF"; then +- AC_MSG_RESULT([$KEYSYMDEF]) ++ AC_MSG_RESULT([$KEYSYMDEF]) + else + AC_MSG_ERROR([Cannot find keysymdef.h]) + fi ++ + AC_SUBST(KEYSYMDEF) + + AM_CONDITIONAL(UDC, test xfalse = xtrue) diff --git a/packages/xorg-lib/libx11_1.1.5.bb b/packages/xorg-lib/libx11_1.1.5.bb new file mode 100644 index 0000000000..a22b7a0158 --- /dev/null +++ b/packages/xorg-lib/libx11_1.1.5.bb @@ -0,0 +1,31 @@ +require xorg-lib-common.inc + +DESCRIPTION = "Base X libs." +DEPENDS += "bigreqsproto xproto xextproto xtrans libxau xcmiscproto \ + libxdmcp xf86bigfontproto kbproto inputproto xproto-native" +PROVIDES = "virtual/libx11" +PE = "1" +PR = "r3" + +XORG_PN = "libX11" + +SRC_URI += "file://x11_disable_makekeys.patch;patch=1 \ + file://keysymdef_include.patch;patch=1" + +EXTRA_OECONF += "--without-xcb --with-keysymdef=${STAGING_INCDIR}/X11/keysymdef.h" + +do_compile() { + ( + unset CC LD CXX CCLD CFLAGS CPPFLAGS LDFLAGS CXXFLAGS + cd src/util; + mv makekeys.c.orig makekeys.c || true + touch makekeys-makekeys.o ; ${BUILD_CC} ${BUILD_CFLAGS} -I${STAGING_INCDIR_NATIVE} makekeys.c -o makekeys + # mv to stop it getting rebuilt + mv makekeys.c makekeys.c.orig + cd ../../ + ) || exit 1 + oe_runmake +} + +FILES_${PN} += "${datadir}/X11/XKeysymDB ${datadir}/X11/XErrorDB ${libdir}/X11/Xcms.txt" +FILES_${PN}-locale += "${datadir}/X11/locale ${libdir}/X11/locale" -- cgit v1.2.3 From 7dd85f96a988b90f9aeb1fcdcd9ae855e41f26d5 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 28 Oct 2008 11:50:40 +0000 Subject: diet-x11_1.1.5.bb : new version for X11R7.4 --- packages/xorg-lib/diet-x11_1.1.5.bb | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 packages/xorg-lib/diet-x11_1.1.5.bb diff --git a/packages/xorg-lib/diet-x11_1.1.5.bb b/packages/xorg-lib/diet-x11_1.1.5.bb new file mode 100644 index 0000000000..19a9efecbf --- /dev/null +++ b/packages/xorg-lib/diet-x11_1.1.5.bb @@ -0,0 +1,10 @@ +require libx11_${PV}.bb + +SRC_URI += "file://X18NCMSstubs.diff;patch=1 \ + file://fix-disable-xlocale.diff;patch=1 \ + file://fix-utf8-wrong-define.patch;patch=1" + +FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libx11" + +EXTRA_OECONF += "--disable-udc --disable-xcms --disable-xlocale --disable-xkb" +CFLAGS += "-D_GNU_SOURCE" -- cgit v1.2.3 From 3a037b5f5846049ad7d6027d4434507fc103d472 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 28 Oct 2008 13:11:06 +0000 Subject: xf86-input-evdev_2.0.4.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-input-evdev_2.0.4.bb | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 packages/xorg-driver/xf86-input-evdev_2.0.4.bb diff --git a/packages/xorg-driver/xf86-input-evdev_2.0.4.bb b/packages/xorg-driver/xf86-input-evdev_2.0.4.bb new file mode 100644 index 0000000000..792909621a --- /dev/null +++ b/packages/xorg-driver/xf86-input-evdev_2.0.4.bb @@ -0,0 +1,4 @@ +require xorg-driver-input.inc + +DESCRIPTION = "X.Org X server -- evdev input driver" +PE = "1" -- cgit v1.2.3 From ca5131cbe726af49a5d7e8b30043ee65f7bd7361 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 28 Oct 2008 16:27:56 +0000 Subject: checksums.ini : add xinit checksum for X11R7.4 --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 2e3a800e09..e5434c7555 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -17374,6 +17374,10 @@ sha256=15781cf2b15af8a2535ecc49acce77cc16573571344a71dcbe198ec12e5bb774 md5=521574088fbd688edbf91e6bae674265 sha256=06c1049f6b63d1c368a1e03e2392097919b22ff24899e190de3577bffe6fe524 +[http://xorg.freedesktop.org/releases/individual/app/xinit-1.0.9.tar.bz2] +md5=224c36057e4416205d4e421af01a2f15 +sha256=b4218fd4ca5e431bf69cba848c21e91235fda30504634b9f6b6cd011dcbd8999 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xinit-X11R7.0-1.0.1.tar.bz2] md5=6d2df59fa328cbc99c0de98bc2e14597 sha256=e55c61ede6760ce0d8eaac6dc386850c7873311ab038c69338e35559ec0bbd02 -- cgit v1.2.3 From 1bc5dcac97e323e6073bdf3f459d04932a731ba2 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 28 Oct 2008 16:28:50 +0000 Subject: om-gta02.conf : use tslib not evdev --- conf/machine/om-gta02.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/machine/om-gta02.conf b/conf/machine/om-gta02.conf index 6098f47f9f..4a8abfacff 100644 --- a/conf/machine/om-gta02.conf +++ b/conf/machine/om-gta02.conf @@ -18,7 +18,7 @@ MACHINE_DISPLAY_HEIGHT_PIXELS = "640" MACHINE_DISPLAY_ORIENTATION = "0" MACHINE_DISPLAY_PPI = "285" XSERVER = "xserver-xorg \ - xf86-input-evdev \ + xf86-input-tslib \ xf86-input-mouse \ xf86-video-fbdev \ xf86-input-keyboard" -- cgit v1.2.3 From dd54f3fc1febff6b0266bfd32ad0eb825509c4ad Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:34:47 +0000 Subject: preferred-xorg-versions-X11R7.4.inc : update some more versions for 7.4 --- .../include/preferred-xorg-versions-X11R7.4.inc | 140 ++++++--------------- 1 file changed, 40 insertions(+), 100 deletions(-) diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.4.inc b/conf/distro/include/preferred-xorg-versions-X11R7.4.inc index 1a24297d03..1f3d68d8ae 100644 --- a/conf/distro/include/preferred-xorg-versions-X11R7.4.inc +++ b/conf/distro/include/preferred-xorg-versions-X11R7.4.inc @@ -36,96 +36,41 @@ PREFERRED_VERSION_task-xorg ?= "X11R7.4" # app PREFERRED_VERSION_appres ?= "1.0.1" -PREFERRED_VERSION_bdftopcf ?= "1.0.1" -PREFERRED_VERSION_beforelight ?= "1.0.3" PREFERRED_VERSION_bitmap ?= "1.0.3" -PREFERRED_VERSION_editres ?= "1.0.3" -PREFERRED_VERSION_fontosfnt ?= "1.0.4" -PREFERRED_VERSION_fslsfonts ?= "1.0.2" -PREFERRED_VERSION_fstobdf ?= "1.0.3" PREFERRED_VERSION_iceauth ?= "1.0.2" -PREFERRED_VERSION_ico ?= "1.0.2" -PREFERRED_VERSION_lbxproxy ?= "1.0.1" -PREFERRED_VERSION_listres ?= "1.0.1" PREFERRED_VERSION_luit ?= "1.0.3" PREFERRED_VERSION_mkfontdir-native ?= "1.0.4" PREFERRED_VERSION_mkfontdir ?= "1.0.4" PREFERRED_VERSION_mkfontscale ?= "1.0.5" -PREFERRED_VERSION_oclock ?= "1.0.1" -PREFERRED_VERSION_proxymngr ?= "1.0.1" -PREFERRED_VERSION_rgb ?= "1.0.3" -PREFERRED_VERSION_rstart ?= "1.0.2" -PREFERRED_VERSION_scripts ?= "1.0.1" PREFERRED_VERSION_sessreg ?= "1.0.4" PREFERRED_VERSION_setxkbmap ?= "1.0.4" -PREFERRED_VERSION_showfont ?= "1.0.2" PREFERRED_VERSION_smproxy ?= "1.0.2" -PREFERRED_VERSION_twm ?= "1.0.4" -PREFERRED_VERSION_viewres ?= "1.0.1" PREFERRED_VERSION_x11perf ?= "1.5" PREFERRED_VERSION_xauth ?= "1.0.3" PREFERRED_VERSION_xbacklight ?= "1.1" -PREFERRED_VERSION_xbiff ?= "1.0.1" -PREFERRED_VERSION_xcalc ?= "1.0.2" -PREFERRED_VERSION_xclipboard ?= "1.0.1" -PREFERRED_VERSION_xclock ?= "1.0.3" -PREFERRED_VERSION_xcompmgr ?= "1.1.4" PREFERRED_VERSION_xcmsdb ?= "1.0.1" -PREFERRED_VERSION_xconsole ?= "1.0.3" PREFERRED_VERSION_xcursorgen ?= "1.0.2" -PREFERRED_VERSION_xdbedizzy ?= "1.0.2" -PREFERRED_VERSION_xditview ?= "1.0.1" -PREFERRED_VERSION_xdm ?= "1.1.8" PREFERRED_VERSION_xdpyinfo ?= "1.0.3" PREFERRED_VERSION_xdriinfo ?= "1.0.2" -PREFERRED_VERSION_xedit ?= "1.0.2" PREFERRED_VERSION_xev ?= "1.0.3" -PREFERRED_VERSION_xeyes ?= "1.0.1" -PREFERRED_VERSION_xxf86dga ?= "1.0.2" -PREFERRED_VERSION_xfd ?= "1.0.1" -PREFERRED_VERSION_xfindproxy ?= "1.0.1" -PREFERRED_VERSION_xfontsel ?= "1.0.2" -PREFERRED_VERSION_xfs ?= "1.0.8" -PREFERRED_VERSION_xfsinfo ?= "1.0.2" -PREFERRED_VERSION_xfwp ?= "1.0.1" PREFERRED_VERSION_xgamma ?= "1.0.2" -PREFERRED_VERSION_xgc ?= "1.0.1" PREFERRED_VERSION_xhost ?= "1.0.2" -PREFERRED_VERSION_xinit ?= "1.0.9" PREFERRED_VERSION_xinput ?= "1.3.0" PREFERRED_VERSION_xkbcomp ?= "1.0.5" PREFERRED_VERSION_xkbevd ?= "1.0.2" -PREFERRED_VERSION_xkbprint ?= "1.0.1" PREFERRED_VERSION_xkbutils ?= "1.0.1" PREFERRED_VERSION_xkill ?= "1.0.1" -PREFERRED_VERSION_xload ?= "1.0.2" -PREFERRED_VERSION_xlogo ?= "1.0.1" PREFERRED_VERSION_xlsatoms ?= "1.0.1" PREFERRED_VERSION_xlsclients ?= "1.0.1" -PREFERRED_VERSION_xlsfonts ?= "1.0.2" -PREFERRED_VERSION_xmag ?= "1.0.2" -PREFERRED_VERSION_xman ?= "1.0.3" -PREFERRED_VERSION_xmessage ?= "1.0.2" -PREFERRED_VERSION_xmh ?= "1.0.1" PREFERRED_VERSION_xmodmap ?= "1.0.3" -PREFERRED_VERSION_xmore ?= "1.0.1" -PREFERRED_VERSION_xphelloworld ?= "1.0.1" -PREFERRED_VERSION_xplsprinters ?= "1.0.1" PREFERRED_VERSION_xpr ?= "1.0.2" -PREFERRED_VERSION_xprehashprinterlist ?= "1.0.1" PREFERRED_VERSION_xprop ?= "1.0.4" PREFERRED_VERSION_xrandr ?= "1.2.3" PREFERRED_VERSION_xrdb ?= "1.0.5" PREFERRED_VERSION_xrefresh ?= "1.0.2" -PREFERRED_VERSION_xrx ?= "1.0.1" -PREFERRED_VERSION_set ?= "1.0.4" +PREFERRED_VERSION_xset ?= "1.0.4" PREFERRED_VERSION_xsetmode ?= "1.0.0" -PREFERRED_VERSION_xsetpointer ?= "1.0.1" PREFERRED_VERSION_xsetroot ?= "1.0.2" -PREFERRED_VERSION_xsm ?= "1.0.1" -PREFERRED_VERSION_xstdcmap ?= "1.0.1" -PREFERRED_VERSION_xtrap ?= "1.0.2" -PREFERRED_VERSION_xvidtune ?= "1.0.1" PREFERRED_VERSION_xvinfo ?= "1.0.2" PREFERRED_VERSION_xwd ?= "1.0.2" PREFERRED_VERSION_xwininfo ?= "1.0.4" @@ -142,30 +87,11 @@ PREFERRED_VERSION_xorg-sgml-doctools ?= "1.2" # driver PREFERRED_VERSION_xf86-input-acecad ?= "1.2.2" PREFERRED_VERSION_xf86-input-aiptek ?= "1.1.1" -PREFERRED_VERSION_xf86-input-calcomp ?= "1.1.2" -PREFERRED_VERSION_xf86-input-citron ?= "2.2.1" -PREFERRED_VERSION_xf86-input-digitaledge ?= "1.1.1" -PREFERRED_VERSION_xf86-input-dmc ?= "1.1.2" -PREFERRED_VERSION_xf86-input-dynapro ?= "1.1.2" -PREFERRED_VERSION_xf86-input-elo2300 ?= "1.1.2" -PREFERRED_VERSION_xf86-input-elographics ?= "1.2.2" PREFERRED_VERSION_xf86-input-evdev ?= "2.0.4" -PREFERRED_VERSION_xf86-input-fpit ?= "1.2.0" -PREFERRED_VERSION_xf86-input-hyperpen ?= "1.2.0" -PREFERRED_VERSION_xf86-input-jamstudio ?= "1.2.0" PREFERRED_VERSION_xf86-input-joystick ?= "1.3.2" PREFERRED_VERSION_xf86-input-keyboard ?= "1.3.1" -PREFERRED_VERSION_xf86-input-magellan ?= "1.2.0" -PREFERRED_VERSION_xf86-input-magictouch ?= "1.0.0.5" -PREFERRED_VERSION_xf86-input-microtouch ?= "1.2.0" PREFERRED_VERSION_xf86-input-mouse ?= "1.3.0" -PREFERRED_VERSION_xf86-input-mutouch ?= "1.2.0" -PREFERRED_VERSION_xf86-input-palmax ?= "1.2.0" -PREFERRED_VERSION_xf86-input-penmount ?= "1.3.0" -PREFERRED_VERSION_xf86-input-spaceorb ?= "1.1.1" -PREFERRED_VERSION_xf86-input-summa ?= "1.2.0" -PREFERRED_VERSION_xf86-input-tek4957 ?= "1.2.0" -PREFERRED_VERSION_xf86-input-ur98 ?= "1.1.0" +PREFERRED_VERSION_xf86-input-synaptics ?= "0.15.0" PREFERRED_VERSION_xf86-input-vmmouse ?= "12.5.1" PREFERRED_VERSION_xf86-input-void ?= "1.1.1" PREFERRED_VERSION_xf86-video-apm ?= "1.2.0" @@ -174,7 +100,6 @@ PREFERRED_VERSION_xf86-video-ast ?= "0.85.0" PREFERRED_VERSION_xf86-video-ati ?= "6.9.0" PREFERRED_VERSION_xf86-video-chips ?= "1.2.0" PREFERRED_VERSION_xf86-video-cirrus ?= "1.2.1" -PREFERRED_VERSION_xf86-video-cyrix ?= "1.1.0" PREFERRED_VERSION_xf86-video-dummy ?= "0.3.0" PREFERRED_VERSION_xf86-video-fbdev ?= "0.4.0" PREFERRED_VERSION_xf86-video-geode ?= "2.10.1" @@ -182,15 +107,15 @@ PREFERRED_VERSION_xf86-video-glide ?= "1.0.1" PREFERRED_VERSION_xf86-video-glint ?= "1.2.1" PREFERRED_VERSION_xf86-video-i128 ?= "1.3.1" PREFERRED_VERSION_xf86-video-i740 ?= "1.2.0" -PREFERRED_VERSION_xf86-video-i810 ?= "1.6.5" -PREFERRED_VERSION_xf86-video-imstt ?= "1.1.0" +PREFERRED_VERSION_xf86-video-impact ?= "0.2.0" PREFERRED_VERSION_xf86-video-intel ?= "2.4.2" +PREFERRED_VERSION_xf86-video-mach64 ?= "6.8.0" PREFERRED_VERSION_xf86-video-mga ?= "1.4.9" PREFERRED_VERSION_xf86-video-neomagic ?= "1.2.1" PREFERRED_VERSION_xf86-video-newport ?= "0.2.1" -PREFERRED_VERSION_xf86-video-nsc ?= "2.8.3" PREFERRED_VERSION_xf86-video-nv ?= "2.1.12" -PREFERRED_VERSION_xf86-video-radeonhd ?= "1.2.0" +PREFERRED_VERSION_xf86-video-openchrome ?= "0.2.903" +PREFERRED_VERSION_xf86-video-r128 ?= "6.8.0" PREFERRED_VERSION_xf86-video-rendition ?= "4.2.0" PREFERRED_VERSION_xf86-video-s3 ?= "0.6.0" PREFERRED_VERSION_xf86-video-s3virge ?= "1.10.1" @@ -198,12 +123,12 @@ PREFERRED_VERSION_xf86-video-savage ?= "2.2.1" PREFERRED_VERSION_xf86-video-siliconmotion ?= "1.6.0" PREFERRED_VERSION_xf86-video-sis ?= "0.10.0" PREFERRED_VERSION_xf86-video-sisusb ?= "0.9.0" -PREFERRED_VERSION_xf86-video-sunbw2 ?= "1.2.0" +PREFERRED_VERSION_xf86-video-sunbw2 ?= "1.1.0" PREFERRED_VERSION_xf86-video-suncg14 ?= "1.1.0" PREFERRED_VERSION_xf86-video-suncg3 ?= "1.1.0" PREFERRED_VERSION_xf86-video-suncg6 ?= "1.1.0" -PREFERRED_VERSION_xf86-video-sunffb ?= "1.1.0" -PREFERRED_VERSION_xf86-video-sunleo ?= "1.1.0" +PREFERRED_VERSION_xf86-video-sunffb ?= "1.2.0" +PREFERRED_VERSION_xf86-video-sunleo ?= "1.2.0" PREFERRED_VERSION_xf86-video-suntcx ?= "1.1.0" PREFERRED_VERSION_xf86-video-tdfx ?= "1.4.0" PREFERRED_VERSION_xf86-video-tga ?= "1.2.0" @@ -212,10 +137,10 @@ PREFERRED_VERSION_xf86-video-tseng ?= "1.2.0" PREFERRED_VERSION_xf86-video-v4l ?= "0.2.0" PREFERRED_VERSION_xf86-video-vermilion ?= "1.0.1" PREFERRED_VERSION_xf86-video-vesa ?= "2.0.0" -PREFERRED_VERSION_xf86-video-vga ?= "4.1.0" -PREFERRED_VERSION_xf86-video-via ?= "0.2.2" PREFERRED_VERSION_xf86-video-vmware ?= "10.16.5" PREFERRED_VERSION_xf86-video-voodoo ?= "1.2.0" +PREFERRED_VERSION_xf86-video-wsfb ?= "0.2.1" +PREFERRED_VERSION_xf86-video-xgi ?= "1.5.0" PREFERRED_VERSION_xf86-video-xgixp ?= "1.7.99.3" # font @@ -227,33 +152,34 @@ PREFERRED_VERSION_font-xfree86-type1 ?= "1.0.1" # lib PREFERRED_VERSION_diet-x11 ?= "1.1.5" +PREFERRED_VERSION_libapplewm ?= "1.0.0" PREFERRED_VERSION_libdmx ?= "1.0.2" PREFERRED_VERSION_libfs ?= "1.0.1" -PREFERRED_VERSION_libfontenc ?= "1.0.4" PREFERRED_VERSION_libice ?= "1.0.4" -PREFERRED_VERSION_liblbxutil ?= "1.0.1" -PREFERRED_VERSION_libsm ?= "1.0.3" +PREFERRED_VERSION_libfontenc ?= "1.0.4" +PREFERRED_VERSION_libsm ?= "1.1.0" +PREFERRED_VERSION_libwindowswm ?= "1.0.0" PREFERRED_VERSION_libx11 ?= "1.1.5" PREFERRED_VERSION_libx11-native ?= "1.1.1" -PREFERRED_VERSION_libxau ?= "1.0.3" +PREFERRED_VERSION_libxau ?= "1.0.4" PREFERRED_VERSION_libxaw ?= "1.0.4" PREFERRED_VERSION_libxcomposite ?= "0.4.0" PREFERRED_VERSION_libxcursor ?= "1.1.9" -PREFERRED_VERSION_libxdamage ?= "1.0.4" +PREFERRED_VERSION_libxdamage ?= "1.1.1" PREFERRED_VERSION_libxdmcp-native ?= "1.0.2" PREFERRED_VERSION_libxdmcp ?= "1.0.2" PREFERRED_VERSION_libxevie ?= "1.0.2" PREFERRED_VERSION_libxext ?= "1.0.4" PREFERRED_VERSION_libxfixes ?= "4.0.3" -PREFERRED_VERSION_libxfont ?= "1.3.2" +PREFERRED_VERSION_libxfont ?= "1.3.3" PREFERRED_VERSION_libxfontcache ?= "1.0.4" +PREFERRED_VERSION_libxft ?= "2.1.13" PREFERRED_VERSION_libxi ?= "1.1.3" PREFERRED_VERSION_libxinerama ?= "1.0.3" PREFERRED_VERSION_libxkbfile ?= "1.0.5" -PREFERRED_VERSION_libxkbui ?= "1.0.2" PREFERRED_VERSION_libxmu ?= "1.0.4" PREFERRED_VERSION_libxpm ?= "3.5.7" -PREFERRED_VERSION_libxrandr ?= "1.2.2" +PREFERRED_VERSION_libxrandr ?= "1.2.3" PREFERRED_VERSION_libxrender ?= "0.9.4" PREFERRED_VERSION_libxres ?= "1.0.3" PREFERRED_VERSION_libxscrnsaver ?= "1.1.3" @@ -263,24 +189,38 @@ PREFERRED_VERSION_libxv ?= "1.0.4" PREFERRED_VERSION_libxvmc ?= "1.0.4" PREFERRED_VERSION_libxxf86dga ?= "1.0.2" PREFERRED_VERSION_libxxf86misc ?= "1.0.1" -PREFERRED_VERSION_libxxf86vm ?= "1.0.1" -PREFERRED_VERSION_pixman ?= "0.10.0" +PREFERRED_VERSION_libxxf86vm ?= "1.0.2" PREFERRED_VERSION_xtrans ?= "1.2.1" # proto +PREFERRED_VERSION_applewmproto ?= "1.0.3" +PREFERRED_VERSION_bigreqsproto ?= "1.0.2" PREFERRED_VERSION_compositeproto ?= "0.4" PREFERRED_VERSION_damageproto ?= "1.1.0" +PREFERRED_VERSION_dmxproto ?= "2.2.2" PREFERRED_VERSION_fixesproto ?= "4.0" +PREFERRED_VERSION_fontcacheproto ?= "0.1.2" +PREFERRED_VERSION_fontsproto ?= "2.0.2" PREFERRED_VERSION_glproto ?= "1.4.9" -PREFERRED_VERSION_inputproto ?= "1.4.3" +PREFERRED_VERSION_inputproto ?= "1.4.4" PREFERRED_VERSION_kbproto ?= "1.0.3" -PREFERRED_VERSION_printproto ?= "1.0.4" PREFERRED_VERSION_randrproto ?= "1.2.1" +PREFERRED_VERSION_recordproto ?= "1.13.2" PREFERRED_VERSION_renderproto ?= "0.9.3" +PREFERRED_VERSION_resourceproto ?= "1.0.2" PREFERRED_VERSION_scrnsaverproto ?= "1.1.0" +PREFERRED_VERSION_trapproto ?= "3.4.3" +PREFERRED_VERSION_videoproto ?= "2.2.2" +PREFERRED_VERSION_windowswmproto ?= "1.0.3" +PREFERRED_VERSION_xmiscproto ?= "1.1.2" +PREFERRED_VERSION_xextproto ?= "7.0.3" PREFERRED_VERSION_xf86dgaproto ?= "2.0.3" -PREFERRED_VERSION_xproto-native ?= "7.0.12" -PREFERRED_VERSION_xproto ?= "7.0.12" +PREFERRED_VERSION_xf86driproto ?= "2.0.4" +PREFERRED_VERSION_xf86miscproto ?= "0.9.2" +PREFERRED_VERSION_xf86vidmodeproto ?= "2.2.2" +PREFERRED_VERSION_xinemaroproto ?= "1.1.2" +PREFERRED_VERSION_xproto-native ?= "7.0.13" +PREFERRED_VERSION_xproto ?= "7.0.13" # util PREFERRED_VERSION_gccmakedep ?= "1.0.2" -- cgit v1.2.3 From 492c7a952aeb65a0ab2c89f32093c7c9fbf997ab Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:35:38 +0000 Subject: xproto_7.0.13.bb, xproto-native_7.0.13.bb : new versions for X11R7.4 --- packages/xorg-proto/xproto-native_7.0.13.bb | 3 +++ packages/xorg-proto/xproto_7.0.13.bb | 6 ++++++ 2 files changed, 9 insertions(+) create mode 100644 packages/xorg-proto/xproto-native_7.0.13.bb create mode 100644 packages/xorg-proto/xproto_7.0.13.bb diff --git a/packages/xorg-proto/xproto-native_7.0.13.bb b/packages/xorg-proto/xproto-native_7.0.13.bb new file mode 100644 index 0000000000..5dde8a7d4a --- /dev/null +++ b/packages/xorg-proto/xproto-native_7.0.13.bb @@ -0,0 +1,3 @@ +require xproto_${PV}.bb + +inherit native diff --git a/packages/xorg-proto/xproto_7.0.13.bb b/packages/xorg-proto/xproto_7.0.13.bb new file mode 100644 index 0000000000..b403ff5615 --- /dev/null +++ b/packages/xorg-proto/xproto_7.0.13.bb @@ -0,0 +1,6 @@ +require xorg-proto-common.inc + +PR = "r0" +PE = "1" + +XORG_PN = "xproto" -- cgit v1.2.3 From edd05a7791c19ab173c6a99a7d9813e4a05ad583 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:36:39 +0000 Subject: libsm_1.1.0.bb : new version for X11R7.4 --- packages/xorg-lib/libsm_1.1.0.bb | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 packages/xorg-lib/libsm_1.1.0.bb diff --git a/packages/xorg-lib/libsm_1.1.0.bb b/packages/xorg-lib/libsm_1.1.0.bb new file mode 100644 index 0000000000..669b29c937 --- /dev/null +++ b/packages/xorg-lib/libsm_1.1.0.bb @@ -0,0 +1,8 @@ +require xorg-lib-common.inc + +DESCRIPTION = "X11 Session management library" +DEPENDS += "libice xproto xtrans" +PR = "r0" +PE = "1" + +XORG_PN = "libSM" -- cgit v1.2.3 From 77d762f34ed4f09d56929a77ddbdf32090efdbfe Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:37:14 +0000 Subject: libxft_2.1.13.bb : new version for X11R7.4 --- packages/xorg-lib/libxft_2.1.13.bb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 packages/xorg-lib/libxft_2.1.13.bb diff --git a/packages/xorg-lib/libxft_2.1.13.bb b/packages/xorg-lib/libxft_2.1.13.bb new file mode 100644 index 0000000000..84d0cc2cbe --- /dev/null +++ b/packages/xorg-lib/libxft_2.1.13.bb @@ -0,0 +1,20 @@ +require xorg-lib-common.inc + +DESCRIPTION = "FreeType-based font drawing library for X" +DEPENDS += "libxrender freetype fontconfig" +PROVIDES = "xft" +PR = "r0" +PE = "1" + +XORG_PN = "libXft" + +python do_package() { + if bb.data.getVar('DEBIAN_NAMES', d, 1): + bb.data.setVar('PKG_${PN}', 'libxft2', d) + bb.build.exec_func('package_do_package', d) +} + +FILES_${PN} = "${libdir}/lib*${SOLIBS}" +FILES_${PN}-dev = "${includedir} ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la \ + ${libdir}/*.a ${libdir}/pkgconfig \ + ${datadir}/aclocal ${bindir} ${sbindir}" -- cgit v1.2.3 From 5c8db19a138ca178ecfec43c7eac2b275ea2f5fd Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:37:45 +0000 Subject: libxrandr_1.2.3.bb : new version for X11R7.4 --- packages/xorg-lib/libxrandr_1.2.3.bb | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 packages/xorg-lib/libxrandr_1.2.3.bb diff --git a/packages/xorg-lib/libxrandr_1.2.3.bb b/packages/xorg-lib/libxrandr_1.2.3.bb new file mode 100644 index 0000000000..f6d7623bca --- /dev/null +++ b/packages/xorg-lib/libxrandr_1.2.3.bb @@ -0,0 +1,9 @@ +require xorg-lib-common.inc + +DESCRIPTION = "X11 Resize and Rotate extension library" +LICENSE = "BSD-X" +DEPENDS += "randrproto libxrender libxext" +PR = "r0" +PE = "1" + +XORG_PN = "libXrandr" -- cgit v1.2.3 From 48b29041deae4053038d13fd81f52e04610b61f9 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:38:10 +0000 Subject: libxxf86vm_1.0.2.bb : new version for X11R7.4 --- packages/xorg-lib/libxxf86vm_1.0.2.bb | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 packages/xorg-lib/libxxf86vm_1.0.2.bb diff --git a/packages/xorg-lib/libxxf86vm_1.0.2.bb b/packages/xorg-lib/libxxf86vm_1.0.2.bb new file mode 100644 index 0000000000..2d1af9c9aa --- /dev/null +++ b/packages/xorg-lib/libxxf86vm_1.0.2.bb @@ -0,0 +1,8 @@ +require xorg-lib-common.inc + +DESCRIPTION = "X11 XFree86 video mode extension library" +DEPENDS += "libxext xf86vidmodeproto" +PR = "r0" +PE = "1" + +XORG_PN = "libXxf86vm" -- cgit v1.2.3 From 00cccdc8f03f15fd2dc05225ab6df273e53c18cb Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:41:36 +0000 Subject: xcursorgen-native_1.0.2.bb : add a native version for X11R7.4 --- packages/xorg-app/xcursorgen-native_1.0.2.bb | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/xorg-app/xcursorgen-native_1.0.2.bb diff --git a/packages/xorg-app/xcursorgen-native_1.0.2.bb b/packages/xorg-app/xcursorgen-native_1.0.2.bb new file mode 100644 index 0000000000..0cbf9fc716 --- /dev/null +++ b/packages/xorg-app/xcursorgen-native_1.0.2.bb @@ -0,0 +1,7 @@ +inherit native +require xcursorgen_${PV}.bb + +DEPENDS = "libx11-native libpng-native" + +S="${WORKDIR}/xcursorgen-${PV}" +XORG_PN="xcursorgen" -- cgit v1.2.3 From bed1dbef158b811628c1eb4dd69b2bdd404a73b7 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:42:02 +0000 Subject: libxcursor-native_1.1.9.bb : add a native version for X11R7.4 --- packages/xorg-lib/libxcursor-native_1.1.9.bb | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 packages/xorg-lib/libxcursor-native_1.1.9.bb diff --git a/packages/xorg-lib/libxcursor-native_1.1.9.bb b/packages/xorg-lib/libxcursor-native_1.1.9.bb new file mode 100644 index 0000000000..403030e93d --- /dev/null +++ b/packages/xorg-lib/libxcursor-native_1.1.9.bb @@ -0,0 +1,6 @@ +require libxcursor_${PV}.bb + +DEPENDS = "libx11-native fixesproto-native libxfixes-native" +PE = "1" + +inherit native -- cgit v1.2.3 From 64362c68460ae8bda83b9c45948060d13c1d85ea Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:42:25 +0000 Subject: libxfixes-native_4.0.3.bb : add a native version for X11R7.4 --- packages/xorg-lib/libxfixes-native_4.0.3.bb | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 packages/xorg-lib/libxfixes-native_4.0.3.bb diff --git a/packages/xorg-lib/libxfixes-native_4.0.3.bb b/packages/xorg-lib/libxfixes-native_4.0.3.bb new file mode 100644 index 0000000000..5ef6ded80a --- /dev/null +++ b/packages/xorg-lib/libxfixes-native_4.0.3.bb @@ -0,0 +1,6 @@ +require libxfixes_${PV}.bb + +DEPENDS = "libx11-native" +PE = "1" + +inherit native -- cgit v1.2.3 From b6b736a45eaa2bb61a36d6056d3c99e4abf1b241 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:42:54 +0000 Subject: libxrender-native_0.9.4.bb : add a native version for X11R7.4 --- packages/xorg-lib/libxrender-native_0.9.4.bb | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 packages/xorg-lib/libxrender-native_0.9.4.bb diff --git a/packages/xorg-lib/libxrender-native_0.9.4.bb b/packages/xorg-lib/libxrender-native_0.9.4.bb new file mode 100644 index 0000000000..a4f4ba9e36 --- /dev/null +++ b/packages/xorg-lib/libxrender-native_0.9.4.bb @@ -0,0 +1,6 @@ +require libxrender_${PV}.bb + +DEPENDS = "libx11-native renderproto-native" +PE = "1" + +inherit native -- cgit v1.2.3 From 3b5532e4e606cc069273b044be1eb752cd6f0ca2 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:43:18 +0000 Subject: fixesproto-native_4.0.bb : add native version for X11R7.4 --- packages/xorg-proto/fixesproto-native_4.0.bb | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/xorg-proto/fixesproto-native_4.0.bb diff --git a/packages/xorg-proto/fixesproto-native_4.0.bb b/packages/xorg-proto/fixesproto-native_4.0.bb new file mode 100644 index 0000000000..927e004437 --- /dev/null +++ b/packages/xorg-proto/fixesproto-native_4.0.bb @@ -0,0 +1,7 @@ +require fixesproto_${PV}.bb + +PR = "r1" + +XORG_PN = "fixesproto" + +inherit native -- cgit v1.2.3 From c8dc1e0d8602c8032cb70d70b43a0d28a903c3c1 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:43:50 +0000 Subject: renderproto-native_0.9.3.bb : add native version for X11R7.4 --- packages/xorg-proto/renderproto-native_0.9.3.bb | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/xorg-proto/renderproto-native_0.9.3.bb diff --git a/packages/xorg-proto/renderproto-native_0.9.3.bb b/packages/xorg-proto/renderproto-native_0.9.3.bb new file mode 100644 index 0000000000..8d83c99774 --- /dev/null +++ b/packages/xorg-proto/renderproto-native_0.9.3.bb @@ -0,0 +1,7 @@ +require renderproto_${PV}.bb + +PR = "r1" + +XORG_PN = "renderproto" + +inherit native -- cgit v1.2.3 From 4bd704a989dcadd905da9027821c4088792f8a2a Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:44:23 +0000 Subject: xcursor-themes_1.0.1.bb : needs xcursorgen-native which has now been added --- packages/xorg-data/xcursor-themes_1.0.1.bb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/xorg-data/xcursor-themes_1.0.1.bb b/packages/xorg-data/xcursor-themes_1.0.1.bb index 8cf822e56f..1107d08da9 100644 --- a/packages/xorg-data/xcursor-themes_1.0.1.bb +++ b/packages/xorg-data/xcursor-themes_1.0.1.bb @@ -1,5 +1,7 @@ require xorg-data-common.inc PE = "1" -DEPENDS += " libxcursor" +DEPENDS += " libxcursor xcursorgen-native" + +FILES_${PN} += "${datadir}/icons" -- cgit v1.2.3 From ccbe682909220330a8b6bd1a95147a656a60ca95 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 11:45:42 +0000 Subject: checksums.ini : add more checksums for X11R7.4 --- conf/checksums.ini | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index e5434c7555..a999b53f05 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -1654,6 +1654,10 @@ sha256=a226f7b37694669aa6efe6c30462e2d44f5881ca70604dac15c23fce66992872 md5=0e0dacaae704aed08a940389250e61e9 sha256=fd8a9e9e916314f9385f497d1f9b81d0885487f7741ad7be790972f44fc68b25 +[http://xorg.freedesktop.org/releases/individual/app/bitmap-1.0.3.tar.bz2] +md5=98200c358e5401d648b980564d9ae39d +sha256=863f673518af19f9ae35ee221b30bf8c8b695c76c543d18b3ac400a51b855c41 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/bitmap-X11R7.0-1.0.1.tar.bz2] md5=bbb3df097821d3edb4d5a4b2ae731de6 sha256=ac6a5c3f4aa88f39e8f04fe43f00972f0235674ac3edb994c70ac802a1ed0219 @@ -4014,6 +4018,10 @@ sha256=4ea7d0a314b6c7ec65c92f44a3dad39ac9535b1bb9f54768573f60b69902e5cd md5=0259436c430034f24f3b239113c9630e sha256=80094cd7060a08bda61eef0e481800e8f94d4bbb08b8297dcf6aecea99a09a07 +[http://xorg.freedesktop.org/releases/individual/font/font-util-1.0.1.tar.bz2] +md5=b81535f78fe05732931f02841e5ca37b +sha256=048c23b17ea32ee3abb341f0b1105ad07517b2e78efe2e95a4a8218089600612 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-util-X11R7.0-1.0.0.tar.bz2] md5=73cc445cb20a658037ad3a7ac571f525 sha256=02eefdacc36d5df3707b3e454f5842d06c9c2eb9591e4cae93ccd3d66c78368f @@ -7666,6 +7674,10 @@ sha256=66d5b9d53816cc158a0f241772cbde60a52aa0a722e28d3ef76a5eb6c82840d5 md5=dfd5de47e232db0891410bec8ee6707b sha256=2f18f9fa0e18a3eab3c154ba820ad64b5c6ee364e147524055a553a130ccfdde +[http://xorg.freedesktop.org/releases/individual/lib/libFS-1.0.1.tar.bz2] +md5=81521249353fa33be7a4bb0062c2fbb9 +sha256=9bf92ffdb51e69e07682cd1a6c0101f2a833b16b9bfa5d601491ff46a35a2cf5 + [http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libFS-X11R7.0-1.0.0.tar.bz2] md5=12d2d89e7eb6ab0eb5823c3296f4e7a5 sha256=15bedd7f892fbb130e2b9c17d4f927c4904362a7be5b73d07d56d8aa7025f6f1 @@ -7710,6 +7722,10 @@ sha256=e290614797bd626c1b92bac8f83e8954b99bd66e6ecdaa1e935e176df099eba8 md5=184cbf502b3cd5d7ba5f9d1290a99606 sha256=57f42d3557effe452cd348362977ff90fa61009885c23b3aca8cb0219b5dec04 +[http://xorg.freedesktop.org/releases/individual/lib/libSM-1.1.0.tar.bz2] +md5=05a04c2b6382fb0054f6c70494e22733 +sha256=7536ac382e1ff82014d3a0defba0c61b3a30984f4e5bc7707960d6debcb92a82 + [http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libSM-X11R7.0-1.0.0.tar.bz2] md5=8a4eec299e8f14e26200718af7b2dcfc sha256=df219b7d5c2fac93bc7c8eb411ed365492eaeb3727ecbb04999890fd694d4e80 @@ -7966,6 +7982,10 @@ sha256=9a1d1c4c494203fcc64e697c7d341ccd12ecfcf2983b09746f8a7113443fe3a4 md5=1309301e2d979bd475dc58325cb8c056 sha256=68b46f85caaf0b30c876bd983abe144c25755bee7532e8738ab7ebe29a428986 +[http://xorg.freedesktop.org/releases/individual/lib/libXft-2.1.13.tar.bz2] +md5=bc8881851f3bd8dcc625fac37350a1c6 +sha256=ce7688258af34c14af421bcfb306d4310245b727d2417ac968b7f6b2facfde8c + [http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXft-X11R7.0-2.1.8.2.tar.bz2] md5=c42292b35325a9eeb24eb0f8d3a6ec52 sha256=0473d1db21968f05b39ff9832b18545ba6b93be76d2e61b04a14208c515680f3 @@ -8070,6 +8090,10 @@ sha256=2d2df642eb8e0527936cdf4ed1c096f69df53e9b95e2532c8ed0cabd06a45407 md5=1b244b5d19f0ccab01d7083436cd3558 sha256=206f8dc850f12b1213fb73dbef09fafa1bb8fb8c3ddfe4d39721c1e2dec12a98 +[http://xorg.freedesktop.org/releases/individual/lib/libXrandr-1.2.3.tar.bz2] +md5=5cd67cc02a50c9644ba0a1846ea3b08e +sha256=f8edfe26b8c4c3677a3a949f81a8b09a5fad62972020bfd230401e11cc0ed267 + [http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXrandr-X11R7.0-1.1.0.2.tar.bz2] md5=e10aed44c2e1e5d9e6848a62ff2c90c7 sha256=6b6a3fcf44621bf163ba2db6dbcc518bff4e8cf74695d1b86595387a3ff3c6fb @@ -8194,6 +8218,10 @@ sha256=4adbde13bbb3109897fc7b5d05bdab4709c4dd1aa7313f47b8093f52f10e617c md5=8de1ca6c55aaad7d8cae19b4f0b3da32 sha256=e08fc2c1611c422f751ed02810491b45bf7faa4207d762a11f11815263c9285a +[http://xorg.freedesktop.org/releases/individual/lib/libXxf86vm-1.0.2.tar.bz2] +md5=304d37bd0a10d9b58aa9b64469ad73e5 +sha256=3cb3c3c6552a4fbc686ba6c2dbeb6e4ba2a27103279908831d56363de73951de + [http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXxf86vm-X11R7.0-1.0.0.tar.bz2] md5=ed59db622581b33ec2a62e12b2f9c274 sha256=f972bbd632cf9047a28b4c467a2f7c2c72f9b36959a98649b3dfef6bf898b8df @@ -10442,6 +10470,10 @@ sha256=b3dd85e34b22cf757eafb6ef15c5505d5ec5e71803caef4b69ddc7fd5d46fabe md5=aacda46598ce3af8ca16e2a8132db1b2 sha256=c0c4d76df0350c626df7ce62bf3df7915f9959557d76abce96222857d782389c +[http://xorg.freedesktop.org/releases/individual/app/luit-1.0.3.tar.bz2] +md5=b01e4f71c20fc1c79ed727759c1df40c +sha256=2010f2152eee89a67f02edc3041574fb07442d075ca46fbcf84f981f0977a5d7 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/luit-X11R7.0-1.0.1.tar.bz2] md5=30428b8ff783a0cfd61dab05a17cfaa7 sha256=fb423dc3ae75e64a256172c873732fe869ae482409cf1f3e7d980d222f070cee @@ -14118,6 +14150,10 @@ sha256=3a8b96d7955a022045c781c1b8ac266fa8cdd47295744d60e7c00a6e88abbb3d md5=bee5d87d40615e67c84ab0b0c65049ba sha256=c23c12259854c7cec6d19bf397afff4a542a22170b14de73b321aa8cafcf3a86 +[http://xorg.freedesktop.org/releases/individual/app/sessreg-1.0.4.tar.bz2] +md5=839e968d7197b9563f0fd8a5a3aac2e3 +sha256=23e163502e208ac16f04a12b15f7f8dcd9919f0149c714353b7f92539b7e9802 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/sessreg-X11R7.0-1.0.0.tar.bz2] md5=8289a5b947165449c23bdfad9af02b4c sha256=3769ad5059a2841a8ee28fc8a7d3a3ca8eb59f4fd46d0bd629829f3841202734 @@ -14326,6 +14362,10 @@ sha256=2984645b207c52ea9b8ef3951af8bd0c5aab469607fabf63ade05f8fe87309c1 md5=a282846532ecbd6b4a28072373b3a70b sha256=b2097320a1fca4851f1377a14f4cc14a46e27d2a44ca017c40a6cb618b2f31e8 +[http://xorg.freedesktop.org/releases/individual/app/smproxy-1.0.2.tar.bz2] +md5=31da204a0255ba8c6a65386e65dc1c90 +sha256=76d22f0cf07c8c4386a15c5c935b58319bd747befb940a0f03f652d59c4f67d2 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/smproxy-X11R7.0-1.0.1.tar.bz2] md5=60f54881b6fb27a8ba238629e4097c4d sha256=c56617fd511eac4bdcff5b9b171be0aeacb7d8ddfe48615aa61295cf90b62888 @@ -16114,10 +16154,18 @@ sha256=cbb271f6c3586210f31953933c4d06bd34272df9c596f5e26124ca3caf8529be md5=8d2731e6e95f173f41a0ddc875d55804 sha256=d5e333bc74c0a534bf96f40ea89b7e700f137d46f1fdbaea13fa552ad6227af8 +[http://xorg.freedesktop.org/releases/individual/app/xbacklight-1.1.tar.bz2] +md5=51b4a1c0ae2b3bd77417306fd78a3e94 +sha256=c795001f15974569e16f25b201ac2ac7666c5a646f8d0de3afa0c3a1ba5d64a4 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xbiff-X11R7.0-1.0.1.tar.bz2] md5=c4eb71a3187586d02365a67fc1445e54 sha256=c9c899fddcb5053d6cf2a00a933b6e6b0429af547efbe85f89ad3bb35176bbec +[http://xorg.freedesktop.org/releases/individual/data/xbitmaps-1.0.1.tar.bz2] +md5=b28a9840cde3c38d7c09716372fea257 +sha256=5aa5be594e77f772b85d39f0c25f61a61c7f6fa02ba940e614c5ee386deeb867 + [http://xorg.freedesktop.org/releases/X11R7.0/src/data/xbitmaps-X11R7.0-1.0.1.tar.bz2] md5=22c6f4a17220cd6b41d9799905f8e357 sha256=3d7b78cf588871caa00ef79f5f66657803cf9a07350ac5dcf56fbe5ca2a794a8 @@ -16186,6 +16234,10 @@ sha256=b2807e96a9d632b7bbf1782a43095de51f3feae3d2e25374d3df00c6c68792ab md5=77f3ba0cbef119e0230d235507a1d916 sha256=f28e8f6baaaa590ed991314c98f16d114e4668b93c5c6e7fb1bf51f3cc7bf6c0 +[http://xorg.freedesktop.org/releases/individual/app/xcmsdb-1.0.1.tar.bz2] +md5=8579d5f50ba7f0c4a5bf16b9670fea01 +sha256=e275a39f41ffae854db77b2c5decfad2cac32afbcd158842032dc9ca04efe92e + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xcmsdb-X11R7.0-1.0.1.tar.bz2] md5=1c8396ed5c416e3a6658394ff6c415ad sha256=6e1cdf207ca998acd4e1cc991bde47fcf9d01d24ba733f9d3afe3c64843ef838 @@ -16198,6 +16250,10 @@ sha256=f62bd7916589515d338055cf977b544d031883659f0ec97cbbd08441256f1059 md5=dd817a0fabe11b1b463492b37247b013 sha256=be246df3bb5b5ed6bcc3d527f7b6015b3c3f2035090f52729ec4c796f5da20e9 +[http://xorg.freedesktop.org/releases/individual/data/xcursor-themes-1.0.1.tar.bz2] +md5=014bad415e64c49994679cdb71a97e37 +sha256=4e7dcd402cd045ce1bd1a3de496270e78d6ead2478a0bcb3404072b33c5c9ea0 + [http://xorg.freedesktop.org/releases/X11R7.0/src/data/xcursor-themes-X11R7.0-1.0.1.tar.bz2] md5=c39afeae55a7d330297b2fec3d113634 sha256=730029a4f23661094f0d246595041e51ec0b55e7405fcd5affee1ec7f9aba813 @@ -16210,6 +16266,10 @@ sha256=b26adf2d503d01299718390ae39dab4691a67220de09423be0364e9a060bf7e4 md5=7b0c623049d4aab20600d6473f8aab23 sha256=b26adf2d503d01299718390ae39dab4691a67220de09423be0364e9a060bf7e4 +[http://xorg.freedesktop.org/releases/individual/app/xcursorgen-1.0.2.tar.bz2] +md5=6fc90896b8c786cb1a2100b4167f7874 +sha256=e009322bd2afef8d4ad91bcb6b17874e1cd00b1aaf397e7019a82cc44f3c174e + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xcursorgen-X11R7.0-1.0.0.tar.bz2] md5=4d7b26dbb4442e89ec65c4147b31a5f7 sha256=8290616302932e72d4224cbe27d872efa5f44b0b8553ded0bbfb3537abe76907 -- cgit v1.2.3 From a2267085ab6a2d2e04f70794cba393ed3b6cad1c Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 17:24:07 +0000 Subject: xorg-driver-common.inc : fix the header file detections now we are using sysroot. Seems to actually work in use, but maybe there is a better way! --- packages/xorg-driver/xorg-driver-common.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/xorg-driver/xorg-driver-common.inc b/packages/xorg-driver/xorg-driver-common.inc index a75e409c8c..7126b8be83 100644 --- a/packages/xorg-driver/xorg-driver-common.inc +++ b/packages/xorg-driver/xorg-driver-common.inc @@ -25,10 +25,10 @@ do_stage() { # Of course this will blow up when cross compiling. do_configure_prepend() { - incdir=${STAGING_INCDIR}/xorg + incdir=${layout_includedir}/xorg for f in dri.h sarea.h dristruct.h exa.h damage.h; do path="$incdir/$f" - if [ -f "$path" ]; then + if [ -f "${STAGING_DIR_HOST}/$path" ]; then p=`echo "$path" | sed 'y%*+%pp%;s%[^_[:alnum:]]%_%g'` eval "export ac_cv_file_$p=yes" fi -- cgit v1.2.3 From f1ce3d73d57b4d0b57cd56175c489ff2a0d2f3cf Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 17:25:00 +0000 Subject: xf86-input-joystick_1.3.2.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-input-joystick_1.3.2.bb | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 packages/xorg-driver/xf86-input-joystick_1.3.2.bb diff --git a/packages/xorg-driver/xf86-input-joystick_1.3.2.bb b/packages/xorg-driver/xf86-input-joystick_1.3.2.bb new file mode 100644 index 0000000000..a53297fd8a --- /dev/null +++ b/packages/xorg-driver/xf86-input-joystick_1.3.2.bb @@ -0,0 +1,4 @@ +require xorg-driver-input.inc + +DESCRIPTION = "X.Org X server -- joystick input driver" +PE = "1" -- cgit v1.2.3 From caa50b894e8dcd8eec45b3db7a1864931794f8e9 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 17:25:32 +0000 Subject: xf86-input-synaptics_0.15.0.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-input-synaptics_0.15.0.bb | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 packages/xorg-driver/xf86-input-synaptics_0.15.0.bb diff --git a/packages/xorg-driver/xf86-input-synaptics_0.15.0.bb b/packages/xorg-driver/xf86-input-synaptics_0.15.0.bb new file mode 100644 index 0000000000..e6325675f8 --- /dev/null +++ b/packages/xorg-driver/xf86-input-synaptics_0.15.0.bb @@ -0,0 +1,4 @@ +require xorg-driver-input.inc + +DESCRIPTION = "X.Org X server -- mouse input driver" +PE = "1" -- cgit v1.2.3 From efb56de6034d9d711ab652b1320ca539e746d2be Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 17:26:10 +0000 Subject: xf86-video-geode_2.10.1.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-geode_2.10.1.bb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-geode_2.10.1.bb diff --git a/packages/xorg-driver/xf86-video-geode_2.10.1.bb b/packages/xorg-driver/xf86-video-geode_2.10.1.bb new file mode 100644 index 0000000000..380ce2ea0b --- /dev/null +++ b/packages/xorg-driver/xf86-video-geode_2.10.1.bb @@ -0,0 +1,5 @@ +require xorg-driver-video.inc +PE = "1" + +COMPATIBLE_HOST = 'i.86.*-linux' +DESCRIPTION = "X.org server -- Geode GX2/LX display driver" -- cgit v1.2.3 From 3c916ebbef9d39275c5406824acea4af5e4b5010 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 17:26:46 +0000 Subject: xf86-video-glint_1.2.1.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-glint_1.2.1.bb | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-glint_1.2.1.bb diff --git a/packages/xorg-driver/xf86-video-glint_1.2.1.bb b/packages/xorg-driver/xf86-video-glint_1.2.1.bb new file mode 100644 index 0000000000..eac23c74d9 --- /dev/null +++ b/packages/xorg-driver/xf86-video-glint_1.2.1.bb @@ -0,0 +1,6 @@ +require xorg-driver-video.inc + +DESCRIPTION = "X.Org X server -- Glint display driver" + +DEPENDS += " xf86dgaproto drm xf86driproto" + -- cgit v1.2.3 From adbbbdb1dd01e19f003734544b119bf5b6e41d6c Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 17:27:19 +0000 Subject: xf86-video-i128_1.3.1.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-i128_1.3.1.bb | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-i128_1.3.1.bb diff --git a/packages/xorg-driver/xf86-video-i128_1.3.1.bb b/packages/xorg-driver/xf86-video-i128_1.3.1.bb new file mode 100644 index 0000000000..78d5eda810 --- /dev/null +++ b/packages/xorg-driver/xf86-video-i128_1.3.1.bb @@ -0,0 +1,4 @@ +require xorg-driver-video.inc + +DESCRIPTION = "X.Org X server -- i128 display driver" +PE = "1" -- cgit v1.2.3 From 10810c3fdc63b86badd5d7f38003d8395f55e7c6 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Tue, 4 Nov 2008 17:28:28 +0000 Subject: checksums.ini : more new checksums for X11R7.4 --- conf/checksums.ini | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index a999b53f05..51fde89eea 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -16322,6 +16322,10 @@ sha256=4294768751bd4ffb47e5ebacfc7b5b9f95a1a2f4d221d8af64474382473e1962 md5=2b08e9ca783e3aa91d7fb84fdd716e93 sha256=d97f2872f5400f7fb5c0ad9442eced4bea55ab523de27417bd479db0071e3fed +[http://xorg.freedesktop.org/releases/individual/app/xdriinfo-1.0.2.tar.bz2] +md5=a5ec51ed9f0a55dc3462d90d52ff899c +sha256=7b03ac095b6c79688c20ad61e3576d4698e3f16c09a7f3f1e7c50826814e7265 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xdriinfo-X11R7.0-1.0.0.tar.bz2] md5=75b8b53e29bb295f7fbae7909e0e9770 sha256=84753f1c33be507ed9c1cc9d5e78565cc61e60d1403e499d7f25603d9a3b4f6b @@ -16382,6 +16386,10 @@ sha256=530902e8732130e37d9b46e73eecff90d6dbc5d5628620fded74a4e054aa8029 md5=3ffafa7f222ea799bcd9fcd85c60ab98 sha256=e93bb322fe96ceabd0581bb70101aaa1001b0b8f894b3ae0e1fa2e4b38f41af2 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-acecad-1.2.2.tar.bz2] +md5=2d6596b2b0cfa527b5ed4df2014684bf +sha256=953ebb7d7ed579ce648dd6f6a25307c37ad8230a0336ec6fc58247732835f26e + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-acecad-X11R7.0-1.0.0.5.tar.bz2] md5=b35b1756579ebe296801622bdf063ab1 sha256=699ba1716f74db0aaa66aa510ebf195560ff09f88001f98bde9275d2826f30ea @@ -16390,6 +16398,10 @@ sha256=699ba1716f74db0aaa66aa510ebf195560ff09f88001f98bde9275d2826f30ea md5=7ed47ca8feb1fbbe305f3a6732181550 sha256=b2bcdb4ef8cb9645e476afcedeadbb9d1688f8e8f7bd010f6718a15f1673556b +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-aiptek-1.1.1.tar.bz2] +md5=2aa75313ea5652a8cf93581c65ee6493 +sha256=219116b0275b93333b8471fc94d97320a116d695c4249837fd97763f00a85d77 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-aiptek-X11R7.0-1.0.0.5.tar.bz2] md5=9ee5109ef33e281ce0784ad077f26cee sha256=62d1dfdc2f902d016999861ec3fd58b4630341e8f4df45e65c7bee730b51fd8e @@ -16494,6 +16506,14 @@ sha256=ed5c17b702a43192710b7476f3a8540d04bc800554fd05e348be4f510f651dfa md5=ca01cca63fa57600c1cf6b307bb9aa8c sha256=cacc590ac4e57f3374e18b9898c6fa8992f31db6e1cf985391fe42c33a29fe15 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-joystick-1.3.1.tar.bz2] +md5=ff25ea697cfa1570cc28f4b9cf9c761f +sha256=1d33b9668e039ea9adc0680c1f2971785508cfd74b2215749db23af23ef8f9ce + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-joystick-1.3.2.tar.bz2] +md5=e48b99e55093525ebb7811a014391a0b +sha256=6cad238e0a54dec75c5224f9c0774b4fce2a03b06f1c61b404e9ea97d4941d4b + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-joystick-X11R7.0-1.0.0.5.tar.bz2] md5=9e3ba60836f4c1d2e4cebc63a28321b4 sha256=9b69192a4368bafeaf94432ec50025dd3f60340290ef2500f6032159870ed489 @@ -16610,6 +16630,10 @@ sha256=6456ddecc0e1b962b5f14b98b81d2e936cb48dcdacdd871dfa0e24c0d252498c md5=56765c5ee99f67802bca8a1134ad7fc1 sha256=57460dfa0429c58d598f192aa65661300dd104953073d977ad4f4b15a596eda8 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-synaptics-0.15.0.tar.bz2] +md5=939f1c831c5cd3a6f027e982592dfc5b +sha256=e7d481c375a11df55eb8f12390c329c2bfda3258c689cec11cfec27cb5895c8b + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-tek4957-X11R7.0-1.0.0.5.tar.bz2] md5=df633403c91a48c6a316c6a5f48e53e2 sha256=1cc4a964e2b407d2b9ebbac0bf38787e572d9bd88759fc0b229f588ac90ed139 @@ -16634,6 +16658,10 @@ sha256=f06dea24204c6f3f42c29d1a89f51da801082094e393a716d592d638fa9ddb66 md5=f253663de03e0fbb377ce085947412b1 sha256=973a51a442d0c97eb3f76af3b148194de8a4187e74f4a68033b0480c6408db42 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-void-1.1.1.tar.bz2] +md5=862c230f5f6e0c545f232b4c0fa9537a +sha256=dde062d6267a3fd9d51b0daee88fd84fceea52a6019de51dece46e92012dbc4f + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-void-X11R7.0-1.0.0.5.tar.bz2] md5=c7ae53dee1f3e95fa5ce9659b34d8446 sha256=ca90a522b78114d72748164c7a99274634cd2b50953f9c52f91b31746c790b5e @@ -16642,6 +16670,10 @@ sha256=ca90a522b78114d72748164c7a99274634cd2b50953f9c52f91b31746c790b5e md5=3683affae738de5ef130b6720bdfd6dd sha256=4612a45a90fb1aec8cabd36abeaf04f202ecc45d2074427bfa9f368f95514e43 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-apm-1.2.0.tar.bz2] +md5=4f78650d79656dc803a720049d65682e +sha256=f0fe020f892e6e3a696a490c86312a1b32672bffb7dead153c24f103540a6185 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-apm-X11R7.0-1.0.1.5.tar.bz2] md5=323911ab16a6147d3cabceff9336a3d2 sha256=ceaf4a611b8ee8bc31bc784f1012b0d6be6380e8823f6bf03a9a1ee737264a78 @@ -16650,6 +16682,10 @@ sha256=ceaf4a611b8ee8bc31bc784f1012b0d6be6380e8823f6bf03a9a1ee737264a78 md5=a5320411ba92e637ffb233e9cbb80d13 sha256=1e43d482e570328abcb8a1e03c62f8c3e3fcaf3eb09dc885503a1add158be0a2 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-ark-0.7.0.tar.bz2] +md5=6826c556ebe9a1248cbc7f7edd44f956 +sha256=8e65e73045fabe37c15f6d4895baa09346bdac2f7537607b523aacd7bcf57594 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-ark-X11R7.0-0.5.0.5.tar.bz2] md5=342937e275dbc92f437417a3186a8222 sha256=47aa2ecf4129e72e049796571e3125ff3bc8dae7fe31e27d361470d4a3b8d548 @@ -16658,6 +16694,10 @@ sha256=47aa2ecf4129e72e049796571e3125ff3bc8dae7fe31e27d361470d4a3b8d548 md5=a5bed67815b9e650182806da301b488c sha256=06c2462dfa65c32e31a972292531bf686c56c3f9cf21baf814ab0eda5cf26653 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-ast-0.85.0.tar.bz2] +md5=b415bf3259ad0acdaf62e3dde76e3289 +sha256=9018ff84e4866d895c037aad33fb31c79d5f47d3f54707600cc3fe6076485b28 + [http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-video-ast-X11R7.1-0.81.0.tar.bz2] md5=ac1595de8397efd740038994b1e9ef67 sha256=f0020c88ca3f86b4826c556888b476f081b80010ba78239f95e5349835ad8811 @@ -16670,6 +16710,10 @@ sha256=9b0899694000cb91d5643e2482376af24bd495cb01b4c9dcdd6ee3545b0aefae md5=f6d559f9d20f61567d381916b376590f sha256=d08a429e1fb1620ae81839181a4dc6cd579d52fc440d44d7bba36d19be355780 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-ati-6.8.0.tar.bz2] +md5=3c97c7925ebf4162eeb3463e23adc0e3 +sha256=3863851e3c85d25cc38941eec63e866656806821b028519ae32ab8b276664fba + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-ati-X11R7.0-6.5.7.3.tar.bz2] md5=92525195a7a36f5ffbffcb4e6a564e50 sha256=094da5eae789e50d1ebc4d7823d4c8ac701e3bbe387c0ff63285e2ab32aad1f8 @@ -16678,6 +16722,10 @@ sha256=094da5eae789e50d1ebc4d7823d4c8ac701e3bbe387c0ff63285e2ab32aad1f8 md5=c490366e7a663b4d05acb45713be45ee sha256=4f471f90fcedd164c5e550afbe2dd3f7247b38c19e3d44b0b8941bbcdf0f1a10 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-chips-1.2.0.tar.bz2] +md5=0fec6bee65383790485d917247a61629 +sha256=05f38c49b23be36afa68b738faf520b8dbf05b92c769107039426651801d4f99 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-chips-X11R7.0-1.0.1.3.tar.bz2] md5=90f23505faceac30d3f46ab94f7293e1 sha256=2df2e34dc61907fb3c41b4590f51d39f951d2d74422d84f1f7d53ef6f5b25352 @@ -16690,6 +16738,10 @@ sha256=e851ff555f177ebe6b4d8f961e088a1e2f5947ba739e5b891eb5b3ff4cdd652b md5=66344e315def275605dafb314ce59851 sha256=5988962199d5013274f6a6952939e4f405df658bb6616ebf9954c993b1179b1b +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-cirrus-1.2.1.tar.bz2] +md5=bc28fdedaee9059180e2534f9dbcd2f6 +sha256=e7c99ed66326df5fadf6e5d875859a430fec4369415a27cde72a91109f78bb9c + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-cirrus-X11R7.0-1.0.0.5.tar.bz2] md5=7708693ad9d73cd76d4caef7c644a46f sha256=29e6fdd67e8ec51c534f6123f9935a165711255d935fb9cb28cd44f9db278b3e @@ -16706,6 +16758,10 @@ sha256=6eb51d5d4489083c8a1eeabc1fbd22baeafe6486a7940516d1e2b741564acd06 md5=adb1e6346efd8dfe5dcccd47d46869cb sha256=25ba42dedc297ca2a7257fdb4e050e8d61cdd6710c8adabdb3925908b09f9d02 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-dummy-0.3.0.tar.bz2] +md5=3d96297556846bee02a74166ffb5d052 +sha256=5a4bbde0b7f0334bb63b159e5ef6e164be3699e3424734c2bd9823f20a30a278 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-dummy-X11R7.0-0.1.0.5.tar.bz2] md5=462654f9be7e3022f97147e3390db97a sha256=f50f6d3d7fd79c5ce40ea6039a2fb82f136b13c18afbc2b7e941d41d6568b698 @@ -16730,6 +16786,14 @@ sha256=c6032ec1753a0f5975b5a7488ca3ca0d46f84bc5dd8fcb42eebd807c7faec765 md5=c209e54fa8dcd3cd3342e84d261b02db sha256=d03eb7e5b47e2f1e1a665700f4e22d15651dc949196b0ec880f0d63cafb6814c +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-glide-1.0.1.tar.bz2] +md5=a825152b086564c1011bac9e48413189 +sha256=2b636894ecd8fc3472e05e548f0390ea802f5d9db7906ac302ec8cbd1e5f64b3 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-glint-1.2.1.tar.bz2] +md5=6d7afdac0a26cf201c3f3b417c31c5e1 +sha256=161780d2127d0548a2017ca461ce38e7a69afce5d921a08604e91478c6be1cda + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-glint-X11R7.0-1.0.1.3.tar.bz2] md5=f14c2f1696c05760207adcaac856e5e5 sha256=d5b4cb7b490edc3be57c40a00299002b60b8060396b3c902b2bf92090fcbd940 @@ -16742,6 +16806,10 @@ sha256=21b70d71593f123c470dae2b4e75bac7478fffa50503c85b02e8f2c1945417d2 md5=c483efc90b1935025b17e4b9e9c2e4df sha256=b52183f5a7d0adee1d21b4b0a0908886b7bbc69dc4498f1e7a3edc4b1988c41c +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-i128-1.3.1.tar.bz2] +md5=3b170a6df5114420cd4021a057918a09 +sha256=49bb23625654ebcd74d0d23f534b074188f4b21c3cd443b06ac83b9485bf9a75 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-i128-X11R7.0-1.1.0.5.tar.bz2] md5=078eed8c3673488ee618dfc7a3ef101b sha256=543d7b8bc0c9e7889c686a647f98641f0a9b052e58321a8a17518d680e6db95a @@ -16750,6 +16818,10 @@ sha256=543d7b8bc0c9e7889c686a647f98641f0a9b052e58321a8a17518d680e6db95a md5=9252e33d14c8869d995bf67e445ffb4e sha256=4973e6bd62eb307131e179ba313cfa6e79d15184eef5324bba985e2f781bb3d4 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-i740-1.2.0.tar.bz2] +md5=d0e5a805c546b29b1dd3b55a68d16dc4 +sha256=59c8f6ee465bef033c1c20bfff8121a318efda9656d5dc29f674bb655f18486f + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-i740-X11R7.0-1.0.0.5.tar.bz2] md5=625448b13ebe2a13b7defad1efec05c4 sha256=b0f2f2dd17bd01018fa91d042214b596f9d2303a81a0b86de102400b00f87d09 -- cgit v1.2.3 From 97f5f354bb5ccf9a6041352656b1081a0904a619 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 5 Nov 2008 14:12:42 +0000 Subject: xorg-driver-common.inc : add an extra header to our autoconf workaround for the openchrome driver --- packages/xorg-driver/xorg-driver-common.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xorg-driver/xorg-driver-common.inc b/packages/xorg-driver/xorg-driver-common.inc index 7126b8be83..0f24dd5e30 100644 --- a/packages/xorg-driver/xorg-driver-common.inc +++ b/packages/xorg-driver/xorg-driver-common.inc @@ -26,7 +26,7 @@ do_stage() { do_configure_prepend() { incdir=${layout_includedir}/xorg - for f in dri.h sarea.h dristruct.h exa.h damage.h; do + for f in dri.h sarea.h dristruct.h exa.h damage.h xf86Module.h; do path="$incdir/$f" if [ -f "${STAGING_DIR_HOST}/$path" ]; then p=`echo "$path" | sed 'y%*+%pp%;s%[^_[:alnum:]]%_%g'` -- cgit v1.2.3 From 43a57a4629278063141896467df06448d330560c Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 5 Nov 2008 14:13:39 +0000 Subject: xf86-video-impact_0.2.0.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-impact_0.2.0.bb | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-impact_0.2.0.bb diff --git a/packages/xorg-driver/xf86-video-impact_0.2.0.bb b/packages/xorg-driver/xf86-video-impact_0.2.0.bb new file mode 100644 index 0000000000..c2b6b7608a --- /dev/null +++ b/packages/xorg-driver/xf86-video-impact_0.2.0.bb @@ -0,0 +1,2 @@ +require xorg-driver-video.inc +PE = "1" -- cgit v1.2.3 From cf5409b40b5857cc77dfb9fcb760f2f7f681b5d6 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 5 Nov 2008 14:14:00 +0000 Subject: xf86-video-intel_2.4.2.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-intel_2.4.2.bb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-intel_2.4.2.bb diff --git a/packages/xorg-driver/xf86-video-intel_2.4.2.bb b/packages/xorg-driver/xf86-video-intel_2.4.2.bb new file mode 100644 index 0000000000..eed1fcb600 --- /dev/null +++ b/packages/xorg-driver/xf86-video-intel_2.4.2.bb @@ -0,0 +1,5 @@ +require xorg-driver-video.inc + +DESCRIPTION = "X.Org X server -- Intel i8xx, i9xx display driver" +DEPENDS += " virtual/libx11 libxvmc drm xf86driproto" +PE = "1" -- cgit v1.2.3 From 8bbb673ca2fa9eff8c57958558debe28a1ac72ce Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 5 Nov 2008 14:14:38 +0000 Subject: xf86-video-mach64_6.8.0.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-mach64_6.8.0.bb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-mach64_6.8.0.bb diff --git a/packages/xorg-driver/xf86-video-mach64_6.8.0.bb b/packages/xorg-driver/xf86-video-mach64_6.8.0.bb new file mode 100644 index 0000000000..eed1fcb600 --- /dev/null +++ b/packages/xorg-driver/xf86-video-mach64_6.8.0.bb @@ -0,0 +1,5 @@ +require xorg-driver-video.inc + +DESCRIPTION = "X.Org X server -- Intel i8xx, i9xx display driver" +DEPENDS += " virtual/libx11 libxvmc drm xf86driproto" +PE = "1" -- cgit v1.2.3 From 01a26acee5e38be617d585670d03b7ec03c954a7 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 5 Nov 2008 14:14:57 +0000 Subject: xf86-video-mga_1.4.9.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-mga_1.4.9.bb | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-mga_1.4.9.bb diff --git a/packages/xorg-driver/xf86-video-mga_1.4.9.bb b/packages/xorg-driver/xf86-video-mga_1.4.9.bb new file mode 100644 index 0000000000..c2b6b7608a --- /dev/null +++ b/packages/xorg-driver/xf86-video-mga_1.4.9.bb @@ -0,0 +1,2 @@ +require xorg-driver-video.inc +PE = "1" -- cgit v1.2.3 From 9084e5c49b1e7878d809acea739c657b6da099c4 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 5 Nov 2008 14:15:19 +0000 Subject: xf86-video-nv_2.1.12.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-nv_2.1.12.bb | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-nv_2.1.12.bb diff --git a/packages/xorg-driver/xf86-video-nv_2.1.12.bb b/packages/xorg-driver/xf86-video-nv_2.1.12.bb new file mode 100644 index 0000000000..0d4ee2ed19 --- /dev/null +++ b/packages/xorg-driver/xf86-video-nv_2.1.12.bb @@ -0,0 +1,4 @@ +require xorg-driver-video.inc + +DESCRIPTION = "X.Org X server -- NV display driver" +PE = "1" -- cgit v1.2.3 From 1f4668a1a8ddd8bd6e1921c10fbad2ec0d181794 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 5 Nov 2008 14:15:38 +0000 Subject: xf86-video-openchrome_0.2.903.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-openchrome_0.2.903.bb | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-openchrome_0.2.903.bb diff --git a/packages/xorg-driver/xf86-video-openchrome_0.2.903.bb b/packages/xorg-driver/xf86-video-openchrome_0.2.903.bb new file mode 100644 index 0000000000..facae8950a --- /dev/null +++ b/packages/xorg-driver/xf86-video-openchrome_0.2.903.bb @@ -0,0 +1,9 @@ +require xorg-driver-video.inc + +DESCRIPTION = "X.Org X server -- openchrome display driver" +PE = "1" + +do_configure_prepend() { + rm ${S}/acinclude.m4 || true +} + -- cgit v1.2.3 From f608c6407ce093c5f6da08395c024b8a5834c2c7 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 5 Nov 2008 14:16:02 +0000 Subject: xf86-video-r128_6.8.0.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-r128_6.8.0.bb | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-r128_6.8.0.bb diff --git a/packages/xorg-driver/xf86-video-r128_6.8.0.bb b/packages/xorg-driver/xf86-video-r128_6.8.0.bb new file mode 100644 index 0000000000..994ea24d8f --- /dev/null +++ b/packages/xorg-driver/xf86-video-r128_6.8.0.bb @@ -0,0 +1,4 @@ +require xorg-driver-video.inc + +DESCRIPTION = "X.Org X server -- r128 display driver" +PE = "1" -- cgit v1.2.3 From 45678d670e14ebd1c9df55903d2bb565a21eaf2b Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 5 Nov 2008 14:16:30 +0000 Subject: xf86-video-sunffb_1.2.0.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-sunffb_1.2.0.bb | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-sunffb_1.2.0.bb diff --git a/packages/xorg-driver/xf86-video-sunffb_1.2.0.bb b/packages/xorg-driver/xf86-video-sunffb_1.2.0.bb new file mode 100644 index 0000000000..c2b6b7608a --- /dev/null +++ b/packages/xorg-driver/xf86-video-sunffb_1.2.0.bb @@ -0,0 +1,2 @@ +require xorg-driver-video.inc +PE = "1" -- cgit v1.2.3 From 5bf326ca42238512f931d20d4e5543661dcd42fc Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 5 Nov 2008 14:16:49 +0000 Subject: xf86-video-sunleo_1.2.0.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-sunleo_1.2.0.bb | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-sunleo_1.2.0.bb diff --git a/packages/xorg-driver/xf86-video-sunleo_1.2.0.bb b/packages/xorg-driver/xf86-video-sunleo_1.2.0.bb new file mode 100644 index 0000000000..c2b6b7608a --- /dev/null +++ b/packages/xorg-driver/xf86-video-sunleo_1.2.0.bb @@ -0,0 +1,2 @@ +require xorg-driver-video.inc +PE = "1" -- cgit v1.2.3 From 005aaa85725f695140219f381c9063b2f65aeb83 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 5 Nov 2008 14:17:12 +0000 Subject: xf86-video-tga_1.2.0.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-tga_1.2.0.bb | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-tga_1.2.0.bb diff --git a/packages/xorg-driver/xf86-video-tga_1.2.0.bb b/packages/xorg-driver/xf86-video-tga_1.2.0.bb new file mode 100644 index 0000000000..d3cf65f034 --- /dev/null +++ b/packages/xorg-driver/xf86-video-tga_1.2.0.bb @@ -0,0 +1,8 @@ +require xorg-driver-video.inc + +PE = "1" + +DESCRIPTION = "DEC 21030 X11 driver" + +DEPENDS += " xf86dgaproto" + -- cgit v1.2.3 From 7c3bfd6775cc8717172a4d3612bc1b3e19f70df9 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 5 Nov 2008 14:17:30 +0000 Subject: xf86-video-vermilion_1.0.1.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-vermilion_1.0.1.bb | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-vermilion_1.0.1.bb diff --git a/packages/xorg-driver/xf86-video-vermilion_1.0.1.bb b/packages/xorg-driver/xf86-video-vermilion_1.0.1.bb new file mode 100644 index 0000000000..c3054b9051 --- /dev/null +++ b/packages/xorg-driver/xf86-video-vermilion_1.0.1.bb @@ -0,0 +1,4 @@ +require xorg-driver-video.inc + +PE = "1" + -- cgit v1.2.3 From cb873347363b6a4922ccbcf705f8c422bdaf79ac Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 5 Nov 2008 14:18:37 +0000 Subject: checksums.ini : more new checksums for X11R7.4 --- conf/checksums.ini | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 51fde89eea..6d75992233 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -16842,6 +16842,10 @@ sha256=1d9227ba301152738c6b498ec512ddfa67ce7c09e40b883fdbf43cd31e85b523 md5=fe6cc3eab247c7f0a1d152de0ee0fc80 sha256=debd142a815e5e2611433f1af97d467e50361ad5b3baa0b54fb4b61b0280ef83 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-impact-0.2.0.tar.bz2] +md5=07c9557f6529a88845b01924313e5763 +sha256=1528a123b41bf42506eb8e37c3506086395f062cca71f64cbc67929ff1010022 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-imstt-X11R7.0-1.0.0.5.tar.bz2] md5=cc949688918b78f830d78a9613e6896b sha256=738463dbf1980b9d0f95936a2d951dc51bd776c7949215c2456580948660669e @@ -16858,6 +16862,14 @@ sha256=d976c5f5e9c84f3817aba6ad22855446f1c2b9bfa0d53bd11c37c62cfdefa60a md5=5cd6b3ed57c7e78ab51e9d9266e73fb6 sha256=5afdc91e93ffed09ea5258c6fde210c729ea2b44d83f98acfd92c3da7e99e64b +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-mach64-6.8.0.tar.bz2] +md5=6081b8fa50c689d51f85c2fbaf93867e +sha256=fba616f88d351759e00a90965e38a0d82608698ae36fc2a18df4036cd384e1a1 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-mga-1.4.9.tar.bz2] +md5=11066b84b949cd04300ec819c9c51532 +sha256=d57dd2323052f064092167a232fb7576f46e5d62e98bc9cc6a7f270cc8d0fdc0 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-mga-X11R7.0-1.2.1.3.tar.bz2] md5=cb0409782020b5cc7edc273624ffdd17 sha256=8f4ef9e7a82aa1f4624b2d87da8ff0472e3f5c2ccdc7998f4418c6906cadc915 @@ -16866,6 +16878,10 @@ sha256=8f4ef9e7a82aa1f4624b2d87da8ff0472e3f5c2ccdc7998f4418c6906cadc915 md5=b42cab6a2742bf90a205a991c281f4e2 sha256=d7e9fe8b79229cb76a2749eb9658dfa96ea580420de05170e5a7b402062a9592 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-neomagic-1.2.1.tar.bz2] +md5=a72f57fca4f4dff9a2c82eb1fe7456f4 +sha256=96e38d5378596174f76c735c4723ff2ac336f9069644502a9b706586b845e0a5 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-neomagic-X11R7.0-1.0.0.5.tar.bz2] md5=ffe9015678a41e97bdbd2825066bb47b sha256=cfaa594be277cd2a1bf9d796bb398e07319e9b34cff306b408145a37925dc97f @@ -16906,6 +16922,10 @@ sha256=41350b8e67713fd9dcb2662e2a481e19b7de5a9d5e6dd7a346ba6662d908209b md5=e4dc415b1e45db0bbdacc203ed33024a sha256=97d47df7720d3cfcb56c4debca9218c3fc5352d34d82bc4880c8a620185f8c5e +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-nv-2.1.12.tar.bz2] +md5=42f12a36d7afc26c817e8e8f5c8b7274 +sha256=f56d2bb42f6c4369dd3c6adc30988c53a229650f910b0db1bb3bf9376054011e + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-nv-X11R7.0-1.0.1.5.tar.bz2] md5=9a88547fe550e20edcc5a938d31e22b1 sha256=0ce5ad1affc488f317fd297893a469ed20f451b8bd8b12bb36450ecc8c56e5d0 @@ -16914,10 +16934,22 @@ sha256=0ce5ad1affc488f317fd297893a469ed20f451b8bd8b12bb36450ecc8c56e5d0 md5=b5c7144231652242ef8436ec8898138c sha256=8fd91ce003998739677556bf13146e9a3560970ea5342bad5c44c11fc49410cb +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-openchrome-0.2.903.tar.bz2] +md5=c0820787e89958c9114d359b6a3cd464 +sha256=b7e4858d6b5c6428fae2485a2c2097cdf6073268ef812aae2ccbc3d936db7410 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-r128-6.8.0.tar.bz2] +md5=007bec0c6b07d9d3aeca4da18e561efb +sha256=5689ca714fee9c9272bee12883b07a0ef2c40358ffb19fa684e963027b56567b + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-rendition-4.1.3.tar.bz2] md5=a8b97feccb32184820d5856fe78d34db sha256=37e7aef72f7466485f5a3bafd0d43190cb7439de16868bfba2c59bb4c9df4408 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-rendition-4.2.0.tar.bz2] +md5=7c03de3804d4c4f6ff59f74050d24b2b +sha256=b57b62f707d87534a799170e31b33311449cfd7019a56e6b4fa85a4c7faaae15 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-rendition-X11R7.0-4.0.1.3.tar.bz2] md5=f1a25db74a148dea45115e813027b932 sha256=4ad42c65f60bc7f3f37f636eae5ae5a9049cdd4df5c546f93f201fdf16213f48 @@ -16930,6 +16962,10 @@ sha256=053a60acae48000dfd03b4518fe10c6901240a8858dbfa49e0506557075a3c79 md5=d95ab6445cab477f39adfbbc81006f67 sha256=4a1206cb1a200aad8881216547d9913d0e24928138f3b1bb912a3336b9c05c97 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-s3-0.6.0.tar.bz2] +md5=d05e7c3cb044437eda8663e174ba913c +sha256=ed07e4648b0f405fddd563783b49f971d649dd07cc8bc7737a93ff3d90f6c067 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-s3-X11R7.0-0.3.5.5.tar.bz2] md5=83b9e8a9b8fc1c49bda2811358e5007c sha256=3e11f78c39eb03fe4b9e6a2b68347420297fa38cd36f42235ee4be9c87175103 @@ -16938,6 +16974,10 @@ sha256=3e11f78c39eb03fe4b9e6a2b68347420297fa38cd36f42235ee4be9c87175103 md5=3083c03884d44468e395d26a8d990c53 sha256=b9b9abdd80c00782ca2e1313016c3d3904dc10a1de1c94d29cd4efafeb1f52f3 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-s3virge-1.10.1.tar.bz2] +md5=4a293047e988d4ea1e9e96d3b5793f43 +sha256=9094115621ef73c957cf887332717ec727c751959b1059e3d00fbfe0114a978a + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-s3virge-X11R7.0-1.8.6.5.tar.bz2] md5=d0164c37749ab5f565db9813487e1900 sha256=064293e33256c5baa8932b42f181ec0d2fc7c0ef5b72e655aefa72d58e2b91ff @@ -16950,6 +16990,10 @@ sha256=075fba99f38b900416858a39c7cd62f0f3f583ee48cb52d546b12e916fa13c32 md5=6367e921a98f6a7fec9d0a9bc5ff0a47 sha256=1a9aa442152c139e3c54bc6c323bd13edf0bfff70a81c03969bcb1159317edb2 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-savage-2.2.1.tar.bz2] +md5=62b8aba48b54eaefeae87df502bf219c +sha256=adf95cae0fbaf72326c51c4c9e61486eef062bb1706f6ab46d942f2c36d8a37e + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-savage-X11R7.0-2.0.2.3.tar.bz2] md5=6b638dd500d10dba1822d3ea5061fc65 sha256=e4ee3af5989cc9b0c8ff59082f64a564420dc22a2eb9fd53e41da24260a65e98 @@ -16958,6 +17002,10 @@ sha256=e4ee3af5989cc9b0c8ff59082f64a564420dc22a2eb9fd53e41da24260a65e98 md5=7df6bc61424a566325e48e5eb89a21e2 sha256=efc0b44d7146c0d0f966dd1f0bdf6098e086fec7a33f5b480f99fa17e2bc7cc4 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-siliconmotion-1.6.0.tar.bz2] +md5=a8419a8ed17b02b2a6dd4d30d5e94b00 +sha256=cc5301b9c6adb9a0770509b8570d38730d43e9ffce6d6886cd9a090965017e53 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-siliconmotion-X11R7.0-1.3.1.5.tar.bz2] md5=957de4e2a3c687dbb2e9e18582397804 sha256=6723b5b7e9ea5b3aebcbbaeaca59790e6a9ab6a7d5324c671454e426854aef3f @@ -16982,6 +17030,10 @@ sha256=c578fec74f7028ee28a46a62ab2b22fdcbd6de8cefa7a185e73c68b1d8a12e8b md5=f3ed22290e677381dd6236ef3bbfc7ac sha256=6c4c821941c571b39c950acd57ed4a646a6474070a68a0caa09eb7c3b2715e03 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-sisusb-0.9.0.tar.bz2] +md5=7b1f5465f423a859f306f4f1d6306a1b +sha256=76b79c9b7d3b35b8e2e5354569bf0936c4afd39a9dcbdf66327714d75137930a + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-sisusb-X11R7.0-0.7.1.3.tar.bz2] md5=781d726a0ca54b65521e383ab99043c8 sha256=6f972b126774d3d051b2f683e82661c07a1b4787b8ce04847eae80b283c5feb3 @@ -16990,6 +17042,10 @@ sha256=6f972b126774d3d051b2f683e82661c07a1b4787b8ce04847eae80b283c5feb3 md5=11d580e2cc795b902b6f1a326962190b sha256=bfdde9894930ffddb93343647a377a1456a830687d3de6fba2010ffe31c7b04d +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-sunbw2-1.1.0.tar.bz2] +md5=559c95f044a31cfe7f71453e9b89c35b +sha256=d71074e941ad8f71ac476651c2ca4142a5c2243e8fecdf216bc0ffbf18338136 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-sunbw2-X11R7.0-1.0.0.5.tar.bz2] md5=0cdda1ab939ea1190c142aa8aabfaf83 sha256=13ab882849164dd677228523b91081fa7bda6955daae128f0b8754759e2f7278 @@ -16998,6 +17054,10 @@ sha256=13ab882849164dd677228523b91081fa7bda6955daae128f0b8754759e2f7278 md5=cae0b4709a2cc489182392094fe0bba3 sha256=aa656c99ff6ba9c1013b6060c92bbcda2c30ceff72ecc49139c65eb935844f43 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-suncg14-1.1.0.tar.bz2] +md5=9e25784e912cb2f0493b87431fd60773 +sha256=1eca2b0970e725db49f9e462a0c2e618b2616389647335b5aec9d6e495e40527 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-suncg14-X11R7.0-1.0.0.5.tar.bz2] md5=8f3a734d02ae716415f9c6344fa661bd sha256=809a8d57a49c07991d350d4bff955656256afa2c99978050d2aa320d071ef52d @@ -17006,6 +17066,10 @@ sha256=809a8d57a49c07991d350d4bff955656256afa2c99978050d2aa320d071ef52d md5=3d95d9bf985bcf13c0d040a5136334a1 sha256=f9a1ee987c554607c6fed4ae27adbf75c825d628fe522802a717429a85327487 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-suncg3-1.1.0.tar.bz2] +md5=b9cb8cfb6a4234bebc434f744af53208 +sha256=3564ebc8ccdfea872d46559166d881e93ac7c17e3ed46bb4087960f491c37df9 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-suncg3-X11R7.0-1.0.0.5.tar.bz2] md5=799a54cef1f4435e00fa94a1d97d056f sha256=31831c2f44e7d28c928d816c2c5074cc0ec1f0cc83994bf28e46c7f840ab8866 @@ -17014,6 +17078,10 @@ sha256=31831c2f44e7d28c928d816c2c5074cc0ec1f0cc83994bf28e46c7f840ab8866 md5=b719d82950a39e33903882c7b878415e sha256=9be5402d4f8f32154c01065f7b01a99e61c2deff959715eb8656259c63195adb +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-suncg6-1.1.0.tar.bz2] +md5=aa6b7836fe6ccc99994bf15ff2b74e86 +sha256=d6b1f3b79c57ef5281e0204b2847812cf9fa5df616478f01591445a36537194b + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-suncg6-X11R7.0-1.0.0.5.tar.bz2] md5=2227f3fb86b02148f347e002662e53c8 sha256=f6ddac6bc0b0a446ff9401467e4219340151498824d98c9274ed38a959330aea @@ -17022,6 +17090,10 @@ sha256=f6ddac6bc0b0a446ff9401467e4219340151498824d98c9274ed38a959330aea md5=de3773fe837b633cd7841546358a90b0 sha256=5b5e22e501b0cf03704fe4737abc49c6c2a2f08a1af28067634f4b69c838e621 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-sunffb-1.2.0.tar.bz2] +md5=816842de26bce8a935f3c9c3cfedbc42 +sha256=59f2f8fc2399a4d6b0ce733481c58694e723a989f4712c00436d35e27c059292 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-sunffb-X11R7.0-1.0.1.3.tar.bz2] md5=bb5182e3b74b3baa6fee245ac8bbf09a sha256=318bd61c8da6e938d5c707a0c70ba3ada1c053ff3172a918f821a1a015b7b6ce @@ -17030,6 +17102,10 @@ sha256=318bd61c8da6e938d5c707a0c70ba3ada1c053ff3172a918f821a1a015b7b6ce md5=5bcb5b90c679a046d604d4f98d804d0d sha256=38406fc4e7aa1367587517b4a872fe88dd0be9751aa057b84dc62a7238ccffcc +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-sunleo-1.2.0.tar.bz2] +md5=14fe008620940a674981912fa02ae133 +sha256=b315be97197020ae352efe48e9bcd13a572c3a03b2a4d598e89157a897746e06 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-sunleo-X11R7.0-1.0.0.5.tar.bz2] md5=deb17a74ba68ee9593ac774206bd3612 sha256=025e3636fb59dae9285dab63de9181fc8337d1d8438b7ee8f93095d6731deb0f @@ -17038,6 +17114,10 @@ sha256=025e3636fb59dae9285dab63de9181fc8337d1d8438b7ee8f93095d6731deb0f md5=821ddc77ada3cd3efb0a2a7bc70bf825 sha256=6c7339466d5b3cfc3c6ea3ca4ec4bad2f16666f1c472efc4f3048c1f711c67d4 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-suntcx-1.1.0.tar.bz2] +md5=779a31151e44d2fd2a5ee1794f836889 +sha256=72986a3981b746f60df1aba443d610db437fe8d5053e64630686f471c47b01cf + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-suntcx-X11R7.0-1.0.0.5.tar.bz2] md5=74d6ba5e55afdfebff84db08b6589e26 sha256=38eb95f2991fab51c3442022bcef258de508ebfa0c631024edbdf55a1c4f24fd @@ -17050,6 +17130,10 @@ sha256=275a6082d3d11614dbc737bab505b9dd72bcbfae44af6ccbe115db66bb2ad2f1 md5=04c49acb5c5dbde14eabd32d06df6e73 sha256=6b1a00df5c9628817d08f07c6f18f578950744f3eb63b4397be8b0754e728624 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-tdfx-1.4.0.tar.bz2] +md5=b13132f24683ef759bfb0c1db5096496 +sha256=c3be06d324f2e49ece1f243b10d7180a32fbe65dbbb81e162279c8608800dead + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-tdfx-X11R7.0-1.1.1.3.tar.bz2] md5=0201415230bf0454384c3bad099520d2 sha256=65e95c95bc4fa5fdb766b7edf8f39253cf8496fca66bc4bc06f260ab9e9ce504 @@ -17058,6 +17142,10 @@ sha256=65e95c95bc4fa5fdb766b7edf8f39253cf8496fca66bc4bc06f260ab9e9ce504 md5=21500d264bccecde3122835bc39c7793 sha256=018d27561286d39ea4fea5967f2433c6748da51472bd63db0c74bc32f18417e1 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-tga-1.2.0.tar.bz2] +md5=f3bddf0a64932ca9bd72041ccd3b5501 +sha256=a92f8cad0e21318be465719a9f30a50d5719b0b70bf8e15f3937e7850cf1aea6 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-tga-X11R7.0-1.0.0.5.tar.bz2] md5=fa67bf34454888d38e15708395cfed87 sha256=96b071b4e12dcfd027402621b897c6d73818aada4d66f77a8802cc46b9efe206 @@ -17070,6 +17158,10 @@ sha256=250ed70d94070f6f8b14540b6509e6ea25f38616b0e0c443f232cc4028765db7 md5=c0e8b2f54942b6902b7dd4f30defe800 sha256=d23eb8fa165d238ddf64da63dcd60c70a01cd761608a18402cfb95aed6722495 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-trident-1.3.0.tar.bz2] +md5=e89799579d0cf3858362bd751469e0bf +sha256=a4f66c9f46f6e93c2c1f10e782a211ddc338b0ff9f0a2ccd2d660db031d3ddb5 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-trident-X11R7.0-1.0.1.2.tar.bz2] md5=69f28afc7b585d01bb06b1e2f872f8ea sha256=b7958afb0204bb1d3c8a33e7a56b94a6d4f09426dbcd141ef327e28f523d42eb @@ -17082,6 +17174,10 @@ sha256=69eda434078afe442c228195593108b860f9d297f7bd29c19c57eedeb59304ad md5=488aa9c3ec7a95e6589afa4b50bec8b4 sha256=c9c1f3318715b7268068bc733d00bcab93924e97eb38f94548e442fd6cdfd56e +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-tseng-1.2.0.tar.bz2] +md5=f98fc22142a009dc3a6cdf930c95203f +sha256=1090d9100934329000ac330d0c66a0ac4f60d2ba83196ea15c2833a28a18b1e3 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-tseng-X11R7.0-1.0.0.5.tar.bz2] md5=981f46914c1e54742418f0444ea2e092 sha256=5e67a6893375585be731b0fd822e9c3407a0930f7addbc8cf01fffad57f9d0b6 @@ -17090,6 +17186,10 @@ sha256=5e67a6893375585be731b0fd822e9c3407a0930f7addbc8cf01fffad57f9d0b6 md5=62d58d822fdd32e67658bb86ab4e4390 sha256=cd41d3b58a6ce65ebe4313735a2111880b27b910e5c2e09ea91720ad230f9006 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-v4l-0.2.0.tar.bz2] +md5=2251ae2a0a905764941cd7b098e85ad1 +sha256=cbff9120fbad900cbdc7ac535d04984e7b491d69a8eb0b371e30ae07cb61925d + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-v4l-X11R7.0-0.0.1.5.tar.bz2] md5=e422c63bc83717ecd0686aef2036802b sha256=54094ee8388e4d067e111f64bf765b677536bc11c71d39c05c83ab6ea336e0f8 @@ -17098,10 +17198,18 @@ sha256=54094ee8388e4d067e111f64bf765b677536bc11c71d39c05c83ab6ea336e0f8 md5=fac76ca4a56380f0765d884e1b20a487 sha256=97b5ada6716fd6a2821224fd952fc064cbe721c7446547136794587a2e393114 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-vermilion-1.0.1.tar.bz2] +md5=0f7c6be1bbdc5eb43d82b356fe0f5104 +sha256=4feb4cd8d239a1b5a944c82b253d106b7f7da083fc4d87a8aeeb822c2e980d8b + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-vesa-1.3.0.tar.bz2] md5=4a307852f3b4850e436a41dab2a73676 sha256=b96c80ae81f5123ecef344dac4c734b2e281143d3ab7a7e633d6bf04c893e203 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-vesa-2.0.0.tar.bz2] +md5=433cf6f961eb4a2ab6fcb086def0b2b4 +sha256=f20b2e429657552eea207fb8bc4b47c8e293d99c229dcb4da11b7c5bfdc1e165 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-vesa-X11R7.0-1.0.1.3.tar.bz2] md5=049ada4df1abb5aa2b6633ba90353e78 sha256=c6601cd278ebc30a0d20b49b6284bc21b4910f8ef5d24d1c62daa1591a251452 -- cgit v1.2.3 From b72baf9c0d6125c1aeace4ddb1aa2722d8b45484 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Thu, 6 Nov 2008 16:21:40 +0000 Subject: xf86-video-vesa_2.0.0.bb : new version for X11R7.4 with some more include path fixes --- .../xf86-video-vesa/fix-configure-includes.patch | 13 +++++++++++++ packages/xorg-driver/xf86-video-vesa_2.0.0.bb | 9 +++++++++ 2 files changed, 22 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-vesa/fix-configure-includes.patch create mode 100644 packages/xorg-driver/xf86-video-vesa_2.0.0.bb diff --git a/packages/xorg-driver/xf86-video-vesa/fix-configure-includes.patch b/packages/xorg-driver/xf86-video-vesa/fix-configure-includes.patch new file mode 100644 index 0000000000..a886e6c150 --- /dev/null +++ b/packages/xorg-driver/xf86-video-vesa/fix-configure-includes.patch @@ -0,0 +1,13 @@ +Index: xf86-video-vesa-2.0.0/configure.ac +=================================================================== +--- xf86-video-vesa-2.0.0.orig/configure.ac 2008-11-06 15:13:02.000000000 +0000 ++++ xf86-video-vesa-2.0.0/configure.ac 2008-11-06 15:13:16.000000000 +0000 +@@ -69,7 +69,7 @@ + AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes) + + CFLAGS="$CFLAGS $XORG_CFLAGS "' -I$(top_srcdir)/src' +-INCLUDES="$XORG_INCS -I${sdkdir} "'-I$(top_srcdir)/src' ++INCLUDES="$XORG_INCS "'-I$(top_srcdir)/src' + AC_SUBST([CFLAGS]) + AC_SUBST([INCLUDES]) + diff --git a/packages/xorg-driver/xf86-video-vesa_2.0.0.bb b/packages/xorg-driver/xf86-video-vesa_2.0.0.bb new file mode 100644 index 0000000000..bd2f7cf7c1 --- /dev/null +++ b/packages/xorg-driver/xf86-video-vesa_2.0.0.bb @@ -0,0 +1,9 @@ +require xorg-driver-video.inc +PE = "1" + +SRC_URI += "file://fix-includepath.patch;patch=1 \ + file://fix-configure-includes.patch;patch=1" + +#DESCRIPTION = "" + +#DEPENDS += " " -- cgit v1.2.3 From a563eb63d8bacb3c87cd3daef4ddc2b6a3dd80e3 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Thu, 6 Nov 2008 16:22:09 +0000 Subject: xf86-video-vmware_10.16.5.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-vmware_10.16.5.bb | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-vmware_10.16.5.bb diff --git a/packages/xorg-driver/xf86-video-vmware_10.16.5.bb b/packages/xorg-driver/xf86-video-vmware_10.16.5.bb new file mode 100644 index 0000000000..994b8b6a3c --- /dev/null +++ b/packages/xorg-driver/xf86-video-vmware_10.16.5.bb @@ -0,0 +1,6 @@ +require xorg-driver-video.inc +PE = "1" + +#DESCRIPTION = "" + +DEPENDS += " xineramaproto xf86miscproto drm xf86driproto" -- cgit v1.2.3 From eb3d1b13739f7dc2a0803bfa216af257f2c16032 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Thu, 6 Nov 2008 16:22:31 +0000 Subject: xf86-video-wsfb_0.2.1.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-wsfb_0.2.1.bb | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-wsfb_0.2.1.bb diff --git a/packages/xorg-driver/xf86-video-wsfb_0.2.1.bb b/packages/xorg-driver/xf86-video-wsfb_0.2.1.bb new file mode 100644 index 0000000000..ea1c005e8c --- /dev/null +++ b/packages/xorg-driver/xf86-video-wsfb_0.2.1.bb @@ -0,0 +1,4 @@ +require xorg-driver-video.inc + +DESCRIPTION = "X.Org X server -- wsfb display driver" +PE = "1" -- cgit v1.2.3 From df89db9f59ff601d4e69260e9f87d2c60b5939fe Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Thu, 6 Nov 2008 16:22:53 +0000 Subject: xf86-video-xgixp_1.7.99.3.bb : new version for X11R7.4 --- packages/xorg-driver/xf86-video-xgixp_1.7.99.3.bb | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 packages/xorg-driver/xf86-video-xgixp_1.7.99.3.bb diff --git a/packages/xorg-driver/xf86-video-xgixp_1.7.99.3.bb b/packages/xorg-driver/xf86-video-xgixp_1.7.99.3.bb new file mode 100644 index 0000000000..994b8b6a3c --- /dev/null +++ b/packages/xorg-driver/xf86-video-xgixp_1.7.99.3.bb @@ -0,0 +1,6 @@ +require xorg-driver-video.inc +PE = "1" + +#DESCRIPTION = "" + +DEPENDS += " xineramaproto xf86miscproto drm xf86driproto" -- cgit v1.2.3 From f74c5bc62d4450470ce17de51388ebb67648a917 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Thu, 6 Nov 2008 16:23:42 +0000 Subject: checksums.ini : even more new checksums for X11R7.4 --- conf/checksums.ini | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 6d75992233..1dd3f9d802 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -17246,6 +17246,10 @@ sha256=1971fd356ba54204c3611edb9144c43c25c21167a5fa5ee725d3f2e3f9864fa9 md5=a5e1f2539b82206e411c3647f10c425f sha256=91ed99ae936be5df25d310d81e31e0a7efefc023e462d93a9289ac18ebdf4e89 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-vmware-10.16.5.tar.bz2] +md5=6d78c82ea7c2bb0fcb587d7bb4e8f60a +sha256=3e4e9abfd806b36076083ef6cacc93b713bfa4ddefe7005edfc15c64f5174366 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-vmware-X11R7.0-10.11.1.3.tar.bz2] md5=4df79349e26add4c23f6be8bec347ad4 sha256=79b0bf59d866d3760fa8a55b4a19d56ae7fa6a962d629a9de5c188cec5c98c9a @@ -17258,6 +17262,10 @@ sha256=a260f9456db466fef3036aff01570f3a12fd275e35bf4c8c4c0ea0f63bf91281 md5=bc878e795688b49a595b355482d27174 sha256=3975601baee674b2bad0dfe696586f17cc913f1dc7f1d5c4e184623e0461751c +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-voodoo-1.2.0.tar.bz2] +md5=7c681d9b57f5e1f798263fc1a9d99245 +sha256=b79ba6d5d4300570c00f8be37c536f47f2d78c18845f70f525da2a29e47c4b8c + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-voodoo-X11R7.0-1.0.0.5.tar.bz2] md5=e00cc814ebdb3f3067e075bc93b26199 sha256=2241fd7e5ae8de43f109f712f5125afa6ec5156068c941d7b65981ac7ce7548a @@ -17266,6 +17274,18 @@ sha256=2241fd7e5ae8de43f109f712f5125afa6ec5156068c941d7b65981ac7ce7548a md5=0c96fac2d303dd5981de78e704d3a067 sha256=35409b42f843ac3b352e344253f3075b2d9c8ae2ac5af02962fd67575427e066 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-wsfb-0.2.1.tar.bz2] +md5=c159af867a9af3abc4da332189213a76 +sha256=39e358aa17d939f561a28c82b9e7beca202d7ebd7d40d401c88a9dff3d90d148 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-xgi-1.5.0.tar.bz2] +md5=08529fd015191be9244f598aa0894aa6 +sha256=5fb23432ee8940c04494744da8b5f58bebc6ef113e96a50a74f0aa7d98a69194 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-xgixp-1.7.99.3.tar.bz2] +md5=c541152aee693fad743ef7cbf75a7ffc +sha256=13a1658ee3ead0ab8e8bf7a9c8f8f0e3e40e38138f45d8431e735cd7184fbbd8 + [http://xorg.freedesktop.org/releases/individual/proto/xf86bigfontproto-1.1.2.tar.bz2] md5=a318c1e86123832d7b0c95fc7d47ef35 sha256=01b475b5b27709a738db6f94ce2ded37f5db0792e8d9318069ecf1690a15f124 @@ -17546,6 +17566,10 @@ sha256=d6f6052ec9bdc2a048dd34a79248ee56abd903055adc0d89d04715eb17ac1dc0 md5=e1ef3fef10d1f7fbd936794982a8f0be sha256=d333ce08122e6cde1a9d4fc7cb8e58b13e9335b52fd249046e8380f23d9bf429 +[http://xorg.freedesktop.org/releases/individual/app/xgamma-1.0.2.tar.bz2] +md5=f13ddedaa63a608d3b025d326f4f5b5d +sha256=5d3d5b230fc60aefae8f4865c17add133b5fb11377fd61c80897ef94fcccf41e + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xgamma-X11R7.0-1.0.1.tar.bz2] md5=07167da3f6b21985e27174ec70f213c0 sha256=ec744335f06c070d30f7f256262f6326c2cfff35a0ed6178e7be18ad44ad8a86 @@ -17626,6 +17650,10 @@ sha256=e55c61ede6760ce0d8eaac6dc386850c7873311ab038c69338e35559ec0bbd02 md5=05ae7771d2245bf325ff30b13da92666 sha256=c15dd54ad64e660d5a3e8c1ea0d14e50ba1127aab2e3211b82e3ee1e6c7045a4 +[http://xorg.freedesktop.org/releases/individual/app/xinput-1.3.0.tar.bz2] +md5=977d657e8d7b59f7d82c98ebef444b28 +sha256=330c3e5188abf256131c162c456060804f369349e9a0e7aa3efbc54add802e45 + [http://xorg.freedesktop.org/releases/individual/app/xkbcomp-1.0.3.tar.bz2] md5=2fbcae1323c266edf5b6c61751f2e343 sha256=0635bae5dae3c933ebba997475ae14fa213aee1f2ea8aaff2ca76c50f8aec716 @@ -17658,6 +17686,10 @@ sha256=94e1909faa9bf754c0e78a6bea8fa6e16c0931c4a2eb1f2252b7f0fa480cb4df md5=1f706f92334ee65818512b3b45d7be65 sha256=37af4603fa399760a055cc994c61b25778febf676af3fcfad84577f484a174e6 +[http://xorg.freedesktop.org/releases/individual/app/xkbevd-1.0.2.tar.bz2] +md5=68f2a143716c23b566f8509d9498f516 +sha256=4b78e316ecf9a9498291f634a7e9ee712ba429d5606f300c0a27eacdaaa1f72b + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xkbevd-X11R7.0-1.0.1.tar.bz2] md5=7ba0496f079552d1918d73bd09bde9b2 sha256=9b358d085bb4fcbfcb0a928cacd4825ba918ef21a2a5e4a3ee401f09abc97f90 @@ -17670,6 +17702,10 @@ sha256=86ab048045dcd1de690de0b040235040f496c686730ad557c912e0f40edf5c4a md5=6235c39690968d0a9a4c1b1c16c8905a sha256=d2e9c3c28e23010441ce40c48bda7adabd338a256cb9b99848be6ed937fc10e7 +[http://xorg.freedesktop.org/releases/individual/app/xkbutils-1.0.1.tar.bz2] +md5=84396a3dd75337caaae29d8fa5616fb1 +sha256=aaad73ed8db764978a18bc6ba774d38a4c1330c86622c0b47ae3ced09c175856 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xkbutils-X11R7.0-1.0.1.tar.bz2] md5=798502eca0c6c3e8c02d76fabb910532 sha256=8178a1c45af6e844ca0adcfe72fbddcbaebf3f305452a83e39768373981be92f @@ -17682,6 +17718,10 @@ sha256=49f02ed7b0b246a640fb129fcb3d24d7560305bb6f04e69b09739554857f79f5 md5=a9fe7efbc67a6966c4d4501f0cf88073 sha256=921a857dcf90a59df7feb26da5aabcf0bbfb749c46e2a46c3bc7a0280b83b0e1 +[http://xorg.freedesktop.org/releases/individual/app/xkill-1.0.1.tar.bz2] +md5=f66d76abb0f75514ca32272e23cca757 +sha256=77a11aac6e4ae2132d8b7b4335be77de26655e6aa88b40e51fd2ee802f14a9de + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xkill-X11R7.0-1.0.1.tar.bz2] md5=35f47fd58d75c1ea5f414b21a10bdbf3 sha256=fe59dfdcd43faf8efa778f9b2390525a606a62dcd7a70774982bc19301f6a3ce @@ -17694,10 +17734,18 @@ sha256=6b5b3ef58e6646f004a5f1cbc6be8f32b824cfbf78a30bf242e4f07083668770 md5=0314b2f5173da64957031400638fa5f8 sha256=1397377bae07e8907f73bc445e967d4d4400769e683c2119598d952c8ad28131 +[http://xorg.freedesktop.org/releases/individual/app/xlsatoms-1.0.1.tar.bz2] +md5=69adcda848479acc3b82b3928812d191 +sha256=456d575a0cdb37fc9415578a3ad34ba3cf9eb5eb0f6e5a25f97ca41db416d55a + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xlsatoms-X11R7.0-1.0.1.tar.bz2] md5=737b4d7893aa886e8e4181c94380a421 sha256=6a079872319ac7934578cace787f4f89ea87258f6dd8b33e5b4359be1256e9a3 +[http://xorg.freedesktop.org/releases/individual/app/xlsclients-1.0.1.tar.bz2] +md5=44473b880d26bfbe8b3d4d72b183cba7 +sha256=988c71c6dc3519523fe5844ee3e49d91f843a83c783dd0baa20526d9d2981698 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xlsclients-X11R7.0-1.0.1.tar.bz2] md5=cc0d64e90eab0b90b38355e841824588 sha256=05c269e322ed1ef54b8a32883c8676f46330ec70d85b0a158dbefc2b0e91ceb8 @@ -17802,6 +17850,10 @@ sha256=019ba3dbfe2f23e5847cc839a26c630cea20fe8d62df4775a21087176908b9d7 md5=073c1b4f0029249a05800900abd13077 sha256=6044df7ff07d38c4ce1020453f259f4caa16272aca7d835204852e416dfa2605 +[http://xorg.freedesktop.org/releases/individual/doc/xorg-docs-1.4.tar.bz2] +md5=4f2005bdd430a98c262901383459009e +sha256=fffc67e50ce396e6ddd95e842fa8351954b8f09cb729a9a062e0496a8bda4925 + [http://xorg.freedesktop.org/releases/X11R7.0/src/doc/xorg-docs-X11R7.0-1.0.1.tar.bz2] md5=ac0d76afa46ef5da9e1cf33558f4b303 sha256=a3adf1c61247254cc81c80a6c020fe6a9fe0abbdc5f66f8631ec87a1a356c4ae @@ -17858,6 +17910,10 @@ sha256=211f4d13d8cd726b10553534a4d0f0267b18d39dd30b2f5bc6dfcde9f6d6b8c9 md5=ae3d4f73c42953b0a5513bb2967ab913 sha256=be1fbd7646a55eb9a9ad161f9b83034ba88a82c780e29d4a7888db2495947f25 +[http://xorg.freedesktop.org/releases/individual/doc/xorg-sgml-doctools-1.2.tar.bz2] +md5=f930e5be117922f0841614c8d43f1ae8 +sha256=4def78f2e0e002f5693b61b53ab4325fbc150d3614fe53818e8df9b365a4dbea + [http://xorg.freedesktop.org/releases/X11R7.0/src/doc/xorg-sgml-doctools-X11R7.0-1.0.1.tar.bz2] md5=d08d4fd10ac46d8b4636efe4d8c0de74 sha256=2a676fdaf45a7a1e40f4df2cbd09d542672c2d0fe1f890a874b8719e0a448ad7 @@ -17894,6 +17950,10 @@ sha256=4fbc61ec9405b0797318dcf54f5c3a3cc83221f27014563113d2f3f78b3982bf md5=1d0a68dada5e14ab07d7660abd4d03e3 sha256=4f54239ec09f4555d15969d44ac84719e739f78071b0f7855ec620a1f0257a3b +[http://xorg.freedesktop.org/releases/individual/app/xpr-1.0.2.tar.bz2] +md5=6b3a6896081f628bf5a2c9129417c86f +sha256=c325a9896d1cda43a681f1c2a6a2bbb1c580ade57a882b0a8f84ffa359238adf + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xpr-X11R7.0-1.0.1.tar.bz2] md5=487b5ab96b373acb80808758ce23eb49 sha256=8c77256313114c80d49ac5db0013c439ddf9888f2d265f66c9ee3da2de46cdf4 @@ -17998,6 +18058,10 @@ sha256=adf3f97fcb0d768e19058e94dd4aaec70ea61afa8077f6c6e99aa70bc8564e14 md5=2187897f97f0c818b27f8b8d33f31fa8 sha256=8be898b0514248d430a4c71be3ffdf6da8e296dabae27a186ed662f38c386397 +[http://xorg.freedesktop.org/releases/individual/app/xrefresh-1.0.2.tar.bz2] +md5=1228f890f86148e4e6ae22aa73118cbb +sha256=522831fd29c0b250f29735a01b02e96e311f200a675e45c8b3d187b6f86b32f5 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xrefresh-X11R7.0-1.0.1.tar.bz2] md5=5a46d5fb82aeeb4d6aac58c9cc367439 sha256=9915ee47ff85d83eee825b1a44857b92b4b16558e4bf436671ae7a37f4ab65ad @@ -18090,6 +18154,10 @@ sha256=db17d017fff06df2e47f9d123bfb4f1d63a063eb3c08ec017292cc206bb293d1 md5=ba1e928daa7146e44e3c55db323884f4 sha256=f27e8dc088d9ca3aa9493ae13422a8c02ce07543780f1fe09985a0d8f41136d4 +[http://xorg.freedesktop.org/releases/individual/app/xsetmode-1.0.0.tar.bz2] +md5=d074e79d380b031d2f60e4cd56538c93 +sha256=988b47cd922991c6e6adbce15dc386ac75690b61744b526c3af5a4eaa9afa0aa + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xsetmode-X11R7.0-1.0.0.tar.bz2] md5=d83d6ef0b73762feab724aab95d9a4a2 sha256=ff7e076c77c35f746bc01d15d3ff9e203a45a850ef7e26ef11726b0b9f709e4a @@ -18098,6 +18166,10 @@ sha256=ff7e076c77c35f746bc01d15d3ff9e203a45a850ef7e26ef11726b0b9f709e4a md5=195614431e2431508e07a42a3b6d4568 sha256=103e35a5523e9237ef3a27bb8e08ab4443de5ceedfe5784be48afde6fba6cd06 +[http://xorg.freedesktop.org/releases/individual/app/xsetroot-1.0.2.tar.bz2] +md5=9af7db9f3052aef0b11636720b3101dd +sha256=4f9a751f4830d479fae8ccb68ed04896dc99612789310b7917bd15c04aa3351d + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xsetroot-X11R7.0-1.0.1.tar.bz2] md5=e2831b39cd395d6f6f4824b0e25f55ed sha256=8327c294491dbd13c06c8d5d6bf971dca215f59facce99d3e4d0c170d7f0fe44 @@ -18214,6 +18286,10 @@ sha256=75bc03d2eafd4c7139d707fb86b023376d5a5ad2e9315dad53b250cb19e8bce1 md5=6a80a6512b9286f15a5bc47d3a019bc9 sha256=55fc617d536e58f088c694e71e1a02d3019c887c9abd2222574f84866b145d5e +[http://xorg.freedesktop.org/releases/individual/app/xwud-1.0.1.tar.bz2] +md5=6e3c5d0297d88e890b6f5df31f73dd60 +sha256=d2de2d39b4479e23adc92d131f66e87db41441aae11b72991bb01d5f6c93336c + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xwud-X11R7.0-1.0.1.tar.bz2] md5=e08d2ee04abb89a6348f47c84a1ff3ed sha256=a10c7950ad632f07426ea9516b3743c562da8403f0da0cc678277031020f1586 -- cgit v1.2.3 From c1082ecb6cacc41fe3d9ef685a9f90d53c5edeb5 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Sun, 9 Nov 2008 12:13:47 +0000 Subject: libsm_1.1.0.bb : add e2fsprogs-libs to DEPENDS, needed for libuuid --- packages/xorg-lib/libsm_1.1.0.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xorg-lib/libsm_1.1.0.bb b/packages/xorg-lib/libsm_1.1.0.bb index 669b29c937..7a3089894d 100644 --- a/packages/xorg-lib/libsm_1.1.0.bb +++ b/packages/xorg-lib/libsm_1.1.0.bb @@ -1,7 +1,7 @@ require xorg-lib-common.inc DESCRIPTION = "X11 Session management library" -DEPENDS += "libice xproto xtrans" +DEPENDS += "libice xproto xtrans e2fsprogs-libs" PR = "r0" PE = "1" -- cgit v1.2.3 From 3af7475c0582f6a5d52ad6ee4279a3d473c43b1f Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Sun, 9 Nov 2008 18:46:26 +0000 Subject: xserver-xorg_1.5.1.bb : add openssl to DEPENDS as its used for SHA --- packages/xorg-xserver/xserver-xorg_1.5.1.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xorg-xserver/xserver-xorg_1.5.1.bb b/packages/xorg-xserver/xserver-xorg_1.5.1.bb index 087692d700..b936aec95e 100644 --- a/packages/xorg-xserver/xserver-xorg_1.5.1.bb +++ b/packages/xorg-xserver/xserver-xorg_1.5.1.bb @@ -1,7 +1,7 @@ require xorg-xserver-common.inc DESCRIPTION = "the X.Org X server" -DEPENDS += "pixman libpciaccess" +DEPENDS += "pixman libpciaccess openssl" PE = "1" PR = "r0" -- cgit v1.2.3 From d51ba12bbe41f95ddc5b0b5528a5ad3b28e9a3cc Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Sun, 9 Nov 2008 23:55:49 +0000 Subject: om-gta02.conf : prefer xserver-xorg --- conf/machine/om-gta02.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/machine/om-gta02.conf b/conf/machine/om-gta02.conf index 4a8abfacff..8b496a3f00 100644 --- a/conf/machine/om-gta02.conf +++ b/conf/machine/om-gta02.conf @@ -9,7 +9,7 @@ MACHINE_CLASS = "neo1973" PACKAGE_EXTRA_ARCHS = "fic-gta02 ${MACHINE_CLASS}" PREFERRED_PROVIDER_virtual/kernel ?= "linux-openmoko" -PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-glamo" +PREFERRED_PROVIDER_virtual/xserver = "xserver-xorg" UBOOT_ENTRYPOINT = "30008000" MACHINE_FEATURES = "kernel26 apm alsa bluetooth gps usbgadget usbhost phone wifi vfat ext2" -- cgit v1.2.3 From 57f0f91a0efc6e6c5a7569ef49710998c6362c8f Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Mon, 10 Nov 2008 10:00:33 +0000 Subject: xf86-input-tslib_0.0.5.bb : needs to DEPEND on tslib --- packages/xorg-driver/xf86-input-tslib_0.0.5.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/xorg-driver/xf86-input-tslib_0.0.5.bb b/packages/xorg-driver/xf86-input-tslib_0.0.5.bb index bed0160138..f5c0186565 100644 --- a/packages/xorg-driver/xf86-input-tslib_0.0.5.bb +++ b/packages/xorg-driver/xf86-input-tslib_0.0.5.bb @@ -8,8 +8,8 @@ PR = "r6" SRC_URI = "http://www.pengutronix.de/software/xf86-input-tslib/download/xf86-input-tslib-${PV}.tar.bz2 \ file://use-hal-for-device.diff;patch=1 \ - file://01_fix-wrong-value-range-for-the-axises.diff;patch=1 \ - file://dynamic-xy.patch;patch=1 \ + file://01_fix-wrong-value-range-for-the-axises.diff;patch=1 \ + file://dynamic-xy.patch;patch=1 \ file://10-x11-input-tslib.fdi" do_configure_prepend() { -- cgit v1.2.3 From 59b7e5b48b60f8a04b4617f2e1920ecd9d62f532 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Tue, 11 Nov 2008 22:31:12 -0200 Subject: preferred-xorg-versions-X11R7.4.inc: set mesa preferred version to 7.2 This fixes the building of xserver-xorg in x86 based architectures otherwise they fail the gl library. --- conf/distro/include/preferred-xorg-versions-X11R7.4.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.4.inc b/conf/distro/include/preferred-xorg-versions-X11R7.4.inc index 1f3d68d8ae..548d8239e8 100644 --- a/conf/distro/include/preferred-xorg-versions-X11R7.4.inc +++ b/conf/distro/include/preferred-xorg-versions-X11R7.4.inc @@ -191,6 +191,7 @@ PREFERRED_VERSION_libxxf86dga ?= "1.0.2" PREFERRED_VERSION_libxxf86misc ?= "1.0.1" PREFERRED_VERSION_libxxf86vm ?= "1.0.2" PREFERRED_VERSION_xtrans ?= "1.2.1" +PREFERRED_VERSION_mesa ?= "7.2" # proto PREFERRED_VERSION_applewmproto ?= "1.0.3" -- cgit v1.2.3 From 4979adbbeb99dda028ad52085ff8d7bb71fc9a2c Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 12 Nov 2008 09:23:52 +0000 Subject: xserver-common_1.22.bb : update with two xorg patches, one generic to stop -mouse argument being passed. The other om-gta* specific to stop -screen argument being passed for these machines. --- packages/xserver-common/files/gta-xorg-fixes.patch | 29 ++++++++++++++++++++++ packages/xserver-common/files/xorg-fixes.patch | 25 +++++++++++++++++++ packages/xserver-common/xserver-common_1.22.bb | 4 ++- 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 packages/xserver-common/files/gta-xorg-fixes.patch create mode 100644 packages/xserver-common/files/xorg-fixes.patch diff --git a/packages/xserver-common/files/gta-xorg-fixes.patch b/packages/xserver-common/files/gta-xorg-fixes.patch new file mode 100644 index 0000000000..adf6798a99 --- /dev/null +++ b/packages/xserver-common/files/gta-xorg-fixes.patch @@ -0,0 +1,29 @@ +Index: xserver-common-1.22/X11/Xserver +=================================================================== +--- xserver-common-1.22.orig/X11/Xserver 2008-11-12 09:16:50.000000000 +0000 ++++ xserver-common-1.22/X11/Xserver 2008-11-12 09:18:53.000000000 +0000 +@@ -109,7 +109,11 @@ + "Nokia RX-44") + ARGS="$ARGS -dpi 225 -screen ${SCREEN_SIZE} -mouse tslib" ;; + "GTA01" ) +- ARGS="$ARGS -dpi 285 -screen 480x640" ;; ++ ARGS="$ARGS -dpi 285" ++ if [ "$XSERVER" != "Xorg" ] ; then ++ ARGS="$ARGS -screen 480x640" ++ fi ++ ;; + "Motorola Ezx Platform") + ARGS="$ARGS -dpi 170 -screen 240x320" ;; + "ARM-IntegratorCP" | "ARM-Versatile PB") +@@ -118,7 +122,10 @@ + modprobe mbxfb + ARGS="$ARGS -fb /dev/fb1" ;; + "GTA02") +- ARGS="$ARGS -dpi 285 -screen ${SCREEN_SIZE}" ++ ARGS="$ARGS -dpi 285" ++ if [ "$XSERVER" != "Xorg" ] ; then ++ ARGS="$ARGS -screen ${SCREEN_SIZE}" ++ fi + ;; + "Boundary Devices Neon board") + ARGS="$ARGS -dpi 100 -screen ${SCREEN_SIZE} -mouse tslib" diff --git a/packages/xserver-common/files/xorg-fixes.patch b/packages/xserver-common/files/xorg-fixes.patch new file mode 100644 index 0000000000..b2fd544fb5 --- /dev/null +++ b/packages/xserver-common/files/xorg-fixes.patch @@ -0,0 +1,25 @@ +Index: xserver-common-1.22/X11/Xserver +=================================================================== +--- xserver-common-1.22.orig/X11/Xserver 2008-11-12 09:14:55.000000000 +0000 ++++ xserver-common-1.22/X11/Xserver 2008-11-12 09:16:22.000000000 +0000 +@@ -48,6 +48,7 @@ + + ARGS="-br -pn $INPUT_EXTRA_ARGS" + ++if [ "$XSERVER" != "Xorg" ] ; then + # use ucb 1x00 touchscreen if present + if [ -z "$TSLIB_TSDEVICE" ] && [ -e /dev/touchscreen/ucb1x00 ]; then + ARGS="$ARGS -mouse /dev/touchscreen/ucb1x00" +@@ -58,10 +59,11 @@ + if [ -e "$TSLIB_TSDEVICE" ] ; then + ARGS="$ARGS -mouse tslib" + else +- if [ -e /dev/input/mice ] && [ "$XSERVER" != "Xorg" ] ; then ++ if [ -e /dev/input/mice ] ; then + ARGS="$ARGS -mouse mouse" + fi + fi ++fi + + # start off server in conventional location. + case `module_id` in diff --git a/packages/xserver-common/xserver-common_1.22.bb b/packages/xserver-common/xserver-common_1.22.bb index 6dcbc6862d..05b15ae564 100644 --- a/packages/xserver-common/xserver-common_1.22.bb +++ b/packages/xserver-common/xserver-common_1.22.bb @@ -2,7 +2,7 @@ DESCRIPTION = "Common X11 scripts and support files" LICENSE = "GPL" SECTION = "x11" RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo" -PR = "r7" +PR = "r8" PACKAGE_ARCH = "all" @@ -11,6 +11,8 @@ inherit gpe SRC_URI_append = " file://setDPI.sh " SRC_URI_append_angstrom = " file://kdrive-1.4-fixes.patch;patch=1 \ + file://xorg-fixes.patch;patch=1 \ + file://gta-xorg-fixes.patch;patch=1 \ file://default.xmodmap " do_install_append() { -- cgit v1.2.3 From 6d368be335fe5b168b767667f9cdbef58a9a8006 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 12 Nov 2008 10:32:42 +0000 Subject: xorg-xserver-common.inc : disable apm handling for Xorg on arm, it causes Xorg to enter D state on suspend. Xorg doesnt actually seem to need to know about apm. And a similar hack has been used with kdrive for years in OE. --- packages/xorg-xserver/xorg-xserver-common.inc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/xorg-xserver/xorg-xserver-common.inc b/packages/xorg-xserver/xorg-xserver-common.inc index 190de2c49a..84e3c30978 100644 --- a/packages/xorg-xserver/xorg-xserver-common.inc +++ b/packages/xorg-xserver/xorg-xserver-common.inc @@ -26,6 +26,8 @@ inherit autotools pkgconfig EXTRA_OECONF += " --enable-xcalibrate \ ac_cv_file__usr_share_sgml_X11_defs_ent=no" +EXTRA_OECONF_append_arm = " ac_cv_header_linux_apm_bios_h=no " + PACKAGES =+ "xserver-security-policy" FILES_xserver-security-policy += "${libdir}/xserver/SecurityPolicy" RRECOMMENDS_${PN} += "xserver-security-policy xkeyboard-config xorg-minimal-fonts rgb" -- cgit v1.2.3 From 5ba0aa492879e92b6ed278b7a3f9a1e32f859101 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 12 Nov 2008 10:33:50 +0000 Subject: xserver-xorg_*.bb : remove duplicate EXTRA_OECONF entry that is already set in the common file --- packages/xorg-xserver/xserver-xorg_1.2.0.bb | 2 -- packages/xorg-xserver/xserver-xorg_1.3.0.0.bb | 2 -- packages/xorg-xserver/xserver-xorg_1.4.bb | 2 -- packages/xorg-xserver/xserver-xorg_1.5.1.bb | 2 -- 4 files changed, 8 deletions(-) diff --git a/packages/xorg-xserver/xserver-xorg_1.2.0.bb b/packages/xorg-xserver/xserver-xorg_1.2.0.bb index 218e6dc026..a57eddfc31 100644 --- a/packages/xorg-xserver/xserver-xorg_1.2.0.bb +++ b/packages/xorg-xserver/xserver-xorg_1.2.0.bb @@ -4,8 +4,6 @@ require xorg-xserver-common.inc PE = "1" PR = "r3" -EXTRA_OECONF += " ac_cv_file__usr_share_sgml_X11_defs_ent=no " - export LDFLAGS += " -ldl " #DESCRIPTION = "" diff --git a/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb b/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb index d28fec16e1..40f8480375 100644 --- a/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb +++ b/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb @@ -7,8 +7,6 @@ PR = "r7" SRC_URI += "file://drmfix.patch;patch=1 \ file://glyphstr.patch;patch=1" -EXTRA_OECONF += " ac_cv_file__usr_share_sgml_X11_defs_ent=no " - export LDFLAGS += " -ldl " #DESCRIPTION = "" diff --git a/packages/xorg-xserver/xserver-xorg_1.4.bb b/packages/xorg-xserver/xserver-xorg_1.4.bb index 3f53002a34..fe3703da61 100644 --- a/packages/xorg-xserver/xserver-xorg_1.4.bb +++ b/packages/xorg-xserver/xserver-xorg_1.4.bb @@ -11,6 +11,4 @@ SRC_URI += "file://drmfix.patch;patch=1 \ MESA_VER = "7.0.2" -EXTRA_OECONF += " ac_cv_file__usr_share_sgml_X11_defs_ent=no " - export LDFLAGS += " -ldl " diff --git a/packages/xorg-xserver/xserver-xorg_1.5.1.bb b/packages/xorg-xserver/xserver-xorg_1.5.1.bb index b936aec95e..e0d64017f7 100644 --- a/packages/xorg-xserver/xserver-xorg_1.5.1.bb +++ b/packages/xorg-xserver/xserver-xorg_1.5.1.bb @@ -10,6 +10,4 @@ SRC_URI += "file://drmfix.patch;patch=1 \ MESA_VER = "7.2" -EXTRA_OECONF += " ac_cv_file__usr_share_sgml_X11_defs_ent=no " - export LDFLAGS += " -ldl " -- cgit v1.2.3 From e2f7722a89a2fa001e3fc04322f3d37ed045a79b Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 12 Nov 2008 10:35:58 +0000 Subject: xserver-xorg_*.bb : bump PR for apm change --- packages/xorg-xserver/xserver-xorg_1.2.0.bb | 2 +- packages/xorg-xserver/xserver-xorg_1.3.0.0.bb | 2 +- packages/xorg-xserver/xserver-xorg_1.4.2.bb | 2 +- packages/xorg-xserver/xserver-xorg_1.4.bb | 2 +- packages/xorg-xserver/xserver-xorg_1.5.1.bb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/xorg-xserver/xserver-xorg_1.2.0.bb b/packages/xorg-xserver/xserver-xorg_1.2.0.bb index a57eddfc31..61f73b3454 100644 --- a/packages/xorg-xserver/xserver-xorg_1.2.0.bb +++ b/packages/xorg-xserver/xserver-xorg_1.2.0.bb @@ -2,7 +2,7 @@ MESA_VER = "6.5.2" require xorg-xserver-common.inc PE = "1" -PR = "r3" +PR = "r4" export LDFLAGS += " -ldl " diff --git a/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb b/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb index 40f8480375..9d6dca4489 100644 --- a/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb +++ b/packages/xorg-xserver/xserver-xorg_1.3.0.0.bb @@ -2,7 +2,7 @@ MESA_VER = "6.5.2" require xorg-xserver-common.inc PE = "1" -PR = "r7" +PR = "r8" SRC_URI += "file://drmfix.patch;patch=1 \ file://glyphstr.patch;patch=1" diff --git a/packages/xorg-xserver/xserver-xorg_1.4.2.bb b/packages/xorg-xserver/xserver-xorg_1.4.2.bb index 562266ff39..852e847265 100644 --- a/packages/xorg-xserver/xserver-xorg_1.4.2.bb +++ b/packages/xorg-xserver/xserver-xorg_1.4.2.bb @@ -3,7 +3,7 @@ require xorg-xserver-common.inc DESCRIPTION = "the X.Org X server" DEPENDS += "pixman" PE = "1" -PR = "r9" +PR = "r10" SRC_URI += "file://drmfix.patch;patch=1 \ file://pkgconfig_fix.patch;patch=1 \ diff --git a/packages/xorg-xserver/xserver-xorg_1.4.bb b/packages/xorg-xserver/xserver-xorg_1.4.bb index fe3703da61..ba64d72d35 100644 --- a/packages/xorg-xserver/xserver-xorg_1.4.bb +++ b/packages/xorg-xserver/xserver-xorg_1.4.bb @@ -3,7 +3,7 @@ require xorg-xserver-common.inc DESCRIPTION = "the X.Org X server" DEPENDS += "pixman" PE = "1" -PR = "r7" +PR = "r8" SRC_URI += "file://drmfix.patch;patch=1 \ file://pkgconfig_fix.patch;patch=1 \ diff --git a/packages/xorg-xserver/xserver-xorg_1.5.1.bb b/packages/xorg-xserver/xserver-xorg_1.5.1.bb index e0d64017f7..92ef22fd63 100644 --- a/packages/xorg-xserver/xserver-xorg_1.5.1.bb +++ b/packages/xorg-xserver/xserver-xorg_1.5.1.bb @@ -3,7 +3,7 @@ require xorg-xserver-common.inc DESCRIPTION = "the X.Org X server" DEPENDS += "pixman libpciaccess openssl" PE = "1" -PR = "r0" +PR = "r1" SRC_URI += "file://drmfix.patch;patch=1 \ file://sysroot_fix.patch;patch=1" -- cgit v1.2.3 From d876de8271a798310cd226c5c2db81843fbf2c8a Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 12 Nov 2008 11:15:52 +0000 Subject: xserver-xorg-conf_0.1.bb : split the xorg.conf out of xserver-xorg package to prevent xserver-xorg becoming a machine package. --- packages/xorg-xserver/xorg-xserver-common.inc | 9 +- .../xserver-xorg-conf/omap3evm/xorg.conf | 29 +++++ packages/xorg-xserver/xserver-xorg-conf/xorg.conf | 0 packages/xorg-xserver/xserver-xorg-conf_0.1.bb | 11 ++ .../xorg-xserver/xserver-xorg/omap3evm/xorg.conf | 29 ----- packages/xorg-xserver/xserver-xorg/xorg.conf | 135 --------------------- 6 files changed, 42 insertions(+), 171 deletions(-) create mode 100644 packages/xorg-xserver/xserver-xorg-conf/omap3evm/xorg.conf create mode 100644 packages/xorg-xserver/xserver-xorg-conf/xorg.conf create mode 100644 packages/xorg-xserver/xserver-xorg-conf_0.1.bb delete mode 100644 packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf delete mode 100644 packages/xorg-xserver/xserver-xorg/xorg.conf diff --git a/packages/xorg-xserver/xorg-xserver-common.inc b/packages/xorg-xserver/xorg-xserver-common.inc index 84e3c30978..d391ffe60b 100644 --- a/packages/xorg-xserver/xorg-xserver-common.inc +++ b/packages/xorg-xserver/xorg-xserver-common.inc @@ -16,8 +16,7 @@ libxkbui libxxf86misc libxi libdmx libxtst libxres mesa libxcalibrate" RECOMMENDS_${PN} = "hal" XORG_PN = "xorg-server" -SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2 \ - file://xorg.conf" +SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2" S = "${WORKDIR}/${XORG_PN}-${PV}" @@ -30,7 +29,7 @@ EXTRA_OECONF_append_arm = " ac_cv_header_linux_apm_bios_h=no " PACKAGES =+ "xserver-security-policy" FILES_xserver-security-policy += "${libdir}/xserver/SecurityPolicy" -RRECOMMENDS_${PN} += "xserver-security-policy xkeyboard-config xorg-minimal-fonts rgb" +RRECOMMENDS_${PN} += "xserver-security-policy xkeyboard-config xorg-minimal-fonts rgb xserver-xorg-conf" PACKAGES =+ "${PN}-xprint ${PN}-xvfb ${PN}-utils" @@ -45,14 +44,10 @@ FILES_${PN}-dbg += "${libdir}/xorg/modules/.debug \ ${libdir}/xorg/modules/*/*/.debug \ " -CONFFILES_${PN} += "${sysconfdir}/X11/xorg.conf" - do_stage() { autotools_stage_all } do_install_append () { - install -d ${D}/${sysconfdir}/X11 - install -m 0644 ${WORKDIR}/xorg.conf ${D}/${sysconfdir}/X11/ ln -sf ${datadir}/fonts/X11 ${D}/${libdir}/X11/fonts } diff --git a/packages/xorg-xserver/xserver-xorg-conf/omap3evm/xorg.conf b/packages/xorg-xserver/xserver-xorg-conf/omap3evm/xorg.conf new file mode 100644 index 0000000000..983bb0823a --- /dev/null +++ b/packages/xorg-xserver/xserver-xorg-conf/omap3evm/xorg.conf @@ -0,0 +1,29 @@ +Section "Module" + Load "extmod" + Load "dbe" + Load "glx" + Load "freetype" + Load "type1" + Load "record" + Load "dri" +EndSection + +Section "Monitor" + Identifier "Builtin Default Monitor" +EndSection + +Section "Device" + Identifier "Builtin Default fbdev Device 0" + Driver "omapfb" +EndSection + +Section "Screen" + Identifier "Builtin Default fbdev Screen 0" + Device "Builtin Default fbdev Device 0" + Monitor "Builtin Default Monitor" +EndSection + +Section "ServerLayout" + Identifier "Builtin Default Layout" + Screen "Builtin Default fbdev Screen 0" +EndSection diff --git a/packages/xorg-xserver/xserver-xorg-conf/xorg.conf b/packages/xorg-xserver/xserver-xorg-conf/xorg.conf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/xorg-xserver/xserver-xorg-conf_0.1.bb b/packages/xorg-xserver/xserver-xorg-conf_0.1.bb new file mode 100644 index 0000000000..1ff83ea27b --- /dev/null +++ b/packages/xorg-xserver/xserver-xorg-conf_0.1.bb @@ -0,0 +1,11 @@ +DESCRIPTION = "Machine specific xorg.conf files" + +SRC_URI = "file://xorg.conf" + +do_install() { + install -d ${D}/${sysconfdir}/X11 + install -m 0644 ${WORKDIR}/xorg.conf ${D}/${sysconfdir}/X11/ +} + +CONFFILES_${PN} += "${sysconfdir}/X11/xorg.conf" + diff --git a/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf b/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf deleted file mode 100644 index 983bb0823a..0000000000 --- a/packages/xorg-xserver/xserver-xorg/omap3evm/xorg.conf +++ /dev/null @@ -1,29 +0,0 @@ -Section "Module" - Load "extmod" - Load "dbe" - Load "glx" - Load "freetype" - Load "type1" - Load "record" - Load "dri" -EndSection - -Section "Monitor" - Identifier "Builtin Default Monitor" -EndSection - -Section "Device" - Identifier "Builtin Default fbdev Device 0" - Driver "omapfb" -EndSection - -Section "Screen" - Identifier "Builtin Default fbdev Screen 0" - Device "Builtin Default fbdev Device 0" - Monitor "Builtin Default Monitor" -EndSection - -Section "ServerLayout" - Identifier "Builtin Default Layout" - Screen "Builtin Default fbdev Screen 0" -EndSection diff --git a/packages/xorg-xserver/xserver-xorg/xorg.conf b/packages/xorg-xserver/xserver-xorg/xorg.conf deleted file mode 100644 index 4b327022f6..0000000000 --- a/packages/xorg-xserver/xserver-xorg/xorg.conf +++ /dev/null @@ -1,135 +0,0 @@ - -# xorg configuration - -Section "ServerLayout" - Identifier "Default Layout" - Screen 0 "Screen0" 0 0 - InputDevice "Mouse0" "CorePointer" - InputDevice "Keyboard0" "CoreKeyboard" -EndSection - -Section "Files" - -# RgbPath is the location of the RGB database. Note, this is the name of the -# file minus the extension (like ".txt" or ".db"). There is normally -# no need to change the default. -# Multiple FontPath entries are allowed (they are concatenated together) -# By default, Red Hat 6.0 and later now use a font server independent of -# the X server to render fonts. -# FontPath "unix/:7100" - FontPath "/usr/lib/X11/fonts/misc" -EndSection - -Section "Module" - Load "dbe" - Load "extmod" - Load "fbdevhw" -# Load "glx" - Load "record" - Load "freetype" - Load "type1" -# to enable Xv, link /dev/videox to video device, eg. ln -s video0 /dev/videox -# Load "z4l" -EndSection - -Section "InputDevice" - -# Specify which keyboard LEDs can be user-controlled (eg, with xset(1)) -# Option "Xleds" "1 2 3" -# To disable the XKEYBOARD extension, uncomment XkbDisable. -# Option "XkbDisable" -# To customise the XKB settings to suit your keyboard, modify the -# lines below (which are the defaults). For example, for a non-U.S. -# keyboard, you will probably want to use: -# Option "XkbModel" "pc102" -# If you have a US Microsoft Natural keyboard, you can use: -# Option "XkbModel" "microsoft" -# -# Then to change the language, change the Layout setting. -# For example, a german layout can be obtained with: -# Option "XkbLayout" "de" -# or: -# Option "XkbLayout" "de" -# Option "XkbVariant" "nodeadkeys" -# -# If you'd like to switch the positions of your capslock and -# control keys, use: -# Option "XkbOptions" "ctrl:swapcaps" -# Or if you just want both to be control, use: -# Option "XkbOptions" "ctrl:nocaps" -# - Identifier "Keyboard0" - Driver "keyboard" - Option "XkbModel" "pc105" - Option "XkbLayout" "us" -EndSection - -Section "InputDevice" - Identifier "Mouse0" - Driver "mouse" - Option "Protocol" "IMPS/2" - Option "Device" "/dev/input/mice" - Option "ZAxisMapping" "4 5" - Option "Emulate3Buttons" "yes" -EndSection - -Section "Monitor" - Identifier "Monitor0" - VendorName "Monitor Vendor" - ModelName "NEC FP2141SB" -# DisplaySize 400 300 -# Note: setting HorizSync/VertRefresh will override DDC probe -# HorizSync 30.0 - 140.0 -# VertRefresh 25.0 - 160.0 - Option "dpms" -EndSection - -Section "Monitor" - Identifier "Monitor1" - VendorName "Generic Vendor" - ModelName "Generic Monitor" - HorizSync 28-50 - VertRefresh 43-73 - Modeline "800x600-60" 40.0000 800 840 976 1056 600 601 605 628 - Modeline "800x600-72" 50.0000 800 856 976 1040 600 637 643 666 - Modeline "640x480-60" 25.1749 640 656 744 800 480 490 492 525 -HSync -VSync - Modeline "640x480-72" 31.5000 640 664 704 832 480 489 492 520 -HSync -VSync - Option "dpms" -EndSection - - -Section "Device" - Identifier "FBDev" - Driver "fbdev" - #Option "shadowfb" "off" -EndSection - -Section "Screen" - Identifier "Screen0" - Device "FBDev" - Monitor "Monitor0" - DefaultDepth 16 - - SubSection "Display" - Depth 8 - Modes "1024x768" "800x600" "640x480" - EndSubsection - - SubSection "Display" - Depth 16 - Modes "1024x768" "800x600" "640x480" - EndSubsection - - SubSection "Display" - Depth 24 - FbBpp 32 - Modes "1024x768" "800x600" "640x480" - EndSubsection - -EndSection - -Section "DRI" - Group 0 - Mode 0666 -EndSection - -- cgit v1.2.3 From 067fd09f1b5055d5f277f316a7b0a28a99623727 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 12 Nov 2008 11:23:38 +0000 Subject: xserver-xorg/beagleboard/xorg.conf : forgot to move this into the new xserver-xorg-conf --- .../xserver-xorg-conf/beagleboard/xorg.conf | 135 +++++++++++++++++++++ .../xserver-xorg/beagleboard/xorg.conf | 135 --------------------- 2 files changed, 135 insertions(+), 135 deletions(-) create mode 100644 packages/xorg-xserver/xserver-xorg-conf/beagleboard/xorg.conf delete mode 100644 packages/xorg-xserver/xserver-xorg/beagleboard/xorg.conf diff --git a/packages/xorg-xserver/xserver-xorg-conf/beagleboard/xorg.conf b/packages/xorg-xserver/xserver-xorg-conf/beagleboard/xorg.conf new file mode 100644 index 0000000000..1778960638 --- /dev/null +++ b/packages/xorg-xserver/xserver-xorg-conf/beagleboard/xorg.conf @@ -0,0 +1,135 @@ + +# xorg configuration + +Section "ServerLayout" + Identifier "Default Layout" + Screen 0 "Screen0" 0 0 + InputDevice "Mouse0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" +EndSection + +Section "Files" + +# RgbPath is the location of the RGB database. Note, this is the name of the +# file minus the extension (like ".txt" or ".db"). There is normally +# no need to change the default. +# Multiple FontPath entries are allowed (they are concatenated together) +# By default, Red Hat 6.0 and later now use a font server independent of +# the X server to render fonts. +# FontPath "unix/:7100" + FontPath "/usr/lib/X11/fonts/misc" +EndSection + +Section "Module" + Load "dbe" + Load "extmod" + Load "fbdevhw" +# Load "glx" + Load "record" + Load "freetype" + Load "type1" +# to enable Xv, link /dev/videox to video device, eg. ln -s video0 /dev/videox +# Load "z4l" +EndSection + +Section "InputDevice" + +# Specify which keyboard LEDs can be user-controlled (eg, with xset(1)) +# Option "Xleds" "1 2 3" +# To disable the XKEYBOARD extension, uncomment XkbDisable. +# Option "XkbDisable" +# To customise the XKB settings to suit your keyboard, modify the +# lines below (which are the defaults). For example, for a non-U.S. +# keyboard, you will probably want to use: +# Option "XkbModel" "pc102" +# If you have a US Microsoft Natural keyboard, you can use: +# Option "XkbModel" "microsoft" +# +# Then to change the language, change the Layout setting. +# For example, a german layout can be obtained with: +# Option "XkbLayout" "de" +# or: +# Option "XkbLayout" "de" +# Option "XkbVariant" "nodeadkeys" +# +# If you'd like to switch the positions of your capslock and +# control keys, use: +# Option "XkbOptions" "ctrl:swapcaps" +# Or if you just want both to be control, use: +# Option "XkbOptions" "ctrl:nocaps" +# + Identifier "Keyboard0" + Driver "keyboard" + Option "XkbModel" "pc105" + Option "XkbLayout" "us" +EndSection + +Section "InputDevice" + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "IMPS/2" + Option "Device" "/dev/input/mice" + Option "ZAxisMapping" "4 5" + Option "Emulate3Buttons" "yes" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Monitor Vendor" + ModelName "NEC FP2141SB" +# DisplaySize 400 300 +# Note: setting HorizSync/VertRefresh will override DDC probe +# HorizSync 30.0 - 140.0 +# VertRefresh 25.0 - 160.0 + Option "dpms" +EndSection + +Section "Monitor" + Identifier "Monitor1" + VendorName "Generic Vendor" + ModelName "Generic Monitor" + HorizSync 28-50 + VertRefresh 43-73 + Modeline "800x600-60" 40.0000 800 840 976 1056 600 601 605 628 + Modeline "800x600-72" 50.0000 800 856 976 1040 600 637 643 666 + Modeline "640x480-60" 25.1749 640 656 744 800 480 490 492 525 -HSync -VSync + Modeline "640x480-72" 31.5000 640 664 704 832 480 489 492 520 -HSync -VSync + Option "dpms" +EndSection + + +Section "Device" + Identifier "FBDev" + Driver "omapfb" + #Option "shadowfb" "off" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "FBDev" + Monitor "Monitor0" + DefaultDepth 16 + + SubSection "Display" + Depth 8 + Modes "1024x768" "800x600" "640x480" + EndSubsection + + SubSection "Display" + Depth 16 + Modes "1024x768" "800x600" "640x480" + EndSubsection + + SubSection "Display" + Depth 24 + FbBpp 32 + Modes "1024x768" "800x600" "640x480" + EndSubsection + +EndSection + +Section "DRI" + Group 0 + Mode 0666 +EndSection + diff --git a/packages/xorg-xserver/xserver-xorg/beagleboard/xorg.conf b/packages/xorg-xserver/xserver-xorg/beagleboard/xorg.conf deleted file mode 100644 index 1778960638..0000000000 --- a/packages/xorg-xserver/xserver-xorg/beagleboard/xorg.conf +++ /dev/null @@ -1,135 +0,0 @@ - -# xorg configuration - -Section "ServerLayout" - Identifier "Default Layout" - Screen 0 "Screen0" 0 0 - InputDevice "Mouse0" "CorePointer" - InputDevice "Keyboard0" "CoreKeyboard" -EndSection - -Section "Files" - -# RgbPath is the location of the RGB database. Note, this is the name of the -# file minus the extension (like ".txt" or ".db"). There is normally -# no need to change the default. -# Multiple FontPath entries are allowed (they are concatenated together) -# By default, Red Hat 6.0 and later now use a font server independent of -# the X server to render fonts. -# FontPath "unix/:7100" - FontPath "/usr/lib/X11/fonts/misc" -EndSection - -Section "Module" - Load "dbe" - Load "extmod" - Load "fbdevhw" -# Load "glx" - Load "record" - Load "freetype" - Load "type1" -# to enable Xv, link /dev/videox to video device, eg. ln -s video0 /dev/videox -# Load "z4l" -EndSection - -Section "InputDevice" - -# Specify which keyboard LEDs can be user-controlled (eg, with xset(1)) -# Option "Xleds" "1 2 3" -# To disable the XKEYBOARD extension, uncomment XkbDisable. -# Option "XkbDisable" -# To customise the XKB settings to suit your keyboard, modify the -# lines below (which are the defaults). For example, for a non-U.S. -# keyboard, you will probably want to use: -# Option "XkbModel" "pc102" -# If you have a US Microsoft Natural keyboard, you can use: -# Option "XkbModel" "microsoft" -# -# Then to change the language, change the Layout setting. -# For example, a german layout can be obtained with: -# Option "XkbLayout" "de" -# or: -# Option "XkbLayout" "de" -# Option "XkbVariant" "nodeadkeys" -# -# If you'd like to switch the positions of your capslock and -# control keys, use: -# Option "XkbOptions" "ctrl:swapcaps" -# Or if you just want both to be control, use: -# Option "XkbOptions" "ctrl:nocaps" -# - Identifier "Keyboard0" - Driver "keyboard" - Option "XkbModel" "pc105" - Option "XkbLayout" "us" -EndSection - -Section "InputDevice" - Identifier "Mouse0" - Driver "mouse" - Option "Protocol" "IMPS/2" - Option "Device" "/dev/input/mice" - Option "ZAxisMapping" "4 5" - Option "Emulate3Buttons" "yes" -EndSection - -Section "Monitor" - Identifier "Monitor0" - VendorName "Monitor Vendor" - ModelName "NEC FP2141SB" -# DisplaySize 400 300 -# Note: setting HorizSync/VertRefresh will override DDC probe -# HorizSync 30.0 - 140.0 -# VertRefresh 25.0 - 160.0 - Option "dpms" -EndSection - -Section "Monitor" - Identifier "Monitor1" - VendorName "Generic Vendor" - ModelName "Generic Monitor" - HorizSync 28-50 - VertRefresh 43-73 - Modeline "800x600-60" 40.0000 800 840 976 1056 600 601 605 628 - Modeline "800x600-72" 50.0000 800 856 976 1040 600 637 643 666 - Modeline "640x480-60" 25.1749 640 656 744 800 480 490 492 525 -HSync -VSync - Modeline "640x480-72" 31.5000 640 664 704 832 480 489 492 520 -HSync -VSync - Option "dpms" -EndSection - - -Section "Device" - Identifier "FBDev" - Driver "omapfb" - #Option "shadowfb" "off" -EndSection - -Section "Screen" - Identifier "Screen0" - Device "FBDev" - Monitor "Monitor0" - DefaultDepth 16 - - SubSection "Display" - Depth 8 - Modes "1024x768" "800x600" "640x480" - EndSubsection - - SubSection "Display" - Depth 16 - Modes "1024x768" "800x600" "640x480" - EndSubsection - - SubSection "Display" - Depth 24 - FbBpp 32 - Modes "1024x768" "800x600" "640x480" - EndSubsection - -EndSection - -Section "DRI" - Group 0 - Mode 0666 -EndSection - -- cgit v1.2.3 From 7b0e363e224a3a6a78c0959dbf4f36fd75da8c2a Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 12 Nov 2008 15:17:09 +0000 Subject: Revert "om-gta02.conf : prefer xserver-xorg" This reverts commit 9cb887f17d4e351a9a11ead4d38ec854783bf901. --- conf/machine/om-gta02.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/machine/om-gta02.conf b/conf/machine/om-gta02.conf index 8b496a3f00..4a8abfacff 100644 --- a/conf/machine/om-gta02.conf +++ b/conf/machine/om-gta02.conf @@ -9,7 +9,7 @@ MACHINE_CLASS = "neo1973" PACKAGE_EXTRA_ARCHS = "fic-gta02 ${MACHINE_CLASS}" PREFERRED_PROVIDER_virtual/kernel ?= "linux-openmoko" -PREFERRED_PROVIDER_virtual/xserver = "xserver-xorg" +PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-glamo" UBOOT_ENTRYPOINT = "30008000" MACHINE_FEATURES = "kernel26 apm alsa bluetooth gps usbgadget usbhost phone wifi vfat ext2" -- cgit v1.2.3 From 2a2dec81934490027e07db4fe14247ae7d36217d Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 12 Nov 2008 15:17:44 +0000 Subject: Revert "om-gta02.conf : use tslib not evdev" This reverts commit 98468becbb12b61949b9b7d9edf00ddb16251fb0. --- conf/machine/om-gta02.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/machine/om-gta02.conf b/conf/machine/om-gta02.conf index 4a8abfacff..6098f47f9f 100644 --- a/conf/machine/om-gta02.conf +++ b/conf/machine/om-gta02.conf @@ -18,7 +18,7 @@ MACHINE_DISPLAY_HEIGHT_PIXELS = "640" MACHINE_DISPLAY_ORIENTATION = "0" MACHINE_DISPLAY_PPI = "285" XSERVER = "xserver-xorg \ - xf86-input-tslib \ + xf86-input-evdev \ xf86-input-mouse \ xf86-video-fbdev \ xf86-input-keyboard" -- cgit v1.2.3 From a1ca202a5c8f8a7502639297b55ccffe30493022 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Wed, 12 Nov 2008 15:18:00 +0000 Subject: Revert "om-gta02.conf : preliminary switch to xorg from Xglamo" This reverts commit 99cc48bc99661638d23fc7eabcd05a06bf285bb3. --- conf/machine/om-gta02.conf | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/conf/machine/om-gta02.conf b/conf/machine/om-gta02.conf index 6098f47f9f..9876ebecbd 100644 --- a/conf/machine/om-gta02.conf +++ b/conf/machine/om-gta02.conf @@ -17,11 +17,7 @@ MACHINE_DISPLAY_WIDTH_PIXELS = "480" MACHINE_DISPLAY_HEIGHT_PIXELS = "640" MACHINE_DISPLAY_ORIENTATION = "0" MACHINE_DISPLAY_PPI = "285" -XSERVER = "xserver-xorg \ - xf86-input-evdev \ - xf86-input-mouse \ - xf86-video-fbdev \ - xf86-input-keyboard" +XSERVER = "xserver-kdrive-glamo xserver-kdrive-fbdev" # package machine specific modules MACHINE_EXTRA_RRECOMMENDS = "\ -- cgit v1.2.3 From ccc5ea7751dfbbb39d9c2747255a6737d1be1fce Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Wed, 12 Nov 2008 16:29:50 +0100 Subject: vala-terminal: new recipe; a lightweight vte-based terminal written in Vala. --- conf/distro/include/sane-srcrevs.inc | 1 + packages/vala-terminal/vala-terminal_git.bb | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 packages/vala-terminal/vala-terminal_git.bb diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc index e01711d245..e8c88626cc 100644 --- a/conf/distro/include/sane-srcrevs.inc +++ b/conf/distro/include/sane-srcrevs.inc @@ -198,6 +198,7 @@ SRCREV_pn-tmut ?= "60" SRCREV_pn-u-boot-openmoko ?= "2b78a9413619902aa4ff55a986b12ece3021fbe3" SRCREV_pn-usbpath ?= "3172" SRCREV_pn-usbpath-native ?= "3172" +SRCREV_pn-vala-terminal ?= "e5399ff1b88f5a16d6943e5dce6ab3679238cbc0" SRCREV_pn-webkit-gtk ?= "36540" SRCREV_pn-webkit-qt ?= "28656" SRCREV_pn-webkit-qtopia ?= "28656" diff --git a/packages/vala-terminal/vala-terminal_git.bb b/packages/vala-terminal/vala-terminal_git.bb new file mode 100644 index 0000000000..8a5d3acfad --- /dev/null +++ b/packages/vala-terminal/vala-terminal_git.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "A lightweight Terminal Emulator based on libvte, written in Vala." +SECTION = "x11/applications" +DEPENDS = "vala-native vte" +RDEPENDS = "ttf-liberation-mono" +PV = "1.0.0.0+gitr${SRCREV}" +PR = "r0" + +inherit autotools + +SRC_URI = "${FREESMARTPHONE_GIT}/vala-terminal.git;protocol=git;branch=master" +S = "${WORKDIR}/git" + + -- cgit v1.2.3 From 8476a8f3212064b5ebb979d9f6b96043af5db2e5 Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Wed, 12 Nov 2008 16:30:31 +0100 Subject: fso-image: ship vala-terminal --- packages/images/fso-image.bb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/images/fso-image.bb b/packages/images/fso-image.bb index 992160ec72..b97eb5c89b 100644 --- a/packages/images/fso-image.bb +++ b/packages/images/fso-image.bb @@ -44,8 +44,7 @@ AUDIO_INSTALL = "\ GTK_INSTALL = "\ openmoko-calculator2 \ - gpe-terminal \ - openmoko-terminal2 \ + vala-terminal \ gpe-scap \ tangogps \ " -- cgit v1.2.3 From dfed19fcaacebe01c1607936e40b5a2227e42a6c Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Wed, 12 Nov 2008 17:50:13 +0100 Subject: php: fix configure part so it will build again --- packages/php/php_5.2.6.bb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/php/php_5.2.6.bb b/packages/php/php_5.2.6.bb index 17073e1eaf..c2d31331c7 100644 --- a/packages/php/php_5.2.6.bb +++ b/packages/php/php_5.2.6.bb @@ -17,9 +17,9 @@ EXTRA_OECONF = " --without-iconv \ --enable-wddx \ --enable-embedded-mysqli \ --enable-magic-quotes \ - --with-zlib --with-zlib-dir = ${STAGING_LIBDIR}/.. \ - --with-libxml-dir = ${STAGING_BINDIR_CROSS} \ -# --with-mysql = "${STAGING_DIR_TARGET}${layout_exec_prefix}" \ + --with-zlib --with-zlib-dir=${STAGING_LIBDIR}/.. \ + --with-libxml-dir=${STAGING_BINDIR_CROSS} \ +# --with-mysql="${STAGING_DIR_TARGET}${layout_exec_prefix}" \ # --with-mysqli = "${STAGING_BINDIR_NATIVE}/mysql_config" \ " -- cgit v1.2.3 From 7bd14a1b875a6f7e3fecf13077b4ab18a1bf7ebf Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Wed, 12 Nov 2008 18:39:03 +0100 Subject: clucene-core 0.9.21: update to 0.9.21b --- packages/clucene/clucene-core_0.9.21.bb | 23 ----------------------- packages/clucene/clucene-core_0.9.21b.bb | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 23 deletions(-) delete mode 100644 packages/clucene/clucene-core_0.9.21.bb create mode 100644 packages/clucene/clucene-core_0.9.21b.bb diff --git a/packages/clucene/clucene-core_0.9.21.bb b/packages/clucene/clucene-core_0.9.21.bb deleted file mode 100644 index 0416f9110e..0000000000 --- a/packages/clucene/clucene-core_0.9.21.bb +++ /dev/null @@ -1,23 +0,0 @@ -DESCRIPTION = "CLucene is a C++ port of Lucene: the high-performance, full-featured text search engine written in Java." -SECTION = "libs" -LICENSE = "LGPL" - -DEPENDS = "libtool" - -SRC_URI = "${SOURCEFORGE_MIRROR}/clucene/clucene-core-${PV}.tar.bz2" - -inherit autotools - -EXTRA_OECONF = "--disable-multithreading dps_static_const_type=2" - -do_configure() { - gnu-configize - cp ${STAGING_DATADIR}/libtool/config.sub ${S}/config - oe_runconf -} - -do_stage() { - autotools_stage_all -} - -FILES_${PN}-dev += "${libdir}/CLucene" diff --git a/packages/clucene/clucene-core_0.9.21b.bb b/packages/clucene/clucene-core_0.9.21b.bb new file mode 100644 index 0000000000..d533f2b235 --- /dev/null +++ b/packages/clucene/clucene-core_0.9.21b.bb @@ -0,0 +1,24 @@ +DESCRIPTION = "CLucene is a C++ port of Lucene: the high-performance, \ +full-featured text search engine written in Java." +HOMEPAGE = "http://clucene.sf.net" +SECTION = "libs" +LICENSE = "LGPL" +DEPENDS = "libtool" + +SRC_URI = "${SOURCEFORGE_MIRROR}/clucene/clucene-core-${PV}.tar.bz2" + +inherit autotools + +EXTRA_OECONF = "--disable-multithreading dps_static_const_type=2" + +do_configure() { + gnu-configize + cp ${STAGING_DATADIR}/libtool/config.sub ${S}/config + oe_runconf +} + +do_stage() { + autotools_stage_all +} + +FILES_${PN}-dev += "${libdir}/CLucene" -- cgit v1.2.3 From c2d2755c1b1f8835a59057f0ef8e6a4c55f27a92 Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Wed, 12 Nov 2008 19:05:34 +0100 Subject: checksums.ini: Add checksums for vala-0.5.1 --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 1dd3f9d802..86fdac4fdd 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -15718,6 +15718,10 @@ sha256=c03e8e2a63fad2049406aa6722683568700901f782ff4ba562905c11b42c3647 md5=9aea32dc66e42895d7cbebe79b6dc6d5 sha256=0a08ba289566e4d69b937c6bc29e43ba99b445811583b08bdef8d4b52e8a7d0c +[http://download.gnome.org/sources/vala/0.5/vala-0.5.1.tar.bz2] +md5=0051ae1f2ef967ce21e77889719daad1 +sha256=b24593c78fa322349ae9967a454464e37a25ab58f44481334589a609e9bcca7b + [http://www.valgrind.org/downloads/valgrind-3.2.1.tar.bz2] md5=9407d33961186814cef0e6ecedfd6318 sha256=7f9a15d7be16ca03a0912191e8d55a486bf69690e11bb76ccece3eaff3730a33 -- cgit v1.2.3 From 78eac47af4d9cd6b3ccafa3138ae39831b0f0c89 Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Thu, 13 Nov 2008 09:46:59 +0100 Subject: phoneme: use proper way to specify user/pass (from BugLabs) --- packages/phoneme/phoneme-advanced.inc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/phoneme/phoneme-advanced.inc b/packages/phoneme/phoneme-advanced.inc index b5be402ac7..a74bc04504 100644 --- a/packages/phoneme/phoneme-advanced.inc +++ b/packages/phoneme/phoneme-advanced.inc @@ -10,9 +10,9 @@ inherit java update-alternatives # The PhoneME Advanced build system is documented here: http://java.sun.com/javame/reference/docs/cdc_build_system.pdf # NOTE: We need to provide an empty password. pswd='' seems not to be the correct way. SRC_URI = "\ - svn://phoneme.dev.java.net/svn/phoneme/builds/phoneme_advanced-mr2-dev-${BUILDREV};module=cdc;proto=https;localdir=cdc;user=guest;pswd='' \ - svn://phoneme.dev.java.net/svn/phoneme/builds/phoneme_advanced-mr2-dev-${BUILDREV};module=tools;proto=https;localdir=tools;user=guest;pswd='' \ - svn://phoneme.dev.java.net/svn/phoneme;module=legal;localdir=legal;proto=https;user=guest;pswd='' \ + svn://guest:''@phoneme.dev.java.net/svn/phoneme/builds/phoneme_advanced-mr2-dev-${BUILDREV};module=cdc;proto=https;localdir=cdc \ + svn://guest:''@phoneme.dev.java.net/svn/phoneme/builds/phoneme_advanced-mr2-dev-${BUILDREV};module=tools;proto=https;localdir=tools \ + svn://guest:''@phoneme.dev.java.net/svn/phoneme;module=legal;localdir=legal;proto=https \ " PROVIDES = "virtual/java-cdc java-cdc-runtime" -- cgit v1.2.3 From 9ddb958be9de9ce94408eed0d320e30647d2e902 Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Thu, 13 Nov 2008 10:57:35 +0100 Subject: cacao-native: create few directories before build to get classes generated (from BugLabs) --- packages/cacao/cacao-native_0.99.3.bb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/cacao/cacao-native_0.99.3.bb b/packages/cacao/cacao-native_0.99.3.bb index 0e4d9e5935..878ef4dac2 100644 --- a/packages/cacao/cacao-native_0.99.3.bb +++ b/packages/cacao/cacao-native_0.99.3.bb @@ -4,4 +4,10 @@ PR = "r0" SRC_URI = "http://www.complang.tuwien.ac.at/cacaojvm/download/cacao-${PV}/cacao-${PV}.tar.bz2" +do_compile_prepend() { + + install -d ${S}/src/classes/classes/java + install -d ${S}/src/classes/classes/gnu/java + install -d ${S}/src/classes/classes/sun +} -- cgit v1.2.3 From c62aee2d8b4ce7ab5bf9b838cc25c25f298e3388 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 13 Nov 2008 11:05:30 +0100 Subject: checksums.ini: add xinit 1.1.0 --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 86fdac4fdd..0b6aed5d9a 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -17646,6 +17646,10 @@ sha256=06c1049f6b63d1c368a1e03e2392097919b22ff24899e190de3577bffe6fe524 md5=224c36057e4416205d4e421af01a2f15 sha256=b4218fd4ca5e431bf69cba848c21e91235fda30504634b9f6b6cd011dcbd8999 +[http://xorg.freedesktop.org/releases/individual/app/xinit-1.1.0.tar.bz2] +md5=9144097186c3d2454beffe8ac3b53c6e +sha256=c79ec1a4d60404715a626f2832f1b62f43b9d52a1e4642b40af743ee41362590 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xinit-X11R7.0-1.0.1.tar.bz2] md5=6d2df59fa328cbc99c0de98bc2e14597 sha256=e55c61ede6760ce0d8eaac6dc386850c7873311ab038c69338e35559ec0bbd02 -- cgit v1.2.3 From 9143a0e2e1cb7335daaa8ac1f034e0a2e1804891 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 13 Nov 2008 12:31:12 +0100 Subject: gnome-games: make ${PN} RDEPENDS on all subgames, this fixes the upgrade path --- packages/gnome/gnome-games_2.24.0.bb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/gnome/gnome-games_2.24.0.bb b/packages/gnome/gnome-games_2.24.0.bb index 10e41effb6..a16e88b6e0 100644 --- a/packages/gnome/gnome-games_2.24.0.bb +++ b/packages/gnome/gnome-games_2.24.0.bb @@ -3,7 +3,7 @@ DEPENDS = " guile libggz ggz-client-libs python-pygtk gtk+ libgnome libgnomeui l inherit gnome distutils-base gconf -PR = "r2" +PR = "r3" SRC_URI += "file://ggz-unbreak-m4.patch;patch=1 \ " @@ -38,6 +38,9 @@ CFLAGS_append = " -lguile -lgmp -lcrypt -lm -lltdl" FILES_${PN}-doc += " ${datadir}/gnome/help" FILES_${PN}-dbg += " ${bindir}/.debug ${libdir}/gnome-games/.debug" +ALLOW_EMPTY_${PN} = "1" +RDEPENDS_${PN} += "gnome-games-aisleriot gnome-games-blackjack gnome-games-cards gnome-games-glchess gnome-games-glines gnome-games-gnect gnome-games-gnibbles gnome-games-gnobots2 gnome-games-gnometris gnome-games-gnomine gnome-games-gnotravex gnome-games-gnotski gnome-games-gtali gnome-games-iagno gnome-games-mahjongg gnome-games-same-gnome gnome-games-sudoku " + PACKAGES =+ "gnome-games-common" DESCRIPTION_gnome-games-common = "GNOME games common resources" FILES_gnome-games-common = "${datadir}/ggz \ -- cgit v1.2.3 From ee46b3b3fbbf2039a84d22a7bc8654c8477cc708 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 13 Nov 2008 15:03:34 +0100 Subject: libatomics-ops: turn of thumb --- packages/pulseaudio/libatomics-ops_1.2.bb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/pulseaudio/libatomics-ops_1.2.bb b/packages/pulseaudio/libatomics-ops_1.2.bb index 0563eb6382..847b4cc660 100644 --- a/packages/pulseaudio/libatomics-ops_1.2.bb +++ b/packages/pulseaudio/libatomics-ops_1.2.bb @@ -8,6 +8,8 @@ SRC_URI = "http://www.hpl.hp.com/research/linux/atomic_ops/download/libatomic_op S = "${WORKDIR}/libatomic_ops-${PV}" +ARM_INSTRUCTION_SET = "arm" + inherit autotools pkgconfig do_stage() { -- cgit v1.2.3 From 3afce2b55b72176984f9ab383d62a67f5bc5ac71 Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Thu, 13 Nov 2008 15:47:10 +0100 Subject: classpath-initial 0.93: Added miscompilation patch. --- packages/classpath/classpath-initial_0.93.bb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/classpath/classpath-initial_0.93.bb b/packages/classpath/classpath-initial_0.93.bb index 5a471b3808..09bcde1b87 100644 --- a/packages/classpath/classpath-initial_0.93.bb +++ b/packages/classpath/classpath-initial_0.93.bb @@ -5,11 +5,14 @@ require classpath-native.inc DESCRIPTION="Java1.4-compatible GNU Classpath variant that is used as bootclasspath for jikes-native." -PR = "r4" +PR = "r5" DEPENDS = "zip-native fastjar-native jikes-native gettext-native" -SRC_URI += "file://autotools.patch;patch=1" +SRC_URI += "\ + file://autotools.patch;patch=1 \ + file://miscompilation.patch;patch=1 \ + " EXTRA_OECONF = "\ --with-jikes=jikes \ -- cgit v1.2.3 From 524610263d07eb2e76988e5484a6e1024c3889b1 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 13 Nov 2008 16:23:14 +0100 Subject: linux-omap git: update DSS2 patches --- ...cumentation-for-OMAP2-3-display-subsystem.patch | 2 +- ...-New-display-subsystem-driver-for-OMAP2-3.patch | 35 +++++---- ...MAPFB-fb-driver-for-new-display-subsystem.patch | 12 +-- .../0006-DSS-Add-generic-DVI-panel.patch | 2 +- .../0007-DSS-support-for-Beagle-Board.patch | 2 +- ...DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch | 85 ++++++++++++---------- .../0009-DSS-support-for-OMAP3-SDP-board.patch | 12 +-- packages/linux/linux-omap/beagleboard/defconfig | 2 +- packages/linux/linux-omap_git.bb | 2 +- 9 files changed, 84 insertions(+), 70 deletions(-) diff --git a/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch b/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch index 4946bda5e7..2ee2e2acce 100644 --- a/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch +++ b/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch @@ -1,4 +1,4 @@ -From 58be9dfad433036ff46ed883c3bc77fca88079f7 Mon Sep 17 00:00:00 2001 +From b6d4f19ae3192db2d7733fb70c212494bb1e0abd Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Tue, 4 Nov 2008 15:08:07 +0200 Subject: [PATCH] DSS: Documentation for OMAP2/3 display subsystem diff --git a/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch b/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch index 509f34697a..461890343a 100644 --- a/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch +++ b/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch @@ -1,6 +1,6 @@ -From 5a4331bf757fdec0ceb72bf40f7e46ce5c404e2d Mon Sep 17 00:00:00 2001 +From 04b4d27af34373bbb65df19c2c084f117fe54213 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen -Date: Tue, 11 Nov 2008 13:52:25 +0200 +Date: Thu, 13 Nov 2008 15:38:15 +0200 Subject: [PATCH] DSS: New display subsystem driver for OMAP2/3 Signed-off-by: Tomi Valkeinen @@ -12,14 +12,14 @@ Signed-off-by: Tomi Valkeinen arch/arm/plat-omap/dss/dispc.c | 1720 ++++++++++++++++ arch/arm/plat-omap/dss/display.c | 775 ++++++++ arch/arm/plat-omap/dss/dpi.c | 323 +++ - arch/arm/plat-omap/dss/dsi.c | 3022 +++++++++++++++++++++++++++++ - arch/arm/plat-omap/dss/dss.c | 547 ++++++ + arch/arm/plat-omap/dss/dsi.c | 3020 +++++++++++++++++++++++++++++ + arch/arm/plat-omap/dss/dss.c | 554 ++++++ arch/arm/plat-omap/dss/dss.h | 254 +++ arch/arm/plat-omap/dss/rfbi.c | 1234 ++++++++++++ arch/arm/plat-omap/dss/sdi.c | 157 ++ arch/arm/plat-omap/dss/venc.c | 515 +++++ arch/arm/plat-omap/include/mach/display.h | 458 +++++ - 14 files changed, 9081 insertions(+), 0 deletions(-) + 14 files changed, 9086 insertions(+), 0 deletions(-) create mode 100644 arch/arm/plat-omap/dss/Kconfig create mode 100644 arch/arm/plat-omap/dss/Makefile create mode 100644 arch/arm/plat-omap/dss/dispc.c @@ -2978,10 +2978,10 @@ index 0000000..2261288 + diff --git a/arch/arm/plat-omap/dss/dsi.c b/arch/arm/plat-omap/dss/dsi.c new file mode 100644 -index 0000000..980be39 +index 0000000..9f31ac3 --- /dev/null +++ b/arch/arm/plat-omap/dss/dsi.c -@@ -0,0 +1,3022 @@ +@@ -0,0 +1,3020 @@ +/* + * linux/arch/arm/plat-omap/dss/dsi.c + * @@ -3722,7 +3722,8 @@ index 0000000..980be39 + continue; + + if (min_fck_per_pck && -+ cur.dispc_fck < req_pck * min_fck_per_pck) ++ cur.dispc_fck < ++ req_pck * min_fck_per_pck) + continue; + + match = 1; @@ -3735,7 +3736,8 @@ index 0000000..980be39 + cur.lck = cur.dispc_fck / cur.lck_div; + cur.pck = cur.lck / cur.pck_div; + -+ if (abs(cur.pck - req_pck) < abs(best.pck - req_pck)) { ++ if (abs(cur.pck - req_pck) < ++ abs(best.pck - req_pck)) { + best = cur; + + if (cur.pck == req_pck) @@ -5681,10 +5683,6 @@ index 0000000..980be39 + if (display->ctrl && display->ctrl->disable) + display->ctrl->disable(display); + -+ /* XXX sleep a bit to make sure all DSI buffers are sent. -+ * We should check it from somewhere, fifo fullness I guess */ -+ msleep(200); -+ + dsi_complexio_uninit(); + dsi_pll_uninit(); + @@ -6006,10 +6004,10 @@ index 0000000..980be39 + diff --git a/arch/arm/plat-omap/dss/dss.c b/arch/arm/plat-omap/dss/dss.c new file mode 100644 -index 0000000..da0364b +index 0000000..8450ddd --- /dev/null +++ b/arch/arm/plat-omap/dss/dss.c -@@ -0,0 +1,547 @@ +@@ -0,0 +1,554 @@ +/* + * linux/arch/arm/plat-omap/dss/dss.c + * @@ -6344,6 +6342,13 @@ index 0000000..da0364b + + enable_dss_clocks(); + ++ /* We need to wait here a bit, otherwise we sometimes start to get ++ * synclost errors. I believe we could wait for one framedone or ++ * perhaps vsync interrupt, but, because dispc is not initialized yet, ++ * we don't have access to the irq register. ++ */ ++ msleep(40); ++ + _omap_dss_reset(); + + /* autoidle */ diff --git a/packages/linux/linux-omap/0005-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch b/packages/linux/linux-omap/0005-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch index 57a12c1a79..d64fe442f9 100644 --- a/packages/linux/linux-omap/0005-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch +++ b/packages/linux/linux-omap/0005-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch @@ -1,4 +1,4 @@ -From 538201a6cc52913c8165644d8c5ee1dd2c2b2a95 Mon Sep 17 00:00:00 2001 +From e2aaa3251054eecf92b8936e704a3581de69bdc7 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Tue, 4 Nov 2008 15:12:21 +0200 Subject: [PATCH] DSS: OMAPFB: fb driver for new display subsystem @@ -92,11 +92,11 @@ index 90d63c5..1e34304 100644 struct omapfb_update_window { diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index 0f13448..4b45731 100644 +index 3f3ce13..689a3b1 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig -@@ -2084,6 +2084,7 @@ config FB_METRONOME - and could also have been called by some vendors as PVI-nnnn. +@@ -2116,6 +2116,7 @@ config FB_PRE_INIT_FB + the bootloader. source "drivers/video/omap/Kconfig" +source "drivers/video/omap2/Kconfig" @@ -104,7 +104,7 @@ index 0f13448..4b45731 100644 source "drivers/video/backlight/Kconfig" source "drivers/video/display/Kconfig" diff --git a/drivers/video/Makefile b/drivers/video/Makefile -index 248bddc..4d69355 100644 +index e39e33e..3d9d50e 100644 --- a/drivers/video/Makefile +++ b/drivers/video/Makefile @@ -120,6 +120,7 @@ obj-$(CONFIG_FB_SM501) += sm501fb.o @@ -114,7 +114,7 @@ index 248bddc..4d69355 100644 +obj-$(CONFIG_OMAP2_DSS) += omap2/ obj-$(CONFIG_XEN_FBDEV_FRONTEND) += xen-fbfront.o obj-$(CONFIG_FB_CARMINE) += carminefb.o - + obj-$(CONFIG_FB_MB862XX) += mb862xx/ diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig index c355b59..541fab3 100644 --- a/drivers/video/omap/Kconfig diff --git a/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch b/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch index 790cada121..4925f2437b 100644 --- a/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch +++ b/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch @@ -1,4 +1,4 @@ -From 36e83ecf4db86b61cec3bc9817d658d3ef218967 Mon Sep 17 00:00:00 2001 +From ce4676f5a466d991bccfeac2c32316053e86b9a1 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Tue, 11 Nov 2008 13:52:56 +0200 Subject: [PATCH] DSS: Add generic DVI panel diff --git a/packages/linux/linux-omap/0007-DSS-support-for-Beagle-Board.patch b/packages/linux/linux-omap/0007-DSS-support-for-Beagle-Board.patch index 145695cd8a..39670557b2 100644 --- a/packages/linux/linux-omap/0007-DSS-support-for-Beagle-Board.patch +++ b/packages/linux/linux-omap/0007-DSS-support-for-Beagle-Board.patch @@ -1,4 +1,4 @@ -From c5e43b2e4bc191feaab30e364c462a47aa3cc0a3 Mon Sep 17 00:00:00 2001 +From eaadaa1e6192ef58079fb6149136e4f267f771b0 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Mon, 29 Sep 2008 17:03:36 +0300 Subject: [PATCH] DSS: support for Beagle Board diff --git a/packages/linux/linux-omap/0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch b/packages/linux/linux-omap/0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch index f88abaacd4..a3df3ef562 100644 --- a/packages/linux/linux-omap/0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch +++ b/packages/linux/linux-omap/0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch @@ -1,14 +1,14 @@ -From 54f114db20a45e99389bec9c3c630c76f3e6c043 Mon Sep 17 00:00:00 2001 +From adf1ac7680926ca94f1b36ae8c643f74c8a47253 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Fri, 7 Nov 2008 16:54:01 +0200 Subject: [PATCH] DSS: BEAGLE: Enable DSS in beagle defconfig --- - arch/arm/configs/omap3_beagle_defconfig | 143 ++++++++++++++++++++++--------- - 1 files changed, 103 insertions(+), 40 deletions(-) + arch/arm/configs/omap3_beagle_defconfig | 149 +++++++++++++++++++++---------- + 1 files changed, 102 insertions(+), 47 deletions(-) diff --git a/arch/arm/configs/omap3_beagle_defconfig b/arch/arm/configs/omap3_beagle_defconfig -index df67296..5036233 100644 +index df67296..aa3ee12 100644 --- a/arch/arm/configs/omap3_beagle_defconfig +++ b/arch/arm/configs/omap3_beagle_defconfig @@ -1,7 +1,7 @@ @@ -16,8 +16,8 @@ index df67296..5036233 100644 # Automatically generated make config: don't edit -# Linux kernel version: 2.6.27-omap1 -# Fri Oct 17 14:05:39 2008 -+# Linux kernel version: 2.6.28-rc3-omap1 -+# Tue Nov 11 14:30:05 2008 ++# Linux kernel version: 2.6.28-rc4-omap1 ++# Thu Nov 13 15:51:03 2008 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -71,7 +71,7 @@ index df67296..5036233 100644 # # TI OMAP Implementations -@@ -200,17 +194,27 @@ CONFIG_OMAP_DM_TIMER=y +@@ -200,6 +194,14 @@ CONFIG_OMAP_DM_TIMER=y # CONFIG_OMAP_LL_DEBUG_UART1 is not set # CONFIG_OMAP_LL_DEBUG_UART2 is not set CONFIG_OMAP_LL_DEBUG_UART3=y @@ -86,12 +86,7 @@ index df67296..5036233 100644 CONFIG_ARCH_OMAP34XX=y CONFIG_ARCH_OMAP3430=y - # - # OMAP Board Type - # -+# CONFIG_MACH_NOKIA_DFL61 is not set - # CONFIG_MACH_OMAP_LDP is not set - # CONFIG_MACH_OMAP_3430SDP is not set +@@ -211,6 +213,7 @@ CONFIG_ARCH_OMAP3430=y # CONFIG_MACH_OMAP3EVM is not set CONFIG_MACH_OMAP3_BEAGLE=y # CONFIG_MACH_OVERO is not set @@ -99,7 +94,7 @@ index df67296..5036233 100644 CONFIG_OMAP_TICK_GPTIMER=12 # -@@ -263,26 +267,30 @@ CONFIG_TICK_ONESHOT=y +@@ -263,26 +266,30 @@ CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y @@ -135,7 +130,7 @@ index df67296..5036233 100644 # CONFIG_LEDS is not set CONFIG_ALIGNMENT_TRAP=y -@@ -296,9 +304,10 @@ CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.0.1:/home/user/buildroot ip=192.16 +@@ -296,9 +303,10 @@ CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.0.1:/home/user/buildroot ip=192.16 # CONFIG_KEXEC is not set # @@ -147,7 +142,7 @@ index df67296..5036233 100644 # # Floating point emulation -@@ -318,6 +327,8 @@ CONFIG_VFPv3=y +@@ -318,6 +326,8 @@ CONFIG_VFPv3=y # Userspace binary formats # CONFIG_BINFMT_ELF=y @@ -156,7 +151,7 @@ index df67296..5036233 100644 # CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_MISC=y -@@ -379,6 +390,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" +@@ -379,6 +389,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TIPC is not set # CONFIG_ATM is not set # CONFIG_BRIDGE is not set @@ -164,7 +159,7 @@ index df67296..5036233 100644 # CONFIG_VLAN_8021Q is not set # CONFIG_DECNET is not set # CONFIG_LLC2 is not set -@@ -399,11 +411,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic" +@@ -399,11 +410,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_IRDA is not set # CONFIG_BT is not set # CONFIG_AF_RXRPC is not set @@ -179,7 +174,7 @@ index df67296..5036233 100644 # CONFIG_WIRELESS_EXT is not set # CONFIG_MAC80211 is not set # CONFIG_IEEE80211 is not set -@@ -490,6 +501,7 @@ CONFIG_MTD_NAND=y +@@ -490,6 +500,7 @@ CONFIG_MTD_NAND=y # CONFIG_MTD_NAND_VERIFY_WRITE is not set # CONFIG_MTD_NAND_ECC_SMC is not set # CONFIG_MTD_NAND_MUSEUM_IDS is not set @@ -187,7 +182,7 @@ index df67296..5036233 100644 CONFIG_MTD_NAND_OMAP2=y CONFIG_MTD_NAND_IDS=y # CONFIG_MTD_NAND_DISKONCHIP is not set -@@ -743,6 +755,8 @@ CONFIG_GPIO_TWL4030=y +@@ -743,6 +754,8 @@ CONFIG_GPIO_TWL4030=y # CONFIG_W1 is not set # CONFIG_POWER_SUPPLY is not set # CONFIG_HWMON is not set @@ -196,7 +191,7 @@ index df67296..5036233 100644 # CONFIG_WATCHDOG is not set # -@@ -760,10 +774,14 @@ CONFIG_SSB_POSSIBLE=y +@@ -760,10 +773,14 @@ CONFIG_SSB_POSSIBLE=y # CONFIG_HTC_EGPIO is not set # CONFIG_HTC_PASIC3 is not set CONFIG_TWL4030_CORE=y @@ -211,7 +206,7 @@ index df67296..5036233 100644 # # Multimedia devices -@@ -790,6 +808,7 @@ CONFIG_DAB=y +@@ -790,6 +807,7 @@ CONFIG_DAB=y CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set # CONFIG_FB_DDC is not set @@ -219,7 +214,7 @@ index df67296..5036233 100644 CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y -@@ -810,10 +829,22 @@ CONFIG_FB_CFB_IMAGEBLIT=y +@@ -810,10 +828,22 @@ CONFIG_FB_CFB_IMAGEBLIT=y # # CONFIG_FB_S1D13XXX is not set # CONFIG_FB_VIRTUAL is not set @@ -228,6 +223,7 @@ index df67296..5036233 100644 -# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set -CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=4 +# CONFIG_FB_METRONOME is not set ++# CONFIG_FB_MB862XX is not set +CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=14 +CONFIG_FB_OMAP2=y +# CONFIG_FB_OMAP2_DEBUG is not set @@ -242,11 +238,10 @@ index df67296..5036233 100644 +CONFIG_PANEL_DVI_HIGHRES=y +# CONFIG_PANEL_DVI_VERYHIGHRES is not set +# CONFIG_PANEL_SDP3430 is not set -+# CONFIG_PANEL_NEVADA is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # -@@ -862,6 +893,8 @@ CONFIG_USB_OTG=y +@@ -862,6 +892,8 @@ CONFIG_USB_OTG=y # CONFIG_USB_OTG_WHITELIST is not set # CONFIG_USB_OTG_BLACKLIST_HUB is not set CONFIG_USB_MON=y @@ -255,7 +250,7 @@ index df67296..5036233 100644 # # USB Host Controller Drivers -@@ -873,6 +906,7 @@ CONFIG_USB_MON=y +@@ -873,6 +905,7 @@ CONFIG_USB_MON=y # CONFIG_USB_OHCI_HCD is not set # CONFIG_USB_SL811_HCD is not set # CONFIG_USB_R8A66597_HCD is not set @@ -263,7 +258,7 @@ index df67296..5036233 100644 CONFIG_USB_MUSB_HDRC=y CONFIG_USB_MUSB_SOC=y -@@ -895,6 +929,7 @@ CONFIG_USB_INVENTRA_DMA=y +@@ -895,6 +928,7 @@ CONFIG_USB_INVENTRA_DMA=y # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set # CONFIG_USB_WDM is not set @@ -271,7 +266,7 @@ index df67296..5036233 100644 # # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' -@@ -923,6 +958,7 @@ CONFIG_USB_INVENTRA_DMA=y +@@ -923,6 +957,7 @@ CONFIG_USB_INVENTRA_DMA=y # CONFIG_USB_EMI62 is not set # CONFIG_USB_EMI26 is not set # CONFIG_USB_ADUTUX is not set @@ -279,7 +274,7 @@ index df67296..5036233 100644 # CONFIG_USB_RIO500 is not set # CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LCD is not set -@@ -939,22 +975,25 @@ CONFIG_USB_INVENTRA_DMA=y +@@ -939,22 +974,25 @@ CONFIG_USB_INVENTRA_DMA=y # CONFIG_USB_IOWARRIOR is not set # CONFIG_USB_TEST is not set # CONFIG_USB_ISIGHTFW is not set @@ -312,7 +307,7 @@ index df67296..5036233 100644 # CONFIG_USB_GADGET_DUMMY_HCD is not set CONFIG_USB_GADGET_DUALSPEED=y # CONFIG_USB_ZERO is not set -@@ -971,7 +1010,7 @@ CONFIG_MMC=y +@@ -971,7 +1009,7 @@ CONFIG_MMC=y # CONFIG_MMC_UNSAFE_RESUME is not set # @@ -321,7 +316,7 @@ index df67296..5036233 100644 # CONFIG_MMC_BLOCK=y CONFIG_MMC_BLOCK_BOUNCE=y -@@ -979,10 +1018,12 @@ CONFIG_MMC_BLOCK_BOUNCE=y +@@ -979,10 +1017,12 @@ CONFIG_MMC_BLOCK_BOUNCE=y # CONFIG_MMC_TEST is not set # @@ -335,7 +330,7 @@ index df67296..5036233 100644 # CONFIG_NEW_LEDS is not set CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y -@@ -1024,12 +1065,15 @@ CONFIG_RTC_DRV_TWL4030=y +@@ -1024,26 +1064,22 @@ CONFIG_RTC_DRV_TWL4030=y # Platform RTC drivers # # CONFIG_RTC_DRV_CMOS is not set @@ -351,7 +346,21 @@ index df67296..5036233 100644 # CONFIG_RTC_DRV_V3020 is not set # -@@ -1059,11 +1103,12 @@ CONFIG_EXT2_FS=y + # on-CPU RTC drivers + # + # CONFIG_DMADEVICES is not set +- +-# +-# Voltage and Current regulators +-# + # CONFIG_REGULATOR is not set +-# CONFIG_REGULATOR_FIXED_VOLTAGE is not set +-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +-# CONFIG_REGULATOR_BQ24022 is not set + # CONFIG_UIO is not set + + # +@@ -1059,11 +1095,12 @@ CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y # CONFIG_EXT3_FS_XATTR is not set @@ -365,7 +374,7 @@ index df67296..5036233 100644 # CONFIG_XFS_FS is not set # CONFIG_OCFS2_FS is not set CONFIG_DNOTIFY=y -@@ -1100,6 +1145,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +@@ -1100,6 +1137,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_PROC_FS=y CONFIG_PROC_SYSCTL=y @@ -373,7 +382,7 @@ index df67296..5036233 100644 CONFIG_SYSFS=y CONFIG_TMPFS=y # CONFIG_TMPFS_POSIX_ACL is not set -@@ -1148,6 +1194,7 @@ CONFIG_LOCKD_V4=y +@@ -1148,6 +1186,7 @@ CONFIG_LOCKD_V4=y CONFIG_NFS_COMMON=y CONFIG_SUNRPC=y CONFIG_SUNRPC_GSS=y @@ -381,7 +390,7 @@ index df67296..5036233 100644 CONFIG_RPCSEC_GSS_KRB5=y # CONFIG_RPCSEC_GSS_SPKM3 is not set # CONFIG_SMB_FS is not set -@@ -1260,15 +1307,23 @@ CONFIG_DEBUG_INFO=y +@@ -1260,15 +1299,23 @@ CONFIG_DEBUG_INFO=y CONFIG_FRAME_POINTER=y # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set @@ -408,7 +417,7 @@ index df67296..5036233 100644 # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set -@@ -1282,14 +1337,19 @@ CONFIG_HAVE_ARCH_KGDB=y +@@ -1282,14 +1329,19 @@ CONFIG_HAVE_ARCH_KGDB=y # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set @@ -428,7 +437,7 @@ index df67296..5036233 100644 CONFIG_CRYPTO_MANAGER=y # CONFIG_CRYPTO_GF128MUL is not set # CONFIG_CRYPTO_NULL is not set -@@ -1362,14 +1422,17 @@ CONFIG_CRYPTO_DES=y +@@ -1362,14 +1414,17 @@ CONFIG_CRYPTO_DES=y # # CONFIG_CRYPTO_DEFLATE is not set # CONFIG_CRYPTO_LZO is not set diff --git a/packages/linux/linux-omap/0009-DSS-support-for-OMAP3-SDP-board.patch b/packages/linux/linux-omap/0009-DSS-support-for-OMAP3-SDP-board.patch index 4c22a89929..981a2021b3 100644 --- a/packages/linux/linux-omap/0009-DSS-support-for-OMAP3-SDP-board.patch +++ b/packages/linux/linux-omap/0009-DSS-support-for-OMAP3-SDP-board.patch @@ -1,4 +1,4 @@ -From b51518d69d562d275afc830373710417e507c613 Mon Sep 17 00:00:00 2001 +From 0938c1e91fe69da535e06d092bdec6fcc95ad650 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Mon, 20 Oct 2008 13:13:15 +0300 Subject: [PATCH] DSS: support for OMAP3 SDP board @@ -13,7 +13,7 @@ Signed-off-by: Tomi Valkeinen create mode 100644 drivers/video/omap2/panel-sdp3430.c diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c -index 7ee85e9..f226a55 100644 +index 7ee85e9..3a644b1 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c @@ -40,6 +40,8 @@ @@ -111,7 +111,7 @@ index 7ee85e9..f226a55 100644 + return -EINVAL; + } + -+ if (system_rev > OMAP3430_REV_ES1_0) { ++ if (omap_rev() > OMAP3430_REV_ES1_0) { + t2_out(PM_RECEIVER, ENABLE_VPLL2_DEDICATED, + TWL4030_VPLL2_DEDICATED); + t2_out(PM_RECEIVER, ENABLE_VPLL2_DEV_GRP, @@ -143,7 +143,7 @@ index 7ee85e9..f226a55 100644 + gpio_direction_output(enable_gpio, 0); + gpio_direction_output(backlight_gpio, 0); + -+ if (system_rev > OMAP3430_REV_ES1_0) { ++ if (omap_rev() > OMAP3430_REV_ES1_0) { + t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEDICATED); + t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEV_GRP); + mdelay(4); @@ -166,7 +166,7 @@ index 7ee85e9..f226a55 100644 + return -EINVAL; + } + -+ if (system_rev > OMAP3430_REV_ES1_0) { ++ if (omap_rev() > OMAP3430_REV_ES1_0) { + t2_out(PM_RECEIVER, ENABLE_VPLL2_DEDICATED, + TWL4030_VPLL2_DEDICATED); + t2_out(PM_RECEIVER, ENABLE_VPLL2_DEV_GRP, @@ -182,7 +182,7 @@ index 7ee85e9..f226a55 100644 +{ + dvi_enabled = 0; + -+ if (system_rev > OMAP3430_REV_ES1_0) { ++ if (omap_rev() > OMAP3430_REV_ES1_0) { + t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEDICATED); + t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEV_GRP); + mdelay(4); diff --git a/packages/linux/linux-omap/beagleboard/defconfig b/packages/linux/linux-omap/beagleboard/defconfig index 22c29fb23c..ce06b21672 100644 --- a/packages/linux/linux-omap/beagleboard/defconfig +++ b/packages/linux/linux-omap/beagleboard/defconfig @@ -206,7 +206,7 @@ CONFIG_OMAP2_DSS_VENC=y CONFIG_OMAP2_DSS_DSI=y CONFIG_OMAP2_DSS_USE_DSI_PLL=y # CONFIG_OMAP2_DSS_FAKE_VSYNC is not set -CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=4 +CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=2 CONFIG_ARCH_OMAP34XX=y CONFIG_ARCH_OMAP3430=y diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb index 109dcdffd8..dd5016336a 100644 --- a/packages/linux/linux-omap_git.bb +++ b/packages/linux/linux-omap_git.bb @@ -10,7 +10,7 @@ SRCREV = "444fcab6e8f8bad4ffc50feb91516c246d91e901" PV = "2.6.27+2.6.28-rc3+${PR}+gitr${SRCREV}" #PV = "2.6.27+${PR}+gitr${SRCREV}" -PR = "r2" +PR = "r3" SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \ file://defconfig" -- cgit v1.2.3 From 67aa127f4b4cb2e4083a02adfddd7d82534751a3 Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Thu, 13 Nov 2008 18:07:47 +0100 Subject: checksums.ini: add 1212 entries from test fetch build This is result of simple shell script and few hours of fetching: for recipe in $OEROOT/packages/*/*.bb do bitbake -b $recipe -cfetch done --- conf/checksums.ini | 4852 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 4848 insertions(+), 4 deletions(-) diff --git a/conf/checksums.ini b/conf/checksums.ini index 0b6aed5d9a..6d025702e2 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -2,6 +2,14 @@ md5=c6a2705f6210d8ede50a947b375f1c0b sha256=b3dbf01563dd60d63cff543ea8cd0c885381e78ecbbab8ff176e46df3f198a88 +[http://www.directfb.org/downloads/Extras/++DFB-1.0.0.tar.gz] +md5=bfc2c45be253a5f25576587f61faff1b +sha256=bc5b7766318ef6676defdf0103d1b53b48a3fee6b819fbe2076461caa9f94ec9 + +[http://www.nopcode.org/0xFFFF/get/0xFFFF-0.1.tar.gz] +md5=666fce75c418d7b72e2c9dc225fce3be +sha256=2419708f8e0d7cd6875f4555da9c8a2bf9503374eb7c0bea08fed0841baa4655 + [http://www.nopcode.org/0xFFFF/get/0xFFFF-0.2.tar.gz] md5=31cd82986ccfabdf01a6a99aa00f975b sha256=6d061f8431b76ba1dd09401880c7029e490be8c04cac14ba89db7ea7d0ab77bf @@ -34,6 +42,10 @@ sha256=f09d4ae3365b876da9f40f49178ab7241bb7e4c1d67db9e2f310f9c76d5834a6 md5=333b0e9328194f28af83c26d3717e4ac sha256=8930ebfdc8a606d8cb26f073d4700460c3289fb79e943e12948329e17336ca47 +[http://sense.net/zc/free42/42c_skins.tgz] +md5=24b0e5bbfe21ea9c5a5c589bcc79c0f2 +sha256=ab877846c6caaff32efbf5be6fc5c63b7dec97a2e78c57c525da7705d2052bfc + [http://www.amd.com/files/connectivitysolutions/geode/geode_lx/AES_Linux_LX_02.01.0100.tar.gz] md5=12cb241a9037fffe31ba7c68a48ed614 sha256=a6068b4aa0e2330eed6e4741bad3191dc9ca7d7326f7bfab578ac55e2b8b91a2 @@ -54,6 +66,10 @@ sha256=c456d5c73a57a567440bca5c138a549a21637aa2e4049228b5ba63cf68d75a1a md5=fe00539dbd185f9f9b7bbf716e063d49 sha256=a22d0b958c9157c6c26c08de05b85ff89302ab2ed8ed772f7ede16ce6b0edfe0 +[http://mirror1.pdaxrom.org/source/src/AtiCore-1.0.1.tar.bz2] +md5=b3d00a755e3be599b714f1f552db2752 +sha256=8f9124bd76c378ae2a25b6b421ebb8f0a88069da697ac6c96943571d93af8b15 + [http://www.amd.com/files/connectivitysolutions/geode/geode_lx/Audio_LinuxALSA_5536_1.00.0500.tar.gz] md5=8bd2a92fb94faa1b4fc43865d40bd988 sha256=a317cd11719659892bdae6ec54ee2e37549d0df7d5bdce02036963acc2ad1486 @@ -66,6 +82,14 @@ sha256=10106d94e0897c18cd5eb0b782c3212371c9785eba78a15f4623335e01dda23c md5=aaa4907b8877093b9bb11e6cea6b029b sha256=ec27eff76846ec95cea4e156fbeac951946b6eb1d1b3e590e48c03904a625893 +[http://heanet.dl.sourceforge.net/cheetahtemplate/Cheetah-1.0.tar.gz] +md5=dfc27276370279a00b6bd7f8d15bf8e5 +sha256=27ea8303e43e6641b72d24bba731c3620b68ec84a34e1c83f69444319d857209 + +[http://heanet.dl.sourceforge.net/cheetahtemplate/Cheetah-2.0.1.tar.gz] +md5=7845a2950ea850a13c488a26b61ac50a +sha256=70b618a03506831f59ba1ff8433907ee8d4ead5fc9f1b3f610d384e08a26938c + [http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/Class-Container-0.12.tar.gz] md5=6896bdb4464b96ad638e22b0400acbc9 sha256=771206f2b7a916ce0dfb93d82200472beaeb910248482734179bf36808e486b1 @@ -102,6 +126,10 @@ sha256=3cebe0a6894daee3bfa5d9619fc90e7619cb6a77ac1b04d027341cd6033ae989 md5=ad746c49dc89ba6f99df71b17bbb1dc8 sha256=125941749103c08a5263f2ace01aac1533420d2ff6741d2bdde79689e5d02a05 +[http://www.directfb.org/downloads/Old/DirectFB-1.0.0.tar.gz] +md5=ad746c49dc89ba6f99df71b17bbb1dc8 +sha256=125941749103c08a5263f2ace01aac1533420d2ff6741d2bdde79689e5d02a05 + [http://www.directfb.org/download/DirectFB/DirectFB-1.1.0.tar.gz] md5=da30fa2748c7501913c8832a83e654ab sha256=0ee87256a278079955d78e4f235c15a174afbb507b5434f1966cd3e5f5a3f23a @@ -110,6 +138,10 @@ sha256=0ee87256a278079955d78e4f235c15a174afbb507b5434f1966cd3e5f5a3f23a md5=da30fa2748c7501913c8832a83e654ab sha256=0ee87256a278079955d78e4f235c15a174afbb507b5434f1966cd3e5f5a3f23a +[http://www.directfb.org/downloads/Old/DirectFB-1.1.1.tar.gz] +md5=c75255049ca8d5c69afe4db58f603028 +sha256=f12ec5f0864d85268a8d67e4919cb7f3d7f0e06ed6cc278c952f6c342673d931 + [http://www.directfb.org/downloads/Old/DirectFB-1.2.3.tar.gz] md5=caea8bcfc9c1d391e56d85e437005a5d sha256=0875e553a17fe65e920ad810a67aa6faca582c53476d8dc75880a6b3da625d0b @@ -118,6 +150,10 @@ sha256=0875e553a17fe65e920ad810a67aa6faca582c53476d8dc75880a6b3da625d0b md5=835e850fddba8d8214d39ddd0646c3e8 sha256=f83af60d53ab4319e5d71a4459cc10464ffd683efabacd6bd773bb807f8771fa +[http://www.directfb.org/downloads/Old/DirectFB-examples-1.0.0.tar.gz] +md5=0cdfb4dd248eada3dc35db4f8cf75f8d +sha256=c54e779a720841126e23d692de85243e23b0d94fb7792a958b96b5bd097a8b85 + [http://media.djangoproject.com/releases/1.0/Django-1.0.tar.gz] md5=84d0490e4126f31d1c23f640e1e86f2f sha256=4c780b9e2906944ce02a9325b15f480d2bd4c0b12137f752aa4800c0f8563acf @@ -138,14 +174,26 @@ sha256=9ad5a063bac80f3e77a179c91b7ea4490181640c8c1893292fdc6f2d92f40406 md5=d119f0c6c12787a8d5b255208c3c74c5 sha256=fb707b2026de62c1de6ce7fb67e9f82d586211ac09c70e81b83631e77cb47fd1 +[http://search.cpan.org/CPAN/authors/id/R/RM/RMCFARLA/Gtk2-Perl/ExtUtils-Depends-0.205.tar.gz] +md5=02c22a93ec9efb8e457764114ce24eb4 +sha256=e098bfb3a50b0629434011a9b56314c9045c09fac7e5d06bf57d43ffd53c1918 + [http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/ExtUtils-ParseXS-2.16.tar.gz] md5=c64fddf17ee2b27d8a90ceb455c3e570 sha256=1f8504c7f08d2d59c71a70915fc834a285b99587444ee33e23ee3f135c071da0 +[http://search.cpan.org/CPAN/authors/id/R/RM/RMCFARLA/Gtk2-Perl/ExtUtils-PkgConfig-1.07.tar.gz] +md5=a8cf945d09c6458cb27228218e9a2f45 +sha256=8416e162d6fc921f14a61c8905e9f9a28dc25e67e1c71b75574360a13f0c28c7 + [http://downloads.sourceforge.net/fnorb/Fnorb-1.3.tar.gz] md5=7de1500c7ef6592a603890b45e23261b sha256=d4380ab7fa8b8a9f564592b4e07c96117abd2d3f677b8a73c824cf4f904aa294 +[http://heanet.dl.sourceforge.net/fnorb/Fnorb-1.3.tar.gz] +md5=7de1500c7ef6592a603890b45e23261b +sha256=d4380ab7fa8b8a9f564592b4e07c96117abd2d3f677b8a73c824cf4f904aa294 + [http://cheeseshop.python.org/packages/source/F/FormEncode/FormEncode-0.4.tar.gz] md5=797852a19505f7d919db96dd994d0484 sha256=2c0de0243ce1853bf62ed9b2da122472b6682a117843af0cce4b4cf9588194ff @@ -158,6 +206,10 @@ sha256=e6a0a5b674c4803bfd1ffda9660c29f4399294623ed095b0d1c554367c7db73c md5=095b9f21c03204cc13f7f249e8866cd9 sha256=ffae146dc20458698acf5ccc384dc32317cea1df0c95b44b5d47cca8b26bc986 +[http://www.j-raedler.de/media/Software/FuGrep-0.50.zip] +md5=83b738d805e17c226f43bbac453a0631 +sha256=14b0fb8ce8a97a0bf7d8f5be57f6bb67dc9e5273f1f465f3babe994c44db3d87 + [http://ftp.gnome.org/pub/GNOME/sources/GConf/2.6/GConf-2.6.1.tar.bz2] md5=194fab4e2e87c7ae3c7fea926fd281bc sha256=31d894960e0d2eba8fa2746e4fde31983a1e49dc856a880adb59d5f251a690cf @@ -170,10 +222,26 @@ sha256=fffcf07aba1ef5aef03defc88449f6ae0929813e9fcfda65c0d12d7b5c765248 md5=de859c386a1311d386b7080f4eb5c137 sha256=89eb9c69c5637e5b40f1bcb6f33ef07ff6b25841677d84ec2fd455ce741612b7 +[http://gnosis.cx/download/Gnosis_Utils.More/Gnosis_Utils-1.2.2.tar.gz] +md5=729984e5858fa626359a8d6447a24bae +sha256=5673927f18790511f2a01004a51110e167f7950e7accf9e1bc6832a4bfed4feb + +[http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/HTML-Mason-1.35.tar.gz] +md5=c09f77e2af500b51d22e0238c0534994 +sha256=01c75ebc523b77b88d5754fa93a283eeff77bcf799536db8697b61daf42f36bd + [http://gallium.prg.dtu.dk/HVSC/random/HVSC_45-all-of-them.rar] md5=5394dac412dbe34d2dfe63cb91bdce8d sha256=6068499eeb3aad19d2f860390c65496cf38c5f5e5b54422db6ec2f67abbb8d10 +[ftp://download2.citrix.com/FILES/en/products/Linux10/ICAClient-10.6-1.i386.rpm] +md5=f71aa1956ce18508d2438ebae2ad507c +sha256=d3d77f54064f6b2df7ff3bf6a01e1f0b9d0e2088f31d69ba6b8e07bd587cb4f8 + +[http://heanet.dl.sourceforge.net/imdbpy/IMDbPY-3.1.tar.gz] +md5=90c44c69a6fb7184c483f344909c4ed7 +sha256=dd88d2f2b33855588471b6e60814c82136a2ca6d67260924f79d840d10a59eb4 + [http://search.cpan.org/CPAN/authors/id/T/TO/TOMHUGHES/IO-Zlib-1.04.tar.gz] md5=1abf9e6161cc6c52ccd4c629e32e582e sha256=8401b31d22605e787edef75025eb048b2b3cfaee92ed8358bdcaedca5761f7ea @@ -182,6 +250,10 @@ sha256=8401b31d22605e787edef75025eb048b2b3cfaee92ed8358bdcaedca5761f7ea md5=3942a55cfc5e6d3b612a46cc1a9515b9 sha256=e6dafb82ddf7730ebe7ae2de0ce158d3052d782780b41a14c4fed304e463632e +[http://You-Have-To-Download-The-Microcode-Manually-So-Please-Read-ixp4xx-npe_2.3.2.bb-For-Instructions/IPL_ixp400NpeLibrary-2_3_2.zip] +md5=7cecfaae78431a851bc854264a5ee994 +sha256=31e1c0fb75d1463a6a8badd621d8169e2f8c681d9eb876ff9d5bb261f0e6b451 + [http://You-Have-To-Download-The-Microcode-Manually-So-Please-Read-ixp4xx-npe_2.4.bb-For-Instructions/IPL_ixp400NpeLibrary-2_4.zip] md5=9a6dc3846041b899edf9eff8a906fb11 sha256=f764d0554e236357fc55d128a012cb6ac2ceb638023f4af88c8f509511f209fd @@ -230,10 +302,18 @@ sha256=dbe5d8a0ac16a7953b3b2d34841dabd2b3071a2f66585ff25a538bd2ad1513ca md5=17a18e398af6c1730f72068022a152aa sha256=f199f7558e6a071ae1ead06b9207c0819281b6b2094dcef6fc4201a4bdf8854d +[http://heanet.dl.sourceforge.net/libvncserver/LibVNCServer-0.9.1.tar.gz] +md5=aa00efc3dabde82fde9509bfbab0aba4 +sha256=0fbda7fc37c1f360bdbeb586e48d6203a5ef56a8cfc3b78887d7d90db683f282 + [http://qa.debian.org/watch/sf.php/libvncserver/LibVNCServer-0.9.1.tar.gz] md5=aa00efc3dabde82fde9509bfbab0aba4 sha256=0fbda7fc37c1f360bdbeb586e48d6203a5ef56a8cfc3b78887d7d90db683f282 +[http://heanet.dl.sourceforge.net/libvncserver/LibVNCServer-0.9.tar.gz] +md5=4769d70bcd9d8390afb64c5eddfcd60e +sha256=0ef94a1857e03e826825c559b5b8f07a4b412112fb9326f5eb694d5216747071 + [http://kernel.org/pub/linux/libs/pam/pre/library/Linux-PAM-0.79.tar.bz2] md5=0b89b73970c7d490ad9a13718b74d27b sha256=5ed480cb76c91c2739ddba87f15437510e58c60dfdd7ead6f469149b2da94bb7 @@ -270,22 +350,46 @@ sha256=3875b7cc85e8e7df81c02a638db6b4a970d1e66a86dad6ebf29a1d19f38f5953 md5=038f261afd091d8fad347d6c66d2833d sha256=8a5eb39d3b9a3a4219c6d6051328c62bd51e9b53723ee5b42cd66e8672e681b9 +[http://pypi.python.org/packages/source/M/Mako/Mako-0.2.2.tar.gz] +md5=ffeb24b3ee71b2e6354efad1136898bd +sha256=858b2ad7850db5e477ab81d7f355f82df33d90e4ed23a235184f380a925f2813 + [http://search.cpan.org/CPAN/authors/id/T/TE/TELS/math/Math-BigInt-GMP-1.18.tar.gz] md5=cd17afa7e9e7e9192457f6968d538f3f sha256=6948117f96cc9754bdbc53d92c48bca02f2de844a271a527b0a27065fcd06d24 +[http://heanet.dl.sourceforge.net/mesa3d/MesaDemos-7.0.2.tar.bz2] +md5=11a10410bae7be85cf25bc7119966468 +sha256=ce39b26085acd8e5dffa8233618acac2605cc42203bc4f81c6e4504265f0ffaa + [http://downloads.sourceforge.net/mesa3d/MesaDemos-7.2.tar.bz2] md5=22e03dc4038cd63f32c21eb60994892b sha256=3d73988ad3e87f6084a4593cc6b3aac63aca3e893d3e9409d892a6f51558e4c4 +[http://heanet.dl.sourceforge.net/mesa3d/MesaDemos-7.2.tar.bz2] +md5=22e03dc4038cd63f32c21eb60994892b +sha256=3d73988ad3e87f6084a4593cc6b3aac63aca3e893d3e9409d892a6f51558e4c4 + +[http://heanet.dl.sourceforge.net/mesa3d/MesaGLUT-7.0.2.tar.bz2] +md5=3a33f8efc8c58a592a854cfc7a643286 +sha256=fa31ca39f00ff92c7da59d9993d0eefb8d901eb8a519743942e523fde120eb6c + [http://downloads.sourceforge.net/mesa3d/MesaLib-6.0.1.tar.bz2] md5=b7f14088c5c2f14490d2739a91102112 sha256=2de039f7abe10569b681ea1d9e21fb65fd0081c8f4db40fb62b332acb11679fb +[http://heanet.dl.sourceforge.net/mesa3d/MesaLib-6.0.1.tar.bz2] +md5=b7f14088c5c2f14490d2739a91102112 +sha256=2de039f7abe10569b681ea1d9e21fb65fd0081c8f4db40fb62b332acb11679fb + [http://downloads.sourceforge.net/mesa3d/MesaLib-6.5.2.tar.bz2] md5=e4d894181f1859651658b3704633e10d sha256=137f50a30461d51eb9af5aac737bc788d536354cf47b26129b97bde6e41fb85f +[http://heanet.dl.sourceforge.net/mesa3d/MesaLib-6.5.2.tar.bz2] +md5=e4d894181f1859651658b3704633e10d +sha256=137f50a30461d51eb9af5aac737bc788d536354cf47b26129b97bde6e41fb85f + [http://downloads.sourceforge.net/mesa3d/MesaLib-6.5.tar.bz2] md5=61beda590bfc5b4a12e979d5f2d70d7a sha256=dcacf4c18af89b57e66dc7ba39e24c3b74ff6f83b8745bcc1390170a4190eebd @@ -294,10 +398,18 @@ sha256=dcacf4c18af89b57e66dc7ba39e24c3b74ff6f83b8745bcc1390170a4190eebd md5=93e6ed7924ff069a4f883b4fce5349dc sha256=9d4707b556960f6aef14480f91fcd4f868720f64321947ab1b2fd20e85ce7f9e +[http://heanet.dl.sourceforge.net/mesa3d/MesaLib-7.0.2.tar.bz2] +md5=93e6ed7924ff069a4f883b4fce5349dc +sha256=9d4707b556960f6aef14480f91fcd4f868720f64321947ab1b2fd20e85ce7f9e + [http://qa.debian.org/watch/sf.php/mesa3d/MesaLib-7.0.2.tar.bz2] md5=93e6ed7924ff069a4f883b4fce5349dc sha256=9d4707b556960f6aef14480f91fcd4f868720f64321947ab1b2fd20e85ce7f9e +[http://heanet.dl.sourceforge.net/mesa3d/MesaLib-7.0.3.tar.bz2] +md5=e6e6379d7793af40a6bc3ce1bace572e +sha256=ebdf3448eac8abb56bbfc0b7c015efce8e5d88f10ee3123dcc62c1ff47b62d22 + [http://downloads.sourceforge.net/mesa3d/MesaLib-7.1.tar.bz2] md5=6bff7f532d16f90f944a400c8bd7074d sha256=d63a29bf206a5304b3c319a47fa16892db3d2e14737f2c534acf1eb220e9c550 @@ -306,6 +418,10 @@ sha256=d63a29bf206a5304b3c319a47fa16892db3d2e14737f2c534acf1eb220e9c550 md5=04d379292e023df0b0266825cb0dbde5 sha256=a9cc62ab760afeebcb1319a193508734a2d470cab8effab2776a2d3c65bd9cd2 +[http://heanet.dl.sourceforge.net/mesa3d/MesaLib-7.2.tar.bz2] +md5=04d379292e023df0b0266825cb0dbde5 +sha256=a9cc62ab760afeebcb1319a193508734a2d470cab8effab2776a2d3c65bd9cd2 + [http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/Module-Build-0.2805.tar.gz] md5=598bb59b86c2c4842eeffb03392fab5b sha256=8fd609d1e6b460b5c95ad5612cb823aa863d51360ed55caea987909a9bab50f5 @@ -314,6 +430,10 @@ sha256=8fd609d1e6b460b5c95ad5612cb823aa863d51360ed55caea987909a9bab50f5 md5=e6b9ea21fd91cb4a5663304da727bb70 sha256=59f44cd53cfa1189dcaa5bf2c48662d5765f347b03827feb807f4cd0ef18943e +[http://heanet.dl.sourceforge.net/mysql-python/MySQL-python-1.2.1_p2.tar.gz] +md5=e6b9ea21fd91cb4a5663304da727bb70 +sha256=59f44cd53cfa1189dcaa5bf2c48662d5765f347b03827feb807f4cd0ef18943e + [http://search.cpan.org/CPAN/authors/id/M/MA/MANU/Net-IP-1.25.tar.gz] md5=a49c0b02a9b793ff60191cdafc0c202e sha256=4cd6e2202fd88c46d5458d19bbea80e257b6ba0ec57ea3ac8ae94ed48c9a60c7 @@ -326,10 +446,18 @@ sha256=174415168e1fc0451f3f6e34beb5c8779b83521a477243cf4ef865be4e161834 md5=832c91aa660c7b4e7220fa1263101fe3 sha256=59eddefa715b3810af20b2b190ae16b46d0b733144d36dc7ddd51b32adac013e +[http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/0.6/NetworkManager-0.6.5.tar.bz2] +md5=b827d300eb28458f6588eb843cba418d +sha256=4ba65d64599ca6937b44b98d1efd04957278679ddd733081d0d8c2ecf6c0143b + [http://downloads.sourceforge.net/numpy/Numeric-23.7.tar.gz] md5=8054781c58ae9cf6fe498316860b5ea8 sha256=33225097777e84dfed251aee1265a9c0dd0976854e83f60e778a670027b12e7c +[http://heanet.dl.sourceforge.net/numpy/Numeric-23.7.tar.gz] +md5=8054781c58ae9cf6fe498316860b5ea8 +sha256=33225097777e84dfed251aee1265a9c0dd0976854e83f60e778a670027b12e7c + [http://ftp.gnome.org/pub/GNOME/sources/ORBit2/2.10/ORBit2-2.10.2.tar.bz2] md5=c862e3261b52a84321e89f57e5600da6 sha256=d43ff15c23f5391850f85a7d40e4bd26f82fe2c86669664fe56eff91f14c1594 @@ -346,10 +474,18 @@ sha256=412e4880d79533a2bbd33757e031a2bee24a7bc771f22cf4fed3cb81790b1b68 md5=6f4bf7d803d442e9d093a0daa203d506 sha256=d60027a4a36e64d02723d00b76c08e8d92850cab6269b2edcda4a1bb30cc7723 +[http://heanet.dl.sourceforge.net/openipmi/OpenIPMI-2.0.14.tar.gz] +md5=f766680bb237ca2f837c005efba54efa +sha256=fbd907dde45054227568f3117df0418a7819cfee02875d3723779432e8a66dc9 + [http://downloads.sourceforge.net/openjade/OpenSP-1.5.tar.gz] md5=87f56e79ae0c20397f4207d61d154303 sha256=987eeb9460185950e066e5db3b5fa531e53e213742b545288405552a5a7bb704 +[http://heanet.dl.sourceforge.net/openjade/OpenSP-1.5.tar.gz] +md5=87f56e79ae0c20397f4207d61d154303 +sha256=987eeb9460185950e066e5db3b5fa531e53e213742b545288405552a5a7bb704 + [http://search.cpan.org/CPAN/authors/id/A/AD/ADAMK/Params-Util-0.20.tar.gz] md5=33c4466239c97cc3e1063eff0577206c sha256=29f7e05045a5699b211d2a8332d36113c22f9c2e96174f40939e79dbc356905d @@ -374,6 +510,10 @@ sha256=1428a61246a98411c2f16fcaf051c7acb53fb1507b1982da52d5b6aa70f78c2b md5=863311e29550f9b4bf6c2502fdbed1fa sha256=e9c0b53d887b53310daab656ef83b0abecdde39b679806a0f04f3cda222fbac2 +[http://heanet.dl.sourceforge.net/plone/Plone-2.1.2.tar.gz] +md5=863311e29550f9b4bf6c2502fdbed1fa +sha256=e9c0b53d887b53310daab656ef83b0abecdde39b679806a0f04f3cda222fbac2 + [http://www.vanille.de/mirror/PyMP3-0.3.4.tar.gz] md5=28e884057750aa4f0da368678e5b20bd sha256=e534ea5505e2d0a571ca8baa4b34260953e796f6c762013756373f13411ebd6e @@ -382,6 +522,10 @@ sha256=e534ea5505e2d0a571ca8baa4b34260953e796f6c762013756373f13411ebd6e md5=cc88fde823368d6c7843491cc5b4399e sha256=d349f65afa841ebeaef7176a26613ff43f9c68857852ab70296b23760720c11b +[http://heanet.dl.sourceforge.net/pyode/PyODE-1.2.0.tar.bz2] +md5=ab72f3acc635371fd454978e5a97591c +sha256=117c8f06012e0c0004e69527580a56fac3d814da1051ec1aa73d97d16b60279b + [http://www.vanille.de/mirror/PyQt-x11-gpl-3.13.tar.gz] md5=a4145b39742a4d9df9b6bf06495f75f5 sha256=10482fed3832ac804a495d4e5795838a1f99d1994e1247f9dd608a99a3ec3c66 @@ -394,10 +538,18 @@ sha256=22cbbccabaea5262c1fae47bf475f06af6bb7b765898873c93149340cb2049b9 md5=706eae231519d9298c399c3b4878cc2a sha256=ff60b2c6d307022e223d1460825cfcd313b323669143e14a526f6083c7c5a8c1 +[http://heanet.dl.sourceforge.net/pyvisa/PyVISA-1.1.tar.gz] +md5=7f69822a42b1f35467d97321772a3575 +sha256=23f1d4b942d706bc99d7048b75feb2bc728c5cc4361db7244f65fc72c63d9d39 + [http://downloads.sourceforge.net/pyxml/PyXML-0.8.4.tar.gz] md5=1f7655050cebbb664db976405fdba209 sha256=9fab66f9584fb8e67aebd8745a5c97bf1c5a2e2e461adf68862bcec64e448c13 +[http://heanet.dl.sourceforge.net/pyxml/PyXML-0.8.4.tar.gz] +md5=1f7655050cebbb664db976405fdba209 +sha256=9fab66f9584fb8e67aebd8745a5c97bf1c5a2e2e461adf68862bcec64e448c13 + [http://pyyaml.org/download/pyyaml/PyYAML-3.05.tar.gz] md5=04ebb924a571cfb26d8143069068ce86 sha256=27b69bf6f1452e8f41577646ddfe78f9528a437409927d5d543bc97d75e27a03 @@ -446,6 +598,10 @@ sha256=ee75c05bb8a17a7978abbbc0f38fb79b1915c1e2357889e65657a39024d5b3a3 md5=a150750ad33c512edc4afee5270b37cb sha256=e005a93a0b463e01edba2b79038b54c29a7932efee61c851a2ac644b8a4e5dd4 +[http://www.mediaassistent.se/jarl/files/RCF-04.zip] +md5=5ba9e3eaa598d299718189d96514e8bb +sha256=f69f44da154b204a1ca62faae67a87b9b2939b9b66013bb8f732456653b6370f + [http://www.ralinktech.com.tw/data/RT71W_Firmware_V1.8.zip] md5=1e7a5dc574e0268574fcda3fd5cf52f7 sha256=e2d3ac1aaf4815e0c9531bc3fb7f56f30604cd52351332f1f8d6a28bb9a953bf @@ -510,10 +666,18 @@ sha256=ac6f511404457592b88fd57c4c77f7feba8e3b55d62c3c45c117fe84f1e07a7d md5=29d12d1b883bf834c291c93f52ba8dc5 sha256=7e2e7b46088a7b9594b255b58123598d49c5c3d11bcc3c9a8f80969cd9caa6c5 +[http://www.cpan.org/authors/id/D/DM/DMEGG/SGMLSpm-1.03ii.tar.gz] +md5=5bcb197fd42e67d51c739b1414d514a7 +sha256=f06895c0206dada9f9e7f07ecaeb6a3651fd648f4820f49c1f76bfeaec2f2913 + [http://downloads.sourceforge.net/pywebsvcs/SOAPpy-0.11.3.tar.gz] md5=dbdcafe76f73dffaa6948b026607d51b sha256=a4a0984583c32fbf69e6f9495590b9e0c8a2a4aa42cb83f20b63a75208590845 +[http://heanet.dl.sourceforge.net/pywebsvcs/SOAPpy-0.11.6.tar.gz] +md5=51ac835366badedd932c64f26fa8336b +sha256=42c8cb3e42b439bc36b6ba3f090ddb72a214ca9264a2babf102c98731dea8e6a + [http://sun.dhis.portside.net/~sakira/archive/SPainter_1.5_src.tar.gz] md5=8bd0e7e1f4d6549baba4cbb2384de2ff sha256=4925a4503cf7650e7880740113ee747d1bf828b6783b24580fbcb0ec894c0801 @@ -522,18 +686,38 @@ sha256=4925a4503cf7650e7880740113ee747d1bf828b6783b24580fbcb0ec894c0801 md5=9f54fc8a40e26edd61ce67902b315a66 sha256=07675051b60343820b235a818f2c2d528b86d2a19c2f56833213e3f574f9cd1a +[http://lsc.fie.umich.mx/%7esadit/spyro/download/SPyDI-0.9.7.tar.gz] +md5=9ca1c604330643fca1e3847f77ac8f0a +sha256=67e939a8c3e0f33fd2de5945b9e1e50b522890df025560215d6ca56ea7204b15 + [http://lsc.fie.umich.mx/%7esadit/spyro/download/SPyRO-0.9.14.tar.gz] md5=2cf73a4d293e3e581a2af0246349a470 sha256=524843cba2a8afb2cb3489d3439ffcd0a7f708bd7d2addb22140058dc42e89f2 +[http://lsc.fie.umich.mx/%7esadit/spyro/download/SPyRO-0.9.22.tar.gz] +md5=d64e540dfc65d04e186f5524da2b21ae +sha256=4e6f28580a6f2d3bc2b017a29f4edc89ec53833f1c788fe83fecdf0e3ddd2bff + +[http://heanet.dl.sourceforge.net/sqlalchemy/SQLAlchemy-0.4.2p3.tar.gz] +md5=378e1da246aa05c3776e38d945f6580d +sha256=6612f6a25305b3affbb12dcc3fe30f5446d34c84e61afac71e392f6cd997d7ad + [http://cheeseshop.python.org/packages/source/S/SQLObject/SQLObject-0.7.0.tar.gz] md5=dccb921b5df6a15312b56630ac4ac205 sha256=f6696120e12a58a922dc13bf4f0430774a72d522a9063dc4e1fc4d26ad33723b +[http://cheeseshop.python.org/packages/source/S/SQLObject/SQLObject-0.9.1.tar.gz] +md5=0cb952fc9d86200103c79ea52bde66b6 +sha256=ed367fde9d9b1de4de2d486ef4516d3a941028d13c3f829684f69536b2522046 + [http://downloads.sourceforge.net/zaurus-shopper/Shopper-1.2.1.tar.gz] md5=ed4d8ce2227abf7e68de687a8c930fa4 sha256=0e1ab08b22742d18b9ee0288874f63ddd74591e1b9f29003fe66dd0ba2289bcf +[http://heanet.dl.sourceforge.net/zaurus-shopper/Shopper-1.2.1.tar.gz] +md5=ed4d8ce2227abf7e68de687a8c930fa4 +sha256=0e1ab08b22742d18b9ee0288874f63ddd74591e1b9f29003fe66dd0ba2289bcf + [http://www.squeakvm.org/unix/release/Squeak-3.10-1.src.tar.gz] md5=7fbac029115831d18422f3079dbb0444 sha256=d5e9cab31f25f842f42bde153e04b93547b559e75da08f1b997a47f70d003133 @@ -554,6 +738,10 @@ sha256=c6e8d8ca900c3bee61b3c66888722b79d232731c9ee8f59533f06a4e486f23ec md5=6d53a2a9901549d52fecfafb0012134b sha256=6fd69febfd804437a9d5b610502c6d3c2caabef7a4832a3bcac2357515adaa71 +[http://heanet.dl.sourceforge.net/supybot/Supybot-0.77.0.tar.bz2] +md5=6d53a2a9901549d52fecfafb0012134b +sha256=6fd69febfd804437a9d5b610502c6d3c2caabef7a4832a3bcac2357515adaa71 + [http://sdgsystems.com/pub/ipaq/hx4700/src/TIInit_3.2.26.bts] md5=8741490a25b98230973446400971bba9 sha256=c1f29cfd31c335a409bdc530c2e68661d20a1e3c2e5d64454470b6700a40681e @@ -674,6 +862,10 @@ sha256=f4d2ac6f09f44eeb82621530b1970afe88fd97cfe82da43b61069800d0c06d12 md5=caa9f5bc44232dc8aeea773fea56be80 sha256=a21d724ab3b3933330194353687df82c475b5dfb997513eef4c25de6c865ec33 +[http://heanet.dl.sourceforge.net/amule/aMule-2.1.3.tar.bz2] +md5=0aafdd159edb8ad5f0064da87998b47d +sha256=6e97e947bb7ac231b75e3b21a509a2ec0239bcd7e9dbfc6062c520a6d13b0244 + [http://downloads.sourceforge.net/aa-project/aalib-1.4rc5.tar.gz] md5=9801095c42bba12edebd1902bcf0a990 sha256=fbddda9230cf6ee2a4f5706b4b11e2190ae45f5eda1f0409dc4f99b35e0a70ee @@ -706,6 +898,10 @@ sha256=e5ffecc423e2a9214cb4abd9dbd086552a0d45387b7bc2072738f5e2a8dd90ec md5=16748b2d6e318e0e2a25581005e1943a sha256=4d2d7a6b69b00ffe603a136a9df7ecda9f43448c7bc723503e76eaec9ab8e9fe +[http://www.abiword.org/downloads/abiword/2.5.1/source/abiword-plugins-2.5.1.tar.gz] +md5=b1ce7ca49a0ee4e04f828e10eaebe6a9 +sha256=37faf6ea346c9b6473c5b2dfd1bb599457faa06b6a7cdef58e3e9f3e2773976b + [http://www.abiword.org/downloads/abiword/2.5.2/source/abiword-plugins-2.5.2.tar.gz] md5=0ad700d0cb6d176b39a191b16e3886c0 sha256=5714753ce1e89e72c2ba7e7d7d95546d9965a4e86bf76c060a8779b08fc2ae85 @@ -742,10 +938,18 @@ sha256=b36d6e83ecee4748cc3b8fa3cdbc8c59e620428ce77e22e241faa19c2e0e7dad md5=3aff94e92186e99ed5fd6dcee2db7c74 sha256=032a95967f8dd8a227ee1771de4a2646becc4d0f1123568faeca931006ec8f5f +[http://heanet.dl.sourceforge.net/acpid/acpid-1.0.4.tar.gz] +md5=3aff94e92186e99ed5fd6dcee2db7c74 +sha256=032a95967f8dd8a227ee1771de4a2646becc4d0f1123568faeca931006ec8f5f + [http://downloads.sourceforge.net/acpid/acpid-1.0.6.tar.gz] md5=5c9b705700df51d232be223b6ab6414d sha256=aa3c42224ec702b6cdb69ca6501284cb6dacb87473a076d7337ee9635c96f160 +[http://heanet.dl.sourceforge.net/acpid/acpid-1.0.6.tar.gz] +md5=5c9b705700df51d232be223b6ab6414d +sha256=aa3c42224ec702b6cdb69ca6501284cb6dacb87473a076d7337ee9635c96f160 + [http://qa.debian.org/watch/sf.php/acpid/acpid-1.0.6.tar.gz] md5=5c9b705700df51d232be223b6ab6414d sha256=aa3c42224ec702b6cdb69ca6501284cb6dacb87473a076d7337ee9635c96f160 @@ -798,6 +1002,10 @@ sha256=0a2cfda6701b344eed3e760089e306c50bfd71699592e4e0711c4609814a23ba md5=242c260c50fd774f2301dba66deb668b sha256=67b43e51aa5afb22a7329fd78e9d17f489fceb4ac00d9861312993709739528e +[http://heanet.dl.sourceforge.net/albumshaper/albumshaper_2.1.tar.bz2] +md5=242c260c50fd774f2301dba66deb668b +sha256=67b43e51aa5afb22a7329fd78e9d17f489fceb4ac00d9861312993709739528e + [ftp://ftp.billsgames.com/unix/agenda/aliens/src/aliens_V1.0.0.tar.gz] md5=9d7cde75aecf4b85478c0e47343d4293 sha256=0aa0084a74f912f4002f1c40a815ce62ac13331ec84787a954d8bea06e1c96c5 @@ -878,10 +1086,22 @@ sha256=3bb546e873df39159812168180eeff14b13620c653d90739ac0a0912e898aeac md5=14ccd0c900bf663afb36eac6f92d41d6 sha256=6a06f457d66eca75ac1ab065e64539e4ccf22ed4e53703a70194cb85203b3125 +[http://www.panix.com/~gesslein/am.tgz] +md5=df7535050d4bbe57c5d1243c8ec2479e +sha256=13ab5d2045d902b627725e7cf4fc82df3ec2e714e85e42b93bd48af7af9bffdc + +[http://ichi2.net/anki/download/anki-0.4.3.tgz] +md5=90434860945de4c09d55cdb5dbe984fc +sha256=18a93fb46363ca34963fc2588cadf7415dd799dd647efa681859eb8b1b22f104 + [http://osdn.dl.sourceforge.jp/anthy/20510/anthy-7811.tar.gz] md5=e3619c07bd175ce5f73d67388c0c2ea5 sha256=140828e8aa7d690d8f2a9a54faeac38bcbf40ea18c1f44a186af51bd6964cd13 +[http://osdn.dl.sourceforge.jp/anthy/29142/anthy-9100e.tar.gz] +md5=1c328986005e61f503adc118909e12ac +sha256=369fd18d406783acc92e6ced2b3536999aa0d33940398af2b4fb11dba46cbfa3 + [http://www.antlr.org/download/antlr-2.7.5.tar.gz] md5=1ef201f29283179c8e5ab618529cac78 sha256=744d8f3a8206fbc45a5558d92163d5ef7e5e0cc0700283bb6a617fb1201629f9 @@ -910,6 +1130,10 @@ sha256=4ad287720b87213154fa272afee5f442b0d8d61c1f56e43d0d056ae25849a926 md5=b1e6309e8331e0f4e6efd311c2d97fa8 sha256=7f7d9f60b7766b852881d40b8ff91d8e39fccb0d1d913102a5c75a2dbb52332d +[ftp://ftp.nl.debian.org/debian/pool/main/a/apmd/apmd_3.2.2.orig.tar.gz] +md5=b1e6309e8331e0f4e6efd311c2d97fa8 +sha256=7f7d9f60b7766b852881d40b8ff91d8e39fccb0d1d913102a5c75a2dbb52332d + [ftp://ftp.pl.debian.org/pub/debian/pool/main/a/apmd/apmd_3.2.2.orig.tar.gz] md5=b1e6309e8331e0f4e6efd311c2d97fa8 sha256=7f7d9f60b7766b852881d40b8ff91d8e39fccb0d1d913102a5c75a2dbb52332d @@ -958,6 +1182,10 @@ sha256=384437f3c4eb7d53ad27fdadce6cbc295ef16653b7f7739a480d91c784082ec9 md5=8e9cc71a1303b67b3278fbeab9799f2e sha256=5768fcc4d38fa6f811b0a89e2ef450d0f52688ff9263e548819adb096fbfc9c3 +[http://www.apache.org/dist/apr/apr-util-1.2.12.tar.gz] +md5=e292942e22edd21b68609086352212e4 +sha256=7d70ff17bec733bdb04a6653a8e9c15ab7d88429dac91a4ae58c1db5caaee07f + [http://www.apache.org/dist/apr/apr-util-1.2.7.tar.gz] md5=c3702668a640be1695956115857ec22e sha256=8cd84eb2031a91572e1be2975f4171730a9be72c4cd88718c4c40ac7dc4fd7d3 @@ -966,10 +1194,18 @@ sha256=8cd84eb2031a91572e1be2975f4171730a9be72c4cd88718c4c40ac7dc4fd7d3 md5=26b37525371cdaaec552237e0667305d sha256=57de084860870cccf510de62eb8ded252f5951a6e59e34a963d61d69de3aff10 +[ftp://ftp.nl.debian.org/debian/pool/main/a/apt/apt_0.5.28.6.tar.gz] +md5=26b37525371cdaaec552237e0667305d +sha256=57de084860870cccf510de62eb8ded252f5951a6e59e34a963d61d69de3aff10 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/a/apt/apt_0.5.28.6.tar.gz] md5=26b37525371cdaaec552237e0667305d sha256=57de084860870cccf510de62eb8ded252f5951a6e59e34a963d61d69de3aff10 +[ftp://ftp.nl.debian.org/debian/pool/main/a/apt/apt_0.6.25.tar.gz] +md5=6569fd95e829036c141a5ccaf8e5948c +sha256=fa00ce910ab6f0987c4a210962be357d4f013fc89ef72b015f39ae8649522b59 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/a/apt/apt_0.6.25.tar.gz] md5=6569fd95e829036c141a5ccaf8e5948c sha256=fa00ce910ab6f0987c4a210962be357d4f013fc89ef72b015f39ae8649522b59 @@ -978,18 +1214,34 @@ sha256=fa00ce910ab6f0987c4a210962be357d4f013fc89ef72b015f39ae8649522b59 md5=67d439a252996357b0313b3ad999739a sha256=6f1a7340d0de2a9a524055d0ed4289aa919dc29e9e1fe60aae598f2019105686 +[ftp://ftp.nl.debian.org/debian/pool/main/a/apt/apt_0.6.46.2.tar.gz] +md5=67d439a252996357b0313b3ad999739a +sha256=6f1a7340d0de2a9a524055d0ed4289aa919dc29e9e1fe60aae598f2019105686 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/a/apt/apt_0.6.46.2.tar.gz] md5=67d439a252996357b0313b3ad999739a sha256=6f1a7340d0de2a9a524055d0ed4289aa919dc29e9e1fe60aae598f2019105686 +[ftp://ftp.nl.debian.org/debian/pool/main/a/apt/apt_0.7.14.tar.gz] +md5=19efa18fb1ef20c58b9b44e94258b814 +sha256=8fc06effaf8a4e4333308eedcdc6840f1c8056f2e924210f151dfc076bcd4045 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/a/apt/apt_0.7.14.tar.gz] md5=19efa18fb1ef20c58b9b44e94258b814 sha256=8fc06effaf8a4e4333308eedcdc6840f1c8056f2e924210f151dfc076bcd4045 +[ftp://ftp.nl.debian.org/debian/pool/main/a/apt/apt_0.7.2.tar.gz] +md5=c66f943203fa24e85ed8c48f6ac5ad1e +sha256=e7d58e2b202713b4df8cd5fd58bc20ba8d31c0da6e5e3b3c89a138dbf0b24ad9 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/a/apt/apt_0.7.2.tar.gz] md5=c66f943203fa24e85ed8c48f6ac5ad1e sha256=e7d58e2b202713b4df8cd5fd58bc20ba8d31c0da6e5e3b3c89a138dbf0b24ad9 +[ftp://ftp.nl.debian.org/debian/pool/main/a/apt/apt_0.7.3.tar.gz] +md5=e2e6e23f43bfdf135b923205659dfaf1 +sha256=d3a71446234e567a24740b02abe5bc6c695836343df6139eb7c03ec11871e710 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/a/apt/apt_0.7.3.tar.gz] md5=e2e6e23f43bfdf135b923205659dfaf1 sha256=d3a71446234e567a24740b02abe5bc6c695836343df6139eb7c03ec11871e710 @@ -1002,6 +1254,14 @@ sha256=4a4eb39ea162df9c795b472326e9df676dbf249dc34436517b67354f32a8d23f md5=c6b1aa28bfecdd0c693a2afc43d7679e sha256=d5b93fb8dbfa73e4a542bb8ad7d61c8b48dcf79948da26da9e9ef3b1a49c4221 +[http://heanet.dl.sourceforge.net/arabeyes/arabic-fonts-1.0.tar.gz] +md5=c6b1aa28bfecdd0c693a2afc43d7679e +sha256=d5b93fb8dbfa73e4a542bb8ad7d61c8b48dcf79948da26da9e9ef3b1a49c4221 + +[http://heanet.dl.sourceforge.net/argtable/argtable2-7.tar.gz] +md5=a84130293aab3bc09631cbee717ede93 +sha256=f7bd2786309b6a7ce9c1e2b3fbdd75419ef0bcabfaa4444362bbe40897959f45 + [http://avr.auctionant.de/ark3116_linux_driver/releases/ark3116-0.4.1.tgz] md5=fb94d863514b2fa21ecd34571099a7a3 sha256=7016b5e53e1e24803186e2719cf735109289c0f42cfc3006d468dbf72fae09ab @@ -1030,6 +1290,10 @@ sha256=31ca43436520074e90482f54ffe26cc59ea76836add50d8b7d2c1adfefd19845 md5=67196fcfe5c95bae1a5bb8a63a1bb74d sha256=68da29f515a26ca1b5722c940615ddc4b0550b2b1ad5d11129b1da636c353160 +[http://www.kegel.com/crosstool/crosstool-0.43/patches/glibc-2.3.6/arm-ctl_bus_isa.patch] +md5=88fa901c9a85633ab62365b0ee9df3b1 +sha256=6651eb15c9f6dabf21af4067b723cb29a87827f66570bfab74fdc00d80cab129 + [ftp://ftp.ee.lbl.gov/arpwatch-2.1a15.tar.gz] md5=cebfeb99c4a7c2a6cee2564770415fe7 sha256=c1df9737e208a96a61fa92ddad83f4b4d9be66f8992f3c917e9edf4b05ff5898 @@ -1038,6 +1302,14 @@ sha256=c1df9737e208a96a61fa92ddad83f4b4d9be66f8992f3c917e9edf4b05ff5898 md5=3e6bcedc549cb4c014227f882969db5c sha256=f6277da4651bceaeab442f864b735a5d7b0998d55f9209e37cf18f7464320e3e +[http://heanet.dl.sourceforge.net/asio/asio-1.1.1.tar.bz2] +md5=3e6bcedc549cb4c014227f882969db5c +sha256=f6277da4651bceaeab442f864b735a5d7b0998d55f9209e37cf18f7464320e3e + +[http://802.11ninja.net/~jwright/code/asleap-2.1.tgz] +md5=eb74eca847fa71ba89a965548526f7ac +sha256=ba77747cfb107d31cf4ae2eb27839cfa196c0fca08c98465256a4820b9d85d29 + [http://opensource.wolfsonmicro.com/~lg/asoc/asoc-v0.13.3.patch] md5=ce753d3c06825e3e8d6801258d63f761 sha256=1c6e90e00f3cb202f206e4b8f0524948ba295feb66aa6a68cf189f34dc851bde @@ -1070,6 +1342,14 @@ sha256=115248cb7b1fc35dc2be24218f91a87272cf5c0d8c2050a36da2314fadc05cf4 md5=88cfcd5c3b2a8f2504e561cb93546299 sha256=cc70d2ff8a2cafe3c7cce10dc5e90146111bc686ed6e08fc753e950c7050611e +[http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.24.tar.gz] +md5=63dc8b7be4cd10375c5fbda893c780bc +sha256=9debaf410636fa477e1e1f09fe0b16a1c2814afaf7195f34f29e4ce5b8debbbd + +[http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.28.tar.gz] +md5=922e42ca392656d1830ffd048c8167ec +sha256=5a44c6e86d227f092825b9d1e4a17391c5e8ca51a077965c40c8b8e938075862 + [http://ftp.digium.com/pub/asterisk/releases/asterisk-1.4.10.tar.gz] md5=69057e2916287f6e2a1e36dba6d6800d sha256=72bbb19e35ec304df06dca717b7ac2cae0d3409fe47c17c2dcf75850f61ddbe1 @@ -1138,10 +1418,18 @@ sha256=bfa7def7d0f1190a111bde232920d2b3481d3932e2d1056573b3a9c4801c602a md5=160c648e29637f2ed6301f4dfdecce21 sha256=3ec786e6df9e1a935aff4848b6989cad8f87c1fa8813dc033b338e18b17138d8 +[http://download.berlios.de/at76c503a/at76_usb-0.17.tar.gz] +md5=b47d4fa958aaf83916b6a917626102cd +sha256=9d1fff10d391cb64890bb8e0050d3f023520a8dd5aee43c4d3f9c6f8611da668 + [ftp://ftp.debian.org/debian/pool/main/a/at/at_3.1.8-11.tar.gz] md5=81dbae5162aaa8a398a81424d6631c77 sha256=0d77c73a3c151a7da647dd924f32151e5ee4574530568fd65067882f79cd5a44 +[ftp://ftp.nl.debian.org/debian/pool/main/a/at/at_3.1.8-11.tar.gz] +md5=81dbae5162aaa8a398a81424d6631c77 +sha256=0d77c73a3c151a7da647dd924f32151e5ee4574530568fd65067882f79cd5a44 + [http://projects.linuxtogo.org/frs/download.php/222/atd-0.80.tar.gz] md5=b64a8ae8592b4d32ac9baebf0b915c1e sha256=456d2bf4550a37c70e829b3029acf3cb81f931908d35f1dbade7ec54f4cdb146 @@ -1170,6 +1458,10 @@ sha256=be2d537642a43b5a1e85a2d0f813167b8585781ff83203a4f68206c3ecd6a315 md5=9fc33ec48fd32933f7f630479dfad667 sha256=be2d537642a43b5a1e85a2d0f813167b8585781ff83203a4f68206c3ecd6a315 +[ftp://ftp.gnome.org/pub/GNOME/sources/atk/1.19/atk-1.19.3.tar.bz2] +md5=2babc7fa144688274ebede271072b8e2 +sha256=f616b4b636957e6387392ecacea4d60e4ad178baa3c9713e5db1733a42326786 + [http://ftp.gnome.org/pub/GNOME/sources/atk/1.2/atk-1.2.0.tar.bz2] md5=06a84758129554ae044af8865ecb6f1c sha256=feb2639dd385a828ec75c6af12ac44a44aced40fb7a24cb63252f0d056f993b7 @@ -1190,6 +1482,10 @@ sha256=f9a05f797f0b23c7e2d88c428779c450718df2f187bd83dcf0a898adbda1b3ab md5=7f41bd9c6dcd83c8df391dc1805be653 sha256=6a33f5b7caab4e837ac671b4b6974059f62a2ef0fd62a9bc04c74d47f077ff14 +[http://www.thekelleys.org.uk/atmel/atmel-firmware-1.3.tar.gz] +md5=415e16463151f2e953e9b3dceb7af45f +sha256=f53160b0b4a824754957d8488f1eba68d3c6379d48c563464bd3924e7be19b3d + [http://downloads.sourceforge.net/atmelwlandriver/atmelwlandriver-3.3.5.6.tar.bz2] md5=dd9a11d175ba0fbb62cf7fec5426f5de sha256=d80b88753725e2ce83add9f80d120c022112527adbf4425368387da1936345f2 @@ -1298,6 +1594,10 @@ sha256=794d4d1c485d4dc24659a25feb92706eb8bff4552333a1df83e856db123c36ce md5=29ebb2181958d5721ee5fc45f035a77c sha256=2cb6a15a9fff56c0d24f3a95b7f67c52436a88716e640c7f7afd48c9a5cbd740 +[http://avahi.org/download/avahi-0.6.19.tar.gz] +md5=a06782435d1c994ecd00a66e95a5d9d4 +sha256=a742dceda38f242f5eac72f2c3bc1bda76adf497d6913e88a9cbc624bf2dd68a + [http://avahi.org/download/avahi-0.6.20.tar.gz] md5=6acdff79afa2631f765f3bbbc3e25a74 sha256=89ae5fd08018679b80cee201e1c1350d86db73bdcf6718aabb4bd3ea86f93ec9 @@ -1318,6 +1618,10 @@ sha256=dedf5325105f071e5d9f898fdb7337a7fe88a3a8a1f832a6056ba00477b8cc3d md5=3cb3be404950ef08e51adbe59c7b811e sha256=c3648f02dd7d4dc8c0ef9a48089fda4ca47b81a977c838b17f55e6abf7f51447 +[http://heanet.dl.sourceforge.net/avetanabt/avetanaBluetooth-20060413.tgz] +md5=3cb3be404950ef08e51adbe59c7b811e +sha256=c3648f02dd7d4dc8c0ef9a48089fda4ca47b81a977c838b17f55e6abf7f51447 + [http://heanet.dl.sourceforge.net/sourceforge/bacula/bacula-1.38.11.tar.gz] md5=0d6d6614afdc468d214de4e66f9f5a26 sha256=d095165d256771c918b80f836feaf837aedc1362b2d67171013d3ab7ac5ee47f @@ -1334,6 +1638,10 @@ sha256=c450b49ce9903d97ed5e4aa788b388e014c0eddcfc038b000237f67cd4528a3b md5=5afcef5d6047f14cd5f65d2fdbd86fb2 sha256=43debdc36c9aed8a2ef366bf3e98c1440e643a5ae9e7e1423b6309ddee5ae25e +[ftp://ftp.nl.debian.org/debian/pool/main/b/base-passwd/base-passwd_3.5.19.tar.gz] +md5=5afcef5d6047f14cd5f65d2fdbd86fb2 +sha256=43debdc36c9aed8a2ef366bf3e98c1440e643a5ae9e7e1423b6309ddee5ae25e + [ftp://ftp.pl.debian.org/pub/debian/pool/main/b/base-passwd/base-passwd_3.5.19.tar.gz] md5=5afcef5d6047f14cd5f65d2fdbd86fb2 sha256=43debdc36c9aed8a2ef366bf3e98c1440e643a5ae9e7e1423b6309ddee5ae25e @@ -1346,6 +1654,10 @@ sha256=43debdc36c9aed8a2ef366bf3e98c1440e643a5ae9e7e1423b6309ddee5ae25e md5=2dd8ad238abcbab478db690085554d90 sha256=a9d7ac67598b2b004a53a9e70592e0f274d3c8731ed9395ed704fd0259f0c0af +[ftp://ftp.nl.debian.org/debian/pool/main/b/base-passwd/base-passwd_3.5.9.tar.gz] +md5=2dd8ad238abcbab478db690085554d90 +sha256=a9d7ac67598b2b004a53a9e70592e0f274d3c8731ed9395ed704fd0259f0c0af + [ftp://ftp.pl.debian.org/pub/debian/pool/main/b/base-passwd/base-passwd_3.5.9.tar.gz] md5=2dd8ad238abcbab478db690085554d90 sha256=a9d7ac67598b2b004a53a9e70592e0f274d3c8731ed9395ed704fd0259f0c0af @@ -1518,6 +1830,10 @@ sha256=0e3649531c3a5675743980ecf5ff5fcbca2801afe4dca7fb4b250aae7ac3b782 md5=e240c34f979b64bcb83c5f6567110bb1 sha256=46d427fd5b1509ec7dd980c07efd88634fde61cf07ab221dcbde9e1021bd2817 +[http://downloads.open-mesh.net/batman/stable/sources/batman-0.3.tar.gz] +md5=54812e81f70a4155edcce88f0c7aeb02 +sha256=846f34019c6f30bbb88790088a0e205c7a4e7ee0ab656a5ea3b4b624a0a028cb + [http://bazaar.canonical.com/releases/src/bazaar_1.2.tar.gz] md5=1fdb0aa41d7db06bf3429118d0136c8a sha256=d1b657f52dea785ce1b1a8b5acfdee4492c5d779422f9b58e145162e2d33c241 @@ -1530,6 +1846,18 @@ sha256=6714d9c1285fc04d39f03b85ebad3723be6f8709ca8935e984b280ac42e97492 md5=d44b5dddebd8a7a7309aea6c36fda117 sha256=4ef6d9f17c3c0d92d8798e35666175ecd3d8efac4009d6457b5c99cea72c0e33 +[http://people.openezx.org/wyrm/bcm2035-tool.tgz] +md5=437a39c6008ea6987af1bbaf2252e7b9 +sha256=a2e482900eb45154653a692565d81ddeb4b59cd438628c1b14beb822499afef7 + +[http://xorg.freedesktop.org/releases/individual/app/bdftopcf-1.0.0.tar.bz2] +md5=41f4ac6760ef5e671ba8d4baa7236f12 +sha256=8c01b85eab01f35ed6bc9d597d4c6c76cf9ddbe2596d9120d66e66135df1f9a1 + +[http://xorg.freedesktop.org/releases/individual/app/bdftopcf-1.0.1.tar.bz2] +md5=9685fab33d39954ab8a0d22e0969d5a4 +sha256=aaaa45ab361781aebda2093fdc7eb5c187f6215b4ba308dd6b9ff2b727e805d3 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/bdftopcf-X11R7.0-1.0.0.tar.bz2] md5=f43667fcf613054cae0679f5dc5a1e7a sha256=59760e300acf5b616400d08ac97d8ea265dfbb872b6131c65eb6246c61654803 @@ -1542,6 +1870,10 @@ sha256=7967b6349c7467acd9208e0b8225a6d354475d5f18633a78eaa485afbcfc72c6 md5=1472cada46e2ab9f532f984de9740386 sha256=50b574d330fecbc9faed81746a1abfcec903c264ae753ac64d4edf22c701519f +[http://heanet.dl.sourceforge.net/beecrypt/beecrypt-3.1.0.tar.gz] +md5=1472cada46e2ab9f532f984de9740386 +sha256=50b574d330fecbc9faed81746a1abfcec903c264ae753ac64d4edf22c701519f + [http://johnath.com/beep/beep-1.2.2.tar.gz] md5=d541419fd7e5642952d7b48cbb40c712 sha256=5c0445dac43950b7c7c3f235c6fb21f620ab3fd2f3aafaf09896e5730fcf49a1 @@ -1550,10 +1882,22 @@ sha256=5c0445dac43950b7c7c3f235c6fb21f620ab3fd2f3aafaf09896e5730fcf49a1 md5=8bc2e35cdcd2e6a80eab1b77c41f2a46 sha256=00e217559c93779fe04fd948017820af118a3981d6b4371ace95107cb3b047a7 +[http://xorg.freedesktop.org/releases/individual/app/beforelight-1.0.3.tar.bz2] +md5=d55b0e7196dafcfeb4db3886af2e1969 +sha256=cae9427fa083a0ec3f2d1a3a6391508b31a2cf0220cb8d732c5d473a8c995c4e + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/beforelight-X11R7.0-1.0.1.tar.bz2] md5=e0326eff9d1bd4e3a1af9e615a0048b3 sha256=76c42ee8e503a34b2a95fff59bc00e342f9a8f69e677ba63123f5f53cd41ce18 +[http://www.fftw.org/benchfft/benchfft-3.1.tar.gz] +md5=9356e5e9dcb3f1481977009720a2ccf8 +sha256=1b4a5b5e48ad5e61a21586b7b59d5c0a88691a981e73e2c6dc5868197461791b + +[http://www.kegel.com/crosstool/crosstool-0.43/patches/binutils-2.16.1/bfd-hash-tweak.patch] +md5=b12426fd72bedf00c389a7fb458275a8 +sha256=5a4a5b82dd8f485b4fef941cc216eb052184cf138f72b512eb62d836b460acdb + [http://xorg.freedesktop.org/releases/individual/proto/bigreqsproto-1.0.2.tar.bz2] md5=95c29d9d10bf2868996c0c47a3b9a8dc sha256=30da0098a24578e645193464526cc4d5c2c7fecaf476d1b9dabe68118850adee @@ -1566,6 +1910,10 @@ sha256=69d82eff84b1cef08a30e3a79de26df0bce7f531a86d2144ee0d5e43fc21ce86 md5=9ff3204eea27184ea0722f37e43fc95d sha256=9a9411115338d2554f2e99bc676c2e9a381a8d649bf9bd9c0b2ffa2cf74b563c +[ftp://ftp.isc.org/isc/bind9/9.3.4-P1/bind-9.3.4-P1.tar.gz] +md5=51007c8f185cd5a9b2e57f70073bf25b +sha256=f5cf38954e9b973cda204ff13cfd6d433ac307a8e5c4e7f6d978483becda842c + [ftp://ftp.isc.org/isc/bind9/9.3.5-P1/bind-9.3.5-P1.tar.gz] md5=1446984f552b18a0ff7db63971a0cb5a sha256=8bd6b53f5a2c5f0332aaba9a51ef3d7fc55c60f906f0c506e11b6600ed82a90b @@ -1582,6 +1930,10 @@ sha256=6f75f36f35d16fd1fdc6600926af3ceaaa3bdca4e91ae3bf22891594afa0116e md5=b5b1608f7308c487c0f3af8e4592a71a sha256=204c2624b5712a3482d0e774bb84850c1ee6b1ccdfd885abfe1f7c23abf4f5c0 +[http://www.kegel.com/crosstool/crosstool-0.43/patches/binutils-2.16.1/binutils-2.15-psignal.patch] +md5=c59d06f1874732814eef3371e2dee72b +sha256=e8df35e97d6789fd34268e8c2e4daba8aa17e7bf6f0432f6ea8123a2e344363c + [http://ftp.kernel.org/pub/linux/devel/binutils/binutils-2.15.94.0.1.tar.bz2] md5=4a4cde8e5d0c97249bf6933f095813fe sha256=c4ad801a7ed5a4e3d5d943d73c82f0af75998c95b69184dc884460bf40e48ee9 @@ -1590,6 +1942,10 @@ sha256=c4ad801a7ed5a4e3d5d943d73c82f0af75998c95b69184dc884460bf40e48ee9 md5=4a4cde8e5d0c97249bf6933f095813fe sha256=c4ad801a7ed5a4e3d5d943d73c82f0af75998c95b69184dc884460bf40e48ee9 +[ftp://ftp.gnu.org/gnu/binutils/binutils-2.16.1.tar.bz2] +md5=6a9d529efb285071dad10e1f3d2b2967 +sha256=351a6846ee179a37ed87a487971547159a7f4f92a1dec598c727f184a0de61ae + [http://kernel.org/pub/linux/devel/binutils/binutils-2.16.91.0.6.tar.bz2] md5=00ef9f1429d5f18702d08552f5c09441 sha256=7cffa91af850d3fd5f086e3690eae05c1d9d5ad82f915b36f0de920a3c9920be @@ -1602,6 +1958,10 @@ sha256=af9cfdde06693ecaaf3b558e6a66e7245d04cb981812ce06d023de868aa92b41 md5=26c3fddb07bfe3128d2e09e628eb33a0 sha256=af9cfdde06693ecaaf3b558e6a66e7245d04cb981812ce06d023de868aa92b41 +[ftp://ftp.gnu.org/gnu/binutils/binutils-2.16.tar.bz2] +md5=bcb9fabaf0eaf91bd38c4ee148658df8 +sha256=5645c3371aac47cbbcc1354eab10ec32777837d7cb4ba47b94c9043612b12f36 + [http://ftp.gnu.org/gnu/binutils/binutils-2.16.tar.bz2] md5=bcb9fabaf0eaf91bd38c4ee148658df8 sha256=5645c3371aac47cbbcc1354eab10ec32777837d7cb4ba47b94c9043612b12f36 @@ -1638,6 +1998,10 @@ sha256=487a33a452f0edcf1f8bb8fc23dff5c7a82edec3f3f8b65632b6c945e961ee9b md5=17a52219dee5a76c1a9d9b0bfd337d66 sha256=bd2ea10ffc2bf62a917b05f4fbe3d02212589c2bc177fa0c51a9c874d3da528a +[http://www.kegel.com/crosstool/crosstool-0.43/patches/binutils-2.16.1/binutils-skip-comments.patch] +md5=73e76bdd997fa945d71edcfbdd356c15 +sha256=18f72b922a9a346f6c43b20fd86eba76cfd27a8d118ea32fa879050ddebe0267 + [ftp://ftp.gnu.org/gnu/bison/bison-2.0.tar.gz] md5=c17f964fd5504b88b07a183420de25e3 sha256=31b816846903d319a6f6cd1c9aada5ff83914206cb7df69c235ae909785109a1 @@ -1654,6 +2018,14 @@ sha256=a226f7b37694669aa6efe6c30462e2d44f5881ca70604dac15c23fce66992872 md5=0e0dacaae704aed08a940389250e61e9 sha256=fd8a9e9e916314f9385f497d1f9b81d0885487f7741ad7be790972f44fc68b25 +[http://get.bitlbee.org/src/bitlbee-1.0.4.tar.gz] +md5=b92e301930e2322a86b73b1f6c857674 +sha256=6f23f37ea641d67e56c61b70d3ac7d404243929c393302ead4758d4ffe6d5b1c + +[http://xorg.freedesktop.org/releases/individual/app/bitmap-1.0.2.tar.bz2] +md5=78e8ab5c1830e2cdfbff7a952162a5a7 +sha256=83719927ac4309f42e3cadde125a52cfba2e9c951115ac4c017f292f6e4c14bc + [http://xorg.freedesktop.org/releases/individual/app/bitmap-1.0.3.tar.bz2] md5=98200c358e5401d648b980564d9ae39d sha256=863f673518af19f9ae35ee221b30bf8c8b695c76c543d18b3ac400a51b855c41 @@ -1666,10 +2038,22 @@ sha256=ac6a5c3f4aa88f39e8f04fe43f00972f0235674ac3edb994c70ac802a1ed0219 md5=5a6228512bcce7d9fabe8fc2d66269bf sha256=5cd1a5aeace83a9305f7221e9ec95127b5a26870c619fd00ae48f1962d59f48b +[http://heanet.dl.sourceforge.net/blackboxwm/blackbox-0.70.1.tar.gz] +md5=2d173b95ca5e64ef478c6a5d2deee9df +sha256=e394561d4426cf17e21eb5cc32e2972eb1af92d04a41808a41b1fb95320bd659 + +[http://www.blassic.org/bin/blassic-0.10.1.tgz] +md5=ca1339d71c8bf2779613afefc5384b0a +sha256=61e6e02a86d2da53e407b0a3724ed554fe2c85bab6775ae68e2e92a83e466406 + [ftp://ftp.debian.org/debian/pool/main/b/blktool/blktool_4.orig.tar.gz] md5=62edc09c9908107e69391c87f4f3fd40 sha256=b1e6d5912546d2a4b704ec65c2b9664aa3b4663e7d800e06803330335a2cb764 +[ftp://ftp.nl.debian.org/debian/pool/main/b/blktool/blktool_4.orig.tar.gz] +md5=62edc09c9908107e69391c87f4f3fd40 +sha256=b1e6d5912546d2a4b704ec65c2b9664aa3b4663e7d800e06803330335a2cb764 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/b/blktool/blktool_4.orig.tar.gz] md5=62edc09c9908107e69391c87f4f3fd40 sha256=b1e6d5912546d2a4b704ec65c2b9664aa3b4663e7d800e06803330335a2cb764 @@ -1698,10 +2082,18 @@ sha256=63eda6008b0c7a422e1b4fdda91b594d936188c29af49379447cb7fb445965d6 md5=174a1f2c9ffea150c7abe4becd99f2cd sha256=5980de18e195be06f99afbc76f3c72e7ef7dbba03f16814351d20b8a2531c474 +[http://www.alighieri.org/tools/bluesnarfer.tar.gz] +md5=ee1fcf2e12b74e8cf65f43cdd2c47b72 +sha256=5cff4c3269cf006bef9f66ec0a788139689425b96c6d7c60024f0841632b065b + [http://rtpnet.nerim.net/ipaq/patches/2.6.17-1/WIP/bluetooth.patch] md5=d76dbdbb59924ace618e48fbddbf3365 sha256=eaa1a9746a4613a75a9fe9fc0c54a724758b899c5a898b8b50578066d8a82ead +[http://www.kernel.org/pub/linux/bluetooth/bluez-4.7.tar.gz] +md5=2aa806940d2c841e57a9b2ab7302b750 +sha256=ed384dea4f5f21157758fcd7db64db19ce0b410509c26630706e4a3c779287a0 + [http://bluez.sourceforge.net/download/bluez-gnome-0.14.tar.gz] md5=7c4106e6932683c12c1e30bfb166c13d sha256=cdc6ceea80bb1f3d951deae17dbb2854a13c214ac5f452765650d59c9014ffe6 @@ -1838,6 +2230,10 @@ sha256=36a5772fc0241298b15db3dc4fb2552dcbb43edeffd6fcea4cd8818e97ec99fe md5=5d74113f5de3d11a400d1d6c118d41c0 sha256=7b458b6ca51c5f1c01ce328aedaab81e71028c796d37a953582e0deb55980c51 +[http://heanet.dl.sourceforge.net/beepmp/bmp-0.9.7.tar.gz] +md5=5d74113f5de3d11a400d1d6c118d41c0 +sha256=7b458b6ca51c5f1c01ce328aedaab81e71028c796d37a953582e0deb55980c51 + [http://www.boa.org/boa-0.94.13.tar.gz] md5=c8d6f46f9aa60909f171529068813fe0 sha256=e00bb50eb859c736f2afc913976e82e8fc68a1fbe34fa294e014aa95f4d87366 @@ -1846,6 +2242,10 @@ sha256=e00bb50eb859c736f2afc913976e82e8fc68a1fbe34fa294e014aa95f4d87366 md5=30bdb17e11fb416f9d3c6243e02f6e73 sha256=90ec337d482a0e766e1f24679324445057abfc2e01d9d2c1f561b40ac7f1915b +[http://heanet.dl.sourceforge.net/bochs/bochs-2.1.tar.gz] +md5=30bdb17e11fb416f9d3c6243e02f6e73 +sha256=90ec337d482a0e766e1f24679324445057abfc2e01d9d2c1f561b40ac7f1915b + [http://download.sourceforge.net/bogofilter/bogofilter-0.96.0.tar.bz2] md5=ca946b43212d8a2909e86f7140e535db sha256=7aeb2c4eb6ad6636631f85816b4f4d21ce811f763412530b70b2c85602e795d3 @@ -1854,6 +2254,10 @@ sha256=7aeb2c4eb6ad6636631f85816b4f4d21ce811f763412530b70b2c85602e795d3 md5=00b1eee7f98b68fa762c4efb3b34caa1 sha256=2d1c6b2cfdc17d6348f25f0830e1fa5c1c1dd3f014caff74005294c9ed6a0cbf +[http://www.coker.com.au/bonnie++/bonnie++-1.03a.tgz] +md5=00b1eee7f98b68fa762c4efb3b34caa1 +sha256=2d1c6b2cfdc17d6348f25f0830e1fa5c1c1dd3f014caff74005294c9ed6a0cbf + [http://www.coker.com.au/bonnie++/bonnie++-1.03c.tgz] md5=77a1ba78f37bdd7f024b67e1e36ad151 sha256=c674f1182f4c20f1e6d038feceb0a6617fc3e7658dfbbac89396043b49612a26 @@ -1862,26 +2266,54 @@ sha256=c674f1182f4c20f1e6d038feceb0a6617fc3e7658dfbbac89396043b49612a26 md5=b86fb56a824d4a3dedcbda12f8b1a2b3 sha256=6cdb945ac41b5ac78e05435e742b3a9928e5d1a5ff22728656deff29249edc66 +[http://heanet.dl.sourceforge.net/boost/boost-jam-3.1.11.tgz] +md5=b86fb56a824d4a3dedcbda12f8b1a2b3 +sha256=6cdb945ac41b5ac78e05435e742b3a9928e5d1a5ff22728656deff29249edc66 + [http://downloads.sourceforge.net/boost/boost-jam-3.1.16.tgz] md5=1fd96a38b1a33c365e8142eec53197e7 sha256=e681f9ba5d622e0c98c249d3847359a12292a7bcc5769f6e1a35e930f7306f25 +[http://heanet.dl.sourceforge.net/boost/boost-jam-3.1.16.tgz] +md5=1fd96a38b1a33c365e8142eec53197e7 +sha256=e681f9ba5d622e0c98c249d3847359a12292a7bcc5769f6e1a35e930f7306f25 + [http://downloads.sourceforge.net/boost/boost_1_33_0.tar.bz2] md5=43d87bbd827a8299f408df5efe5f0fd8 sha256=d6bcb5ad03da810c24703dde423b28aca49109591764dfe447e8a2ad5713be1d +[http://heanet.dl.sourceforge.net/boost/boost_1_33_0.tar.bz2] +md5=43d87bbd827a8299f408df5efe5f0fd8 +sha256=d6bcb5ad03da810c24703dde423b28aca49109591764dfe447e8a2ad5713be1d + [http://downloads.sourceforge.net/boost/boost_1_33_1.tar.bz2] md5=2b999b2fb7798e1737d1fff8fac602ef sha256=6232e93205acbc8c705f44f15977aae158550c99a384f41606cff26c16393be0 +[http://heanet.dl.sourceforge.net/boost/boost_1_33_1.tar.bz2] +md5=2b999b2fb7798e1737d1fff8fac602ef +sha256=6232e93205acbc8c705f44f15977aae158550c99a384f41606cff26c16393be0 + +[http://heanet.dl.sourceforge.net/boost/boost_1_34_1.tar.bz2] +md5=2d938467e8a448a2c9763e0a9f8ca7e5 +sha256=0f866c75b025a4f1340117a106595cc0675f48ba1e5a9b5c221ec7f19e96ec4c + [http://downloads.sourceforge.net/boost/boost_1_36_0.tar.bz2] md5=328bfec66c312150e4c2a78dcecb504b sha256=9a4a0cfbbd227c20a13519a2c41f2e707dc0d89e518a3c7bfcd381f7b7fbcdef +[http://heanet.dl.sourceforge.net/boost/boost_1_36_0.tar.bz2] +md5=328bfec66c312150e4c2a78dcecb504b +sha256=9a4a0cfbbd227c20a13519a2c41f2e707dc0d89e518a3c7bfcd381f7b7fbcdef + [http://downloads.sourceforge.net/asio/boost_asio_0_3_7.tar.bz2] md5=e006cde4b4a28cfce95e43710cd126a9 sha256=ade3663edc611d558f5a383abccd0a9ab87d6168f422ef4c2a38775e8b7ca575 +[http://heanet.dl.sourceforge.net/asio/boost_asio_0_3_7.tar.bz2] +md5=e006cde4b4a28cfce95e43710cd126a9 +sha256=ade3663edc611d558f5a383abccd0a9ab87d6168f422ef4c2a38775e8b7ca575 + [http://www.openezx.org/download/boot_usb-0.1.0.tar.bz2] md5=83687c351b2bee53f2d9f6418522afe0 sha256=ca9006b7e5b568a1da84d2b0af00642f143247959ff45f9d9f2e9bd0a33d6c37 @@ -1894,6 +2326,10 @@ sha256=e721987d891ce97ba7a4fc17115a1b48d7659b261d12e886b614999ab12246d2 md5=4be91177d19069e21beeb106f2f77dff sha256=7738399ecfcfb2242e9f99a316b13a5f59e89052de05074dbf705ccf4edc327d +[http://heanet.dl.sourceforge.net/bootchart/bootchart-0.9.tar.bz2] +md5=4be91177d19069e21beeb106f2f77dff +sha256=7738399ecfcfb2242e9f99a316b13a5f59e89052de05074dbf705ccf4edc327d + [http://www.cosmicpenguin.net/pub/bootmenu/bootmenu-0.6.tar.gz] md5=d7d8343f90a149c1604e5a14ea2f967d sha256=3ff618bcbf9926f356aec2a604b1f1d617e3f87ad545b1d96c066ed712675845 @@ -1914,14 +2350,30 @@ sha256=56e0abb8697b62949ab085419a3b6f83dd13db02d322759f4cd6c5e5286c2240 md5=e4a7b1a7df4417d82e3f0c4d600dd78e sha256=49020d3cc60b58a95fc94b5333c3c4a3b630c82287b08a3a94ad5a74cfe7bd75 +[http://heanet.dl.sourceforge.net/bridge/bridge-utils-0.9.7.tgz] +md5=e4a7b1a7df4417d82e3f0c4d600dd78e +sha256=49020d3cc60b58a95fc94b5333c3c4a3b630c82287b08a3a94ad5a74cfe7bd75 + [http://downloads.sourceforge.net/bridge/bridge-utils-1.0.4.tar.gz] md5=2cab42847c4654e58c4d0ba114bfe2c2 sha256=3fd05b5b77b9913b93036b48ed28d23d794e67660ba2d2ad63b0b7701b22181d +[http://heanet.dl.sourceforge.net/bridge/bridge-utils-1.0.4.tar.gz] +md5=2cab42847c4654e58c4d0ba114bfe2c2 +sha256=3fd05b5b77b9913b93036b48ed28d23d794e67660ba2d2ad63b0b7701b22181d + [http://downloads.sourceforge.net/bridge/bridge-utils-1.2.tar.gz] md5=1e6cff57ac90d7ab984d9512fdd9f2dd sha256=c93b9fab6b12a80bcf69114aab66d1d298455e9269c44f9e5f6430c142f9e349 +[http://heanet.dl.sourceforge.net/bridge/bridge-utils-1.2.tar.gz] +md5=1e6cff57ac90d7ab984d9512fdd9f2dd +sha256=c93b9fab6b12a80bcf69114aab66d1d298455e9269c44f9e5f6430c142f9e349 + +[http://www.ludd.luth.se/~torger/files/brutefir-1.0i.tar.gz] +md5=33fcf84a41d38f5aac24c57a66a2c3ee +sha256=e0f3988afb0a84a89f38153fd5617615e9bcf32bb747ee981c99c44d3c4236f6 + [http://www.holtmann.org/linux/bluetooth/bt950-0.1.tar.gz] md5=41d6a2dfe88693b5ec999d9ae4e97aac sha256=e3ff9a7f6dead90d55f1a4a2b1277e3bf5f0ec44ccb6ba8f375acbbedb1263c1 @@ -1938,10 +2390,18 @@ sha256=017b1b022118d7dad371d65ab4b6f4d6d7be99482a4af3facd9360ce55210780 md5=5a7760ed42d7a8b02cbfc77c4e97647c sha256=0b71cda89cee84cba28cac91e90a30b9648ce09a16e761a370fb171a7ca12657 +[http://heanet.dl.sourceforge.net/bluetooth-alsa/btsco-0.41.tar.gz] +md5=111efb0f7092c92c4dd376eec96aa2e7 +sha256=47d206a511347f0762f4fe02c71d5b3a6122dcf3947947723cdde1d91ebad01b + [http://downloads.sourceforge.net/bluetooth-alsa/btsco-0.42.tar.gz] md5=b0b6bc4d6df04468349f2ad320b05fa9 sha256=e4f5bc9be311a746bd37f5607d3c225462d7d9294e8b3c692f9a39717b65d843 +[http://heanet.dl.sourceforge.net/bluetooth-alsa/btsco-0.42.tar.gz] +md5=b0b6bc4d6df04468349f2ad320b05fa9 +sha256=e4f5bc9be311a746bd37f5607d3c225462d7d9294e8b3c692f9a39717b65d843 + [http://www.saftware.de/bluetooth/btxml.c] md5=c17e047d1a6a3f3188de929dc8582e01 sha256=58eb43e7e781a6b61e452fa36fa03198ef44c742da80c8a1b60be073e4ab949b @@ -2026,14 +2486,26 @@ sha256=9bfc34aa8104caba9c0f089aab908700ff4ad76c2b7ca6d5f4c93d842041b1a7 md5=b9d77c57bda2e019207a1874d9bb4dea sha256=c94dbfa293cbc61b8571d025e90fd1f06a34f8d4e5b11a59856bfc1f13014de3 +[http://heanet.dl.sourceforge.net/bvi/bvi-1.3.1.src.tar.gz] +md5=b9d77c57bda2e019207a1874d9bb4dea +sha256=c94dbfa293cbc61b8571d025e90fd1f06a34f8d4e5b11a59856bfc1f13014de3 + [http://downloads.sourceforge.net/bwmon/bwmon-1.3.tar.gz] md5=53c44b73aa67d5e0282adfe928f3ba44 sha256=624381208d0faae6c123bc6198a59d6c4316cd4fffb1ba5aca206374f5a42df6 +[http://heanet.dl.sourceforge.net/bwmon/bwmon-1.3.tar.gz] +md5=53c44b73aa67d5e0282adfe928f3ba44 +sha256=624381208d0faae6c123bc6198a59d6c4316cd4fffb1ba5aca206374f5a42df6 + [http://downloads.sourceforge.net/bzflag/bzflag-1.10.6.20040515.tar.bz2] md5=8e3e5fbef3cfa21079eb06269e6b3d8b sha256=0329e3d0a59e9cc167733ed2b89a0dc2249725642a065cfd385bf1206fe30b19 +[http://heanet.dl.sourceforge.net/bzflag/bzflag-1.10.6.20040515.tar.bz2] +md5=8e3e5fbef3cfa21079eb06269e6b3d8b +sha256=0329e3d0a59e9cc167733ed2b89a0dc2249725642a065cfd385bf1206fe30b19 + [ftp://sources.redhat.com/pub/bzip2/v102/bzip2-1.0.2.tar.gz] md5=ee76864958d568677f03db8afad92beb sha256=4b526afa73ca1ccd6f5f1f5fd23813f159f715c3d0e00688f1df54b51f443cdd @@ -2046,6 +2518,18 @@ sha256=f7bf5368309d76e5daf3a89d4d1bea688dac7780742e7a0ae1af19be9316fe22 md5=badb4563a02d4188b478df31fa1b657d sha256=5c4594f71eab62e24d12c67ae6a6aead306c537cf71e946c4e9fbebbe9786243 +[http://daniel.haxx.se/projects/c-ares/c-ares-1.5.2.tar.gz] +md5=23adb3729e09879cd2147b31ea5a986e +sha256=41f2df62e8f267cfd0ea9b9d29398f02ec3e22225f06f705e3fa8055370f94a4 + +[http://daniel.haxx.se/projects/c-ares/c-ares-1.5.3.tar.gz] +md5=ec202543a8cb86647f52e1ed4b5c0b37 +sha256=3037156096ea9fee7c40c771207ab8f21b862cb38b6ca62cc0ac464223f9b643 + +[http://c-nc.googlecode.com/files/c-nc-0.5.tar.gz] +md5=ae0d222169d11a8ca790148347ac7d74 +sha256=141730e220eff50b5b3e644211e22a08bc0aacaa6da6fa16f260c57114d0cfdc + [http://jalimo.evolvis.org/repository/sources/cacao-0.98+hg20071001.tar.bz2] md5=9ff10c929bd0cbf15909107c1aff7518 sha256=fdfdbdfdebefb89af560297796d4861ef4fc939e9dbe8500750909dea8662bee @@ -2122,6 +2606,18 @@ sha256=a137ccd4a6cde6c9e9553966534702d2e7f6f44c755dfe128d9fb26ed2697fe7 md5=eb7be3b85955a1bbe7a0154cbf2f70f9 sha256=7e6425b688a2d4bbeef0904cac52737b232d03fdc4d35866fd03359f2d5f1794 +[http://www.kegel.com/crosstool/crosstool-0.43/patches/binutils-2.16.1/callahan.patch] +md5=455b0813f42723b1bd6c4b9f10964f7b +sha256=31dbaa878b8e2d51109042c533f371c50aace927b45eda6c282fc632f3662620 + +[http://gpephone.linuxtogo.org/download/gpephone/vochistory-0.1/callhistory-0.1.tar.bz2] +md5=1a3ef24580667be35667b7eefd0f4efe +sha256=1e321eb315eb8c60d5d8ae745d3b48cfe5cb388e73b71760440b590be58c74c7 + +[http://devs.callweaver.org/release/callweaver-1.2.0-rc5.tar.bz2] +md5=cc99a6b12613bbdb132fb5c8c56069f1 +sha256=1d4ec44d6124776009ddc7bf08d5f24f26a9b6814835456ab0b3ddbfc111b527 + [http://linuxbrit.co.uk/downloads/camE-1.7.tar.gz] md5=afdab327ca50ee15197d2d9e19491df7 sha256=e29b73e0bf763dead4a6ed80e648aaaea683f1a5865e5c21fed31fb9428e9430 @@ -2130,14 +2626,26 @@ sha256=e29b73e0bf763dead4a6ed80e648aaaea683f1a5865e5c21fed31fb9428e9430 md5=538e8d4691062524c4181da487d83250 sha256=9caa3e654af03e55582dd515bfcc9bf5aa93c9d22842af16a87a9a226ec581ed +[http://heanet.dl.sourceforge.net/cameraassistant/camera-assistant_0.2.0.tar.gz] +md5=538e8d4691062524c4181da487d83250 +sha256=9caa3e654af03e55582dd515bfcc9bf5aa93c9d22842af16a87a9a226ec581ed + [http://downloads.sourceforge.net/camsource/camsource-0.7.0.tar.bz2] md5=ffd824f13f99011984399fc3b7526c71 sha256=837ba51635e01209dc2886491afbc2e97629bfaf32e73566a1862ea0dc090756 +[http://heanet.dl.sourceforge.net/camsource/camsource-0.7.0.tar.bz2] +md5=ffd824f13f99011984399fc3b7526c71 +sha256=837ba51635e01209dc2886491afbc2e97629bfaf32e73566a1862ea0dc090756 + [http://downloads.sourceforge.net/cbrpager/cbrpager-0.9.14.tar.gz] md5=0ce88fc52025b44812d090d10244b2a4 sha256=9c86a5668a2834f02ec44967737d6341c575e2a1deec76944f47be0292a3cfd7 +[http://heanet.dl.sourceforge.net/cbrpager/cbrpager-0.9.14.tar.gz] +md5=0ce88fc52025b44812d090d10244b2a4 +sha256=9c86a5668a2834f02ec44967737d6341c575e2a1deec76944f47be0292a3cfd7 + [http://samba.org/ftp/ccache/ccache-2.4.tar.gz] md5=73c1ed1e767c1752dd0f548ec1e66ce7 sha256=435f862ca5168c346f5aa9e242174bbf19a5abcaeecfceeac2f194558827aaa0 @@ -2150,6 +2658,10 @@ sha256=b7fa79d5059b2fab03d7eb064b57f0fe3175b30fb1cc30f232a323d1887bc096 md5=7b3d8bd3cbb27d7b9debe5c3398f9f7f sha256=015c4237a532b873990aeeecdf351138ce5a811d062d6db73c611a4985de5435 +[http://heanet.dl.sourceforge.net/cccc/cccc-3.pre84.tar.gz] +md5=7b3d8bd3cbb27d7b9debe5c3398f9f7f +sha256=015c4237a532b873990aeeecdf351138ce5a811d062d6db73c611a4985de5435 + [http://openembedded.org/dl/ccdv.c] md5=b8c51a2e3cccb381428426c0fc543244 sha256=f1e44d628cc4cbac192bf33f492ad8d1e1988cae576924128df36f3638e9a485 @@ -2162,6 +2674,10 @@ sha256=8cb892ef36321069eff7826aa732f1481715fe54bf96346fae1d25565b44c536 md5=c589fff48ce541f26b394c9d82ccbead sha256=2dec31ba4a176c921a653c0949a53c2d3497e047737724350897fd2534db18fe +[ftp://invisible-island.net/cdk/cdk-5.0-20060507.tgz] +md5=0ec2460a4484d5f5595d8faca61bc9c5 +sha256=e823bfcce52916727cb23d6d549a64347c45c364b3c628d6a352c407fce8f4b4 + [http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-alpha9.8.src.tgz] md5=7218e778b5970a86c958e597f952f193 sha256=1b79fae1aedc692f87d1344410f5c6b666961afccdc78bc5c4c257c450dfa008 @@ -2174,10 +2690,18 @@ sha256=728b6175069a77c4d7d92ae60108cbda81fbbf7bc7aa02e25153ccf2092f6c22 md5=cd7ea4ef72a08b388523c528d81ba3ca sha256=f33cbb551e494747b76bfbeba3954b4839fe7c849f200746fd7dc21bd665aa56 +[http://heanet.dl.sourceforge.net/cdstatus/cdstatus-0.96.05.tar.gz] +md5=cd7ea4ef72a08b388523c528d81ba3ca +sha256=f33cbb551e494747b76bfbeba3954b4839fe7c849f200746fd7dc21bd665aa56 + [http://hinterhof.net/cdtool/dist/cdtool-2.1.8.tar.gz] md5=7b19b6f68d2c648296378b784d5f7681 sha256=73de81ea2de2eae64b888e1b2739ef643ccea13c79790569f8e6278369976a21 +[http://pub.risujin.org/cellwriter/cellwriter-1.3.3.tar.gz] +md5=09b2019e926d5ef42d52edb2dd33ceae +sha256=3fb7c11ec5d802338a0bf522b11702c37820597c9a2c36f89b52872c6571e602 + [http://centericq.de/archive/source/releases/centericq-4.11.0.tar.bz2] md5=bed5e7eeb60b5ac0045f201f13130964 sha256=4f0f769a6e1cc7d76b527829deef34861ed8f79ae07e29d49566df3594308380 @@ -2190,6 +2714,10 @@ sha256=814f81d23596410c2ca7de314db8fcc795c4abd3b00a8fe305b9026415553283 md5=955594716ba30b39f6634e9043e78c66 sha256=0736510574fa44223bf01f526f06478edbe39b5f2ff3387dcdd0dba649208871 +[http://www.centerim.org/download/releases/centerim-4.22.5.tar.gz] +md5=9bbbdb34ab678d29387171139ae835e1 +sha256=c68abb59043602a2b28fb55d45361d0b22fc1566848cc0c255580914df7b3eb3 + [http://linuxsh.free.fr/tools/cetools-0.3.tar.gz] md5=58e8706e6d858e48d317cadf550c1224 sha256=dd74c8f27c7b3ff4c7320803674e2446afce93880f84d96dfb142a9fa73db940 @@ -2214,6 +2742,10 @@ sha256=26991b827f96a49ebd164409852d781b0a74a765c385c56c21a7ae44d030ab42 md5=9a4d5665b8be07513f5ac4e6eec537e6 sha256=fbd7a0595eba5cf0cb168d9893e883f5cc7a68a7d6fec23cb3688508b247fa22 +[http://heanet.dl.sourceforge.net/check/check-0.9.2.tar.gz] +md5=9a4d5665b8be07513f5ac4e6eec537e6 +sha256=fbd7a0595eba5cf0cb168d9893e883f5cc7a68a7d6fec23cb3688508b247fa22 + [http://handhelds.org/~zecke/oe_packages/checkers_V1.0.5ern.tar.gz] md5=82b08b1980ec6fbfc83b4dc0e2df10f7 sha256=543435cb0988acc90a6e651e424eb331aba3f73361036d7af458bc1233973199 @@ -2234,6 +2766,10 @@ sha256=e9c6feee2a626a38cd69c726ed31ffbbf55d288386f50fe6f90fa63de410d67a md5=332edae079bb34d815369f4ba5181983 sha256=32385c5393c7376035f911f3e887351b1ce8fb6e56498cc4258815bc6db06326 +[http://chicken.wiki.br/releases/3.3.0/chicken-3.3.0.tar.gz] +md5=835401781fb606741ba3606fa3e89b78 +sha256=5ce2519bac9956de5700a5777b2bbc2cd89202ef2d2252a40a0d1e8c9854bec6 + [http://www.chillispot.org/download/chillispot-0.98.tar.gz] md5=4bcf48ec7a94f28faee8b7dc7a0dd97a sha256=bace8a6a0b27d09983a2c509d6e6bf8ab786935e269036f14dc158505feba602 @@ -2246,6 +2782,14 @@ sha256=395d082c2355369f958d8f12583f07bbac6c00f901266592959bfba09b825bb7 md5=2282c228ab3776c828e79b7b51f2ccc1 sha256=36645bb9e89ba63c303591a4c365f1819a1dd435d46f227140640f4089bfe6f0 +[http://ftp.debian.org/debian/pool/main/c/chrpath/chrpath_0.13.orig.tar.gz] +md5=b73072a8fbba277558c50364b65bb407 +sha256=c1aa5342eac0daad81b8da05aa282ae1ccd6f68bc75ca94064304f541eed071b + +[http://files.chumby.com/resources/chumby_fw_1_2.zip] +md5=87a60c6fc4f249605940fed86a141c54 +sha256=659a581cfb851c3469671fe8600d39b23024bcc564a24ebcc89045207f36b0fc + [http://us1.samba.org/samba/ftp/cifs-cvs/cifs-1.20c-2.4.tar.gz] md5=f3b96692f679239488de30f2bd896825 sha256=885eda0bbe68018b5770437e542473508f88205bb09cbfde7fc6e0c31f5a6f83 @@ -2266,6 +2810,18 @@ sha256=cc7f90983aa61b3d893c3311e3f832c5faa204467143cff597ad80bf8ad24daa md5=34a9d58cf5bcb04dbe3eb32b5367a3f8 sha256=702cb5928bff3d0e647a4a6b505d434e3a0f10f2af74bddac5239a200b92d1e2 +[http://heanet.dl.sourceforge.net/clamav/clamav-0.90.2.tar.gz] +md5=39d1f07a399b551b55096b6ec7325c33 +sha256=30df6a5d4a591dcd4acd7d4cce54dcfd260280fce6bbc9d19d240967bcdabbfa + +[http://heanet.dl.sourceforge.net/clamav/clamav-0.90.3.tar.gz] +md5=d42ccf7a32daeb7c7cc3c8c23a7793ea +sha256=939913d15ad0dc583ba609274ae61a948f4fa18b848bd503d958feacdaab54a4 + +[http://heanet.dl.sourceforge.net/clamav/clamav-0.91.1.tar.gz] +md5=60152bf1e24b3fbdf0473794199e5215 +sha256=f98edecae40473c142fe49a0e02f5ff7fb28d778c4bd510dad747d208d20cb00 + [http://memberwebs.com/nielsen/software/clamsmtp/clamsmtp-1.8.tar.gz] md5=04da6aab94934641fcf9e7a7598346fb sha256=c09b24c82f858845e235df4c8b2639240a7b786de66b595e351be86ab60663a5 @@ -2302,6 +2858,10 @@ sha256=4f2824c42062dea269e489c1acb2769c015bf78cdaa929ee75441d412f10a03b md5=ffa9e9cac31c5acbf0ea9eff9efa923d sha256=df2d093612abd23fe67e9409d89bb2a8e79b1664fe2b2da40e1c8ed693e32945 +[ftp://ftp.gnu.org/gnu/classpath/classpath-0.95.tar.gz] +md5=08638bb9221460cc311a1c5508083ed8 +sha256=5c274a7741c35c35529f5641e644f61431143dac8e7724ac994d1f20c0d9cce0 + [ftp://ftp.gnu.org/gnu/classpath/classpath-0.96.1.tar.gz] md5=a2ffb40f13fc76c2dda8f8311b30add9 sha256=ee464d20ef9df2196e238302d5d06954cb96a11e73c4c44c6ef376859de2a078 @@ -2326,14 +2886,26 @@ sha256=d04db59df8b013651721312ed167df95d47c88d55eac0eb5b7950d6958f3636e md5=646fea69bfa82be5f507e72e055957b6 sha256=16d4a9ef3a2c62f879c688b7949f4d0b834b26c9905d16fee7d76432df29d8fd -[http://downloads.sourceforge.net/clearlooks/clearlooks-0.6.2.tar.bz2] -md5=451ef33d1bffa261c5cbe01182199f97 +[http://heanet.dl.sourceforge.net/sylpheed-claws/claws-mail-3.3.0.tar.bz2] +md5=646fea69bfa82be5f507e72e055957b6 +sha256=16d4a9ef3a2c62f879c688b7949f4d0b834b26c9905d16fee7d76432df29d8fd + +[http://downloads.sourceforge.net/clearlooks/clearlooks-0.6.2.tar.bz2] +md5=451ef33d1bffa261c5cbe01182199f97 +sha256=be080113c9e9d137ee14eaf7f731c5ae58d24924748aaa725d0f061d59265f3b + +[http://heanet.dl.sourceforge.net/clearlooks/clearlooks-0.6.2.tar.bz2] +md5=451ef33d1bffa261c5cbe01182199f97 sha256=be080113c9e9d137ee14eaf7f731c5ae58d24924748aaa725d0f061d59265f3b [http://www.clearsilver.net/downloads/clearsilver-0.10.3.tar.gz] md5=ff4104b0e58bca1b61d528edbd902769 sha256=71d8c6459a4be1912dbc445e2e9d46303be6623cea51563c21abe39c8b5b0bd2 +[http://heanet.dl.sourceforge.net/clish/clish-0.7.1.tar.gz] +md5=27d9b5c12f7d3a1877aeb34f2048e7fa +sha256=5c7f2bf864b34d4bb17d7d046eca4f07f8174ce4ca3a73339b956fedd95c9752 + [http://my-zaurus.narod.ru/downloads/clockapplet.tar.gz] md5=7265673901eacb0b72a11cd6732cc698 sha256=80fd209d065887729fdeb81f5a91638626e7ed31dabab40c446bd12042df9057 @@ -2342,6 +2914,14 @@ sha256=80fd209d065887729fdeb81f5a91638626e7ed31dabab40c446bd12042df9057 md5=90b650f1f5c9f39f4d77f73aca3c53be sha256=a69fd566af24b85a10c5ecd957a85b7f5eb1c56995d2b999219b52f353ea1de9 +[http://heanet.dl.sourceforge.net/clucene/clucene-core-0.9.21.tar.bz2] +md5=181cf9a827fd072717d9b09d1a1bda74 +sha256=ef9af373ea953362e42c9a3bdcbf8ef317bca4a407ffab9fe36c1b2807680630 + +[http://heanet.dl.sourceforge.net/clucene/clucene-core-0.9.21b.tar.bz2] +md5=ba1a8f764a2ca19c66ad907dddd88352 +sha256=202ee45af747f18642ae0a088d7c4553521714a511a1a9ec99b8144cf9928317 + [http://www.kokkinizita.net/linuxaudio/downloads/clxclient-3.6.1.tar.bz2] md5=bd47f80a855d3203fcf10365e79d85e4 sha256=9de3e621d7acabb161b5926565a9c9373fedbc632222018f692346790149545d @@ -2390,6 +2970,14 @@ sha256=19681eedbb924eb253308befe12938ab53c7cb3e74fc3eded000d087d322b403 md5=4cd3ce38efbd27c6cf4223f0ced2a5b5 sha256=21341f1900b0fe919a2ad057c334f5d7172588e4262b3d1b0904da03a9db0cff +[ftp://ftp.logilab.fr/pub/common/common-0.9.3.tar.gz] +md5=bfbe68606f2448b58836fb79b2582e71 +sha256=6794620f5663442246f6ae1bb6695fd120a1a6024c455da457ae4037b3ee6826 + +[http://amelang.net/composite_pixbuf.c] +md5=97edf3cce3353b6cb5f822442a83aa5e +sha256=bd6f9e5dc0a89e9918f78a550f6e688480f044cec2e8674d34c7c6212831d6bd + [http://xlibs.freedesktop.org/release/compositeext-2.0.tar.bz2] md5=315ce9665059f1b2f4067cc8bd7ecf44 sha256=a6d9b1e4e8720941e7fa7e68373a9a211c16bad0eb449438e0b8c6093190cab6 @@ -2430,6 +3018,10 @@ sha256=cb007ea21edb0e11f9e3a8a72c1623ce2718c49b7ddcabe6b815504b13d47c56 md5=bf21564fc38b3af853ef724babddbacd sha256=eea6b441672dacd251079fc85ed322e196282e0e66c16303ec64c3a2b1c126c2 +[http://heanet.dl.sourceforge.net/lct/console-tools-0.3.2.tar.gz] +md5=bf21564fc38b3af853ef724babddbacd +sha256=eea6b441672dacd251079fc85ed322e196282e0e66c16303ec64c3a2b1c126c2 + [http://qa.debian.org/watch/sf.php/lct/console-tools-0.3.2.tar.gz] md5=bf21564fc38b3af853ef724babddbacd sha256=eea6b441672dacd251079fc85ed322e196282e0e66c16303ec64c3a2b1c126c2 @@ -2438,6 +3030,10 @@ sha256=eea6b441672dacd251079fc85ed322e196282e0e66c16303ec64c3a2b1c126c2 md5=17fd01667356cf4d9298c46ed6f88a4f sha256=e77e1cb6cdeb30367f75accf62a7b94598ece4400c42eb9d8181b7da4fc87f82 +[http://xorg.freedesktop.org/releases/individual/app/constype-1.0.1.tar.bz2] +md5=9f99bee77ff3c565b4898663810fbef5 +sha256=11403054cb407cdf31da48216f55d1b5943798cb442bcab69faa0a3d7d167541 + [http://projects.o-hand.com/sources/contacts/contacts-0.4.tar.gz] md5=7d72fac4f0d6e1c771c37e4e80093e70 sha256=e090ab64a02e4918f78312df19715bc2008aae7d44f6b0913c2a46a13d1881c4 @@ -2486,6 +3082,10 @@ sha256=0d0fcbb41cba4a81c4ab494459472086f377f9edb78a2e2238ed19b58956b0be md5=91dd4c6b5650aef03b293aa9a6f54d49 sha256=db3782e57882a36ac42b69097a817dc3e2a4031cacb815a4e4a1115da108e519 +[http://heanet.dl.sourceforge.net/corsair/corsair-0.2.6.tar.gz] +md5=91dd4c6b5650aef03b293aa9a6f54d49 +sha256=db3782e57882a36ac42b69097a817dc3e2a4031cacb815a4e4a1115da108e519 + [ftp://ftp.gnu.org/gnu/cpio/cpio-2.5.tar.gz] md5=e02859af1bbbbd73fcbf757acb57e0a4 sha256=dbf79293d0cafa7d7a3a266c2b0b90c00d556e7b3185d4243c74153291da24c8 @@ -2494,6 +3094,10 @@ sha256=dbf79293d0cafa7d7a3a266c2b0b90c00d556e7b3185d4243c74153291da24c8 md5=0bc06cd219410f7d4f6bbfc9bdd7c824 sha256=71b626958e3d8927d236f462b2becd192a113d1d6d38b8d567bdc181b5069ccf +[http://heanet.dl.sourceforge.net/cppunit/cppunit-1.10.2.tar.gz] +md5=0bc06cd219410f7d4f6bbfc9bdd7c824 +sha256=71b626958e3d8927d236f462b2becd192a113d1d6d38b8d567bdc181b5069ccf + [http://pages.sbcglobal.net/redelm/cpuburn_1_4_tar.gz] md5=f9bb5ff68afb6ccfca11718c90bcab68 sha256=1b2a1672f455545a28d0f038737e792e8c3b97789f2029f765847fc2a807244a @@ -2502,6 +3106,10 @@ sha256=1b2a1672f455545a28d0f038737e792e8c3b97789f2029f765847fc2a807244a md5=d06dcf3e3b2f8eb25216431ec055aa4b sha256=c64eb1923366934357c917ff9a94237a8157de24a1fd96e0f91c4d5dfad83026 +[http://heanet.dl.sourceforge.net/cpufreqd/cpufreqd-1.1.2.tar.gz] +md5=d06dcf3e3b2f8eb25216431ec055aa4b +sha256=c64eb1923366934357c917ff9a94237a8157de24a1fd96e0f91c4d5dfad83026 + [http://www8.in.tum.de/~schneifa/group/sources/cpusage-0.1.tar.gz] md5=f779140995280de32817ec4a133f4d60 sha256=feb0b8c73c771390a8771fc3a4ed01104c008bcd278a267eb00263794956778c @@ -2518,6 +3126,10 @@ sha256=93da5b3a30c5c7c06583635e5b93e9f04f687c01a044779872a29050c4f860e8 md5=d3912b9f7bf745fbfea68f6a9b9de30f sha256=133caca2c4e7c64106555154ee0ff693f5cf5beb9421ce2eb86baee997d22368 +[http://heanet.dl.sourceforge.net/cramfs/cramfs-1.1.tar.gz] +md5=d3912b9f7bf745fbfea68f6a9b9de30f +sha256=133caca2c4e7c64106555154ee0ff693f5cf5beb9421ce2eb86baee997d22368 + [http://linux.duke.edu/projects/metadata/generate/createrepo-0.9.tar.gz] md5=0a1b1e67e3c61cda41b41a8886a90e78 sha256=21786abe80f2c06eb9bef107d8c79f50a088a894cddf793112ce0417e83be531 @@ -2530,6 +3142,10 @@ sha256=95784b14539dec30565b0bf1da8a3b1d51636142bbf1207c6d87256c92172aa7 md5=d9f12c3edfca4a4918b8d299cce5f2b4 sha256=99602e966e12347f2728b2153537a14195b06fe130d047e8d91b4f72b24866a0 +[http://www.kegel.com/crosstool/crosstool-0.43/patches/binutils-2.16.1/cross-gprof.patch] +md5=9e5f053de38f3342a426dd580d7ec331 +sha256=7f8105cf71d2a5c7efa0f9e4b9cc61ac5f68a5b57f0daefb4b51b657f0eeac92 + [http://handhelds.org/~zecke/oe_packages/crossword_V0.0.3.tar.gz] md5=659d5c53cbace53f44fe7acb666bfe33 sha256=8b718c344cf19417447cbc16867d2e04434654c13b330598b96720ead146b961 @@ -2542,6 +3158,10 @@ sha256=4bab529afa00cafde3bc5df2769578c88438f80c5152d4257cd0e86986f95bc4 md5=beb6032a301bb11524aec74bfb5e4840 sha256=be49cda0a9d33add89cabe0dfcef436a2863a7b0b833767875e0b7a6e8b4c4d1 +[http://heanet.dl.sourceforge.net/cscope/cscope-15.5.tar.gz] +md5=beb6032a301bb11524aec74bfb5e4840 +sha256=be49cda0a9d33add89cabe0dfcef436a2863a7b0b833767875e0b7a6e8b4c4d1 + [http://svn.o-hand.com/repos/web/trunk/patches/css-media.patch] md5=d3fe4cda3545f3e4718f1acc186608ab sha256=3aefaa17ffa38143bf5df1161c51ab402d35bfbee41ab4643c313edf569165d5 @@ -2554,14 +3174,26 @@ sha256=df5cca50a8f95333505d7920929fea251daea3be25be6834a1c50a742d9eb674 md5=a84124caadd4103270e0b84596ecfe83 sha256=7b83689a47efa627d4b5670317125de3d87ae9278cf69c3ac7e3b7be646e715d +[http://heanet.dl.sourceforge.net/ctags/ctags-5.5.4.tar.gz] +md5=a84124caadd4103270e0b84596ecfe83 +sha256=7b83689a47efa627d4b5670317125de3d87ae9278cf69c3ac7e3b7be646e715d + [http://downloads.sourceforge.net/ctorrent/ctorrent-1.3.4.tar.bz2] md5=823010ec78215d476537c9eba9381cdd sha256=7e2ef5d0656ac23cecd03374d9b00291a55b274c972adfe94d6f41ae3ba60c73 +[http://heanet.dl.sourceforge.net/ctorrent/ctorrent-1.3.4.tar.bz2] +md5=823010ec78215d476537c9eba9381cdd +sha256=7e2ef5d0656ac23cecd03374d9b00291a55b274c972adfe94d6f41ae3ba60c73 + [http://downloads.sourceforge.net/dtorrent/ctorrent-dnh3.3.1.tar.gz] md5=9bfe42c2dd6a6aabd545fe332bc23e87 sha256=e65d9c7a4da499314126d979a0a79ce5123e0f969c786bfddcee261f14cb648b +[http://heanet.dl.sourceforge.net/dtorrent/ctorrent-dnh3.3.1.tar.gz] +md5=9bfe42c2dd6a6aabd545fe332bc23e87 +sha256=e65d9c7a4da499314126d979a0a79ce5123e0f969c786bfddcee261f14cb648b + [http://sources.nslu2-linux.org/sources/ctrlproxy-2.6.2.tar.gz] md5=37570a7f018f41d701cd29cd95b45241 sha256=c8c42cc08b9b462f9c497441dacde1eac71fd717195ddfbeac68141bd0ad95a8 @@ -2570,6 +3202,10 @@ sha256=c8c42cc08b9b462f9c497441dacde1eac71fd717195ddfbeac68141bd0ad95a8 md5=a13e49376594c51fbfa74067f8d14d45 sha256=e3ed263ee98971674f3f3cf55e42b7f2e79755b0f931f8a105676108185e8010 +[http://www.kflog.org/fileadmin/user_upload/cumulus_snapshots/cumulus-snapshot.tbz] +md5=c5b0ca7f2164e47ef72889baf23690f6 +sha256=e862f8327a3ba42c7bc756fe846764754b3dab76d8ccbedd5a195b582070b791 + [ftp://ftp3.easysw.com/pub/cups/1.1.23/cups-1.1.23-source.tar.bz2] md5=4ce09b1dce09b6b9398af0daae9adf63 sha256=87da0f7b1e03236e183045f1e787957132658ead56c4b0f80ac7f86c1574a85e @@ -2622,6 +3258,10 @@ sha256=b1f47a0177a5b13d317ab1f6570510502739909ede550e7da08ba814c3c73ae8 md5=c299c5e0f20f633791b4c4f7ced4effe sha256=a0e28b019f022942650ffa4bdf46e4c09bd8ec18e6ca5f08ad273668115f51f7 +[http://heanet.dl.sourceforge.net/curlftpfs/curlftpfs-0.9.2.tar.gz] +md5=b452123f755114cd4461d56c648d9f12 +sha256=4eb44739c7078ba0edde177bdd266c4cfb7c621075f47f64c85a06b12b3c6958 + [http://www.blackie.dk/Zaurus/custominput/custominput-1.1.0.tgz] md5=7a0f97339a1caed5695715581306b83e sha256=9af88287720701691b58ee13898d248dd9afc63d9c593eb79c1149cc2a7f4e92 @@ -2706,14 +3346,26 @@ sha256=95227e87d030bffd5af9d04a89ed828586a3125b81bf086b1fae03579aebe44e md5=c17d450b655bf4503c22f9f07bd9b087 sha256=8e230254e8a1c426ddb6a78de62de931c0c8cfe0767686b7a10a5031c4340826 +[http://heanet.dl.sourceforge.net/dav/davfs2-0.2.7.tar.gz] +md5=c17d450b655bf4503c22f9f07bd9b087 +sha256=8e230254e8a1c426ddb6a78de62de931c0c8cfe0767686b7a10a5031c4340826 + [http://downloads.sourceforge.net/dav/davfs2-0.2.8.tar.gz] md5=586bdead055993a4a06bdeee5449310d sha256=04f98a83e6339f490046d908c0fcca1275e79462f11592187eb23c7368a172f1 +[http://heanet.dl.sourceforge.net/dav/davfs2-0.2.8.tar.gz] +md5=586bdead055993a4a06bdeee5449310d +sha256=04f98a83e6339f490046d908c0fcca1275e79462f11592187eb23c7368a172f1 + [ftp://sleepycat1.inetu.net/releases/db-3.2.9.tar.gz] md5=4df5c7051b11411e0a970f6c91613942 sha256=3eccaec87bca4ca0f5728cf4579650da9d12e331187f1e98321e5c9e9e04b108 +[http://download.oracle.com/berkeley-db/db-3.2.9.tar.gz] +md5=4df5c7051b11411e0a970f6c91613942 +sha256=3eccaec87bca4ca0f5728cf4579650da9d12e331187f1e98321e5c9e9e04b108 + [http://download.oracle.com/berkeley-db/db-4.2.52.tar.gz] md5=8b5cff6eb83972afdd8e0b821703c33c sha256=f4bddd8d1b4cde0daf5e13e3493ed62a25b736b0bf258e1d929e47bc6a82a28c @@ -2742,6 +3394,10 @@ sha256=6001893f34e68a3cfeb5d424e1f2bfef005df96a22d86f35dc770c5bccf3aa8a md5=dca09e2949616471669320e3429a49ef sha256=62c8c36df69c48bed9e8a1406faa5df5d057876b34fc110492c87260a70692c6 +[http://heanet.dl.sourceforge.net/dbh/dbh_1.0-18.tar.bz2] +md5=dca09e2949616471669320e3429a49ef +sha256=62c8c36df69c48bed9e8a1406faa5df5d057876b34fc110492c87260a70692c6 + [http://qa.debian.org/watch/sf.php/dbh/dbh_1.0-18.tar.bz2] md5=dca09e2949616471669320e3429a49ef sha256=62c8c36df69c48bed9e8a1406faa5df5d057876b34fc110492c87260a70692c6 @@ -2762,6 +3418,10 @@ sha256=8a004125f58512a69575f21f105aead0d1217fce9cb54cbafeac06b4be28c6ca md5=ce328423db5743fe9006d39113b5324d sha256=4be82f4ef8f4657f997a44b3daddba3f95dbb6518487509767d803dd72bf529e +[http://freedesktop.org/software/dbus/releases/dbus/dbus-1.0.3.tar.gz] +md5=ce328423db5743fe9006d39113b5324d +sha256=4be82f4ef8f4657f997a44b3daddba3f95dbb6518487509767d803dd72bf529e + [http://dbus.freedesktop.org/releases/dbus/dbus-1.1.1.tar.gz] md5=545ce6d92cb1ed63a54b39d15aed36a6 sha256=ec115ffefe0d1b6aa94bebd536f67b0f6fc0405bdcfb4fb1e481d2f1a8b20a91 @@ -2790,6 +3450,18 @@ sha256=e870d8cd619834eda066e37fe69b441d629f9ad3a871ef2854fbbcd753b3abe2 md5=d3b716a7e798faa1c6a867675f00306a sha256=8bc083faaf3efdd444a8a44bbcbfea501a7b547736fda3c2d83bfdc9b5b672a3 +[http://dbus.freedesktop.org/releases/dbus-java/dbus-java-2.3.tar.gz] +md5=eeec2c3ae0a857c75fd3ac96e0612921 +sha256=6ca8464a04d08232968d1ffca3d3f777f55dc39326040c487f50f52d4272e820 + +[http://dbus.freedesktop.org/releases/dbus-java/dbus-java-2.4.tar.gz] +md5=cd675550676b84601cd44f39246c4ea9 +sha256=24f31eac8f193771f70134ff7d3c5a7334250f9b50f0a476d12221be4773db32 + +[http://dbus.freedesktop.org/releases/dbus-java/dbus-java-2.5.tar.gz] +md5=0fa50b9d2bf5cb2f54e293acca9eb807 +sha256=2b2001aa2fccc6cc3eedfeb35d2c7b13e52811c27820f27f0f6ce0e8f547ad65 + [http://dbus.freedesktop.org/releases/dbus-python/dbus-python-0.71.tar.gz] md5=ee893bc87b784a8c2285f5041b5e7033 sha256=4af7a60f65cb02dabbcdf0cb6ca6f659932eb13c2533f6e1dbdab6e3700a2c57 @@ -2818,6 +3490,10 @@ sha256=bd7ce3b854678209e8624698a4000d3e5337339c3825c58a4b3a0a2fbf1a7819 md5=42a3a420e492c0111adc58ac08ff6d04 sha256=28be7102bde3bc9b39be2732b89da9fbab79b7ac3898075ed414a45258bb3026 +[http://heanet.dl.sourceforge.net/ddclient/ddclient-3.6.3.tar.bz2] +md5=42a3a420e492c0111adc58ac08ff6d04 +sha256=28be7102bde3bc9b39be2732b89da9fbab79b7ac3898075ed414a45258bb3026 + [ftp://ftp.debian.org/debian/pool/main/d/debianutils/debianutils_2.17.3.tar.gz] md5=cc768faa584f6c31cc1e0a959a3b8c0c sha256=46c0991b71d1991aa2f90d6816d9efb737fc9f9b99713174fcdf8d323727a11c @@ -2830,6 +3506,10 @@ sha256=d0fbedef20fb0843318d60551023631176b27ceb1e11de7468a971770d0e048d md5=ff871dff0b3e8a11cd5c54478f11073f sha256=243642a1c3f4b6fd00125f5772ac5c8e4d0bb6586f5abb05829ead4b83ad5233 +[http://heanet.dl.sourceforge.net/dejavu/dejavu-fonts-ttf-2.23.tar.bz2] +md5=ff871dff0b3e8a11cd5c54478f11073f +sha256=243642a1c3f4b6fd00125f5772ac5c8e4d0bb6586f5abb05829ead4b83ad5233 + [http://qa.debian.org/watch/sf.php/dejavu/dejavu-fonts-ttf-2.23.tar.bz2] md5=ff871dff0b3e8a11cd5c54478f11073f sha256=243642a1c3f4b6fd00125f5772ac5c8e4d0bb6586f5abb05829ead4b83ad5233 @@ -2858,6 +3538,10 @@ sha256=c463d851fb057acd53800cfc4f8ae39dcbcad7f03b4bd547288e95b6de53b022 md5=40a93def0f37f1577c5edc638fcb35a5 sha256=6e932e73818697ea9ec8909bed535a87ba34651031bbbedb63a42e4cdc423284 +[http://freedesktop.org/Software/desktop-file-utils/releases/desktop-file-utils-0.6.tar.gz] +md5=0d6b6d4fa861f73e0b4225e93077578f +sha256=64c05a48e91850627cfaa7314d4b4b847547bc4333fa9345994fa49c79276f3d + [http://gpe.linuxtogo.org/download/source/detect-stylus-0.10.tar.gz] md5=18934b6796441642847ce796bee3b23a sha256=9ae500ffb1af6e29da00114bad18b776c2f24872c254ee62f6283948beaefc15 @@ -2882,14 +3566,26 @@ sha256=4e0c1726f9c565deec6d6af9eebda47ca6dea473f3280cc89beb321ae33ff962 md5=3f421c80bce00b8bfe68ef9f453932b7 sha256=25380c3722c75b993d530c09d48f5941c0a640a4382f6a0e1878c4ee8459dd16 +[http://heanet.dl.sourceforge.net/devio/devio-1.0.tar.gz] +md5=3f421c80bce00b8bfe68ef9f453932b7 +sha256=25380c3722c75b993d530c09d48f5941c0a640a4382f6a0e1878c4ee8459dd16 + [http://downloads.sourceforge.net/devio/devio-1.1.tar.gz] md5=fe2319ec57b6363c1da78a435ef714c5 sha256=92984b9f18488d020459873c18503a08a3942469b510e7c0b6be73c590df7b39 +[http://heanet.dl.sourceforge.net/devio/devio-1.1.tar.gz] +md5=fe2319ec57b6363c1da78a435ef714c5 +sha256=92984b9f18488d020459873c18503a08a3942469b510e7c0b6be73c590df7b39 + [http://downloads.sourceforge.net/devio/devio-1.2.tar.gz] md5=5d332c2bffc0791367bcf3368ba1a0d1 sha256=a71e87f49f52cd90dbd45431f65e83d18e073fb2669f91c29c59019b175cd5a8 +[http://heanet.dl.sourceforge.net/devio/devio-1.2.tar.gz] +md5=5d332c2bffc0791367bcf3368ba1a0d1 +sha256=a71e87f49f52cd90dbd45431f65e83d18e073fb2669f91c29c59019b175cd5a8 + [http://linux.dell.com/devlabel/permalink/devlabel-0.48.01.tar.gz] md5=1a4032b942d8b47544da1957374a9786 sha256=1dd2cce79f93cb3483fefdc02f65ed0868754ad12360c830d5f5cbe95da8e0e4 @@ -2910,6 +3606,10 @@ sha256=e5facfcab28377d32fd4c70aa1fe0820d3dba4abdfc48bd15eda712c8815e505 md5=002e9d7d85a2f0e6261b6bf501c53a3e sha256=f399428e0e191233b4dcead88afbe78a26cc16bd9a47e305f6dd3299e011ef18 +[http://dcantrel.fedorapeople.org/dhcdbd/dhcdbd-2.0.tar.bz2] +md5=d71de5c2f8aea4c8a18659bfa8387414 +sha256=51d36747b8386e18631e5b2a278cf9ef077441cb116a66b72edddecb939724c4 + [http://dcantrel.fedorapeople.org/dhcdbd/dhcdbd-3.0.tar.bz2] md5=5316b1a0b3a3d53e972374627546d0bf sha256=c62d5916dbd4d3148bd4deff355c3dfcb8092c2d9918d62dd24030e01c28361a @@ -2942,6 +3642,10 @@ sha256=f435e14e1f54dc8792f4e655463d07f2bdbe6d8a8581bd62f5167334ab18bb87 md5=642f7e7d4c71dc144b60f51f9d65de62 sha256=902da1b1e9d90dfda8aa1864846db8ad12386e7521fc9f8b18c8ba220dd0123a +[http://ftp.gnome.org/pub/GNOME/sources/dia/0.96/dia-0.96.1.tar.bz2] +md5=7b81b22baa2df55efe4845865dddc7b6 +sha256=7bb43d8b0cb287d728ea479fb65d1b57b8530af773018214e7f312dceed34237 + [ftp://ftp.us.debian.org/debian/pool/main/d/dialog/dialog_1.0-20050306.orig.tar.gz] md5=8ce5945be0660bd3152bd9eb0827f945 sha256=e3968765ed916b348fce5e309029d25d068a61e1d422a69a506d0fc80ee6e976 @@ -2970,6 +3674,10 @@ sha256=ca569dfa1e5cfd2f4134f3f61f667bcfab5e15c7d43c8a6e835d384ac5b31a07 md5=14d2853df66054f83d73f7601bc60c8b sha256=51e9b659b480d59ca3bb48ac1e4701d3b23c1efde15cf02c1904b43af6690fad +[ftp://ftp.nl.debian.org/debian/pool/main/d/diffstat/diffstat_1.39-1.diff.gz] +md5=14d2853df66054f83d73f7601bc60c8b +sha256=51e9b659b480d59ca3bb48ac1e4701d3b23c1efde15cf02c1904b43af6690fad + [ftp://ftp.pl.debian.org/pub/debian/pool/main/d/diffstat/diffstat_1.39-1.diff.gz] md5=14d2853df66054f83d73f7601bc60c8b sha256=51e9b659b480d59ca3bb48ac1e4701d3b23c1efde15cf02c1904b43af6690fad @@ -2982,6 +3690,10 @@ sha256=51e9b659b480d59ca3bb48ac1e4701d3b23c1efde15cf02c1904b43af6690fad md5=2d29a68f8fb75b3bed7a18f3d0a002bb sha256=e19f52cde20094ce20a1edee019ae7715bc1e8beca62ec4989a3da626ba9898a +[ftp://ftp.nl.debian.org/debian/pool/main/d/diffstat/diffstat_1.39.orig.tar.gz] +md5=2d29a68f8fb75b3bed7a18f3d0a002bb +sha256=e19f52cde20094ce20a1edee019ae7715bc1e8beca62ec4989a3da626ba9898a + [ftp://ftp.pl.debian.org/pub/debian/pool/main/d/diffstat/diffstat_1.39.orig.tar.gz] md5=2d29a68f8fb75b3bed7a18f3d0a002bb sha256=e19f52cde20094ce20a1edee019ae7715bc1e8beca62ec4989a3da626ba9898a @@ -3026,6 +3738,14 @@ sha256=57ffa154f45de309b352ce53aa6618af2f8639d1e330470c3c955241d44ccd78 md5=c94091de014b3aaf037d3d0f398d36c2 sha256=d937528e10c16831d8df31893ee24da8ec2bfd9e9170671c482a1b1abfc5efc3 +[http://heanet.dl.sourceforge.net/djvu/djvulibre-3.5.20.tar.gz] +md5=c94091de014b3aaf037d3d0f398d36c2 +sha256=d937528e10c16831d8df31893ee24da8ec2bfd9e9170671c482a1b1abfc5efc3 + +[http://dmalloc.com/releases/dmalloc-5.5.2.tgz] +md5=f92e5606c23a8092f3d5694e8d1c932e +sha256=d3be5c6eec24950cb3bd67dbfbcdf036f1278fae5fd78655ef8cdf9e911e428a + [http://savannah.nongnu.org/download/dmidecode/dmidecode-2.9.tar.bz2] md5=3dac4b1817012ffebd78671473d8f56c sha256=888eb2c25bdcef5ee34c38cd5cb0f491d7dd82029dc0f4ae96183a0088a5e015 @@ -3058,22 +3778,54 @@ sha256=54f3e9ac2bd9f622b28ab0d5149e9bc13d62d8826be085c32abc929bc30dda6a md5=b7956e15c9766e05b3eca3ce88fdb616 sha256=7b5b456e6ccb3a36cc96b84b79ba148850ab59ac45316b759a090a1121f93e13 +[http://www.docbook.org/sgml/3.1/docbk31.zip] +md5=432749c0c806dbae81c8bcb70da3b5d3 +sha256=20261d2771b9a052abfa3d8fab1aa62be05791a010281c566f9073bf0e644538 + +[http://docbook.org/sgml/4.1/docbk41.zip] +md5=489f6ff2a2173eb1e14216c10533ede2 +sha256=deaafcf0a3677692e7ad4412c0e41c1db3e9da6cdcdb3dd32b2cc1f9c97d6311 + +[http://www.docbook.org/sgml/4.4/docbook-4.4.zip] +md5=f89e1bd0b2c7a361e3f1f739e16b5d0d +sha256=0ac7960409b032c8e517483523ecb92af4e59196a33b3e2c5617daa22b7a8a6c + +[http://heanet.dl.sourceforge.net/docbook/docbook-dsssl-1.79.tar.bz2] +md5=bc192d23266b9a664ca0aba4a7794c7c +sha256=2f329e120bee9ef42fbdd74ddd60e05e49786c5a7953a0ff4c680ae6bdf0e2bc + [ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/docbook-utils-0.6.13.tar.gz] md5=af785716b207a7a562551851298a3b1a sha256=f74e9485f1e1f7484be432f4979415afbd9d8c20d0bdf6eab42eb2931b9b5d97 +[ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/docbook-utils-0.6.14.tar.gz] +md5=6b41b18c365c01f225bc417cf632d81c +sha256=48faab8ee8a7605c9342fb7b906e0815e3cee84a489182af38e8f7c0df2e92e9 + [http://downloads.sourceforge.net/dosbox/dosbox-0.63.tar.gz] md5=629413e41224ae9cdd115fdafd55cbdc sha256=f4eeee90f076d891034faf1268b6352b8df9cb262b787384ed4386cf6ea4faa7 +[http://heanet.dl.sourceforge.net/dosbox/dosbox-0.63.tar.gz] +md5=629413e41224ae9cdd115fdafd55cbdc +sha256=f4eeee90f076d891034faf1268b6352b8df9cb262b787384ed4386cf6ea4faa7 + [http://downloads.sourceforge.net/dosbox/dosbox-0.70.tar.gz] md5=ea0a936e88eb294038e67eeb0d7129c4 sha256=05fdfd561eee33de12d978795b7f12338327c6da1ce65971463b58f2e90b48e4 +[http://heanet.dl.sourceforge.net/dosbox/dosbox-0.70.tar.gz] +md5=ea0a936e88eb294038e67eeb0d7129c4 +sha256=05fdfd561eee33de12d978795b7f12338327c6da1ce65971463b58f2e90b48e4 + [http://downloads.sourceforge.net/dosbox/dosbox-0.72.tar.gz] md5=262939cc28966c1f9b07c2bc472b699f sha256=1747d7d9f1e5c0635b5d2d3e6648e8dc36316b1bc88b3755bf96b7fde499ac79 +[http://heanet.dl.sourceforge.net/dosbox/dosbox-0.72.tar.gz] +md5=262939cc28966c1f9b07c2bc472b699f +sha256=1747d7d9f1e5c0635b5d2d3e6648e8dc36316b1bc88b3755bf96b7fde499ac79 + [ftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/dosfstools/dosfstools-2.10.src.tar.gz] md5=59a02f311a891af8787c4c9e28c6b89b sha256=55a7b2f5ea4506bde935ee3145573e1773427fc72283a36796c7c2cf861dd064 @@ -3090,6 +3842,10 @@ sha256=8955fad7d9e7aef36f7a82f9577c3ae4901db1ded6ce57aec0d93e39c8899b65 md5=0fc9fffc2c2cfa7107d8f422815078c1 sha256=c33aeb300d93eaeac55927ce81dc6f3a1cf74b3b759b65182c9bfca31b75b98f +[ftp://ftp.nl.debian.org/debian/pool/main/d/dpkg/dpkg_1.13.22.tar.gz] +md5=0fc9fffc2c2cfa7107d8f422815078c1 +sha256=c33aeb300d93eaeac55927ce81dc6f3a1cf74b3b759b65182c9bfca31b75b98f + [ftp://ftp.pl.debian.org/pub/debian/pool/main/d/dpkg/dpkg_1.13.22.tar.gz] md5=0fc9fffc2c2cfa7107d8f422815078c1 sha256=c33aeb300d93eaeac55927ce81dc6f3a1cf74b3b759b65182c9bfca31b75b98f @@ -3098,6 +3854,10 @@ sha256=c33aeb300d93eaeac55927ce81dc6f3a1cf74b3b759b65182c9bfca31b75b98f md5=d8ec0b2bf86d5277fb50f8d391c0dd4a sha256=8b1ed52659c5f6723f37bf1122508d7f1b82e064aa9db04d18d726bde34c2713 +[ftp://ftp.nl.debian.org/debian/pool/main/d/dpkg/dpkg_1.13.25.tar.gz] +md5=88effb358aa04d25036b662d588433a6 +sha256=a525f321e875a8c16f5b6942bc02ac66b0d284cc6c61704f93e74789ef89d817 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/d/dpkg/dpkg_1.13.25.tar.gz] md5=88effb358aa04d25036b662d588433a6 sha256=a525f321e875a8c16f5b6942bc02ac66b0d284cc6c61704f93e74789ef89d817 @@ -3158,6 +3918,10 @@ sha256=8ae0026054fb9f437d59a3bb932628fc2915af6697e430325e0950e960ca6c34 md5=2b53c067c683266379dddbb38e65cb45 sha256=b1a0508444241c61585321eaadc32f476ef441f267636fbd0fb2f0c7ebf0fcbb +[http://home.comcast.net/~SCSIguy/SCSI_FAQ/RMiller_Tools/ftp/dt/dt-source.tar.gz] +md5=5776233a2d301a50b314306538257a45 +sha256=2f27fda643093e07161d128a9cc23cf30c0387f87cd911b904d84217f60a9a2a + [http://www.jdl.com/pub/software/dtc-20070216.tgz] md5=8762121262ead127171c4fce40ccc289 sha256=dd687b4f691bf9970f53ca2c84d8481b9f82d857de347375d29bacf648b8da71 @@ -3166,6 +3930,14 @@ sha256=dd687b4f691bf9970f53ca2c84d8481b9f82d857de347375d29bacf648b8da71 md5=46bcff355b60d85bd311fc95b9ff0630 sha256=786f8a128394f978ee66b18b41cdfc87d74eea80f5b8e25beacc5e669c76d5e1 +[http://www.dtnrg.org/docs/code/dtn_2.5.0.tgz] +md5=e6e608907a291016a39c9e3442dfd50c +sha256=d8c6dedb4f828c90c1c0f36c35bc4539e81e2220c8b01cd5dc957f9116b4e478 + +[http://heanet.dl.sourceforge.net/duma/duma_2_5_7.tar.gz] +md5=d3e981cdc2b78de652215da9b4ac399f +sha256=6d851f4117002d3523354b70c3f9be4abe5325b084ff54d01ac6daa5ce9a5944 + [http://www013.upp.so-net.ne.jp/hn43o/dviviewer/dviviewer-1.0.2.tar.gz] md5=cc101da3b436607ee2265b5af5001484 sha256=ab7c305be32708c4ede670e13783b718e6a28e35b5495e6c42c31c35a8b512a6 @@ -3182,30 +3954,58 @@ sha256=a077754b500b7cf5df1b0bd1edf1f1d28ed4f68b4f6fe33d509b8fd37bc97d41 md5=d774d4412bfb80d12cf3a4fdfd59de5a sha256=c4e482687d0cff240d02a70fcf423cc14296b6a7869cd8dd42d5404d098e0bb7 +[http://heanet.dl.sourceforge.net/e2fsprogs/e2fsprogs-1.38.tar.gz] +md5=d774d4412bfb80d12cf3a4fdfd59de5a +sha256=c4e482687d0cff240d02a70fcf423cc14296b6a7869cd8dd42d5404d098e0bb7 + [http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-1.41.2.tar.gz] md5=1c1c5177aea9a23b45b9b3f5b3241819 sha256=635d6d07e5a4d615e599c051166af965baa754f9ff7435e746de1a5d2a5c0d56 +[http://heanet.dl.sourceforge.net/e2fsprogs/e2fsprogs-1.41.2.tar.gz] +md5=1c1c5177aea9a23b45b9b3f5b3241819 +sha256=635d6d07e5a4d615e599c051166af965baa754f9ff7435e746de1a5d2a5c0d56 + [http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.33.tar.gz] md5=c7545bb05e0c2fc59174f0dc455c6519 sha256=a65d064bee3e97c164d07a490692db0e73da8da10019ad9a89866706c93ae703 +[http://heanet.dl.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.33.tar.gz] +md5=c7545bb05e0c2fc59174f0dc455c6519 +sha256=a65d064bee3e97c164d07a490692db0e73da8da10019ad9a89866706c93ae703 + [http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.34.tar.gz] md5=b51824f1c34be88e8581d96fc418d224 sha256=2c505a14157fe591bd540b9a0dca11f5d842e3b6c34a23dbbbd9eafcc9fa33fa +[http://heanet.dl.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.34.tar.gz] +md5=b51824f1c34be88e8581d96fc418d224 +sha256=2c505a14157fe591bd540b9a0dca11f5d842e3b6c34a23dbbbd9eafcc9fa33fa + [http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.35.tar.gz] md5=d31301cc2756dc9b0254b6aac03c376e sha256=236f1c173fe378b1306db797dc31f1884208ceac3ab81ad52f69e01f7bf61277 +[http://heanet.dl.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.35.tar.gz] +md5=d31301cc2756dc9b0254b6aac03c376e +sha256=236f1c173fe378b1306db797dc31f1884208ceac3ab81ad52f69e01f7bf61277 + [http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.39.tar.gz] md5=32a2f67223feb2d70233eb3f41e73311 sha256=fe3c72d861f2a3791f31ea33043d25e29e9a4e3d6a3833b151237a62c5c703f9 +[http://heanet.dl.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.39.tar.gz] +md5=32a2f67223feb2d70233eb3f41e73311 +sha256=fe3c72d861f2a3791f31ea33043d25e29e9a4e3d6a3833b151237a62c5c703f9 + [http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.41.2.tar.gz] md5=258d0a8277ace7fab06c55fdb2b249c4 sha256=2de57ec75aca127ec70c2797c1a416fca43d78e6cb5c8ee4938864cb8eaafb56 +[http://heanet.dl.sourceforge.net/e2fsprogs/e2fsprogs-libs-1.41.2.tar.gz] +md5=258d0a8277ace7fab06c55fdb2b249c4 +sha256=2de57ec75aca127ec70c2797c1a416fca43d78e6cb5c8ee4938864cb8eaafb56 + [http://qa.debian.org/watch/sf.php/e2fsprogs/e2fsprogs-libs-1.41.2.tar.gz] md5=258d0a8277ace7fab06c55fdb2b249c4 sha256=2de57ec75aca127ec70c2797c1a416fca43d78e6cb5c8ee4938864cb8eaafb56 @@ -3226,6 +4026,10 @@ sha256=37e5aab00a316a22329c64848f467b0ce73bba3bcb08c4cba6d193ba8f5e9b90 md5=b87c02bf22b6697bce9df32be40d018f sha256=eac200dacbde374a7c8b3830a665b9926eb82f695f593b54a3256b29e39df29e +[ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.3.2.tar.bz2] +md5=408bbe0f8ed45d341bc36cc4ee6184e7 +sha256=4f5f71590eafa6c3599876806c8d655c3aeff5b2222643ff0ff41a6883ee5ea0 + [ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.3.tar.bz2] md5=f7aee92355cae7e4c81cf26df4345b07 sha256=24da6f7466d1d7b42b9e03255079a3f31595fd4932def8f81f9886f347e98d1d @@ -3234,6 +4038,10 @@ sha256=24da6f7466d1d7b42b9e03255079a3f31595fd4932def8f81f9886f347e98d1d md5=c4559af2366c764c6c42a3fdd40d60d3 sha256=6b5a71790120977a96d5a468ed69987107c5079f14b0a4081f460b3b14fbf952 +[http://heanet.dl.sourceforge.net/ebtables/ebtables-v2.0.6.tar.gz] +md5=c4559af2366c764c6c42a3fdd40d60d3 +sha256=6b5a71790120977a96d5a468ed69987107c5079f14b0a4081f460b3b14fbf952 + [http://eciadsl.flashtux.org/download/eciadsl-usermode-0.11.tar.gz] md5=c3c60c83f6df30021e11da50a699dec9 sha256=2382f315fda4241a0043bac1dfc669f006d8e93e87fa382b263b1672972f4077 @@ -3250,6 +4058,10 @@ sha256=f41194a9580023afd11d18b82f6815b064af83c4f9ca407a40cd8d960bd112cc md5=9e1fc1c86c85e72df5e141069b82041d sha256=f41194a9580023afd11d18b82f6815b064af83c4f9ca407a40cd8d960bd112cc +[http://mirrors.ibiblio.org/pub/mirrors/eclipse/eclipse/downloads/drops/R-3.3.2-200802211800/ecjsrc.zip] +md5=9e1fc1c86c85e72df5e141069b82041d +sha256=f41194a9580023afd11d18b82f6815b064af83c4f9ca407a40cd8d960bd112cc + [http://mirrors.ibiblio.org/pub/mirrors/eclipse/eclipse/downloads/drops/R-3.4-200806172000/ecjsrc.zip] md5=9e1fc1c86c85e72df5e141069b82041d sha256=f41194a9580023afd11d18b82f6815b064af83c4f9ca407a40cd8d960bd112cc @@ -3266,6 +4078,10 @@ sha256=75a4861bf7dcc96a871611350276f10a87b0f7c44a1bbab1108374828bccf509 md5=9db49742bd4c17966fff7d76ac566d31 sha256=978fbc134eef3da8a5f363c9e93494a3d7399e8f2b435ac6b1f2c63f09c167df +[http://xorg.freedesktop.org/releases/individual/app/editres-1.0.3.tar.bz2] +md5=a25f931cc6c8d03daaed434f5db5df2d +sha256=a2a56b32eaa92ad6f667853f023177ffad9128cfa0361afc2872323598aeceae + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/editres-X11R7.0-1.0.1.tar.bz2] md5=a9dc7f3b0cb59f08ab1e6554a5e60721 sha256=1373ded7c35c38e479122ac1fd8a85682a533612538645c79d09992abcbaab10 @@ -3282,6 +4098,10 @@ sha256=6b7448359284f5af75cbb7027c47616b28aca8b90f9a16b9ec954fa50e455ed3 md5=d78cd3e33c656a62b5bf1f8d0b8d271f sha256=df6c696f84bc9c2af12f3715f2703060ab1692a918fb221ea0403212c03e0b73 +[http://ftp.gnome.org/pub/GNOME/sources/eel/2.22/eel-2.22.2.tar.bz2] +md5=f0dc46f4bc6a772da9e149c0018a8b09 +sha256=e91e576ed22e5ba9a930d4292e3dbec4fe4ec7276029d82188cc91db117e21d4 + [http://ftp.gnome.org/pub/GNOME/sources/eel/2.6/eel-2.6.1.tar.bz2] md5=6dd46ef1905271cd1171a0bdddabee22 sha256=889c8cff395bc488a6ccfb3fc22fd241a12c33f114bb7d7ec4138d5999da9c5d @@ -3290,10 +4110,18 @@ sha256=889c8cff395bc488a6ccfb3fc22fd241a12c33f114bb7d7ec4138d5999da9c5d md5=05c65e4cd84b36baa42e3eee1e652c97 sha256=8d5154877e0f8aa57401a288c5650e5c1dc0efe0b4104796aae1d4b303febace +[http://heanet.dl.sourceforge.net/ede/efltk-2.0.7.tar.gz] +md5=f0300fd2fec47d4b05823297032ddb9f +sha256=9636876e3c52f0dde5d6ac097568cad9fe8ea7088e28e27a3aad19b100d4e645 + [http://www.egenix.com/files/python/egenix-mx-base-2.0.6.tar.gz] md5=66841151728a06f92d0b8dd2ed317a29 sha256=03b1ab04397745d22d6e76bd71a6e7fbaf6988e0d75bf2d6face1c910309ac36 +[http://downloads.egenix.com/python/egenix-mx-base-3.0.0.tar.gz] +md5=e4d388137900b2e7f29b5a113b2a0b5b +sha256=9ec176847b1e01cd2083cd578e804fda2c619d0f465cd752ec11b38099f75f7f + [http://ekg.chmurka.net/ekg-1.6.tar.gz] md5=1094eee5062d9b9900c4b28bd68fb564 sha256=c6dc601e20bb43c94f5689f05bca8e8501af4cff9dd760afdb3d6998c6952c28 @@ -3318,18 +4146,42 @@ sha256=91f16720df83b15da8747506d17224e2b3e5dd5e606c91a7f76cc7d784aae694 md5=6831b8df3e4a530395e66c2889783752 sha256=9a8466b2293798441056bc279736af3a616baaba2f11940396cc60ff71924ea0 +[http://www.fh-wedel.de/pub/elvis/elvis-2.2_0.tar.gz] +md5=6831b8df3e4a530395e66c2889783752 +sha256=9a8466b2293798441056bc279736af3a616baaba2f11940396cc60ff71924ea0 + [http://enlightenment.freedesktop.org/files/embryo-0.9.1.037.tar.gz] md5=2a09c0355f33112e96ed253bd0bb308a sha256=0b46174c68b9cb19d0335f3f5194ee41e26865f4a9a62df9410f30693865e2d5 +[http://projects.collabora.co.uk/~xclaesse/empathy-0.1.tar.gz] +md5=46ebd3c4bc873add9dedea15b0a69a8f +sha256=d54b101f29b6a3e36a5f905d5b95d1d7515fa888683e891f975de2702b510045 + +[http://ftp.gnome.org/pub/GNOME/sources/empathy/0.14/empathy-0.14.tar.bz2] +md5=676154eddfb47f212e4716bebc0fdf26 +sha256=170d61f1387221b3034a777eb835d5b85d23ddb58d4d81ac42480e4e9ea138a6 + [http://ftp.gnome.org/pub/GNOME/sources/empathy/0.23/empathy-0.23.4.tar.bz2] md5=5a41033e3e41e9769628e0118f32d5c3 sha256=c493b9a22c9580d49fd90d2bb6955435ccba9304ecb382411864041d914c94d6 +[http://ftp.gnome.org/pub/GNOME/sources/empathy/0.4/empathy-0.4.tar.bz2] +md5=e965e57924607482f6d91bb578802a46 +sha256=4661b3440b8f8896efb42b334528a39eb9f4cb4b1b4411c759e24d60ecb43e48 + +[http://ftp.gnome.org/pub/GNOME/sources/empathy/0.5/empathy-0.5.tar.bz2] +md5=e363689295c78ad62d323111a0176ea5 +sha256=3807d778ea57b9a72a17d6f7c4c623f3b12546d9fc6a0b1da8c3f713fd6e4a15 + [http://ftp.gnome.org/pub/GNOME/sources/empathy/0.9/empathy-0.9.tar.bz2] md5=74c7255a56ffa8e37147a1a0cfe40565 sha256=51eab13f16c48433035e84b8eb6c66afbbf3e48199323d25f4f9a09c8047d078 +[http://ftp.gnome.org/pub/GNOME/sources/empathy/2.23/empathy-2.23.90.tar.bz2] +md5=9bd5b3aef85262f8ae3efdbe87a7dbf8 +sha256=ad2c7ca228cdc79405c3853e7fdbfd5c239a6e9ad9a1a237e7e1b0c0b10f3ad4 + [http://ftp.gnome.org/pub/GNOME/sources/empathy/2.24/empathy-2.24.0.tar.bz2] md5=89e6dc430ad198c8044f261645d8bc6c sha256=5e73cfe9bbe862391386b4d60776a22fc765c48fe9f2bfad17ebd691571da2b9 @@ -3382,6 +4234,10 @@ sha256=33d0d4542945685661b7344713a91d76f9eb0eb5153a61b5ed1cf1180637a492 md5=b5174b59e4a050fb462af5dbf28ebba3 sha256=45299a4db47c9c08c3649d4f62b211ae79ef5143360c264a40371a728f6ad99b +[ftp://ftp.nl.debian.org/debian/pool/main/e/enscript/enscript_1.6.4.orig.tar.gz] +md5=b5174b59e4a050fb462af5dbf28ebba3 +sha256=45299a4db47c9c08c3649d4f62b211ae79ef5143360c264a40371a728f6ad99b + [http://enlightenment.freedesktop.org/files/entrance-0.9.0.007.tar.gz] md5=b789d09fa76e76a6466a786f0628d0ff sha256=789846f0a3df54b03a07cd117ee59b53f63a8677662cb2ff754a9be94032ec44 @@ -3410,6 +4266,10 @@ sha256=61d041afc953e0570ddae934179e92edf800f69f043d78058073806504e4137f md5=383db51e46d13d986966459e4918d236 sha256=bb12585b433fd0eca11865541bdb877166b9e53b0ea12624776f11cce3ce189b +[http://ftp.gnome.org/pub/GNOME/sources/epiphany/2.21/epiphany-2.21.92.tar.bz2] +md5=2e0199851122ecb9d5f2863d92e18aa8 +sha256=904275567e54f5fcdb068d544b42da34c0361d3b8d143dfecd878950850a54c9 + [http://ftp.gnome.org/pub/GNOME/sources/epiphany/2.22/epiphany-2.22.1.tar.bz2] md5=f3354751f7e293c03ffb9f26bd00b17f sha256=6faf0aaf8a44ad119baa921a634eb8dd2d02c4f501af176f294164f7d49dca5e @@ -3430,6 +4290,10 @@ sha256=5df5b02c568f5e4b744252fbd62f5fae71bf0eddecc423d2b396a0ffbfe94465 md5=9f0b809e891a548910f099efc4315b02 sha256=ae023107f8e0c872a2bb6f23a9a5f019b254e9b7eebd20a309af996d9cb7e38e +[http://heanet.dl.sourceforge.net/esmtp/esmtp-0.5.1.tar.bz2] +md5=9f0b809e891a548910f099efc4315b02 +sha256=ae023107f8e0c872a2bb6f23a9a5f019b254e9b7eebd20a309af996d9cb7e38e + [ftp://ftp.gnome.org/pub/GNOME/sources/esound/0.2/esound-0.2.36.tar.bz2] md5=3facb5aa0115cc1c31771b9ad454ae76 sha256=68bf399fcbd45c5e9ba99cd13a3a479e4ef2bc5dc52e540ffa00aef1e1b19a76 @@ -3442,10 +4306,18 @@ sha256=9bd7db657b8e9622910b9d3188096e37ee627ac0651c78ddce58e205e7487932 md5=5c7b292d0537232868b4ac1317d76c02 sha256=77f406c345362185ec4f362bf49f61d202e01ac9b9cd5c14f803195a544ce6d3 +[http://heanet.dl.sourceforge.net/espeak/espeak-1.37-source.zip] +md5=5c7b292d0537232868b4ac1317d76c02 +sha256=77f406c345362185ec4f362bf49f61d202e01ac9b9cd5c14f803195a544ce6d3 + [http://downloads.sourceforge.net/espgs/espgs-7.07.1-source.tar.bz2] md5=d30bf5c09f2c7caa8291f6305cf03044 sha256=7e0ed705da90a4c65368675d68ccecb871f89cb06d2efc61ddd0bb5fee5570f2 +[http://heanet.dl.sourceforge.net/espgs/espgs-7.07.1-source.tar.bz2] +md5=d30bf5c09f2c7caa8291f6305cf03044 +sha256=7e0ed705da90a4c65368675d68ccecb871f89cb06d2efc61ddd0bb5fee5570f2 + [http://ftp.rz.tu-bs.de/pub/mirror/ftp.easysw.com/ftp/pub/ghostscript/8.15.3/espgs-8.15.3-source.tar.bz2] md5=4ec87a3da20c1b433ffbe0ffe3675fcd sha256=c1f5eefc058b08113f90bc583436399d71644b61872fa39ab4982a58a80baa62 @@ -3462,14 +4334,38 @@ sha256=8a27bae79247f893592b9e919f80c6f01c082d8ac7320602490106c758a9c762 md5=b4e71f7fa2629250677eefcb338442c5 sha256=015d7c6084a668d7c2868d074e41a9cdd80bb6f0c7c6b9d275802e1629dd301f +[http://heanet.dl.sourceforge.net/gkernel/ethtool-3.tar.gz] +md5=b4e71f7fa2629250677eefcb338442c5 +sha256=015d7c6084a668d7c2868d074e41a9cdd80bb6f0c7c6b9d275802e1629dd301f + [http://downloads.sourceforge.net/gkernel/ethtool-4.tar.gz] md5=3882c7c9cb9b4c37b08846dea9370245 sha256=4536d6bc9ce52b9f4d505ff36aefca23c1042a92fd2f9a54308eff6e09b1a22b +[http://heanet.dl.sourceforge.net/gkernel/ethtool-4.tar.gz] +md5=3882c7c9cb9b4c37b08846dea9370245 +sha256=4536d6bc9ce52b9f4d505ff36aefca23c1042a92fd2f9a54308eff6e09b1a22b + +[http://heanet.dl.sourceforge.net/gkernel/ethtool-5.tar.gz] +md5=5df7f165974e096e2de890e099f87a12 +sha256=9eaad6076e57a5e2019733e4387705dc66829ea17cce04701b436cf5f374bb8f + +[http://heanet.dl.sourceforge.net/gkernel/ethtool-6.tar.gz] +md5=3b721ec27f17ebf320ba8c505cf66d9c +sha256=5046f573e7dd77f689c33c5f0aa0f2b7f96c79e0b37d6ecc78bae74c094fb4c6 + +[http://dev.laptop.org/pub/sugar/sources/etoys/etoys-3.0.2076.tar.gz] +md5=9cd0026f5bc89c96cafbd6d1d3500a3b +sha256=4a2a9f54f3fc68250a92eab43a030b6b96c4b6e251b698b3378bfee751f1cbd8 + [http://downloads.sourceforge.net/ettercap/ettercap-0.6.b.tar.gz] md5=f665cf82347a91f216184537f8f2c4bd sha256=2b6b0d1af5b8af63eb5edf7052fdc9f46c55b6f7b607c8772b18927cb481ecf9 +[http://heanet.dl.sourceforge.net/ettercap/ettercap-NG-0.7.3.tar.gz] +md5=28fb15cd024162c55249888fe1b97820 +sha256=c74239052d62565c13a82f9bbf217a4fdcce4b34949e361b53bb3f28e3168543 + [http://enlightenment.freedesktop.org/files/evas-0.9.9.037.tar.gz] md5=21cb713b01be39992a7c48d0ea23429b sha256=400046d55db03c3ac2de9e3346e38d0a75753501fb85ea953a497cdafc1340a1 @@ -3498,6 +4394,14 @@ sha256=c3f923e9becee6aa59cc4dafbc36d376a88099cf4017a5e928f367bd428174de md5=55a1d4af3cac209c7cfbe83b7ffcee1d sha256=ee72f48ec0c76a8f44d8a6aed6759d43a147a9d5bb2b15f06460c4d6ef86025e +[http://ftp.gnome.org/pub/GNOME/sources/evince/0.9/evince-0.9.0.tar.bz2] +md5=620294cf13a7b98e966bfa64a9eec08f +sha256=60def1544481ed99f6ecf853eddde61c5b35df9853ec9e5c487372d46bbee7c2 + +[http://ftp.gnome.org/pub/GNOME/sources/evince/0.9/evince-0.9.2.tar.bz2] +md5=defd7e5f9e8299da9d65b0ad025ccfac +sha256=aab3a4c14612664edfee07b305994d375843be998c5154058458a7afe886a179 + [http://ftp.gnome.org/pub/GNOME/sources/evince/2.20/evince-2.20.0.tar.bz2] md5=f9414b4dbfdff9a8f7f2f146a351e05a sha256=30dbad09953d92e48cc27681d601d0a55e30dc8e82a89c173098187bd7b35e61 @@ -3518,6 +4422,10 @@ sha256=0a0dba00517013082b8e094b4b7753162cf5fb71a170eb54cbc2eaa35717d5f6 md5=bb18d19e1d6fb255dadda456cadec00e sha256=b72d82e9117308063471993f3832e58064c0599dec3df2bf2a7ce54450984a3e +[http://projects.o-hand.com/sources/exmap-console/exmap-console-0.4.1.tgz] +md5=55aec784e214037e61400287a55b5426 +sha256=53082354ae893fd385051c96214640cbeba527131ccf9f5320626252a4aef8d5 + [http://projects.o-hand.com/sources/exmap-console/exmap-console-0.4.tgz] md5=eb8b6d834d2224e17561593dc4158e4d sha256=418c3b9e099b96f7b8e1456c34b585b2f4bd10af88fb976116a154e4cb54fa9b @@ -3530,10 +4438,18 @@ sha256=a5373e9bd6055caa7cd5d06128f6236cfd2f4f6657ea4a85d7bd9eafe5bf0538 md5=ca78d94e83e9f077b5da2bfe28ba986a sha256=b48761f9b67715bb1f85371d0059d744a60ed71e72065da7d5326bbb04e26a92 +[http://heanet.dl.sourceforge.net/expat/expat-1.95.6.tar.gz] +md5=ca78d94e83e9f077b5da2bfe28ba986a +sha256=b48761f9b67715bb1f85371d0059d744a60ed71e72065da7d5326bbb04e26a92 + [http://downloads.sourceforge.net/expat/expat-1.95.7.tar.gz] md5=2ff59c2a5cbdd21a285c5f343e214fa9 sha256=c94817c67c8ff0d244092c19f5713ea8c76a9a19075ff6031d4ef93ec7b66256 +[http://heanet.dl.sourceforge.net/expat/expat-1.95.7.tar.gz] +md5=2ff59c2a5cbdd21a285c5f343e214fa9 +sha256=c94817c67c8ff0d244092c19f5713ea8c76a9a19075ff6031d4ef93ec7b66256 + [http://qa.debian.org/watch/sf.php/expat/expat-1.95.7.tar.gz] md5=2ff59c2a5cbdd21a285c5f343e214fa9 sha256=c94817c67c8ff0d244092c19f5713ea8c76a9a19075ff6031d4ef93ec7b66256 @@ -3542,6 +4458,10 @@ sha256=c94817c67c8ff0d244092c19f5713ea8c76a9a19075ff6031d4ef93ec7b66256 md5=d945df7f1c0868c5c73cf66ba9596f3f sha256=c4280eb80fa8e14b3f204b1d0ec67af66fa04c4f9dae9c78a1a8ee4c6f485ddd +[http://heanet.dl.sourceforge.net/expat/expat-2.0.0.tar.gz] +md5=d945df7f1c0868c5c73cf66ba9596f3f +sha256=c4280eb80fa8e14b3f204b1d0ec67af66fa04c4f9dae9c78a1a8ee4c6f485ddd + [http://qa.debian.org/watch/sf.php/expat/expat-2.0.0.tar.gz] md5=d945df7f1c0868c5c73cf66ba9596f3f sha256=c4280eb80fa8e14b3f204b1d0ec67af66fa04c4f9dae9c78a1a8ee4c6f485ddd @@ -3570,14 +4490,26 @@ sha256=f7ff9bf972139b303616018a6937aa4c6df4e93c935ffd004b30845e2ad41ea6 md5=e72dc74db17b42b06155613489077ad7 sha256=a5844ff3bce0d7c885af71f41da01395d3253dcfc33863306a027a78a7cfad9e +[http://heanet.dl.sourceforge.net/faac/faac-1.24.tar.gz] +md5=e72dc74db17b42b06155613489077ad7 +sha256=a5844ff3bce0d7c885af71f41da01395d3253dcfc33863306a027a78a7cfad9e + [http://downloads.sourceforge.net/faac/faad2-2.0.zip] md5=b6807fba02d52747ebb92097daee71e8 sha256=50cf7188f6f99b75566f14d417915dcff1446d36d05982971c126893ae74a97a +[http://heanet.dl.sourceforge.net/faac/faad2-2.0.zip] +md5=b6807fba02d52747ebb92097daee71e8 +sha256=50cf7188f6f99b75566f14d417915dcff1446d36d05982971c126893ae74a97a + [ftp://ftp.debian.org/debian/pool/main/f/fakechroot/fakechroot_2.5.orig.tar.gz] md5=b885951b98f4316f9686699e9853513d sha256=990cd830ea362ba2cb88ca7b59cd3f4d115a054621450b5cf211cadebed23ee0 +[ftp://ftp.nl.debian.org/debian/pool/main/f/fakechroot/fakechroot_2.5.orig.tar.gz] +md5=b885951b98f4316f9686699e9853513d +sha256=990cd830ea362ba2cb88ca7b59cd3f4d115a054621450b5cf211cadebed23ee0 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/f/fakechroot/fakechroot_2.5.orig.tar.gz] md5=b885951b98f4316f9686699e9853513d sha256=990cd830ea362ba2cb88ca7b59cd3f4d115a054621450b5cf211cadebed23ee0 @@ -3630,6 +4562,10 @@ sha256=2cbf95aef9e3f9a32b6859ae35723eaa76b5ed483ddaa654cf627d1eacdea5fa md5=9441c981bfd4e521abcd5d93385f71d8 sha256=06c2772ae6e446227f6798ad8994fcdb1fe64385bc83a34f7e29fd8af2e4f5da +[ftp://ftp.nl.debian.org/debian/pool/main/f/fakeroot/fakeroot_1.9.6.tar.gz] +md5=9441c981bfd4e521abcd5d93385f71d8 +sha256=06c2772ae6e446227f6798ad8994fcdb1fe64385bc83a34f7e29fd8af2e4f5da + [ftp://ftp.pl.debian.org/pub/debian/pool/main/f/fakeroot/fakeroot_1.9.6.tar.gz] md5=9441c981bfd4e521abcd5d93385f71d8 sha256=06c2772ae6e446227f6798ad8994fcdb1fe64385bc83a34f7e29fd8af2e4f5da @@ -3666,10 +4602,18 @@ sha256=9158241a20978dcc4caf0692684da9dd3640fd6f5c8b72581bd099198d670510 md5=71bf1218c52a6e4a1f38406748285255 sha256=e8cf4fe15d7e99e86016db3ddc1f403c35c49f40c4d37209d76cd5785c541aa8 +[http://dl.bytesex.org/releases/fbida/fbida-2.07.tar.gz] +md5=3e05910fb7c1d9b2bd3e272d96db069c +sha256=6510dee7c4f45cb63094d540e66aa39d53215c59f46944b8bb050c26b71bdb44 + [http://downloads.sourceforge.net/fbpanel/fbpanel-4.3.tgz] md5=2d2f3713cf3c17b71997064f39d4c888 sha256=e4db7a6305ffe2333fae08c940ded8f7e5b02999e0917b0ea4ef3764c80f58c8 +[http://heanet.dl.sourceforge.net/fbpanel/fbpanel-4.3.tgz] +md5=2d2f3713cf3c17b71997064f39d4c888 +sha256=e4db7a6305ffe2333fae08c940ded8f7e5b02999e0917b0ea4ef3764c80f58c8 + [http://only.mawhrin.net/fbreader/obsolete/fbreader-sources-0.7.3d.tgz] md5=705a89bb03860fb312a7afa25db0310e sha256=ec9f93968147526a9b2dd17e31a6d2795356b2eeed309f796f655b37b98abd83 @@ -3678,6 +4622,10 @@ sha256=ec9f93968147526a9b2dd17e31a6d2795356b2eeed309f796f655b37b98abd83 md5=17062ae0f1d7d093e61cd002e39885ae sha256=190e2b5ae8467d4b0c26b10e091c74509e00d4bd895c240842ee02a870caa3eb +[http://only.mawhrin.net/fbreader/obsolete/fbreader-sources-0.7.4q.tgz] +md5=17062ae0f1d7d093e61cd002e39885ae +sha256=190e2b5ae8467d4b0c26b10e091c74509e00d4bd895c240842ee02a870caa3eb + [http://only.mawhrin.net/fbreader/fbreader-sources-0.8.2a.tgz] md5=3b4944bf0d37b42249bef84d59918ce0 sha256=4e505820b150ae35a40c39a3d2aeb7a8dcb6bd9b599055c40f566d874e4d1c82 @@ -3702,6 +4650,10 @@ sha256=e22ed10ecba059904649f344be260512fdb3cbecbd95ca965f8b5cc3ea1785b5 md5=1977214a15a341a4fd8bad14eda76866 sha256=a227f2d8a3b79462a895435be26c1622f03c5978d2e3e5456d6284592e88a6c2 +[http://heanet.dl.sourceforge.net/fceultra/fceu-0.98.13-pre.src.tar.bz2] +md5=1977214a15a341a4fd8bad14eda76866 +sha256=a227f2d8a3b79462a895435be26c1622f03c5978d2e3e5456d6284592e88a6c2 + [http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz] md5=d15060a813b91383a9f3c66faf84867e sha256=66fc45c6b36a21bf2fbbb68e90f780cc21a9da1fffbae75e76d2b4402d3f05b9 @@ -3726,6 +4678,10 @@ sha256=d0867cf1dbc58031a6b65375cf899f565569a818400f762dcee3b50de9da9f56 md5=9956b30139edaa4f5f77c4d0dbd80225 sha256=c18e6f23315e0a3526229bd0ba5cf8ce0d747cb5e5ba7cb952ad08c85a1cafac +[ftp://ftp.nl.debian.org/debian/pool/main/f/fetchmail/fetchmail_6.2.5.orig.tar.gz] +md5=9956b30139edaa4f5f77c4d0dbd80225 +sha256=c18e6f23315e0a3526229bd0ba5cf8ce0d747cb5e5ba7cb952ad08c85a1cafac + [ftp://ftp.debian.org/debian/pool/main/f/fetchmail/fetchmail_6.3.8.orig.tar.gz] md5=1b84621072b4f906b5686a4fbae0b1d7 sha256=d06e7244dcd2b462c0e7bea0d01edadb54905f4533afc45f971ab9f6ee46497c @@ -3734,6 +4690,10 @@ sha256=d06e7244dcd2b462c0e7bea0d01edadb54905f4533afc45f971ab9f6ee46497c md5=ea5587e3c66d50b1503b82ac4179c303 sha256=0e9e771114a75c461e813538f129eb05a251b8fc6591a5563420700b8e312da0 +[http://heanet.dl.sourceforge.net/ffmpeg/ffmpeg-0.4.9-pre1.tar.gz] +md5=ea5587e3c66d50b1503b82ac4179c303 +sha256=0e9e771114a75c461e813538f129eb05a251b8fc6591a5563420700b8e312da0 + [http://folks.o-hand.com/dodji/0xdeadbabe/ffmpeg_xine.tar.bz2] md5=e67e1c2eb134d2fba50a524188b6a3b4 sha256=61ba89c0deaaf324485b2bf480fdb90941b74e2c47b4810e34f530b77005bb8c @@ -3790,6 +4750,10 @@ sha256=dba581583ef390fab90c39c9a667bf1a5bfbeaec75e6fbb2a9cedcc857d26800 md5=7a1fc804ed735c5b7e9b1498bac8b5db sha256=b7db1a7d7ee37707dd5736a656982d1deaea7b29654f49564c2aa54c59ba1e24 +[http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.3/source/firefox-2.0.0.3-source.tar.bz2] +md5=24398e3d98673a2a92a01a8f771ca12a +sha256=02169e4e7a095c426fd5caf56c6cfc2415f4fe54cef7f4e78556f350e2c94007 + [http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/3.0/source/firefox-3.0-source.tar.bz2] md5=4210ae0801df2eb498408533010d97c1 sha256=606e84ac02322aff692b9d4612cb8e27f5fa0da29e14bce7744927e0dad9c4b9 @@ -3834,14 +4798,26 @@ sha256=ea55da5c73aa0ca733f6e6efe5e4e77ff24779578a4170eb868da808a7e24f93 md5=19b456a27b5fcf502c76cc33f33e1490 sha256=897b0ac415b36ea241932c56852b8d6f3e083d0db66be9a96fc83c9cc42932a1 +[http://heanet.dl.sourceforge.net/flac/flac-1.1.0.tar.gz] +md5=19b456a27b5fcf502c76cc33f33e1490 +sha256=897b0ac415b36ea241932c56852b8d6f3e083d0db66be9a96fc83c9cc42932a1 + [http://downloads.sourceforge.net/flac/flac-1.1.2.tar.gz] md5=2bfc127cdda02834d0491ab531a20960 sha256=ce4f7d11b3c04a7368c916ca4abc284dd0c0256f461dfb7f07df1ab445e7a5c0 +[http://heanet.dl.sourceforge.net/flac/flac-1.1.2.tar.gz] +md5=2bfc127cdda02834d0491ab531a20960 +sha256=ce4f7d11b3c04a7368c916ca4abc284dd0c0256f461dfb7f07df1ab445e7a5c0 + [http://downloads.sourceforge.net/flex/flex-2.5.31.tar.bz2] md5=363dcc4afc917dc51306eb9d3de0152f sha256=701353279a17655d78e3b3678ad78d0375f5bf45877ad8b3507d589c42427f26 +[http://heanet.dl.sourceforge.net/flex/flex-2.5.31.tar.bz2] +md5=363dcc4afc917dc51306eb9d3de0152f +sha256=701353279a17655d78e3b3678ad78d0375f5bf45877ad8b3507d589c42427f26 + [http://qa.debian.org/watch/sf.php/flex/flex-2.5.31.tar.bz2] md5=363dcc4afc917dc51306eb9d3de0152f sha256=701353279a17655d78e3b3678ad78d0375f5bf45877ad8b3507d589c42427f26 @@ -3870,6 +4846,18 @@ sha256=a0e31ad5088414aaee003586a23127a5ace7717ba4f8fb4e02cf56bb9a5c30f4 md5=2e29319119adc9d63b2f26b72cae0a88 sha256=855a97e35da823f205253b865758715872cd2c7720e4dcf134a3b6dc18bfb96a +[ftp://ftp.rz.tu-bs.de/pub/mirror/ftp.easysw.com/ftp/pub/fltk/1.1.9/fltk-1.1.9-source.tar.bz2] +md5=e146fd264e1001b1313acfd41ef75552 +sha256=facba5a97a20ca92b32504174474775c6b12fb67a6f646fa0de18db709c3edde + +[http://members.cheese.at/woody/fltk-chess/fltk-chess-0.5.tgz] +md5=ee34788a2dc9fdc088a6dc66c31eba34 +sha256=c789b355d0ba03b018513c3904bba6d6fab01b3a83a460fbe1b20a79052f46a4 + +[http://savannah.nongnu.org/download/fluid/fluidsynth-1.0.8.tar.gz] +md5=e2abfd2e69fd8b28d965df968d7d44ee +sha256=45e7c9967d0fb0344f4da539ab343fb979384b36a429a8594c94cf466dff4320 + [http://www.flumotion.net/src/flumotion/flumotion-0.4.1.tar.bz2] md5=85563f1167a3265cf61c8886c318dda7 sha256=a24640d8ca9c485d7611880193f18e5ae62af07e3b9464904f3602277f1d4097 @@ -3882,138 +4870,282 @@ sha256=dd943b9746997bb6e49820187998dd26a58b2d0f886a45c166209e6d7d35aa32 md5=2575d0b605bcacc406c5b8f89fb0d3c5 sha256=84cabad81bb78fc08ae3d8abae57840cf575a0ca6ca719c7d9bed19505d06ea3 +[http://heanet.dl.sourceforge.net/fluxbox/fluxbox-1.0rc.tar.gz] +md5=2575d0b605bcacc406c5b8f89fb0d3c5 +sha256=84cabad81bb78fc08ae3d8abae57840cf575a0ca6ca719c7d9bed19505d06ea3 + +[http://www.stanford.edu/~blp/fmtools/fmtools-1.0.2.tar.gz] +md5=4bae0e5feeb8cbf4cfcb950301e9509d +sha256=60a55ba4a57b5ed430c62662283e9cb6de685c8497173f1f2065f684b2aceabd + +[http://xorg.freedesktop.org/releases/individual/font/font-adobe-100dpi-1.0.0.tar.bz2] +md5=443acfe70e26716282f9068730fe92c4 +sha256=f16c1b3a1625c9a225aff2ac12067bd3907d157b0c60625689a5080f092e9a19 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-adobe-100dpi-X11R7.0-1.0.0.tar.bz2] md5=f5de34fa63976de9263f032453348f6c sha256=88a76f7d261b5a4466ab28f2985a8af838a03ae03ee83ce3a441ca8332742cc3 +[http://xorg.freedesktop.org/releases/individual/font/font-adobe-75dpi-1.0.0.tar.bz2] +md5=813b5d3723c84388a938ab6732e1329c +sha256=d62745bee0f5e4f355f237020667d783ae9fea5f18a864d748ae1287bd176339 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-adobe-75dpi-X11R7.0-1.0.0.tar.bz2] md5=361fc4c9da3c34c5105df4f4688029d0 sha256=f1c7377f6b3b1d91ef384b81f44853e9dc23ff62c11f9f30291e34e9cf6c9d87 +[http://xorg.freedesktop.org/releases/individual/font/font-adobe-utopia-100dpi-1.0.1.tar.bz2] +md5=5d28a30efef966f8dbbaff9a6619f01a +sha256=1943e1aa70c169b13bc7a308c8e949267f9ce6327479803203fbf10c06a9b5fe + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-adobe-utopia-100dpi-X11R7.0-1.0.1.tar.bz2] md5=b720eed8eba0e4c5bcb9fdf6c2003355 sha256=b962d55a91510e70c108b0c34ee928f8016391b40a8bc26d6df85d59c1283af5 +[http://xorg.freedesktop.org/releases/individual/font/font-adobe-utopia-75dpi-1.0.1.tar.bz2] +md5=dd912284e4750023f9682812532fa033 +sha256=ebd4e2194bbc727e3bbda0f5dc1493fe3a211c7cf77e3d41f93135dd04ca7089 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-adobe-utopia-75dpi-X11R7.0-1.0.1.tar.bz2] md5=a6d5d355b92a7e640698c934b0b79b53 sha256=168b326dbad59381d0e0a9544d26f1fb8bd23d3b5478fcc426f7ce470ee8a2f7 +[http://xorg.freedesktop.org/releases/individual/font/font-adobe-utopia-type1-1.0.1.tar.bz2] +md5=aa7ff4bd20b961afda9c15d103b972a5 +sha256=e9c672c8ff275fd5c2d76dda9a9f11138766e246e31e45763cd7e14d8824c0dc + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-adobe-utopia-type1-X11R7.0-1.0.1.tar.bz2] md5=db1cc2f707cffd08a461f093b55ced5e sha256=0ba76231d9af3422376d9c1652ab3f8614bdd52acc2e2a839d911e1a54b5d5b6 +[http://xorg.freedesktop.org/releases/individual/font/font-alias-1.0.1.tar.bz2] +md5=c4776b6f0f2ecdb7670b6fe64b5d2a2d +sha256=77db60d63224b9d856129d23c0b0d0e9154a166137daf749d39abfd56a4f89b6 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-alias-X11R7.0-1.0.1.tar.bz2] md5=de7035b15ba7edc36f8685ab3c17a9cf sha256=9c929ad5631e078d97835e5b631532edc8e3690d5068e59393d4aa04288022f4 +[http://xorg.freedesktop.org/releases/individual/font/font-arabic-misc-1.0.0.tar.bz2] +md5=81595016e2ff859716fc256ebb136ba6 +sha256=90e9dfa3f33805ea2ffe06faa7258d8335cdf415826f963a1d0a76bd8df7bc94 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-arabic-misc-X11R7.0-1.0.0.tar.bz2] md5=b95dc750ddc7d511e1f570034d9e1b27 sha256=264119a6bda478c5cb226161d660fdc1c24c957b124c1e1cc8e693a06607c6a0 +[http://xorg.freedesktop.org/releases/individual/font/font-bh-100dpi-1.0.0.tar.bz2] +md5=e5592de74a5c04e3a2608800dd079197 +sha256=ae8a11777579a2242f52ed19b5fdd6c6ef6fe2c2661a49d0599188de78cfee4a + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bh-100dpi-X11R7.0-1.0.0.tar.bz2] md5=29eeed0ad42653f27b929119581deb3e sha256=8f74dea65f4d39236f29cdf29ffbfe948d1e8a99963ceb9b1b87b081765dba55 +[http://xorg.freedesktop.org/releases/individual/font/font-bh-75dpi-1.0.0.tar.bz2] +md5=6e51cd02f4ce32e1393e34ab17a9b211 +sha256=c79467b440cc9389c75d55fba64d0126d0f2e1e6c019dfafb7d89d07802c05bf + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bh-75dpi-X11R7.0-1.0.0.tar.bz2] md5=7546c97560eb325400365adbc426308b sha256=73ce25f055e0e5b1dc1fa41e7cf7ef3c2903715db9b3a240c1a9c391c1e298ba +[http://xorg.freedesktop.org/releases/individual/font/font-bh-lucidatypewriter-100dpi-1.0.0.tar.bz2] +md5=c44d3f730564da465993e9292a33c235 +sha256=36d47dcba591037b6af35fc151e3d7a6c9f16f42b3182e083ea140cb584d7013 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bh-lucidatypewriter-100dpi-X11R7.0-1.0.0.tar.bz2] md5=8a56f4cbea74f4dbbf9bdac95686dca8 sha256=9359a40738e7199d3b77ad0e55e02d0e27a6101aede4bc2a50e3c80d2c02cf03 +[http://xorg.freedesktop.org/releases/individual/font/font-bh-lucidatypewriter-75dpi-1.0.0.tar.bz2] +md5=fdd9be5b9db94ef363a33e39b7977e2b +sha256=50f2f36f533a49c65842568052fe4d065354ff6f39ab36dd2129f465741da046 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bh-lucidatypewriter-75dpi-X11R7.0-1.0.0.tar.bz2] md5=e5cccf93f4f1f793cd32adfa81cc1b40 sha256=8d55580d9cf032127bd17b8d4a6bdcdb09392e76fe8ec075ce7472bc3de8e5d6 +[http://xorg.freedesktop.org/releases/individual/font/font-bh-ttf-1.0.0.tar.bz2] +md5=ad43cf739b3d46ba1e7dc778a0608a52 +sha256=7a1a5e72f7e42398b98d70aa64252837e85ed76eea77a1b9a4cd0f1203d7d644 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bh-ttf-X11R7.0-1.0.0.tar.bz2] md5=53b984889aec3c0c2eb07f8aaa49dba9 sha256=a268245101a49b1e4c2785a9d809d43fe8564b8243dcf7898a37f25abf4d9edf +[http://xorg.freedesktop.org/releases/individual/font/font-bh-type1-1.0.0.tar.bz2] +md5=46588b22678e440741d6220bc3945cbf +sha256=5a8a5513f2c829d56043a0f74980efc11b4b4522f21116f16711998f72c3645b + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bh-type1-X11R7.0-1.0.0.tar.bz2] md5=302111513d1e94303c0ec0139d5ae681 sha256=f7cede14e92d83d6c3d36eeb9d3d66fdd60372c39e8571cb9ae40a7d8c5182d5 +[http://xorg.freedesktop.org/releases/individual/font/font-bitstream-100dpi-1.0.0.tar.bz2] +md5=173352ddec3d26e2b91df1edcf1ae85b +sha256=0c705a74d7b52e41a1f1aa6732f0200877ba2d4303b79513a524e7cc1b30e2d2 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bitstream-100dpi-X11R7.0-1.0.0.tar.bz2] md5=dc595e77074de890974726769f25e123 sha256=3e9b85774a062d8a9c997d57d45164179e403061f0bb3765e593b6a465c523e6 +[http://xorg.freedesktop.org/releases/individual/font/font-bitstream-75dpi-1.0.0.tar.bz2] +md5=beb476657d50d07d17eef7c325a5ed08 +sha256=2ddfeaccca97524e1b0f4fb37b2fd0f1338698e35f8b05b22b594fe29e201bfb + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bitstream-75dpi-X11R7.0-1.0.0.tar.bz2] md5=408515646743d14e1e2e240da4fffdc2 sha256=71b1b6416e0018ad954225f53c0c9f2eaf8d663e1084657f3cb9b930073b7f6b +[http://xorg.freedesktop.org/releases/individual/font/font-bitstream-speedo-1.0.0.tar.bz2] +md5=1399dc18aeb9571b0951d9570ea1059d +sha256=99ac01786ac400cc7407f1c427b92c5ff1ac5a31ce7d5907b7ad3c969214f6e6 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bitstream-speedo-X11R7.0-1.0.0.tar.bz2] md5=068c78ce48e5e6c4f25e0bba839a6b7a sha256=f44bc571753fd04c09eac7b266d1e0256db9efd0d40ab834920b9dfbb4297d52 +[http://xorg.freedesktop.org/releases/individual/font/font-bitstream-type1-1.0.0.tar.bz2] +md5=6610475e2e231242f8f2122a709c3695 +sha256=4fce492dcf168837342ea1787ac35b53e4d30361239cba207c9520c42454d903 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-bitstream-type1-X11R7.0-1.0.0.tar.bz2] md5=f4881a7e28eaeb7580d5eaf0f09239da sha256=f6f09d398a89595bec5825043d36056c0a080aa2d47ae3e52c01a7258119fd6d +[http://xorg.freedesktop.org/releases/individual/font/font-cronyx-cyrillic-1.0.0.tar.bz2] +md5=22b451e7230b8c003cfc496ee2d360cc +sha256=06c94e7033f5cae77b9ba27b84af7c1d3e7f73a7239346aabf98eda6c7f484ee + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-cronyx-cyrillic-X11R7.0-1.0.0.tar.bz2] md5=447163fff74b57968fc5139d8b2ad988 sha256=28593d204b638c430d3ba1ecd3c87d1416d72d8dd1874a44588371970dc44b34 +[http://xorg.freedesktop.org/releases/individual/font/font-cursor-misc-1.0.0.tar.bz2] +md5=305fa22cdfefb8f80babd711051a534b +sha256=955de27117581ba501d7c2abae7f38b0a65662e4ab2e2b54b9eb2dc07aa5f3c5 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-cursor-misc-X11R7.0-1.0.0.tar.bz2] md5=82e89de0e1b9c95f32b0fc12f5131d2c sha256=5a67c7201388653eda3efaaa62c2f8d4db4ce980a666436418c45575034c42b4 +[http://xorg.freedesktop.org/releases/individual/font/font-daewoo-misc-1.0.0.tar.bz2] +md5=61f9eab48c619af5494d3e384d8d7d79 +sha256=f198eac92e343a38b1e23288880bac91c439bdc90c61a79a7cb0718e9a468926 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-daewoo-misc-X11R7.0-1.0.0.tar.bz2] md5=2fd7e6c8c21990ad906872efd02f3873 sha256=c279ef1d730625a1cee74527529be25d0cbc91f7a8bb310ced871ce58cdc148d +[http://xorg.freedesktop.org/releases/individual/font/font-dec-misc-1.0.0.tar.bz2] +md5=284e554db1c64fb7580a06df01444a2b +sha256=83386d1225dab1ebc58e7d197acc4c310ed4e29840abf291b1fa2ffac1b68bb9 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-dec-misc-X11R7.0-1.0.0.tar.bz2] md5=7ff9aba4c65aa226bda7528294c7998c sha256=e7ee982884f0c1fca409b6b9a946493afb23c9e61d33ac84ec29819717a66b75 +[http://xorg.freedesktop.org/releases/individual/font/font-ibm-type1-1.0.0.tar.bz2] +md5=8e8733051371e2b51123376b49f5d3ea +sha256=30d091c2e3506943f8a6e152c4be973c462ba19293a864bbb48b82c6cf9c461e + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-ibm-type1-X11R7.0-1.0.0.tar.bz2] md5=fab2c49cb0f9fcee0bc0ac77e510d4e5 sha256=534210f571a2166f3b6d4d8e1c37f74574c0130a4a1ed4c7d37b50a98fc95cfc +[http://xorg.freedesktop.org/releases/individual/font/font-isas-misc-1.0.0.tar.bz2] +md5=ec709a96b64b497a5cb5658c93bd38dc +sha256=97e61313ce0bf229da5d489fc5a05562fdca14f9acc17c40d0b272a345ba4ea2 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-isas-misc-X11R7.0-1.0.0.tar.bz2] md5=c0981507c9276c22956c7bfe932223d9 sha256=c845cfe0b4bc02ac2da322f4dbf6dab1ccfd204e926c40634b91c260316f55f7 +[http://xorg.freedesktop.org/releases/individual/font/font-jis-misc-1.0.0.tar.bz2] +md5=61febb49a71065723a1fba17cbf23c67 +sha256=3721eefd4ffc47c6948065f7acf9d5c731c4e8e54105d096735876d3712dc7ba + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-jis-misc-X11R7.0-1.0.0.tar.bz2] md5=3732ca6c34d03e44c73f0c103512ef26 sha256=7f4c3ce6ddfa52232d00e09b0bc20316b2ab9edd8007c57c8f08a742dd78b546 +[http://xorg.freedesktop.org/releases/individual/font/font-micro-misc-1.0.0.tar.bz2] +md5=8c8bffd7540f05caa0dbb4e6e1d6c58e +sha256=16b17b5939e12e9381c8096c1f77f064ee0073fa9cb09297dec278bade17a572 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-micro-misc-X11R7.0-1.0.0.tar.bz2] md5=eb0050d73145c5b9fb6b9035305edeb6 sha256=23b9c222618a1ea090b3a2b688f4c958b8469ed5f30a5c3e3d54bb02b235b222 +[http://xorg.freedesktop.org/releases/individual/font/font-misc-cyrillic-1.0.0.tar.bz2] +md5=3596907d7a2a99c81d8de99bc4552b6a +sha256=7c0bac1302129d3bf40ec7d9830e728b0251dc20dda8c8979227b478663290ff + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-misc-cyrillic-X11R7.0-1.0.0.tar.bz2] md5=58d31311e8e51efbe16517adaf1a239d sha256=e332497fe6220c019c411912653a96d26c8706c03456ac8ff3ff5ef38b1cc77c +[http://xorg.freedesktop.org/releases/individual/font/font-misc-ethiopic-1.0.0.tar.bz2] +md5=0b271fc617087d77560bdca20c0cdbb0 +sha256=58d2868801ca063797fa88fb4aea59f7c550473be4e9a4f96d84fe39b967d141 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-misc-ethiopic-X11R7.0-1.0.0.tar.bz2] md5=190738980705826a27fbf4685650d3b9 sha256=04025084b8f4e7559e34938cab9a70b28cad8174ef5f5f6103abd633b54048d9 +[http://xorg.freedesktop.org/releases/individual/font/font-misc-meltho-1.0.0.tar.bz2] +md5=ccb212a7badf7aefdc9f9a92af428d32 +sha256=c7e12b9926b6053f3567eae548840f0b3d283ce34f842b06309a81c1d98d3924 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-misc-meltho-X11R7.0-1.0.0.tar.bz2] md5=8812c57220bcd139b4ba6266eafbd712 sha256=cacbf0c055b95db07e4e61716a549195f6ed054ba98d0b443879f57876ca253d +[http://xorg.freedesktop.org/releases/individual/font/font-misc-misc-1.0.0.tar.bz2] +md5=2a57f6188c41d4bc1b88ca3d08ad011d +sha256=26a02560ad1f1648e7c36be6daf42910762131d3974422d1b306e6cae13f17db + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-misc-misc-X11R7.0-1.0.0.tar.bz2] md5=4a5a7987183a9e1ea232c8391ae4c244 sha256=bdc1b9407305a88bb687caa46443abddef6149d2e681597e12f1c48ec5bf3678 +[http://xorg.freedesktop.org/releases/individual/font/font-mutt-misc-1.0.0.tar.bz2] +md5=648b409b7eb78ad1cd5f6d7fac3eef88 +sha256=f219183bd0f2b8ceca42a8a345c921f2a8ee19f4d86fef11c4ce8918d41aedff + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-mutt-misc-X11R7.0-1.0.0.tar.bz2] md5=139b368edecf8185d16a33b4a7c09657 sha256=386a8d522ffc427e00df8034a8ce834767643e104b0aac141cf1cbf3113dd1a4 +[http://xorg.freedesktop.org/releases/individual/font/font-schumacher-misc-1.0.0.tar.bz2] +md5=f1c6063d2fadc57e696a0aab69afd6e0 +sha256=454e6cf885a4475569ce24ad3d4a82cb331d74e1a25f0747694a71098b56ef7a + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-schumacher-misc-X11R7.0-1.0.0.tar.bz2] md5=d51808138ef63b84363f7d82ed8bb681 sha256=d5c6c9f293ffa4d2cdb312b463381271bb8ad763738396671fdea19456fb38df +[http://xorg.freedesktop.org/releases/individual/font/font-screen-cyrillic-1.0.0.tar.bz2] +md5=aea02d9dff03e0e1a3de85364367c0c6 +sha256=01de82644a9b765599ba8c36c6b689035a85b6590486842067f707f2cb0cf268 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-screen-cyrillic-X11R7.0-1.0.0.tar.bz2] md5=c08da585feb173e1b27c3fbf8f90ba45 sha256=0c6da93cecc16e4ddc6897e90b941d72087bc82cfcbb26ef54e9a59d371c601d +[http://xorg.freedesktop.org/releases/individual/font/font-sony-misc-1.0.0.tar.bz2] +md5=0dfddd1a946e4497f009094c0ae1bdd5 +sha256=1ae93ae76020b57cb0054ba9f33b4d5aec71342c6596750c07303d5c53452e23 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-sony-misc-X11R7.0-1.0.0.tar.bz2] md5=014725f97635da9e5e9b303ab796817e sha256=4ea7d0a314b6c7ec65c92f44a3dad39ac9535b1bb9f54768573f60b69902e5cd +[http://xorg.freedesktop.org/releases/individual/font/font-sun-misc-1.0.0.tar.bz2] +md5=e17d43a7c6c0d862cfba0908ff132ffa +sha256=03c12d8f4d8e7f0178f501ea3ee0709ee3a1deda733afecd631807e6ba5729e5 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-sun-misc-X11R7.0-1.0.0.tar.bz2] md5=0259436c430034f24f3b239113c9630e sha256=80094cd7060a08bda61eef0e481800e8f94d4bbb08b8297dcf6aecea99a09a07 @@ -4038,10 +5170,22 @@ sha256=ffa19c42c70589996077380a297fe73edb480d20767199459695eca5463448c5 md5=a868cad6703290e40b46609ffb17946e sha256=6ec8f7024e93568062b5e824f6799d3efcef97c03f798a094a60599a32180718 +[http://xorg.freedesktop.org/releases/individual/font/font-winitzki-cyrillic-1.0.0.tar.bz2] +md5=b99b02aff36a88ca3379715423c60303 +sha256=478a7f6881fce6a335b409e1326449af4162a147d268f1978b8dd81c834beee3 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-winitzki-cyrillic-X11R7.0-1.0.0.tar.bz2] md5=6dc447609609e4e2454ad7da29873501 sha256=5b6997057658e6b9e46c350c76fbeb32e597a6bb61c1e86b24494f5327742d1d +[http://xorg.freedesktop.org/releases/individual/font/font-xfree86-type1-1.0.0.tar.bz2] +md5=e66f36a6d68203cc4cf7b56ebbb192dd +sha256=ef76d3b91d1bdaa9ff73cc1e5905ad4bbdc028f06157d0d2319d38e7b7f84a4d + +[http://xorg.freedesktop.org/releases/individual/font/font-xfree86-type1-1.0.1.tar.bz2] +md5=d7e965776c7f0c30b0f09742176fb77a +sha256=8fd9f9b81120d8afc25ea8901a8a91d7428c45cd9cfe7a7bef2b15c8b8d5f341 + [http://xorg.freedesktop.org/releases/X11R7.0/src/font/font-xfree86-type1-X11R7.0-1.0.0.tar.bz2] md5=27a6bbf5c8bbe998ff7e8537929ccbc8 sha256=cda4fed7e7d462257f7282db3459fa94f94ab70934a401b7a90f5decb044f94f @@ -4054,6 +5198,10 @@ sha256=48063ed49b200927376645f9ffe65faa39af84d59ba6f60f2abb2f9c6fa3d9f9 md5=116997d63cf6f65b75593ff5ae7afecb sha256=72a6200a586f27c55b837cc6e537f15499a2f07783a826521c9ad2eaf35a6461 +[http://fontconfig.org/release/fontconfig-2.2.95.tar.gz] +md5=6e64304b91cfea887558154d465bb752 +sha256=9d1eb5813a7d3e7907da4e6a69c93f4689c49a2ed8320c35ce4570f63448f2d0 + [http://freedesktop.org/fontconfig/release/fontconfig-2.2.95.tar.gz] md5=6e64304b91cfea887558154d465bb752 sha256=9d1eb5813a7d3e7907da4e6a69c93f4689c49a2ed8320c35ce4570f63448f2d0 @@ -4094,6 +5242,10 @@ sha256=90a5d9ad2328e682a58c179a7df9eac1193db06423e832b107bd4e7802f660b4 md5=b0ebd86029571239b9d7b0c61191b591 sha256=9d2b0149ea49a097ab6c563801c06af9975e98f9fa4c8af1a8ac3238e4fd5243 +[http://xorg.freedesktop.org/releases/individual/app/fonttosfnt-1.0.4.tar.bz2] +md5=07607b26fce3bdc2b204ff3bc43d3ac3 +sha256=3feaaab499b3f9c7e9b8bdc725dd40fde65b2fbb73794845d7f682746470f594 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/fonttosfnt-X11R7.0-1.0.1.tar.bz2] md5=89b65e010acaa3c5d370e1cc0ea9fce9 sha256=77fb4d23dfa8c12d69ccfda71f482af9804132fab800610970cd5fe9944a3016 @@ -4102,10 +5254,18 @@ sha256=77fb4d23dfa8c12d69ccfda71f482af9804132fab800610970cd5fe9944a3016 md5=5f059f7c997adbc0a260f27947605be1 sha256=d68c7c8ff6fe94341a3a73d22ab976da42921e3bec9bed628a428518c2c5f67a +[ftp://ftp.nl.debian.org/debian/pool/main/f/fortune-mod/fortune-mod_1.99.1-2.diff.gz] +md5=5f059f7c997adbc0a260f27947605be1 +sha256=d68c7c8ff6fe94341a3a73d22ab976da42921e3bec9bed628a428518c2c5f67a + [ftp://ftp.debian.org/debian/pool/main/f/fortune-mod/fortune-mod_1.99.1.orig.tar.gz] md5=f208805b3b712e32997d7667e0ec52d8 sha256=fc51aee1f73c936c885f4e0f8b6b48f4f68103e3896eaddc6a45d2b71e14eace +[ftp://ftp.nl.debian.org/debian/pool/main/f/fortune-mod/fortune-mod_1.99.1.orig.tar.gz] +md5=f208805b3b712e32997d7667e0ec52d8 +sha256=fc51aee1f73c936c885f4e0f8b6b48f4f68103e3896eaddc6a45d2b71e14eace + [http://linuxtogo.org/~florian/themes/foxbox-0.1.tar.gz] md5=77bc0cc71d61af699e29f4b5c09b37bb sha256=bcf668c1123f4d73a4c503ff189446cf4b30d64466fea49628999cdce8661c67 @@ -4114,10 +5274,18 @@ sha256=bcf668c1123f4d73a4c503ff189446cf4b30d64466fea49628999cdce8661c67 md5=5eaf8e8d1978ca4bbead5b3f163b23a1 sha256=b8e60157a14739da9382e23e296a0236b0c246b486b4803a1baaa4a73c5bf8d9 +[http://www.fpdf.org/en/download/fpdf153.tgz] +md5=6106c8d0aba37563b7ca9ccc94bc6c95 +sha256=44b7e18ba9ae5667dd64c89f7b04627bda5807a3a90255a125702d63c0c4ee17 + [http://downloads.sourceforge.net/free42/free42.tgz] md5=1fc21e04b3b77150846027dc7cb5210d sha256=9d348a9d2d5bf8eabc7e7bb6f0907e611403e4abe6dc1e11b1b2ad1118b3088a +[http://heanet.dl.sourceforge.net/free42/free42.tgz] +md5=82c67dd2bdef911d63703a785caef501 +sha256=e3c9c80ec3d1895507e374916077ab0fc68af7f9cd145003b251f23ac82b1ac5 + [ftp://ftp.freeciv.org/freeciv/stable/freeciv-1.14.1.tar.bz2] md5=d328f65e7fca5252f27161f5f9e97a03 sha256=8a963570e5c4ea432b0e31d77d3605705bda91a9f97ff377c5c3204ca768e342 @@ -4126,6 +5294,10 @@ sha256=8a963570e5c4ea432b0e31d77d3605705bda91a9f97ff377c5c3204ca768e342 md5=7d597d59236cc0cc1cfaa0cbbda24bd4 sha256=784b6eb132d37c51f7d9cd50a92138f4520146715f64b8fd64c410b5997f77de +[http://heanet.dl.sourceforge.net/freeciv/freeciv-2.0.8.tar.gz] +md5=7d597d59236cc0cc1cfaa0cbbda24bd4 +sha256=784b6eb132d37c51f7d9cd50a92138f4520146715f64b8fd64c410b5997f77de + [http://ovh.dl.sourceforge.net/sourceforge/freedoom/freedoom-iwad-0.3.zip] md5=9a26ec9743e45915e296e3e3ba9fe489 sha256=cd563cdceae558e2b9f9a2239b9d7d48a9776125c9d5f5f5be3076d574747aee @@ -4134,30 +5306,62 @@ sha256=cd563cdceae558e2b9f9a2239b9d7d48a9776125c9d5f5f5be3076d574747aee md5=832dfd51ac653f7c64fa44dc4badb6bb sha256=70ee4b5502c65c77a59ac40b3a86a4904d2f78c2edf058503d1c35ae6a75dcd6 +[http://heanet.dl.sourceforge.net/freedoom/freedoom-iwad-0.6.2.zip] +md5=832dfd51ac653f7c64fa44dc4badb6bb +sha256=70ee4b5502c65c77a59ac40b3a86a4904d2f78c2edf058503d1c35ae6a75dcd6 + [http://downloads.sourceforge.net/freedroid/freedroid-1.0.2.tar.gz] md5=585a65f61c2cd308ab45d5c514f695dc sha256=0934bd29fb2ad0367ea3bdfdce47537179f9af6aa960cbcc897c40da2e1a0ee3 +[http://heanet.dl.sourceforge.net/freedroid/freedroid-1.0.2.tar.gz] +md5=585a65f61c2cd308ab45d5c514f695dc +sha256=0934bd29fb2ad0367ea3bdfdce47537179f9af6aa960cbcc897c40da2e1a0ee3 + +[http://download.berlios.de/freenx/freenx-client-0.9.tar.bz2] +md5=777b3cda7a245e3870d4870a9460cb73 +sha256=dfc6c8dd89c26171411d8f7fa92613004eb8947ff509459151fdb03de7fe9608 + [http://downloads.sourceforge.net/freetype/freetype-2.1.10.tar.bz2] md5=a4012e7d1f6400df44a16743b11b8423 sha256=fed2ed148d7d105b95493c5e95561c8b05ee7909e00f828f036d8ed1be6a5e53 +[http://heanet.dl.sourceforge.net/freetype/freetype-2.1.10.tar.bz2] +md5=a4012e7d1f6400df44a16743b11b8423 +sha256=fed2ed148d7d105b95493c5e95561c8b05ee7909e00f828f036d8ed1be6a5e53 + [http://downloads.sourceforge.net/freetype/freetype-2.1.8.tar.bz2] md5=f717615787a1aadbdb164d1bc23c2308 sha256=9466fa75380ddcbea4e99a6b47474acd85d7abe46fa08f9316778f5c9419006b +[http://heanet.dl.sourceforge.net/freetype/freetype-2.1.8.tar.bz2] +md5=f717615787a1aadbdb164d1bc23c2308 +sha256=9466fa75380ddcbea4e99a6b47474acd85d7abe46fa08f9316778f5c9419006b + [http://downloads.sourceforge.net/freetype/freetype-2.2.1.tar.bz2] md5=5b2f827082c544392a7701f7423f0781 sha256=0e8eb40392752b306d3a3de21f9fa479d53c17bd774b8051771cb258e162e006 +[http://heanet.dl.sourceforge.net/freetype/freetype-2.2.1.tar.bz2] +md5=5b2f827082c544392a7701f7423f0781 +sha256=0e8eb40392752b306d3a3de21f9fa479d53c17bd774b8051771cb258e162e006 + [http://downloads.sourceforge.net/freetype/freetype-2.3.0.tar.bz2] md5=5b331456e0357e90d57cab5943dbe560 sha256=1b1bb146b8d2fd04ea03106da5f8abfd83e44c04a060fd7a38d06d6a224390bd +[http://heanet.dl.sourceforge.net/freetype/freetype-2.3.0.tar.bz2] +md5=5b331456e0357e90d57cab5943dbe560 +sha256=1b1bb146b8d2fd04ea03106da5f8abfd83e44c04a060fd7a38d06d6a224390bd + [http://downloads.sourceforge.net/freetype/freetype-2.3.1.tar.bz2] md5=11e1186ca5520c5a284fa0a03f652035 sha256=be38eecd22880089223dc7e49ac79ce4fdfd1cb7ea09b3a4ef9bd1966f0d6155 +[http://heanet.dl.sourceforge.net/freetype/freetype-2.3.1.tar.bz2] +md5=11e1186ca5520c5a284fa0a03f652035 +sha256=be38eecd22880089223dc7e49ac79ce4fdfd1cb7ea09b3a4ef9bd1966f0d6155 + [http://downloads.sourceforge.net/freetype/freetype-2.3.3.tar.bz2] md5=c0367b4059f672789b7a41e65f7a4b4a sha256=6ce667f4beafed9fb15895ac5dbe81504febfd8e32cf94d85dfa31c21eee2f7b @@ -4166,14 +5370,26 @@ sha256=6ce667f4beafed9fb15895ac5dbe81504febfd8e32cf94d85dfa31c21eee2f7b md5=1a6c59a7723d637c78672e7784da865d sha256=7157876cf358d1fb68b890c7da4f7025288a4e7b756af7b01009c5055637c954 +[http://heanet.dl.sourceforge.net/freetype/freetype-2.3.4.tar.bz2] +md5=1a6c59a7723d637c78672e7784da865d +sha256=7157876cf358d1fb68b890c7da4f7025288a4e7b756af7b01009c5055637c954 + [http://downloads.sourceforge.net/freetype/freetype-2.3.5.tar.bz2] md5=65234327c5ac46ee00ebda15995d4c1c sha256=1b357a3a1106c78c80dfd25e3854c3faa9a3dfc7063a4a1e5404e70c241d677e +[http://heanet.dl.sourceforge.net/freetype/freetype-2.3.5.tar.bz2] +md5=65234327c5ac46ee00ebda15995d4c1c +sha256=1b357a3a1106c78c80dfd25e3854c3faa9a3dfc7063a4a1e5404e70c241d677e + [http://downloads.sourceforge.net/freetype/freetype-2.3.6.tar.bz2] md5=fb182d508017cb608e9df8c7dca648dc sha256=d5a698c30376d14c1ce6540ed6d5627796421e6e97576620ea4562411a110e77 +[http://heanet.dl.sourceforge.net/freetype/freetype-2.3.6.tar.bz2] +md5=fb182d508017cb608e9df8c7dca648dc +sha256=d5a698c30376d14c1ce6540ed6d5627796421e6e97576620ea4562411a110e77 + [http://qa.debian.org/watch/sf.php/freetype/freetype-2.3.6.tar.bz2] md5=fb182d508017cb608e9df8c7dca648dc sha256=d5a698c30376d14c1ce6540ed6d5627796421e6e97576620ea4562411a110e77 @@ -4182,6 +5398,14 @@ sha256=d5a698c30376d14c1ce6540ed6d5627796421e6e97576620ea4562411a110e77 md5=0f6e7ecca08e6e108dc06337f5b5cabf sha256=f3ecdb9d108bd61ec9394df75f5fd68ba886a8da0863ba6258338893aec6c04f +[http://heanet.dl.sourceforge.net/fribidi/fribidi-0.10.4.tar.bz2] +md5=0f6e7ecca08e6e108dc06337f5b5cabf +sha256=f3ecdb9d108bd61ec9394df75f5fd68ba886a8da0863ba6258338893aec6c04f + +[http://www.tads.org/frobtads/frobtads-0.8.tar.gz] +md5=c31b44a7bea51f04958358e575bde731 +sha256=1aa4fe2f4a8d79f7f4542d96f0b179886c04cbdfd6a972a19ab80437e6150549 + [http://www.cs.unc.edu/~scheuerm/froot/froot-0.7.1.tar.gz] md5=ac310580a6a54b692b977e11a0e80242 sha256=210a55754c4ff0fa4143c22334a22bb2768f0c8ded2f6efa60144ea1b0abed6a @@ -4202,10 +5426,26 @@ sha256=fe7e46e529c7c3c969946c41efb519462f98dd5c280e247bd98ff629dcca1433 md5=99adcf3275943c109d27a781addf7d63 sha256=b0474b223a130e9412bb88f464138f40921e84f63b6024bf2ce5b32bd78d4bd8 +[http://xorg.freedesktop.org/releases/individual/app/fslsfonts-1.0.1.tar.bz2] +md5=c7b2f8a938749d41dc86db6bd1e6a4ca +sha256=3feb006a25f36856924e26249fe84b27142678f97175780960f085e1e263a62e + +[http://xorg.freedesktop.org/releases/individual/app/fslsfonts-1.0.2.tar.bz2] +md5=a61be25c87ee42169ee4dc8344acc9e2 +sha256=9c8e7d573284272c633b5cf18e3358830b27bde72f4bc1ae83a1ab337d463a92 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/fslsfonts-X11R7.0-1.0.1.tar.bz2] md5=c500b96cfec485e362204a8fc0bdfd44 sha256=662c12ac9aa7009d3fdf1d1682417a86a5a332c46f6f2f17887d370c9adf8b21 +[http://xorg.freedesktop.org/releases/individual/app/fstobdf-1.0.2.tar.bz2] +md5=99144743ab3cbb9cf37090fdc9e747db +sha256=690e45b252cd96036dd9b89af8624eb423e16d4bd662b07d264a3f876ce7ac22 + +[http://xorg.freedesktop.org/releases/individual/app/fstobdf-1.0.3.tar.bz2] +md5=49a6225380f6c18fff664a043cd569b1 +sha256=f2242720045c69f69dc9e18320a1c6402e92234d40c237367560fae3d210f7b0 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/fstobdf-X11R7.0-1.0.1.tar.bz2] md5=233615dca862b64c69bc212090a22b4c sha256=568896b458a4a8682a78a03248463a182bf3a34c18753a72cb9ca2c1bec3498c @@ -4238,6 +5478,10 @@ sha256=866d1e45a575f448148c227f60cde4c8b607c51f179da3a7ec1acb5036b8e3ec md5=9c7e8b6606b9f158ae20b8521ba2867c sha256=19f9e27a35e65b61c25b999c44d0c35ba858ad586379226849d097d638579057 +[http://heanet.dl.sourceforge.net/fuse/fuse-2.5.3.tar.gz] +md5=9c7e8b6606b9f158ae20b8521ba2867c +sha256=19f9e27a35e65b61c25b999c44d0c35ba858ad586379226849d097d638579057 + [http://downloads.sourceforge.net/fuse/fuse-2.6.0.tar.gz] md5=fa6c7b07a0be3a3e30d6cf3a6bad5817 sha256=782137879b964139e2dc4767114b763cb0e11ae322476404920cf767728e659e @@ -4250,22 +5494,54 @@ sha256=804d7fae424c97dc3790ad12d798e7b27dc6c12e4116f8bd69ca0130773d3f9d md5=66bd30503df55a87b9868835ca5a45bc sha256=ab91922367ca4c7ae5b176823eca579b2323c463e5d8b71fe5cdfc1061860124 +[http://heanet.dl.sourceforge.net/fuse/fuse-2.6.5.tar.gz] +md5=66bd30503df55a87b9868835ca5a45bc +sha256=ab91922367ca4c7ae5b176823eca579b2323c463e5d8b71fe5cdfc1061860124 + [http://downloads.sourceforge.net/fuse/fuse-2.7.0.tar.gz] md5=7c3d52f81816e3a8e0cc2b5822a37e86 sha256=a26117fb74b3bf6a3c6867611c46c53b75d6749198933486ec8a778ac315f855 +[http://heanet.dl.sourceforge.net/fuse/fuse-2.7.1.tar.gz] +md5=f95b4a238a3df5a92e9013ecb55c2c17 +sha256=e4639f9e08f0b8cc9f4a0bb8cbe47da06fa57cb310b2c5a82221e0a9ba969e9a + [http://downloads.sourceforge.net/fuse/fuse-2.7.2.tar.gz] md5=813782a4f23211386c1ea91dc0ac7ded sha256=fb390948aa27628e4fb48aa6658a20ad8c1ee304fe76bb60ac29b81c63d3baff +[http://heanet.dl.sourceforge.net/fuse/fuse-2.7.2.tar.gz] +md5=813782a4f23211386c1ea91dc0ac7ded +sha256=fb390948aa27628e4fb48aa6658a20ad8c1ee304fe76bb60ac29b81c63d3baff + [http://downloads.sourceforge.net/foosh/fush-0-9-0.tar.gz] md5=d7077d40a4bc18f05bc3a4895012646a sha256=ad4a64117094eafde12d7aa8c81f6425113d1ebf5b561c6cc93cfda46a2fef41 +[http://heanet.dl.sourceforge.net/foosh/fush-0-9-0.tar.gz] +md5=d7077d40a4bc18f05bc3a4895012646a +sha256=ad4a64117094eafde12d7aa8c81f6425113d1ebf5b561c6cc93cfda46a2fef41 + +[http://pypi.python.org/packages/source/f/fusil/fusil-1.1.tar.gz] +md5=e7dfc39fd169e8ba72b0aeb304acb25b +sha256=85f9a52578c9af3d2a062097144cb6dc507fff7df7e286479010e65cf6b6f23d + +[ftp://ftp.fvwm.org/pub/fvwm/version-2/fvwm-2.5.26.tar.bz2] +md5=a1c225fe6497bf86a59cac561abd9064 +sha256=84aca15165f600c5c09095c94b3ad1f0bfe16ba25cf2097f76312a0fba89251d + +[http://dfn.dl.sourceforge.net/sourceforge/linux-hotplug/fxload-2002_04_11.tar.gz] +md5=cafd71a5bff0c57bcd248273b2541c05 +sha256=15116da28bc90e961bd5fea454adf79272bc741f86d9636ed8b9b771d74814c3 + [http://downloads.sourceforge.net/g15daemon/g15daemon-1.2.6a.tar.bz2] md5=ba220f1fda33283af307c109cc520f61 sha256=583c4bece816b712959aba51f49d78bb587e215fbb6a322efe832477c74f2564 +[http://heanet.dl.sourceforge.net/g15daemon/g15daemon-1.2.6a.tar.bz2] +md5=ba220f1fda33283af307c109cc520f61 +sha256=583c4bece816b712959aba51f49d78bb587e215fbb6a322efe832477c74f2564 + [http://ftp.gnome.org/pub/GNOME/sources/gail/1.20/gail-1.20.0.tar.bz2] md5=697f83db831816946bb8944b8d34ec17 sha256=2e547b33a1f0abffb1a9860e5dc09330fbf6fbb45b7fe90dc5d12cea5fbe829e @@ -4322,10 +5598,18 @@ sha256=db42a0d1d0f8b069ea5ac1203207f9178f25ac1367f4910bd48547f5be1db4c2 md5=f42148bcaac4b6b097cf2055c780bcfc sha256=0ded02d0e6e648024f593f3c3748a73f8f569f680256c393c571144dd77b6fd6 +[http://heanet.dl.sourceforge.net/galculator/galculator-1.2.3.tar.bz2] +md5=f42148bcaac4b6b097cf2055c780bcfc +sha256=0ded02d0e6e648024f593f3c3748a73f8f569f680256c393c571144dd77b6fd6 + [http://easynews.dl.sourceforge.net/sourceforge/gallery/gallery-1.5.5-pl1.tar.gz] md5=d2f52d92776f47bf353787237607f23c sha256=9f17181cd8bf46203a288e3fc1d9bd82d5dc011fe419d33bee2f62bace081f08 +[http://{SOURCEFORGE_MIRROR}/sourceforge/gallery/gallery-1.5.5-pl1.tar.gz] +md5=d2f52d92776f47bf353787237607f23c +sha256=9f17181cd8bf46203a288e3fc1d9bd82d5dc011fe419d33bee2f62bace081f08 + [http://www.gnome.org/~veillard/gamin/sources/gamin-0.1.8.tar.gz] md5=985022c8b1b993e471d528fd0e14ffbe sha256=be22f69b4797db510f4270ff0e228dd027e99e561ac5f5d38be595be7e82d203 @@ -4422,6 +5706,10 @@ sha256=cfc0efbcc6fcde0d416a32dfb246c9df022515a312683fac412578c4fd09a9bc md5=ac6d19831220c4aeef4475492725486f sha256=98bdb26cd2644f2290e34453d9115b88bcff940bd1feb88db5a0fc557ec0ea5e +[ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.2.1/gcc-4.2.1.tar.bz2] +md5=cba410e6ff70f7d7f4be7a0267707fd0 +sha256=ca0a12695b3bccfa8628509e08cb9ed7d8ed48deff0a299e4cb8de87d2c1fced + [ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.2.2/gcc-4.2.2.tar.bz2] md5=7ae33781417a35a2eb03ee098a9f4490 sha256=673b85d780a082c014ded4ac11f8269a3fe893b4dbb584d65b8602d50b3872b1 @@ -4458,6 +5746,14 @@ sha256=dc126b21e2e9b93df2587b55418d8593642eaa8e14a74e14bd4cf93262a64443 md5=519e8b1a9911bdddfa2ee46fb36b9774 sha256=d166685bbae221c8cd1ad5efa7903f8520b117228e9ef0e85261c99ebfc5f66a +[http://ftp.gnome.org/pub/GNOME/sources/gconf-editor/2.22/gconf-editor-2.22.0.tar.bz2] +md5=7ca99aec214dd855b5de7dacc8937055 +sha256=e701134a1f5293070ca7d8d6311468f61e3a9765ebc520fcca6a0a38b214b7dc + +[http://ftp.gnome.org/pub/GNOME/sources/gconf-editor/2.24/gconf-editor-2.24.0.tar.bz2] +md5=845321d47b34f6ae19ac7e930c454e3d +sha256=666ba1186b2697c3a99ee943775fbc7a7aa18f3c8cc3d335a2581dea62f812bf + [http://www.boutell.com/gd/http/gd-2.0.21.tar.gz] md5=3134158635f5048dba99281c6b712a54 sha256=c3b8b7b57019927dad40870c379eecfa6389443f7e2096aa0157a0224d400da1 @@ -4470,6 +5766,10 @@ sha256=e6bff5c00d7d93bade78535573494673f581118c38a8ca13c3afd63809335ba0 md5=be0a6d326cd8567e736fbc75df0a5c45 sha256=2ba10c830e24781ec2e0594c6e49353e512e8bda782bc9a1851e70a5e8ced93e +[http://heanet.dl.sourceforge.net/gdado/gdado-2.2.tar.gz] +md5=b84114df6ca8b20560524afed0e21b25 +sha256=cc272f097832e074804bf405f2c013b4f941ad57f0f5f5ec6c08edecc9ad17fa + [http://www.gdal.org/dl/gdal-1.3.2.tar.gz] md5=67ed02dcea21e93f5e123bb0d322898a sha256=00f2b73fea5eff79ae26338928187f956427421bc70ddab0ab63fe5a58112b87 @@ -4514,6 +5814,38 @@ sha256=0483dac71c88ca0da5ee85729c0c1dd6793d928109ac79ad56583aa1a5ff43d2 md5=c6c22c7f9feff81a15f5c8ece03b87c1 sha256=619d59b339e1be7687058460c105b8f2d4f00e6409e4450dee385e3086fdf6d7 +[http://heanet.dl.sourceforge.net/geany/geany-0.14.tar.bz2] +md5=c6c22c7f9feff81a15f5c8ece03b87c1 +sha256=619d59b339e1be7687058460c105b8f2d4f00e6409e4450dee385e3086fdf6d7 + +[http://www.geda.seul.org/devel/20050820/geda-20050820.tar.gz] +md5=e8d903d84515cc518e545b6f2e3d7a9d +sha256=8e46a48d581f8b835f305bb17ffbb7776d53b9214113524819e96be842f9db98 + +[http://www.geda.seul.org/devel/20050820/geda-gattrib-20050820.tar.gz] +md5=6ff8e6343b621199dde7fcd9a7ff264a +sha256=c3b2751303d18c5d685b2d2c380065a93dab17a233657a6d1a09d9f2da64800f + +[http://www.geda.seul.org/devel/20050820/geda-gnetlist-20050820.tar.gz] +md5=94f2a666701e06438fda0a9ce00e5ae3 +sha256=3df3a23c73df7a9c2cc553836e6df797d01da094f6a947049f9fcc182110ef43 + +[http://www.geda.seul.org/devel/20050820/geda-gschem-20050820.tar.gz] +md5=8ac2387999ec98016c3b004c95fab424 +sha256=166abaa8b0c98e6c826a7c7273b7ddfb57f82be9929e4afbf00e0e3de5d45ef9 + +[http://www.geda.seul.org/devel/20050820/geda-gsymcheck-20050820.tar.gz] +md5=c339abc4956987852b948c44118b2e2f +sha256=3526fd4c30f351c3d548cb2632eda150eb632846b1273349aa2061d0400f9816 + +[http://www.geda.seul.org/devel/20050820/geda-symbols-20050820.tar.gz] +md5=a05c9bb11a31c246be3c9a799685bb0e +sha256=0534ccda5d9136a120abd18ebe3bccd3dbcc6414ec321ad2fd5f9258389ae13d + +[http://www.geda.seul.org/devel/20050820/geda-utils-20050820.tar.gz] +md5=6555466492f3273dbefb772bd4ffd486 +sha256=8140ff430e89c8564efabbc24da0d9b2858d5ac5e982dab9923eaf3b46a8aacb + [ftp://ftp.billsgames.com/unix/x/gemdropx/src/gemdropx-0.9.tar.gz] md5=fd0337e89778e2dba74461c555ea8e42 sha256=e50495d292a1d456c28044efbf07c16d8865f8d95e1caba86f4c5b2e3fb1d28f @@ -4522,6 +5854,10 @@ sha256=e50495d292a1d456c28044efbf07c16d8865f8d95e1caba86f4c5b2e3fb1d28f md5=664431bf6737df1c265500e1f0b5d40c sha256=e60f88763ee12c02a5c7ade1a58925ef0ab198f9ec6aaf404747dfc29074c7be +[http://heanet.dl.sourceforge.net/genext2fs/genext2fs-1.4rc1.tar.gz] +md5=664431bf6737df1c265500e1f0b5d40c +sha256=e60f88763ee12c02a5c7ade1a58925ef0ab198f9ec6aaf404747dfc29074c7be + [http://qa.debian.org/watch/sf.php/genext2fs/genext2fs-1.4rc1.tar.gz] md5=664431bf6737df1c265500e1f0b5d40c sha256=e60f88763ee12c02a5c7ade1a58925ef0ab198f9ec6aaf404747dfc29074c7be @@ -4530,10 +5866,18 @@ sha256=e60f88763ee12c02a5c7ade1a58925ef0ab198f9ec6aaf404747dfc29074c7be md5=1342f26b75d8edb1daa01999ce330d29 sha256=8e7dfa34f3919226550dc6507a23753f9fda55e78b15b264291ecf5940d837e9 +[ftp://ftp.nl.debian.org/debian/pool/main/g/genext2fs/genext2fs_1.3.orig.tar.gz] +md5=1342f26b75d8edb1daa01999ce330d29 +sha256=8e7dfa34f3919226550dc6507a23753f9fda55e78b15b264291ecf5940d837e9 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/g/genext2fs/genext2fs_1.3.orig.tar.gz] md5=1342f26b75d8edb1daa01999ce330d29 sha256=8e7dfa34f3919226550dc6507a23753f9fda55e78b15b264291ecf5940d837e9 +[http://geos.refractions.net/geos-3.0.0rc4.tar.bz2] +md5=90d4dba51dd75f8f1f12378e0f910d76 +sha256=7cd1b2266f5ae85a6d338c1c36ebe34e7c641ceb6a362e4526435c82d1e6fc5d + [ftp://ftp.gnu.org/gnu/gettext/gettext-0.14.1.tar.gz] md5=78f4b862510beb2e5d43223dd610e77d sha256=41f20c469c7759acb34cfa7e0b3cac9096d59a58ad800e471f07424a8e7adbb7 @@ -4558,6 +5902,10 @@ sha256=0a7bec1a381a450f650890b36253893df0001873ba1f414573a4247298107680 md5=dc94cb07c6e43fc8c4745b728b0ce32b sha256=71e285da2f8f03dd0c6f6a969d1f541ab2a2f1a9d91e26f6f60779897d68824e +[http://fnord.csbnet.se/giftcurs/giFTcurs-0.6.2.tar.gz] +md5=9a34b924ea10ce0a1d62441ee2bacfff +sha256=80db72ac16463ce084e76dc9aaae5b54ce8db085610c98fe2975c5b8f51a598d + [http://linuxbrit.co.uk/downloads/giblib-1.2.3.tar.gz] md5=06ae3113fdfe9f05a642bd844cc85eab sha256=42eb6bff68e88ef12a7ac2aa69848aeb29a8b69176b3bd3d9d67cf9a1233fe85 @@ -4574,14 +5922,26 @@ sha256=90825b05b675890bd405767a973d3c8c90eae36d22a7be6307e07a2e3c760d89 md5=7125644155ae6ad33dbc9fc15a14735f sha256=e1c1ced9c5bc8f93ef0faf0a8c7717abf784d10a7b270d2285e8e1f3b93f2bed +[http://heanet.dl.sourceforge.net/giflib/giflib-4.1.6.tar.bz2] +md5=7125644155ae6ad33dbc9fc15a14735f +sha256=e1c1ced9c5bc8f93ef0faf0a8c7717abf784d10a7b270d2285e8e1f3b93f2bed + [http://downloads.sourceforge.net/gift/gift-0.11.4.tar.bz2] md5=decc82159c6723be999b1306a808077f sha256=68149059b807b2fac505e376c18320e64104fbe0190e359f98059e73a63693dc +[http://heanet.dl.sourceforge.net/gift/gift-0.11.4.tar.bz2] +md5=decc82159c6723be999b1306a808077f +sha256=68149059b807b2fac505e376c18320e64104fbe0190e359f98059e73a63693dc + [http://downloads.sourceforge.net/gift/gift-0.11.5.tar.bz2] md5=f492b6e3607aed801b77657f3808f5c1 sha256=3d3013fb5648b6060202a63c13c160899da8baf756140c7fd8f4ed432b40fdd2 +[http://heanet.dl.sourceforge.net/gift/gift-0.11.5.tar.bz2] +md5=f492b6e3607aed801b77657f3808f5c1 +sha256=3d3013fb5648b6060202a63c13c160899da8baf756140c7fd8f4ed432b40fdd2 + [ftp://ftp.gimp.org/pub/gimp/v2.2/gimp-2.2.10.tar.bz2] md5=aa29506ed2272af02941a7a601a7a097 sha256=41f4befa851177e2ca9bbab2fad19926178c831454ca51f2cb91fec0ed9e243e @@ -4618,6 +5978,14 @@ sha256=f4055ea8f1815d7dcca6bf0159af70489243d63a14dcfaf2a994af062d829ca8 md5=0a8474e0d90b139b1baa70b097a4fd51 sha256=7f55ec02b5ab9e86c64f5718be64854fd9c64899908e580e1a9759421ac3b436 +[http://heanet.dl.sourceforge.net/g-inspector/ginspector-20050529.tar.bz2] +md5=0a8474e0d90b139b1baa70b097a4fd51 +sha256=7f55ec02b5ab9e86c64f5718be64854fd9c64899908e580e1a9759421ac3b436 + +[http://ftp.gnome.org/pub/GNOME/sources/gio-standalone/0.1/gio-standalone-0.1.2.tar.bz2] +md5=6c3ae062f5b32f20eeaf91603f92652e +sha256=a142efdd4508c7af90db878ded6f4713eb9bca47b508f60b294e62d7905ecff2 + [http://www.kernel.org/pub/software/scm/git/git-1.4.4.2.tar.bz2] md5=c4f72d96f62ae97c6e8d5cdb4afd55ca sha256=907138a7537ff8cef5a9bb258cbba3e32fa46b240f66cd16d5bf530e081ac6b9 @@ -4642,10 +6010,22 @@ sha256=692901194603cc4fb4072d8f907487d867caef6b62161f50f0f44dbeb001066e md5=b7200b08149599c4c0f56d88f0c7f208 sha256=53af32530e58ba23cbb752f063364612bbea57b31de2ee35814973452c2f63f2 +[http://heanet.dl.sourceforge.net/gizmod/gizmod-2.3.tar.bz2] +md5=b7200b08149599c4c0f56d88f0c7f208 +sha256=53af32530e58ba23cbb752f063364612bbea57b31de2ee35814973452c2f63f2 + +[http://heanet.dl.sourceforge.net/gizmod/gizmod-3.4.tar.bz2] +md5=f9185cc10aded1b8d32329369fb00dcb +sha256=46b84f8850f39c2d329abedbe40eb827644c11e2a05929911d54181bac663921 + [http://familiar.handhelds.org/source/v0.8.2/gkdial-1.8.1.tar.gz] md5=b21c6f87b16e398a188a2ed7c5dcd387 sha256=851ce45628729684bfcb2fab53f18e9be8fecb5ec8b6805071706a0e8f5bf983 +[http://members.dslextreme.com/users/billw/gkrellm/gkrellm-2.2.10.tar.bz2] +md5=57ef0525c0997ac2e7720712811f5a84 +sha256=d7676d7734d4821454a840a1ef05020c9c4f4797ab96ec54f2351e26d437c88c + [http://members.dslextreme.com/users/billw/gkrellm/gkrellm-2.2.7.tar.bz2] md5=6ff47bc8e66ba88f42932365a947f9f3 sha256=f921da7c8beb396278591b5ca7159b432a38902f1f872c4ae2d40aeb38f9cf01 @@ -4666,6 +6046,10 @@ sha256=706aa9da1c096af8d27b3ddb5da4e321dd6b10f881887639e280e4e10b81c4b3 md5=0b3a42098243d054475ff6eb51ed2be1 sha256=debc507172093ef7c74e8a83bf49e090cc24057b1807d3be22e5d7cbfab60054 +[http://ftp.gnome.org/pub/GNOME/sources/glib/2.12/glib-2.12.13.tar.bz2] +md5=d76124236e4e216e8c0861341e967a76 +sha256=1253d563ca2e50292d924849fe3a23c3b7bc707ab8b79bda19319f9d192b0e8e + [http://download.gnome.org/sources/glib/2.12/glib-2.12.4.tar.bz2] md5=ef7b9595fa788e245a0f883bddba8a25 sha256=1b1a0dc746a07c67aad15e22e3d751c3e7068c889d171efb1ab45efbab87c75d @@ -4714,6 +6098,10 @@ sha256=78dfbbd339ff1049275f76a2a6e6c8f0cf124d5cdbea62a2b36e9d76c0ea24ba md5=3b340946d6916ee9cbf2c348e7c099f1 sha256=78dfbbd339ff1049275f76a2a6e6c8f0cf124d5cdbea62a2b36e9d76c0ea24ba +[http://ftp.gnome.org/pub/GNOME/sources/glib/2.15/glib-2.15.6.tar.bz2] +md5=62b1a3c1fa52b8d91b4535e4a4ab3057 +sha256=90e5e5d555479456f13f0ef8bb3518816994785fccb18fc2e65d432f8dd34272 + [http://download.gnome.org/sources/glib/2.16/glib-2.16.1.tar.bz2] md5=9852daf0605f827bfd7199ffe4f5b22d sha256=f305a828b53194a99c35dfb88efa4d83d3998a95b9d8843ca3f84c2959e56695 @@ -4794,6 +6182,38 @@ sha256=dbf0deb003531cbd2493986718a1b34a113c914238a90de8b5b3218217257d82 md5=b45c4cfa714a4688c319149c15a1e060 sha256=0ae1b1dc1ee870d307ae6ad4546778377b04055520d3771dab1290e60ab13286 +[http://www.kegel.com/crosstool/crosstool-0.43/patches/glibc-2.3.6/glibc-2.3.5-sh-lowlevellock.patch] +md5=bb8da838930b8c6d06bafdbaad5dab1a +sha256=43cb2a382f30d189f0cacb71cbfa0b153a45a49e5fd73330893d24731fca4eb6 + +[http://www.kegel.com/crosstool/crosstool-0.43/patches/glibc-2.3.6/glibc-2.3.5-sh-memset.patch] +md5=1acb1e6c444ad45bb1390e7800dc4d7c +sha256=b301918536819d00b824e134fbdeba3cf4048da060e70e75c8ea56fd92689ad9 + +[http://www.kegel.com/crosstool/crosstool-0.43/patches/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.0-arm.patch] +md5=709cb2283068145e557912b0907341a3 +sha256=9dba644da5db0ec5104698706854dcd4ae8d6a10e9419eb049e3d6fcad9d81fe + +[http://www.kegel.com/crosstool/crosstool-0.43/patches/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.0-elf.patch] +md5=79ddbf5e5721442c5753344e4ecdda1c +sha256=c1ab6923fa4388407cd1dcb2ed441f25c2b9fa18cacf6aad549c31fed3c08f8c + +[http://www.kegel.com/crosstool/crosstool-0.43/patches/glibc-2.3.6/maybe/glibc-2.3.6-allow-gcc-4.0-powerpc32.patch] +md5=b89be3e1653ec6df317e30a10a0933b5 +sha256=0b5dd58a5240440ab6dcc0e2278bb99ebb20d0b558578652da59007bf27ae2fe + +[http://www.kegel.com/crosstool/crosstool-0.43/patches/glibc-2.3.6/glibc-2.3.6-configure-apple-as.patch] +md5=c4d41a712bf40dfb852e7bc18e1b6c52 +sha256=81611592bf30b4c1fa0c58d170d74c970dbc145127e16cb90d648663e2970cbf + +[http://www.kegel.com/crosstool/crosstool-0.43/patches/glibc-2.3.6/glibc-2.3.6-fix-pr631.patch] +md5=336ce18c81fe8d7c17d2f7a0dbd62766 +sha256=9487f1d4c05b9c94d94f8bcb34541ef04b77cfc0526dbb0b344c67f2ab388c5b + +[ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.3.6.tar.bz2] +md5=bfdce99f82d6dbcb64b7f11c05d6bc96 +sha256=e73ff5eddea95d09238b41d3c9c4d9ccddcf99fcc93d04956599c91c704f4a8e + [ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.4.tar.bz2] md5=7e9a88dcd41fbc53801dbe5bdacaf245 sha256=27aaaaa78b4ab5da76bb29385dc9be087ba7b855a9102eaaa78ce3ec5e2e7fcd @@ -4810,6 +6230,10 @@ sha256=3ded3a3c3ba2cf02d72479a5cc0829c7c261a9d0934e49a79233de9fa276ec22 md5=065c5952b439deba40083ccd67bcc8f7 sha256=4224a522ac4ee0fd89eb337e7505e280dfb05e2fe1ad44339ba8874081c0451a +[http://www.kegel.com/crosstool/crosstool-0.43/patches/glibc-2.3.6/glibc-fp-byteorder.patch] +md5=c89aac92d100761a767b9d5619fe582f +sha256=3033d84fd9a62d20a8cb0d42645d7cd5a28d2d108afcb4cc2d89db3dc1e328df + [ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-2.4.tar.bz2] md5=e2d892b40d654c523ab26a26b7dd86a1 sha256=2f29ec2b2b2f75f787a1eed8fdea20aff212dc3bad97651ca376914c49181977 @@ -4838,6 +6262,14 @@ sha256=74ec1a4a28f854a27deeb9dfd0673f9d8f8fb948b3db0b45503c287c1ec9d15f md5=9006b8bff18beb864f6053857f25b410 sha256=2d7af8211cda81abde3e0bb8ccedbd18924a27b244ff35d4eacafcf899038c56 +[ftp://ftp.gnu.org/pub/gnu/glibc/glibc-linuxthreads-2.3.6.tar.bz2] +md5=d4eeda37472666a15cc1f407e9c987a9 +sha256=6c3bc4a247d1e5308fb14f81956802f09095d3683219859fcad5795aa3aea638 + +[http://www.kegel.com/crosstool/crosstool-0.43/patches/glibc-2.3.6/glibc-mips-bootstrap-gcc-header-install.patch] +md5=dc31c9e01df62cba9457af7e9b9c968e +sha256=a69760ed0ea54b66c31d58cb32c7b23185a6b1d16f38dab8380ec4f2183b122d + [ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-2.4.tar.bz2] md5=7bb1b35654e94994925e66676acabd4e sha256=2fbbcaad8a9f8560485c398a9066959fe2713c8bc7e653ec476fb56fed21d19a @@ -4854,6 +6286,10 @@ sha256=d094028bc6d6691f56b4efeff7cd7e1c7ca10733e0cb5efc36e8fb08d8324bf1 md5=eaeb8527b8fa286c2d887157214f9998 sha256=3e481996259af87c3581da23481970a27de679e3c87cfa9a5a59751cd20c7b44 +[ftp://ftp.gnome.org/pub/GNOME/sources/glibmm/2.16/glibmm-2.16.2.tar.bz2] +md5=408054366f0acc01014f4c4af2304da5 +sha256=f033f6f39c32fc17ecce63087e41408671a3a43d698c83de2528af3fc7276d28 + [ftp://ftp.gnome.org/pub/GNOME/sources/glibmm/2.18/glibmm-2.18.0.tar.bz2] md5=1a0df362e15e7f850b8361b5102f1f16 sha256=ca6c46b87748cabd61e7d5ef892f09f433eaea324e63637f7de1f0217465cd31 @@ -4894,22 +6330,46 @@ sha256=769fbff3cc640b4ef14823ec3bd1c7364e30b37702cf7df391bdec5fc21666ab md5=a78f1d1ee403ad3bb2959159f7ae0e69 sha256=2bec403b16ebdcc2a82ea6523eea230e1d651e68094e4bb1af716b36f951ba06 +[http://heanet.dl.sourceforge.net/grift/glrr-20050529.tar.bz2] +md5=a78f1d1ee403ad3bb2959159f7ae0e69 +sha256=2bec403b16ebdcc2a82ea6523eea230e1d651e68094e4bb1af716b36f951ba06 + [http://downloads.sourceforge.net/grift/glrr-widgets-20050529.tar.bz2] md5=97bd37e930e4e3837ee3fae45a4eec8f sha256=62a88525ae1deb3112221c4e1068e8d940afb3b8e5664e353cf3360ab403b845 +[http://heanet.dl.sourceforge.net/grift/glrr-widgets-20050529.tar.bz2] +md5=97bd37e930e4e3837ee3fae45a4eec8f +sha256=62a88525ae1deb3112221c4e1068e8d940afb3b8e5664e353cf3360ab403b845 + [http://downloads.sourceforge.net/glurp/glurp-0.11.3.tar.gz] md5=cffb7c11906b71a54d4cd8e9d4bd043c sha256=dd419074ed74f5685d1a9d55249544bb3527f7e4ee86facd480ca5b7f3618f30 +[http://heanet.dl.sourceforge.net/glurp/glurp-0.11.3.tar.gz] +md5=cffb7c11906b71a54d4cd8e9d4bd043c +sha256=dd419074ed74f5685d1a9d55249544bb3527f7e4ee86facd480ca5b7f3618f30 + [http://richard.jones.name/google-hacks/gmail-filesystem/gmailfs-0.7.2.tar.gz] md5=895ee1c3f02973d39e73ccbee9552296 sha256=bff4adc856dcd14cc9d50c63177d1dd465ecd71c9d80594c26ff98afbf57b251 +[http://richard.jones.name/google-hacks/gmail-filesystem/gmailfs-0.7.3.tar.gz] +md5=306a58990ae299083bc9d704899ed1c5 +sha256=3539e060e3d02f4732c79c9a02e93898c562e2f2d77828ef4825ac6b1447a444 + +[http://richard.jones.name/google-hacks/gmail-filesystem/gmailfs-0.8.0.tar.gz] +md5=828417eb7355b61b0f474eabc826317f +sha256=69d8553b351c461a8e36ed633aa2da14fdb79423b9ce0e6d3174e5ace09fadd8 + [http://spruce.sourceforge.net/gmime/sources/v2.1/gmime-2.1.7.tar.gz] md5=ed99c382471294896f576e5f77694142 sha256=39ef812217a76982947a7ac3b4a97e8303466a3dd93709366d1559e0a7ec8a46 +[http://download.gna.org/getfem/stable/gmm-3.0.tar.gz] +md5=e543571d8812357374699491014abd58 +sha256=f7fad050ce4641a43c2249fd691e514a0ee6afc09b4ec54c8c30038d0c2783d1 + [ftp://ftp.gnu.org/gnu/gmp/gmp-4.1.2.tar.bz2] md5=ed39b34dd14014cc504840776af5ba10 sha256=51ba8551092510ef5c61798584f4cff054e0fbbe7c46fea2c8ff9ea9a52edcd1 @@ -4942,6 +6402,26 @@ sha256=7b47fd0d2e5a2f2d626b3e9e903ff8a0c0ce7c926925944dcea1f9ca3e6cfda1 md5=7b2e951912d4bee9613c35244ca32673 sha256=5cd061fa5d4906d6aa7183393c98d070dc689cbb946c13bebab6d6e4ecdc2231 +[http://heanet.dl.sourceforge.net/gmpy/gmpy-sources-101.zip] +md5=7b2e951912d4bee9613c35244ca32673 +sha256=5cd061fa5d4906d6aa7183393c98d070dc689cbb946c13bebab6d6e4ecdc2231 + +[http://heanet.dl.sourceforge.net/gmyth/gmyth-0.7.1.tar.gz] +md5=ab6b7525fd9c71cf5203f9e61abec0c3 +sha256=ce7cbf087b377f027516d90525bbea6130f70b42f176b2d17386b7247b290fdb + +[http://heanet.dl.sourceforge.net/gmyth/gmyth-upnp_0.7-indt1.tar.gz] +md5=29e58ea47e1548d70e4498cabca249a6 +sha256=f028ae7b331fdac9e5e70e4827fe1bcfa0274a9539e4224a9a49441776b2b517 + +[ftp://ftp.gnu.org/pub/gnu/gnash/0.8.0/gnash-0.8.0.tar.bz2] +md5=b3a3b22d608b5050b1b2743bc348c536 +sha256=ff8c3ca6f297ad4fa7cc8fecea45119dbaf8fef7f95901c04eccbf0d6424ef84 + +[ftp://ftp.gnu.org/pub/gnu/gnash/0.8.1/gnash-0.8.1.tar.bz2] +md5=5f80a25cb7a37fb351d28fd2097d8f3e +sha256=30fb283e707bc209109ca313c83b069b1c482497b62f8c4cc37e9a23e0ba8993 + [ftp://ftp.gnu.org/pub/gnu/gnash/0.8.2/gnash-0.8.2.tar.bz2] md5=05cac831181be3fb40cbf3c00ab25c0f sha256=4c81e71e6619b79da9641a90ed2c73c362603103bcdcc7b9cc5cc53739d06baa @@ -4962,6 +6442,10 @@ sha256=cea63cddf79864d306198c7a84091af0b4685816b352ae253a3e2bfac5e67cb7 md5=7f2a8cee97e62ebfa284363dc93b3178 sha256=9605f7aee1b8d58cac10dd514c2bdfa340089d85b149db828816d18ac3ebaff8 +[http://ftp.gnome.org/pub/GNOME/sources/gnome-common/2.18/gnome-common-2.18.0.tar.bz2] +md5=567172e685fc0783b1d6ab9843a85d6a +sha256=ba28c1017e7e4212db16ada3f44cb446b6637c9c4fe16c0e2c2a51c94c46bc5b + [http://ftp.gnome.org/pub/GNOME/sources/gnome-common/2.20/gnome-common-2.20.0.tar.bz2] md5=89e47677fb72695c75d2cefac84ff9f1 sha256=0e807cfe74a684c494a0949b7f96d231660f323253a89053e3ec32c4f518c8d9 @@ -4986,6 +6470,10 @@ sha256=56c7dbe56e6a9fbcd3730c55892734a9daff23a86d69f49a381a4c965732f9d1 md5=98de3b7d0da690da8b94cddc74f3914b sha256=8997a2ceca2dbb28fb402e23ea5f255b68c59ea4f932b253e2843bfe62af7c64 +[http://ftp.gnome.org/pub/GNOME/sources/gnome-desktop/2.22/gnome-desktop-2.22.2.tar.bz2] +md5=6d6271cfa135ce016126414d929b8fb7 +sha256=4bd3141b2c668b24b43ac10a7a7040ce0717d8f088aee8a93ef261e446d88818 + [http://ftp.gnome.org/pub/GNOME/sources/gnome-desktop/2.24/gnome-desktop-2.24.0.tar.bz2] md5=a2cc0424619f271bf1a65cc0fbe782f0 sha256=7ebe5b0c2bb296386f1d62c3a5d30ed50e353c8d9dc390b77e0b5fdf56e4dad9 @@ -4994,6 +6482,10 @@ sha256=7ebe5b0c2bb296386f1d62c3a5d30ed50e353c8d9dc390b77e0b5fdf56e4dad9 md5=16691f6bdc7c09445c457387adaba1f1 sha256=6a1499a1e50ac89210a9a1fdb36bc070ef6d1a02764a0f8d90de314dba01972e +[http://ftp.gnome.org/pub/GNOME/sources/gnome-doc-utils/0.10/gnome-doc-utils-0.10.3.tar.bz2] +md5=43f3a4086ec1254cbe20b85948192d18 +sha256=19b5b4425bc578af8a1c58b61f1b9a416743d0b1fae3356cd9a0071f1f66632c + [http://ftp.gnome.org/pub/GNOME/sources/gnome-doc-utils/0.12/gnome-doc-utils-0.12.0.tar.bz2] md5=5934c08d12407d8233416343cd73df24 sha256=6bb8ec068558e380aff1e3f0aa130b52161ad68f8d495fce45c55783bbba9076 @@ -5002,6 +6494,10 @@ sha256=6bb8ec068558e380aff1e3f0aa130b52161ad68f8d495fce45c55783bbba9076 md5=21fe881ab473fdc9246c36bd8ef929b0 sha256=5b51e0dfae64e7f48883fce6657fcf47a03f6429e2c67024203e31cc29032a22 +[http://ftp.gnome.org/pub/GNOME/sources/gnome-games/2.23/gnome-games-2.23.6.tar.bz2] +md5=9f13ed34427d4c19d423464cd59dba08 +sha256=af2ebf32fe93817e06333b94d3fabcf72fa5675f402c1bbdb7bed3be0b3b3a3e + [http://ftp.gnome.org/pub/GNOME/sources/gnome-games/2.24/gnome-games-2.24.0.tar.bz2] md5=23bf4e795725a74ebb37daacda784adb sha256=3105dfb490c187adbe1c14582daa5a134ec672c396af3dd4e0e29cc9fbb4a6ea @@ -5030,6 +6526,14 @@ sha256=1c6d5a1732742469ec32ab7297f3b8eacfc0f4bfae5fdb096b603877dde12612 md5=dc17fa8b04172d3b1993caa6959a7648 sha256=f6799acf59bc91054c4832e7956cb3126effdf911f746139478dcfa8ec727653 +[http://ftp.gnome.org/pub/GNOME/sources/gnome-keyring/0.6/gnome-keyring-0.6.0.tar.bz2] +md5=1e3a3a12b19fc5ebe95363658c2256d8 +sha256=649f2a0d5298b896781d0ac563b8ea1be7f3fe07fd17ea43b0ec0562be47769f + +[http://ftp.gnome.org/pub/GNOME/sources/gnome-keyring/0.8/gnome-keyring-0.8.1.tar.bz2] +md5=24b15dedcf40c1c60d0fb989370d80ff +sha256=ad28558e2c0e5496cdfec3f8badf84d64af3aebc3fc9f5632066591e20ce3943 + [http://ftp.gnome.org/pub/GNOME/sources/gnome-keyring/2.20/gnome-keyring-2.20.0.tar.bz2] md5=effc946bf3fa05d70b1251801383efd2 sha256=6fadcd85a16672381857de0e1cf2b6fe16ec3393931f92427deb13153eeabe1c @@ -5050,6 +6554,10 @@ sha256=f77192ca0b909000f675ad3cd520c313431ee117d554102c7ea486f76f396f6b md5=a5c467abe68003d23ec09a795ebfd29f sha256=72238f33406ada505fde8555ff93c00e7fec055a41500339b434c5445b09c87b +[http://ftp.gnome.org/pub/GNOME/sources/gnome-menus/2.22/gnome-menus-2.22.2.tar.bz2] +md5=2bb185643632b28f4dba4b8201b8e230 +sha256=b3ef17eb05308e35e1627e5ca56b6951e9aea69cf112164ef698cdad6f44ed23 + [http://ftp.gnome.org/pub/GNOME/sources/gnome-menus/2.24/gnome-menus-2.24.0.tar.bz2] md5=1816a0d21ef99d5b3a8bcd033c88f732 sha256=f19ac5af961be1d6244f9526311af8a67518c7403ef71209dcee94b68f77d58e @@ -5078,6 +6586,10 @@ sha256=61a01f535b50ca0a4c35b4b59513287f17e0665c0b678952cae663b883b13827 md5=6c325f5b5f9f424faa494665720bcfb9 sha256=c04b53bcc0057ed042169baa725ed3769194864e5824643cc0af8c58cf773d2c +[http://ftp.gnome.org/pub/GNOME/sources/gnome-panel/2.22/gnome-panel-2.22.2.tar.bz2] +md5=3d8aab9d476a593e731afcd60272454a +sha256=e1ecc0ddc5a09481deb2daa1f30fa14472bfed541db46bb4f49f3d0d728b0a45 + [http://ftp.gnome.org/pub/GNOME/sources/gnome-panel/2.24/gnome-panel-2.24.0.tar.bz2] md5=0d246880611a4c58fe2ff99614b96918 sha256=6d6d0f013594f1d5f685bc9d35ad2c64d7817339a932d8e17eede5b8a3c8196a @@ -5086,6 +6598,14 @@ sha256=6d6d0f013594f1d5f685bc9d35ad2c64d7817339a932d8e17eede5b8a3c8196a md5=db310dadcc958a781a2752a6a7748e60 sha256=78f7dc6946e178513202f06afc19496c8ac1e3ac6c43c56c40f4db1a23762179 +[http://heanet.dl.sourceforge.net/gnome-power/gnome-power-0.0.5.tar.gz] +md5=db310dadcc958a781a2752a6a7748e60 +sha256=78f7dc6946e178513202f06afc19496c8ac1e3ac6c43c56c40f4db1a23762179 + +[http://ftp.gnome.org/pub/GNOME/sources/gnome-power-manager/2.18/gnome-power-manager-2.18.3.tar.bz2] +md5=3341092fc87ced400631c3d635979426 +sha256=0bcc8a35d52279cd24de93e957bf0f8b3359d096cd891e5bed07cb4b912f920b + [http://ftp.gnome.org/pub/GNOME/sources/gnome-python/2.22/gnome-python-2.22.1.tar.bz2] md5=02054115dc86617da2a80eb87a1f988b sha256=559b5d857b4fbc31418bc677f3391182ba1c357cabb8dfee04a1e709a7a63d01 @@ -5094,10 +6614,22 @@ sha256=559b5d857b4fbc31418bc677f3391182ba1c357cabb8dfee04a1e709a7a63d01 md5=d8f8e61d99402e8b0a82d3c8d6e873be sha256=7ad66f99a1bad1ae0bbb02bd7a7cf8ed17fdc3fd104fa5c68e04961459ad5c50 +[http://ftp.gnome.org/pub/GNOME/sources/gnome-python-extras/2.19/gnome-python-extras-2.19.1.tar.bz2] +md5=08896c63d71ce44d20fafbaf9c0edc78 +sha256=c5f74f4c46dbb379d119d6f74ca4a47653af251bea176dc7a0ecacccb88339f0 + +[http://ftp.gnome.org/pub/GNOME/sources/gnome-system-monitor/2.23/gnome-system-monitor-2.23.6.tar.bz2] +md5=bc7e7e252465948b122e267713bba4a0 +sha256=4fbd2eccb335fa92487b3307bd83c4f468342f1787856377abbb6ad862271451 + [http://ftp.gnome.org/pub/GNOME/sources/gnome-system-monitor/2.24/gnome-system-monitor-2.24.0.tar.bz2] md5=edd7f02e30683054b94a89aa62c74d1e sha256=cf2f96f3c91749fdcec39d3eb89273f6d3a47cc7bc0c5faa0915808409c9d563 +[http://ftp.gnome.org/pub/GNOME/sources/gnome-themes/2.22/gnome-themes-2.22.2.tar.bz2] +md5=1989167d700e835fe57993c6be90434c +sha256=b6047835d6fae7269825028c4f7da2c1ff380c023fbd58ac69fdea8a707bac77 + [http://ftp.gnome.org/pub/GNOME/sources/gnome-themes/2.24/gnome-themes-2.24.0.tar.bz2] md5=0dd3fc0d034d7f51379ea6f335d1d257 sha256=7a7fd49793c790c508cebce5e4ff99c83ddcaa6fd57266ce46ff9ac4cc3b9063 @@ -5138,14 +6670,26 @@ sha256=bd6b432e48532942475ea9cc814131054de1b30e8f5520017a42369ea2224c89 md5=29f6997c0523254b54f8d36f0361b824 sha256=482bda65d8083a66f84d88d808388fac34b2c5d808676105d200ac9049efb82e +[http://ftp.gnome.org/pub/GNOME/sources/gnome-vfs-obexftp/0.4/gnome-vfs-obexftp-0.4.tar.bz2] +md5=6e38828738301fb3ec88c0461ff53a60 +sha256=2a50b2bb76c521f588e14ee2ed5411f5abad750050d929dcea32ebd0de3499f8 + [http://downloads.sourceforge.net/gnomebaker/gnomebaker-0.6.0.tar.gz] md5=351363497017121d3a1d43b0e3a0f515 sha256=b1639296a7c5de7fbc37464ed70d68007edcb884eb4b5983a1c5f9028f50fb0b +[http://heanet.dl.sourceforge.net/gnomebaker/gnomebaker-0.6.0.tar.gz] +md5=351363497017121d3a1d43b0e3a0f515 +sha256=b1639296a7c5de7fbc37464ed70d68007edcb884eb4b5983a1c5f9028f50fb0b + [http://downloads.sourceforge.net/gnomesword/gnomesword-2.1.2.tar.gz] md5=ce1171f19a40256cfdd31f42c979d91c sha256=77cb4bd39a4cec2aa3d61b0519134f9e4a65613960b3b3ee34dd2452d5e12ba7 +[http://heanet.dl.sourceforge.net/gnomesword/gnomesword-2.1.2.tar.gz] +md5=ce1171f19a40256cfdd31f42c979d91c +sha256=77cb4bd39a4cec2aa3d61b0519134f9e4a65613960b3b3ee34dd2452d5e12ba7 + [ftp://ftp.gnu.org/gnu/ghostscript/gnu-ghostscript-8.16.tar.gz] md5=c42dfaebc37fe81eab0b5676b124ab63 sha256=417922d35e66ee90cf93cf3e93fdf281ec6b92de4f7436c9c1a97c0cc35b94a8 @@ -5158,6 +6702,10 @@ sha256=d97ee0f1c45e1bfa880305a33e7e0ef695927094adce100cc76a76a0f57ef789 md5=78ffd75ae6abc3bb20dd04407a082a26 sha256=badaa6899f71ef112515ce81aee02e559e18b5fa87c7f2262390764aaf9b1dc0 +[http://ftp.gnome.org/pub/GNOME/sources/gnumeric/1.8/gnumeric-1.8.2.tar.bz2] +md5=f60edc6ca42daa2fb3717f3c90fa8a6e +sha256=8418ed3a2e8dad923a6626d22eaffe796aab9cbcf827a17ab95bf99956e22a6d + [http://ftp.gnome.org/pub/GNOME/sources/gnumeric/1.8/gnumeric-1.8.3.tar.bz2] md5=3ce6ba6483ccd6fe9974cface582337a sha256=173df749482f7391e50a6eb8339107b2b201582978637c63190c4a79f8e66d07 @@ -5178,6 +6726,10 @@ sha256=4aae09bf99ab2642308b0042eb18b75bc18ff33969a7431bba60b09cc2f600f4 md5=3cde3b9232a2d81715bbaf75e1c87ecc sha256=2a20701410a21307c404a9d10ad9fdf699bb92fa0a919797213208d80b080913 +[http://heanet.dl.sourceforge.net/gnuplot/gnuplot-4.2.4.tar.gz] +md5=3cde3b9232a2d81715bbaf75e1c87ecc +sha256=2a20701410a21307c404a9d10ad9fdf699bb92fa0a919797213208d80b080913 + [ftp://ftp.gnu.org/gnu/gnuradio/gnuradio-3.0.4.tar.gz] md5=d04b446fc76687272e64259d36d78b0e sha256=2374cbf6df3568d7cef16ba6a11802e52e37d88719f704dff40d4fff9f81d313 @@ -5246,10 +6798,18 @@ sha256=158258dcb85fd4f3e4ee5a61df49560f8b65d94682ef9322cbb20fb2d3e93034 md5=bb86c6ee2d953da77519cac4e1a5c609 sha256=fb35c1ae8dcd8cf81836a65536b7f62a274a90ccab6f579519c0885a575095bc +[http://ftp.gnome.org/pub/GNOME/sources/goffice/0.6/goffice-0.6.2.tar.bz2] +md5=f52d78cffbcfc3c13336fd308ea3926e +sha256=b126902259875a24ece29bdf1f93cc7fd4fd7b83508cae1c15dabd10b4d537cd + [http://ftp.gnome.org/pub/GNOME/sources/goffice/0.6/goffice-0.6.3.tar.bz2] md5=3d8d3357f9d58af901cd1d6eb42e2973 sha256=a252aff88d801175b27fd7c20e00b0b5f674a5a70e64cd95091abdcab87db35c +[http://heanet.dl.sourceforge.net/gparted/gparted-0.3.3.tar.bz2] +md5=f3d16ccfda72fa1dac9fa1ff9ded2c42 +sha256=c7c86abd344055bdf1f840a037d04064759f52039cb075260b60369b721f245c + [http://ftp.gnome.org/pub/GNOME/sources/gpdf/2.10/gpdf-2.10.0.tar.bz2] md5=9278cd3b9d06e3b1d364452f0e512fa9 sha256=b6a5abf78363205e01bf1d238eaf4c349c9725f57aa18e2adc0445268540c7e6 @@ -5294,10 +6854,26 @@ sha256=8895c046511d06c47dcc8d8608cb220e0b608cede1ea169174ab3bc451d111c5 md5=74ca3a6e37c9d9ae9fe2c50fc6d8350f sha256=63490b00244b0e6d7b54205e0d27ab22784ad0b328c7fa3e56aa0133677884fe +[http://gpephone.linuxtogo.org/download/gpephone/gpe-applauncher-0.10/gpe-applauncher-0.10.tar.bz2] +md5=466f9316024ed82ee1921b56376f04ce +sha256=916ef522cbd2af8cc9623c2e4a34a8d1e45f9852bbb63a40ac056ba2c773eada + +[http://gpephone.linuxtogo.org/download/gpephone/gpe-applauncher-0.11/gpe-applauncher-0.11.tar.bz2] +md5=e02616d1fbbeb441187f3e2db17517ca +sha256=a5186b3099643f74e41e2a805489df8edc453bf1ab6eae1cef821a5b814e5035 + [http://gpephone.linuxtogo.org/download/gpephone/gpe-applauncher-0.7/gpe-applauncher-0.7.tar.gz] md5=2eaedfe736b88624c360ddda2b6fa777 sha256=2afd5a23705fe95f6abc12e842f2ebaaa038bd4c8cf8a971a848a48a14e100bc +[http://gpephone.linuxtogo.org/download/gpephone/gpe-applauncher-0.8/gpe-applauncher-0.8.tar.bz2] +md5=a4f874b54620e3a5f6c6cfac9e6ba87c +sha256=2955cc5249550f44af484a21aad970b923a5d27a9326f63ed285191a8472239e + +[http://gpephone.linuxtogo.org/download/gpephone/gpe-applauncher-0.9/gpe-applauncher-0.9.tar.bz2] +md5=afe554c858175317266701fd18a30a68 +sha256=e6d323d29dded45661e158fce101fbc557c88da56ffdd2576934dcca81464edf + [http://gpe.linuxtogo.org/download/source/gpe-appmgr-2.8.tar.gz] md5=2dd3d56eee8905451e9c31cfda620f7a sha256=1a797188e9786936c32fee6ba3e20f01d562583f6407cf8d83f729ab708e1342 @@ -5386,6 +6962,10 @@ sha256=e51bdbba46d7d6950c1f4d3139a167f4c823e403f8a53b30a16cea32c7d540dc md5=b10a91ce3fb39b87656fc5c5510b68d6 sha256=780ddb4f2bb72e3e8d970ebc647c8040cfef0fccd405773cf7776074c26175b6 +[http://gpe.linuxtogo.org/download/source/gpe-calendar-0.90.tar.bz2] +md5=e2834f77e3e9a476fd9a114411cdfa22 +sha256=b70e8a2d20c206cfc978d918d73356a4a46f948ce109714d07b82c5327308498 + [http://gpe.linuxtogo.org/download/source/gpe-calendar-0.91.tar.bz2] md5=478ed24de48860712f45563640041301 sha256=75581218e2871c8bd1ab645977318050d9ba60c5cf632a51c05c4339fa9365ae @@ -5498,6 +7078,10 @@ sha256=9aee93207a4f48b16c17bf59fe151f2a8890731b73e07bfcb73d2fcc297eb848 md5=ee998780d384e68cdd15748392f59980 sha256=9ce4624ca3ca7e641fac7513dcef6614bce611c338466c742a0e19346cf94f82 +[http://heanet.dl.sourceforge.net/gpe-expenses/gpe-expenses-0.0.6.tar.gz] +md5=ee998780d384e68cdd15748392f59980 +sha256=9ce4624ca3ca7e641fac7513dcef6614bce611c338466c742a0e19346cf94f82 + [http://gpe.linuxtogo.org/download/source/gpe-filemanager-0.23.tar.gz] md5=2ddfe35b6bcf3269de704bfb44b568e1 sha256=434991a5c562ebb1e381e05dddc6c8916f5a8c851dc4d2a6b3781db1222a8f69 @@ -5582,6 +7166,10 @@ sha256=6dd6f9b558ef7306578b4be1a83712e1080104570499fa9329072973bd2ed50f md5=4e6dfd761f62764f98b9f6c2c09f3715 sha256=8bea38af14c98354b1ee023475315ae3ba462d33b136a73cde9d83303b659d84 +[http://gpe.linuxtogo.org/download/source/gpe-memo-0.2.tar.bz2] +md5=3ec65b008347d4eb4fa0477787ebfc12 +sha256=769faaf00a6da6b86e624407d636ec268593537a394fd99437aeb3e3f74c17eb + [http://stag.mind.be/gpe-mini-browser-0.11.tar.bz2] md5=ebdb2eebb1ca1a5cb8ca7f1e4e3bb817 sha256=372836198e10982525f01e8bf9d959777ab66f93d0688274c43200c4b8c959f8 @@ -5710,6 +7298,10 @@ sha256=a1fbdb1e8357b0b2362df9ee457c90dcaafbe7a11723117cb0cbee1ea0f6315c md5=2c60de78f2e539ea242c4ba891d3e5ed sha256=4b1e77ff0a5a74165bae6e842f122fc17a6331e0566a2b83d1ad8ac3ef5fe4b8 +[http://gpephone.linuxtogo.org/download/gpephone/gpe-phonepanel-0.9/gpe-phonepanel-0.9.tar.bz2] +md5=36bb2575a246b036049f42d0f5b03594 +sha256=8864d8be79e16820861254d51a0bfdcfd045d8b41a46ef5833f6bb5b30a9b1c4 + [http://gpe.linuxtogo.org/download/source/gpe-plucker-0.4.tar.gz] md5=05e4285049e9458bf1bb52a56f5ffc26 sha256=5a97f5365d97b7332c9aa32e134ec7ae32587873416ec2b6eca2b73635c3f62d @@ -5750,6 +7342,10 @@ sha256=dc0648a0f1eabbf42a5ec8d04e02a576097b68cc1ce0558546d9081cd89b5e1b md5=28ec6921d665c8ccde521181a9d26e24 sha256=ae9c0fcdc13c3fa69038a0471f459602a6a45de6c44a0fa8c5c3241b6925e3bd +[http://www.telefonica.net/web2/mteirap/gpe-snes-0.2.tar.gz] +md5=24562cd0cf481d6912621ad9c60cb9cb +sha256=1807b46c5859c0933dba2a795374fff0270c0fd792874d1b256ec0899ab08d69 + [http://gpe.linuxtogo.org/download/source/gpe-soundbite-1.0.6.tar.gz] md5=9eac057d9a91b5b12b2b1cd7d88b60a6 sha256=44278e12358531f588501b2d79bb3a32c69e3cddb243674a414df20e3990f196 @@ -5814,6 +7410,10 @@ sha256=f43b452ac845b7406fe6b6d7aa9ca64fad731142cd9912e79f03fc5c6b8c10ad md5=043c21b35c7f00b21745c8a3a61c12ac sha256=a04f41837a995c1f1834a66be41bc0b7237ee181314607dfb0ef733984765d04 +[http://dominion.thruhere.net/koen/pda/files/gpe-theme-clearlooks-0.2.tar.gz] +md5=043c21b35c7f00b21745c8a3a61c12ac +sha256=a04f41837a995c1f1834a66be41bc0b7237ee181314607dfb0ef733984765d04 + [http://dominion.kabel.utwente.nl/koen/pda/files/gpe-theme-clearlooks-0.3.tar.gz] md5=949d3329e9b9904814302db7132d468a sha256=f2f1e03e3283f6182d02928cbdb5ea8160f786037d4a135947794da488ebe805 @@ -5830,6 +7430,10 @@ sha256=40df3e20e7c563b49ae0d5b4ff9151d0b9062815e7222f361b949cb60d9b0b59 md5=75898910db553923aa312ed2b1545364 sha256=6aeb1dd991f0e0bcc11562061148051520562c81dc6bf18c03f0cc86a72f6093 +[http://dominion.thruhere.net/koen/pda/files/gpe-theme-industrial-0.1.tar.gz] +md5=75898910db553923aa312ed2b1545364 +sha256=6aeb1dd991f0e0bcc11562061148051520562c81dc6bf18c03f0cc86a72f6093 + [http://dominion.kabel.utwente.nl/koen/pda/files/gpe-theme-industrial-0.2.tar.gz] md5=756f38d53eaae09d87655f3ed3a660c2 sha256=4524df3931041dc31985014b5f581396217b0b3f6aa00225d98060f1a9cc1b67 @@ -5966,22 +7570,46 @@ sha256=9b5c1d9dd51c4c8909219619412c7a983512b6ac958ab4cf661322d930c2a665 md5=5bbee55d4e59b063d3cff0fbc9121006 sha256=c52e77a52ad11a02ae9f0b8491915f3f09fec23f8f740cc6079570241caf63cb +[http://heanet.dl.sourceforge.net/gphoto/gphoto2-2.1.4.tar.bz2] +md5=5bbee55d4e59b063d3cff0fbc9121006 +sha256=c52e77a52ad11a02ae9f0b8491915f3f09fec23f8f740cc6079570241caf63cb + [http://downloads.sourceforge.net/gphoto/gphoto2-2.1.5.tar.gz] md5=9bd1a033389f9e4e6425dda4f6e603c9 sha256=fefaabea8aede51ae9560ba71e2a7c31f4d856b0bb1fc0de7297d12e1215698c +[http://heanet.dl.sourceforge.net/gphoto/gphoto2-2.1.5.tar.gz] +md5=9bd1a033389f9e4e6425dda4f6e603c9 +sha256=fefaabea8aede51ae9560ba71e2a7c31f4d856b0bb1fc0de7297d12e1215698c + [http://downloads.sourceforge.net/gphoto/gphoto2-2.1.6.tar.gz] md5=2de2bcc62599b8a7337b54b0a067c50b sha256=82330519effc421a39c196d2a2806dc9c3cdcc891b7ec34dee04b3fe4ef4534a +[http://heanet.dl.sourceforge.net/gphoto/gphoto2-2.1.6.tar.gz] +md5=2de2bcc62599b8a7337b54b0a067c50b +sha256=82330519effc421a39c196d2a2806dc9c3cdcc891b7ec34dee04b3fe4ef4534a + [http://downloads.sourceforge.net/gphoto/gphoto2-2.4.0.tar.bz2] md5=5fd1f711ca806adb687b33c55964d898 sha256=8aa5ac34dae18284f3f04db874648a6dc70ecee3045ace674351b7326ae1c4e5 +[http://heanet.dl.sourceforge.net/gphoto/gphoto2-2.4.0.tar.bz2] +md5=5fd1f711ca806adb687b33c55964d898 +sha256=8aa5ac34dae18284f3f04db874648a6dc70ecee3045ace674351b7326ae1c4e5 + [http://downloads.sourceforge.net/gphoto/gphoto2-2.4.2.tar.bz2] md5=9c57dd8b89ccfeafdd2037516185f6e9 sha256=c9ef8c2f61bbe9978b38341ca2bf09786416ddd82d4708066a26a0483341ca72 +[http://heanet.dl.sourceforge.net/gphoto/gphoto2-2.4.2.tar.bz2] +md5=9c57dd8b89ccfeafdd2037516185f6e9 +sha256=c9ef8c2f61bbe9978b38341ca2bf09786416ddd82d4708066a26a0483341ca72 + +[http://heanet.dl.sourceforge.net/lxde/gpicview-0.1.5.tar.gz] +md5=5c484ea089f5a6455265e1e1f472240e +sha256=7663e1849f3b1f2225a3310f907f86068d7ac5c8957d68fc4a684059b49211ca + [ftp://arcana.linux.it/pub/gpm/gpm-1.20.1.tar.bz2] md5=2c63e827d755527950d9d13fe3d87692 sha256=11fabe7f27a205ff1ea6aee23e1dc2bb2dc5dbfc45ff0320fca0cd559806a936 @@ -5994,6 +7622,10 @@ sha256=c29373b752730195fc52e6ab0fc871f259284e2175bf2baf1701f027da60d200 md5=cf9f349fec33760c8026c9b12c6f7a9d sha256=539d5c703799b12f5785286a689fd16f5fe957c2eaf460360e79f5f51d8c132e +[http://heanet.dl.sourceforge.net/gpsbabel/gpsbabel-1.2.5.tar.gz] +md5=cf9f349fec33760c8026c9b12c6f7a9d +sha256=539d5c703799b12f5785286a689fd16f5fe957c2eaf460360e79f5f51d8c132e + [http://downloads.sourceforge.net/gpsbabel/gpsbabel-1.3.3.tar.gz] md5=0ba7f4c623518e6bfe8da12d0691fb96 sha256=b5d1021b0ea755d6b3bee57b0720a22021b6c8bad88acbda314874987f7fc1a6 @@ -6042,6 +7674,10 @@ sha256=ebefe385ec41e3ff26fa55c0fcecbed75d4cd5581ae5ae39038aac796af126c6 md5=541ec5a5b86cf9e56f0b23cf6c80dd6e sha256=c1378384b1737b2fa330f8d63d7777db311c976bb20e0c0e0fcd5dac0e78672a +[http://heanet.dl.sourceforge.net/gpstk/gpstk-1.2-src.tar.gz] +md5=541ec5a5b86cf9e56f0b23cf6c80dd6e +sha256=c1378384b1737b2fa330f8d63d7777db311c976bb20e0c0e0fcd5dac0e78672a + [http://people.defora.org/~khorben/projects/gputty/gputty-0.9.8.tar.gz] md5=d227a37a8a7b036eed44e4278db45735 sha256=fcee22d7e31a936cde4672ac318ffabb9d39b7fc3b74de391bdade1419c59dfd @@ -6054,10 +7690,18 @@ sha256=948d389d72906b798db3b5013a1769d1f8c9c9f3b6dff66c8820dfa0820b02e2 md5=4644187d9b14b1dc11ac3bb146f262ea sha256=12fea494e607a69eff31cdca13d306ef1b0b3b7850be0f8b236f267d8f2e9546 +[http://heanet.dl.sourceforge.net/gqview/gqview-2.1.5.tar.gz] +md5=4644187d9b14b1dc11ac3bb146f262ea +sha256=12fea494e607a69eff31cdca13d306ef1b0b3b7850be0f8b236f267d8f2e9546 + [http://downloads.sourceforge.net/granule/granule-1.2.4-1.tar.gz] md5=7f4e11d04e369391de27fca82ee60f11 sha256=300a3151efbd984fe51e7c230ae419efd197fa2aaa6b8791188aeab3917a505c +[http://heanet.dl.sourceforge.net/granule/granule-1.2.4-1.tar.gz] +md5=7f4e11d04e369391de27fca82ee60f11 +sha256=300a3151efbd984fe51e7c230ae419efd197fa2aaa6b8791188aeab3917a505c + [http://grass.osgeo.org/grass62/source/grass-6.2.3.tar.gz] md5=75c8832f90e445ff361d767c8a2c3ece sha256=a172d233fcbfc7f2c2de01af1f6fc7828e46867785dcaf861cf87238775e4a61 @@ -6066,6 +7710,10 @@ sha256=a172d233fcbfc7f2c2de01af1f6fc7828e46867785dcaf861cf87238775e4a61 md5=7dce50a076e2481733148ba34cbebc07 sha256=a84658a7065a3ece09d3d18a3b601515484d1e5dbb3a92b8fbac3c37e368acf4 +[http://download.savannah.nongnu.org/releases/grdesktop/grdesktop-0.23.tar.gz] +md5=46f8f3e2d4aa2433b8b1537fefa8a4b7 +sha256=a94632ed42273d280ad4f8eec6a803024666ed5c8737ae34585c2d9d2eed5193 + [ftp://ftp.gnu.org/gnu/grep/grep-2.5.1.tar.bz2] md5=ddd99e2d5d4f4611357e31e97f080cf2 sha256=fca0532a4b58021863b6673dc65b275f3e34cafd3b327dcf47da265af359778a @@ -6078,6 +7726,10 @@ sha256=cb47ab7e7e472e1cb27948d2ce055632ad68557f5ed5af989278e43117a611cd md5=9b51933a03dd7d7ddfbb3643fc82c2d0 sha256=5a51a67f2828aa679a46bbb95cdc5346d6d4516f8ba74b7744b6049ccbe805ca +[http://heanet.dl.sourceforge.net/grip/grip-3.2.0.tar.gz] +md5=9b51933a03dd7d7ddfbb3643fc82c2d0 +sha256=5a51a67f2828aa679a46bbb95cdc5346d6d4516f8ba74b7744b6049ccbe805ca + [http://ftp.gnu.org/gnu/groff/groff-1.19.1.tar.gz] md5=57d155378640c12a80642664dfdfc892 sha256=e07c495a18679b79c7c6f6f475689a33ab2a8ee5af4783e915f08134d1f546d2 @@ -6090,6 +7742,10 @@ sha256=d864fbd0bf6dea24e4f71736da9902a1cae86d0a1a893b5fe17118927257ec3e md5=cd3f3eb54446be6003156158d51f4884 sha256=4e1d15d12dbd3e9208111d6b806ad5a9857ca8850c47877d36575b904559260b +[ftp://ftp.gnu.org/gnu/gsl/gsl-1.10.tar.gz] +md5=d67be4f2e5560d6cf907e18a428becdc +sha256=ea3968b58bfc7619f47bf5ff64a7198a38c72419d24b844e71e48823a4776ff0 + [ftp://ftp.gnu.org/gnu/gsl/gsl-1.4.tar.gz] md5=7513e13525c073dc07e02cc4354294e2 sha256=850b4512fa5e4bbb964c67c215fe8ce64fe6f7e6b704180a783d8c2a04169ccb @@ -6106,6 +7762,10 @@ sha256=fc029984019736eab2b0f10ce28d48ff88f8ceed7a1739cb4b71b851c4b89b91 md5=a0bbbfdc135034cd778537f979121df7 sha256=7b531f1b6481fbe1a21620a86649f42cb2de9cf086e7bdde46335137d3ca11dc +[http://heanet.dl.sourceforge.net/gsoap2/gsoap_2.7.7.tar.gz] +md5=a0bbbfdc135034cd778537f979121df7 +sha256=7b531f1b6481fbe1a21620a86649f42cb2de9cf086e7bdde46335137d3ca11dc + [http://gpe.linuxtogo.org/download/source/gsoko-0.4.2-gpe5.tar.gz] md5=da4e3d05f18a44af4b43c76829ba110a sha256=741af12ec81dff5ba79e6ce284146e26557f267b5a77ccc4c5644f2d5619dcf3 @@ -6118,6 +7778,14 @@ sha256=484f528602bd64df26a1d1db6e249476df80fe31ee8b3f85bc246a1ab73e7fe7 md5=1e3fa004490a07b7b76de03d70b3e8ea sha256=f05d6793b943b7d1115e2b4b047ec1131c07c9ef0fd890d1616e5be0edd4a555 +[http://mxhaard.free.fr/spca50x/Download/oldrelease/gspcav1-20070110.tar.gz] +md5=1e3fa004490a07b7b76de03d70b3e8ea +sha256=f05d6793b943b7d1115e2b4b047ec1131c07c9ef0fd890d1616e5be0edd4a555 + +[http://mxhaard.free.fr/spca50x/Download/oldrelease/gspcav1-20070508.tar.gz] +md5=e18a21b80e1728c6b51b799d1e671f8c +sha256=1185165125b890ea9a4312440c32bae9214947596b0b3ec31febec0d3c18b008 + [http://gstreamer.freedesktop.org/src/gst-ffmpeg/gst-ffmpeg-0.10.1.tar.bz2] md5=e21aef9a84d67dea9a68c1379781f763 sha256=a2c877c38d057875c7dfbf1803030c5cc9707020b77f91673500d6ea8d858607 @@ -6314,6 +7982,10 @@ sha256=e17b33586d9f4ff656ed04559ed765b50affc19309074ef5bdf4ff62f5a1c863 md5=2819ec911a7cc4f46b95240b65f2b3e2 sha256=b02423f0dc9f82a3e1a56cfd470c1cee5d351654fdc55c1a3cd5cff150828b3c +[http://heanet.dl.sourceforge.net/gthumb/gthumb-2.6.9.tar.gz] +md5=2819ec911a7cc4f46b95240b65f2b3e2 +sha256=b02423f0dc9f82a3e1a56cfd470c1cee5d351654fdc55c1a3cd5cff150828b3c + [ftp://ftp.gtk.org/pub/gtk/v1.2/gtk+-1.2.10.tar.gz] md5=4d5cb2fc7fb7830e4af9747a36bfce20 sha256=3fb843ea671c89b909fd145fa09fd2276af3312e58cbab29ed1c93b462108c34 @@ -6350,6 +8022,10 @@ sha256=9e364df3d7368c1e69dab1b2352a68bc8ac07e35bf647bf23f3445d902bb4a4c md5=57132c4a921ef00e241a0fc991787556 sha256=ef1be6d109b8a4a05c604944616043a4647510f5c1ff5eb84a1eaecc3d5425d3 +[http://download.gnome.org/sources/gtk+/2.14/gtk+-2.14.1.tar.bz2] +md5=c6e66ffe92724d83391187f0af016b23 +sha256=516d981d1d696bb00a8c451fe928efd64ce0bd674ccc3024a0aefb292343231b + [http://download.gnome.org/sources/gtk+/2.14/gtk+-2.14.2.tar.bz2] md5=b693a2c1c2dd95457b87d0d042aa5bba sha256=efc277e87e3b7e0315eb3c2837fad6a06aab92b38e08fec6f30beb53e7e56e09 @@ -6382,7 +8058,11 @@ sha256=e8fb1f414288e1c2b1ee6408280477ee361e0a19564e9113bd98f433aaa81195 md5=1a933ca1286829383a0554cc2deb9e04 sha256=82d179fd2eb3fd5acbc9fc4d74507c559c6bc3269c488dc8642f9bca47a5dbe4 -[http://ftp.gnome.org/pub/GNOME/sources/gtk-engines/2.10/gtk-engines-2.10.2.tar.bz2] +[http://heanet.dl.sourceforge.net/scigraphica/gtk+extra-2.1.1.tar.gz] +md5=1a933ca1286829383a0554cc2deb9e04 +sha256=82d179fd2eb3fd5acbc9fc4d74507c559c6bc3269c488dc8642f9bca47a5dbe4 + +[http://ftp.gnome.org/pub/GNOME/sources/gtk-engines/2.10/gtk-engines-2.10.2.tar.bz2] md5=01de081b24d7b5d92093cad5c5e4b8c7 sha256=9c72b0b3a42c2db05e245706d2345e5d529775ddaf029864fc1dc22ae0a190ef @@ -6426,10 +8106,18 @@ sha256=0a40b43898a898e60bca29ed023034e362467573de52f5e841079c02528cc76c md5=c0f131c265a585e5cfd84e2da6b6d3a0 sha256=5e58ce65e7fe08eb28bd258a5de9c56c75998cdb48c3867b392b5ea74160aa32 +[http://go-mono.com/sources/gtk-sharp210/gtk-sharp-2.10.2.tar.bz2] +md5=7d509a677c58b2e6a8c85db51d0b1451 +sha256=8dc7f6180109a529b3216b6527f34a01e1e4484e42ebbd28d551e8f6ce0c243d + [http://downloads.sourceforge.net/smooth-engine/gtk-smooth-engine-0.5.8.tar.gz] md5=7b4aebf85040b357124de926807dc22a sha256=cb2b353839a7f1dcd8f93a6cb32b5c54a6fe560dee432585edb2f5eebe526c50 +[http://heanet.dl.sourceforge.net/smooth-engine/gtk-smooth-engine-0.5.8.tar.gz] +md5=7b4aebf85040b357124de926807dc22a +sha256=cb2b353839a7f1dcd8f93a6cb32b5c54a6fe560dee432585edb2f5eebe526c50 + [http://www.us.xfce.org/archive/xfce-4.4.2/src/gtk-xfce-engine-2.4.2.tar.bz2] md5=00eb6a62defe6867d28a18569b96d151 sha256=6fecdb590fa024db698de9027314c1be044f28feab9850f592aa60c3a79ede78 @@ -6446,10 +8134,18 @@ sha256=47492876466dcbcd82e371264c6a1422f82feb80e40fe25a42ccc1fb7897180c md5=a16fc3d5e2c7b3d94791bf797588adc3 sha256=a5b138e5cfa1f5c2c4dbb0a071d5492d49142c363ec9b92da8d7e3a6e6bb35b5 +[http://ftp.gnome.org/pub/GNOME/sources/gtkhtml/3.12/gtkhtml-3.12.3.tar.bz2] +md5=b580590014988b02e51b66be65319570 +sha256=666849b22375efbaf2ab506b33868ac64126728a8e509f055882ae6940999847 + [http://ftp.gnome.org/pub/GNOME/sources/gtkhtml/3.13/gtkhtml-3.13.91.tar.bz2] md5=debaf8eb4468dc1c084cb3f1b527bafd sha256=e739290102fed3fb616e27578dee61a33c84301ec875bcf6af9493e8959dbeaa +[http://ftp.gnome.org/pub/GNOME/sources/gtkhtml/3.18/gtkhtml-3.18.0.tar.bz2] +md5=ec541b078ea9fbb1dd93f77075f77bd8 +sha256=867036b10dd4b21f79bc0d8b303d348ff55cb4ded896c8cb384b2bb4bbf378d7 + [http://ftp.gnome.org/pub/GNOME/sources/gtkhtml/3.6/gtkhtml-3.6.2.tar.bz2] md5=37465fde0f1e1d7ba2284c5a4fd06fe7 sha256=0c34357bd2b4ed3584e18a30f13a9f5d4c70738872ef90db97c1298013b2f7b9 @@ -6470,6 +8166,10 @@ sha256=a9cbed1b4d3491b4e22b80c9f066224ffb80eb7e1113869534ce53b599c7ea5b md5=64d0040925043c0a5d9a8add76a0f98c sha256=99ce4d10541d964d809036970f53579813bb563495070ab09c742cc1e2cdef38 +[http://www.claws-mail.org/downloads/plugins/gtkhtml2_viewer-0.17.1.tar.gz] +md5=db9d27569903cf09c89c1e57765d3dcc +sha256=aae832e99a04e49c55b0493684aeb4484dda48b5d9010c6980626dc62d6b6fdc + [http://www.angstrom-distribution.org/unstable/sources/gtkimageview-1.3.0.tar.gz] md5=574789e014988398dca2debc65c02097 sha256=6a2f50c1a6e83c94618a271cc9b7ce0460fd1fe58adb12e05d0b1b07b43e4beb @@ -6482,6 +8182,10 @@ sha256=4b104ab94774ca429aa639a1a6f0adec1ca1443bfd444f2100c063e3cf70e6bb md5=b53564e553728d4b69f7d366dfeb5299 sha256=1dc30175da6a3c560a7d62d1abe1c2f9829d988e6f1a7c5e766544575c558c43 +[http://ftp.gnome.org/pub/GNOME/sources/gtkmm/2.12/gtkmm-2.12.7.tar.bz2] +md5=ad199f4a392799134c128deab48fee30 +sha256=4e58c9ad827759a2375b3c0d39952b5b2983111ab16ee329b10a34792fb1d9eb + [http://ftp.gnome.org/pub/GNOME/sources/gtkmm/2.14/gtkmm-2.14.1.tar.bz2] md5=0209b424987a74c956ea6b70fddaaa37 sha256=f8675340d929346333b5a58cd4d05482dd8b76cf8606fed85b526022bf9c5e47 @@ -6498,10 +8202,22 @@ sha256=c1c2e1fb0168ecb3a5e773ac0cd74a0e5caeaaf402f108479337794dab8aa75f md5=a56ea78c74fe93a604357d7c555af0e5 sha256=38c238ec57bf22023bbc50f70ecbaee8c06b817b9e11f1a3a0ae7faf95cc1f26 +[http://heanet.dl.sourceforge.net/gtkterm/gtkterm2-0.2.3.tar.gz] +md5=a49f93d15909dbd2e7011428ae01f0f0 +sha256=fb68b18d752ae2379f144186b94743be991af1a42c88bc1e6f0685e45cb1d573 + [http://downloads.sourceforge.net/gtracer/gtracer-0.0.10.tar.bz2] md5=8f21636a60ed57265feb34806ffe4b00 sha256=ce2a88a784c73d49b3600b5927f65624f665460684dc4b479989ad1c53e565c5 +[http://heanet.dl.sourceforge.net/gtracer/gtracer-0.0.10.tar.bz2] +md5=8f21636a60ed57265feb34806ffe4b00 +sha256=ce2a88a784c73d49b3600b5927f65624f665460684dc4b479989ad1c53e565c5 + +[http://guichan.googlecode.com/files/guichan-0.7.1.tar.gz] +md5=275c5bad231d2ce55e654d80cb1e05be +sha256=7f017522d0c3235f2399f8b615493f3880fbe10a54dfa377f638016ede715a2a + [http://ftp.gnu.org/pub/gnu/guile/guile-1.6.4.tar.gz] md5=a4aceb5f185878c1de4e8aa7c38b6d1d sha256=6391c9735615ee929f4ae23bbfa8373c97ae64923c7fbe72cc4b0e262c4759e0 @@ -6514,6 +8230,18 @@ sha256=1f7667c30228737e3cea58ff2b384bcc0eed8cb679392de827821e4d540c760e md5=a3f8216544509a74a4441f689a0410d2 sha256=e2f63d2d445ffeb072638eab885b1a629e372d1db711c8afb26a62bc56096289 +[http://heanet.dl.sourceforge.net/gimp-print/gutenprint-5.1.3.tar.bz2] +md5=276196ad27fa7d4b8b3ed3ca9c4af64c +sha256=6be13b32d9f222506368bf214f8ba0a3ef08a36b1ebbed8be61cfe38ca2f35c7 + +[http://ftp.gnome.org/pub/GNOME/sources/gvfs/0.0/gvfs-0.0.2.tar.bz2] +md5=1267b82b481340eadf212cf47b735b62 +sha256=7249197b75a61c36398f7458f12c0318ccf03639ae8404771fb4ff414fa17683 + +[http://ftp.gnome.org/pub/GNOME/sources/gvfs/1.0/gvfs-1.0.1.tar.bz2] +md5=0d123f87e3e660271cd9d11b8c592c5a +sha256=67e7dd1dca32a99eb1102a853d2df1bac782d50a4361511409572cfe8ea51147 + [http://sebdelestaing.free.fr/gweled/Release/gweled-0.5.tar.gz] md5=238f5ef66317bb24c3d4018a7d1e9ec3 sha256=d5baec578b22407e3fc78cc47393942f9704f1ab7b8d1c012577037d3421f90e @@ -6522,10 +8250,18 @@ sha256=d5baec578b22407e3fc78cc47393942f9704f1ab7b8d1c012577037d3421f90e md5=4a04df0d971a8952fb395b6eb0bc8dab sha256=48d93ef10f17cffe1ecbfec3078932ae48e08e3c172437e4bdfb22ae87d25421 +[http://heanet.dl.sourceforge.net/xine/gxine-0.4.1.tar.gz] +md5=4a04df0d971a8952fb395b6eb0bc8dab +sha256=48d93ef10f17cffe1ecbfec3078932ae48e08e3c172437e4bdfb22ae87d25421 + [ftp://ftp.debian.org/debian/pool/main/g/gzip/gzip_1.3.5.orig.tar.gz] md5=3d6c191dfd2bf307014b421c12dc8469 sha256=631820e566353eafc4bdc0d9d8221c26c7ef6b5d10a254783dbe9bcac88caa07 +[ftp://ftp.nl.debian.org/debian/pool/main/g/gzip/gzip_1.3.5.orig.tar.gz] +md5=3d6c191dfd2bf307014b421c12dc8469 +sha256=631820e566353eafc4bdc0d9d8221c26c7ef6b5d10a254783dbe9bcac88caa07 + [http://rtpnet.nerim.net/ipaq/patches/2.6.17-1/WIP/h1940_batt.patch] md5=2810d6a0aa41a349faf711bfc9facf14 sha256=0d68bfb125997599470dbc4822d43e777a831da2f1cfa5356b5dc791cdd8b27f @@ -6570,6 +8306,10 @@ sha256=65d8f8eeb61e7609a8c5001b6660d90e7a482c4b74b4e226d09b433dc1a80c9d md5=a6f532770cf9286e1de38d6570cbc6bc sha256=65d8f8eeb61e7609a8c5001b6660d90e7a482c4b74b4e226d09b433dc1a80c9d +[http://hal.freedesktop.org/releases/hal-info-20070618.tar.gz] +md5=c7005ccb1765d8359fd2348350770495 +sha256=bec1b0ad166b6c4d5269e7aa6d7bdbd0eb05c8f2c30042e4dca18993ba5682f0 + [http://people.freedesktop.org/~david/dist/hal-info-20070618.tar.gz] md5=c7005ccb1765d8359fd2348350770495 sha256=bec1b0ad166b6c4d5269e7aa6d7bdbd0eb05c8f2c30042e4dca18993ba5682f0 @@ -6582,26 +8322,54 @@ sha256=120e6b8019b5d608038d8f9a5a14bb97c4162b803118bb8530d9735d65b553a9 md5=6fc99d15d38945c17a291ea93e664664 sha256=80655b3531ea56a5d64085e572dfb8d3ecabffd28af482cd130f72dfdd6254b0 +[http://www.soft.uni-linz.ac.at/~vogl/bluez/handsfree-040326.tar.gz] +md5=488b0f2f346361bba7996b459c5d7b6f +sha256=dbd0c389a160c9f6dcd9eac81b6c4d5a02866968a33f06201556d6860012f6c3 + [http://downloads.sourceforge.net/haserl/haserl-0.8.0.tar.gz] md5=bd9195d086566f56634c0bcbbbcbebea sha256=ba261a21539e1f204ba74590d313c501007e546b54aa9ae7210a99eaf3c097be +[http://heanet.dl.sourceforge.net/haserl/haserl-0.8.0.tar.gz] +md5=bd9195d086566f56634c0bcbbbcbebea +sha256=ba261a21539e1f204ba74590d313c501007e546b54aa9ae7210a99eaf3c097be + +[http://heanet.dl.sourceforge.net/haserl/haserl-0.9.23.tar.gz] +md5=31d1f505afe3ba1b351e18612aa57a70 +sha256=bbe44edc3d519028761a22b282b912ab8f43db2003c6791c295c4a52f5db48bf + [http://www.server-side.de/download/havp-0.82.tar.gz] md5=9e6a16b7d074782d1c62f1f7316e56ab sha256=e2db8d3383cd8eca6a18ebee85875de895f3ac7414eab091a87f052d79a87b09 +[http://www.server-side.de/download/havp-0.86.tar.gz] +md5=c99c8da224c72844882623086e2b1618 +sha256=1649ab227c7fd7b4af5ab602a3cdff16c038965c6673c09a239d5df35fa88da8 + [http://downloads.sourceforge.net/hdparm/hdparm-6.3.tar.gz] md5=0c12672f3a09c14ad0b0882f15fc9389 sha256=08688a6a46ba495494bf838f8f26103e797584c1888eca94e43a171e1b37246d +[http://heanet.dl.sourceforge.net/hdparm/hdparm-6.3.tar.gz] +md5=0c12672f3a09c14ad0b0882f15fc9389 +sha256=08688a6a46ba495494bf838f8f26103e797584c1888eca94e43a171e1b37246d + [http://downloads.sourceforge.net/hdparm/hdparm-6.6.tar.gz] md5=ecea69f775396e4ab6112dcf9066239f sha256=7e2db39a4e1f41bb327a9a8ef9e5e8359aaed0cc78e642a4ca67659629e3048b +[http://heanet.dl.sourceforge.net/hdparm/hdparm-6.6.tar.gz] +md5=ecea69f775396e4ab6112dcf9066239f +sha256=7e2db39a4e1f41bb327a9a8ef9e5e8359aaed0cc78e642a4ca67659629e3048b + [http://downloads.sourceforge.net/hdparm/hdparm-6.9.tar.gz] md5=62749c6cdf28ce31aae335092fa107df sha256=cae6ed86296d01be98ee3be0c224c4323eee508941a7f162a0366d56655afe06 +[http://heanet.dl.sourceforge.net/hdparm/hdparm-6.9.tar.gz] +md5=62749c6cdf28ce31aae335092fa107df +sha256=cae6ed86296d01be98ee3be0c224c4323eee508941a7f162a0366d56655afe06 + [http://handhelds.org/~zecke/oe_packages/hexatrolic-103beta3-zecke1.tar.bz2] md5=1d9420e8b5a6d5fa491c458ffafd4adb sha256=b60a5358e56e676529e7d3d655d5107a76b9a2434e38952711fea794f65721ce @@ -6630,6 +8398,10 @@ sha256=8643ddab3b5afd2f94a2db771bae6710ec49d76a6c6890debaa711de8f3bf12e md5=1d0821cb80d394eac30bd8cec5b0b60c sha256=a6abad5dd62f12870ff5b32ae414e0c611f0922b905aeab6db2676b607bb1643 +[http://www.access-company.com/downloads/hiker-0.9.1.tar.gz] +md5=30efc3312b2e08e9ee9d73569cb987b2 +sha256=3391a651df8c011dc2cb0f81118069ce22c2d13b86090b2c0ced4e80c4fa662d + [http://www.access-company.com/downloads/hiker-0.9.tar.gz] md5=f4cbf05743ccb34282e4dc3aef489f72 sha256=6633c4124c41d9a1ca526161062fd276f352b4228bde4f565d38d35c15a3005c @@ -6822,14 +8594,26 @@ sha256=f59292de39b9a4010414bd120a494226399767148efa37278bd53d9613167964 md5=b1e814c7f5ef2a5033e4c3e5162ac694 sha256=27b3703a0d6470e03e1574b481d6d05d652c787a793854f2f0e06d06c998a601 +[http://thegraveyard.org/files/hsetroot-1.0.2.tar.gz] +md5=f599770a6411dcfe216c37b280fad9bc +sha256=d6712d330b31122c077bfc712ec4e213abe1fe71ab24b9150ae2774ca3154fd7 + [http://downloads.sourceforge.net/htbinit/htb.init-v0.8.5] md5=1713d9a4941120235cb0721ceba6493b sha256=acfda369dff72b9073a8b70f2b05b1397a61a1cdb23970e5ed216d632ff33586 +[http://heanet.dl.sourceforge.net/htbinit/htb.init-v0.8.5] +md5=1713d9a4941120235cb0721ceba6493b +sha256=acfda369dff72b9073a8b70f2b05b1397a61a1cdb23970e5ed216d632ff33586 + [http://downloads.sourceforge.net/htop/htop-0.7.tar.gz] md5=4afc961fa709167e1b434682897991f9 sha256=1361f4f0b92d7e6bdac25a4b7ee138a7ee83b5a9368820f5aa518051ca82862b +[http://heanet.dl.sourceforge.net/htop/htop-0.7.tar.gz] +md5=4afc961fa709167e1b434682897991f9 +sha256=1361f4f0b92d7e6bdac25a4b7ee138a7ee83b5a9368820f5aa518051ca82862b + [http://apache.mirrors.tds.net/httpd/httpd-2.2.3.tar.bz2] md5=887bf4a85505e97babe1d90635361c0d sha256=dd86e8221f9efb85497c46229d0f04237d4e66d293fabe98eb0745166aaf4b6c @@ -6842,6 +8626,10 @@ sha256=dd86e8221f9efb85497c46229d0f04237d4e66d293fabe98eb0745166aaf4b6c md5=365684629378365de02e127f4a085628 sha256=bedfd45364948a08ecaa212c5eda6667a83ac8bb547e2eb8478ade885898cad7 +[http://heanet.dl.sourceforge.net/httppc/httppc-0.8.5.tar.gz] +md5=365684629378365de02e127f4a085628 +sha256=bedfd45364948a08ecaa212c5eda6667a83ac8bb547e2eb8478ade885898cad7 + [http://htun.runslinux.net/dist/htun-0.9.5.tar.gz] md5=f720686c841e9fefc06db76458fd9908 sha256=1f8259a3a8ae583170816f5028329f3a7157f87f927da9c0a911a5fb9be263a1 @@ -6854,6 +8642,10 @@ sha256=9f90613de73e1b8e90d9bbcb09046e83680f15a46fc630c3e26e9aa4ca0e6a1d md5=36444795a356fb8a56c63b2840729bab sha256=e0b1849c545b6af276407d93025c73094dd74fc259b07c1d91594fdbb9a0b829 +[http://heanet.dl.sourceforge.net/hunkyfonts/hunkyfonts-0.3.0.tar.bz2] +md5=36444795a356fb8a56c63b2840729bab +sha256=e0b1849c545b6af276407d93025c73094dd74fc259b07c1d91594fdbb9a0b829 + [http://archive.ubuntu.com/ubuntu/pool/main/h/hwdata/hwdata_0.191-1.diff.gz] md5=0719e6cccf5279b4d2fb0a3ddbecd874 sha256=8276d76e45e3e827fc109940fcc3afe010ec8ddd583f44b3c946af6c29f2d828 @@ -6938,6 +8730,10 @@ sha256=8cf39f7c447b0b8f7a24eaed243ad4d8c654c2e94a146a796dba9ed08e857209 md5=4e11dc7899d68f2be2e06ccee01d296d sha256=1e2cc080e654c1839c5cb4b4adf4c62a23e7da208427f3ba0b16cfed9e5cfa98 +[http://www.sethwklein.net/projects/iana-etc/downloads/iana-etc-2.20.tar.bz2] +md5=51d584b7b6115528c21e8ea32250f2b1 +sha256=754038a9eb8f1d0d6559d5b124a68e1e530a76366cff251d79536ec89e2fda21 + [http://xorg.freedesktop.org/releases/individual/app/iceauth-1.0.2.tar.bz2] md5=7ab8b64edf0212a9d9a3c8129901a450 sha256=06401591de57a2c4cf2255e3d5230ea19351c5516cf8dae98c61092392bab5bb @@ -6986,6 +8782,14 @@ sha256=96ed51cbaead5bd8c33522be5bf0baac4c051db0a826f764eb8528b2ec0c5497 md5=8a302c5e629bb81d87cc02004a694ece sha256=4b802cf77ecf09bc44345f8fba3c11fd08dca0e8272e628b447ecf7289637e1d +[http://heanet.dl.sourceforge.net/icewm/icewm-1.2.30.tar.gz] +md5=8a302c5e629bb81d87cc02004a694ece +sha256=4b802cf77ecf09bc44345f8fba3c11fd08dca0e8272e628b447ecf7289637e1d + +[http://xorg.freedesktop.org/releases/individual/app/ico-1.0.2.tar.bz2] +md5=5711827c5c2563620b56c33aababbc63 +sha256=db2e96e18a2bcc29b91b9de7b758a7c67cebee27772fb540c44c7bc2c2218aa5 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/ico-X11R7.0-1.0.1.tar.bz2] md5=9c63d68a779819ba79e45d9b15d26b1f sha256=9c8a1d037135642ab85391f92332fdfc22ceeb3ad1f2c0c9911ac5a62a12ee7d @@ -6998,6 +8802,10 @@ sha256=87fe398d5f4853400afb6afbb41835db3cde954845369e406d739d66b3058056 md5=4abe604721ce2ccb67f451aa7ceb44d6 sha256=1cb49ce6a04626939893a447da696f20003903d61bd80c6d74d29dd79ca340d2 +[http://freedesktop.org/software/icon-slicer/releases/icon-slicer-0.3.tar.gz] +md5=5c5374d4f265b0abe4daef1d03f87104 +sha256=05f0216dd0c25a17859de66357f64da5033375b6fbf5f31ca54867311160b64d + [ftp://ftp.software.ibm.com/software/globalization/icu/3.6/icu4c-3_6-src.tgz] md5=6243f7a19e03e05403ce84e597510d4c sha256=5135e8d69d6206d320515df7aeee7027711ab1aef9d8dbf29571a97a9746b041 @@ -7006,6 +8814,10 @@ sha256=5135e8d69d6206d320515df7aeee7027711ab1aef9d8dbf29571a97a9746b041 md5=19f27ddd2dda4b2d26a559a4f0f402a7 sha256=2749cc3c0cd7280b299518b1ddf5a5bcfe2d1100614519b68702230e26c7d079 +[http://heanet.dl.sourceforge.net/id3lib/id3lib-3.8.3.tar.gz] +md5=19f27ddd2dda4b2d26a559a4f0f402a7 +sha256=2749cc3c0cd7280b299518b1ddf5a5bcfe2d1100614519b68702230e26c7d079 + [http://ftp.de.debian.org/debian/pool/main/i/id3lib3.8.3/id3lib3.8.3_3.8.3-7.2.diff.gz] md5=805c0320a2efb21c40ce06fa13cd7c4b sha256=9f03b59ccc8826a5be55a3dcde2f889067d58bdc72bf846416a198c9b933704c @@ -7022,6 +8834,14 @@ sha256=a43c0621dac846e42a3917f4f73e7976b2ac4b545712e8bc4bae5bac6158e07e md5=0c4cf072305b1e798e9e704558ec01f1 sha256=7305d27b5718e83872329e0ade92fc3b9710226c63418188744a3ce8c4030ceb +[ftp://ftp.nl.debian.org/debian/pool/main/i/ifupdown/ifupdown_0.6.8.tar.gz] +md5=0c4cf072305b1e798e9e704558ec01f1 +sha256=7305d27b5718e83872329e0ade92fc3b9710226c63418188744a3ce8c4030ceb + +[http://www.linuxprinting.org/ijs/download/ijs-0.35.tar.bz2] +md5=896fdcb7a01c586ba6eb81398ea3f6e9 +sha256=11a5f5084488c480f3ff5a24d64d7147bb64272bf60a0ba51330a56c5b50cab9 + [http://files.jabberstudio.org/iksemel/iksemel-1.2.tar.gz] md5=82e7c8fdb6211839246b788c040a796b sha256=a606e230b22d9d029998b84e5d6311a8ba35a304fe457e254eb5fd19943cd639 @@ -7038,10 +8858,26 @@ sha256=dec5cee4e529ac218e7d99a550122e065daf29a3a4105d0b545620e4ca57edc4 md5=db33c65135ebc78e55c6009292c51b43 sha256=76167e10c30d60534dc2b04fa4e202e16531df8170fc23cc4414d9afff09c32a +[ftp://ftp.cac.washington.edu/imap/imap-2007a1.tar.Z] +md5=828a84c64ef933bfcc805b838576a774 +sha256=8ba0eda3157193643eb3c5ccd46c0ca8060d702f260df60f89656cb891cbeeb8 + [http://downloads.sourceforge.net/imdbpy/imdbpy-2.5.tar.gz] md5=dbbb53f835fd3f7aebcf7601dd902920 sha256=edaad2859a4f0785a34c3c0bb5a1e09d8f16efa3c0e4616f6a5a6cf18c282aa6 +[http://gpephone.linuxtogo.org/download/gpephone/ptim-engine-1.0/imengine-1.0.tar.bz2] +md5=c6735cb4a8f5bc7da74001ca895fd174 +sha256=3d733f8a1cfeb60b3a83a03340e80e7a23a5d3141f8958fad1441142817cc077 + +[http://gpephone.linuxtogo.org/download/gpephone/ptim-headers-1.0/imheaders-1.0.tar.bz2] +md5=33226da8468acccdcac483ea25c99a91 +sha256=255b3b869e3945f8b031e9fa23649f7e342211713335ea447e40975bfed96fa8 + +[http://gpephone.linuxtogo.org/download/gpephone/ptim-helper-1.0/imhelper-1.0.tar.bz2] +md5=46616e5897a51b3935d1c683a410a0d9 +sha256=e0a4b8e21a7c8efbc4b48c53403edbe367681052d8f3079d170c0b692c735d36 + [http://ftp.gnome.org/pub/GNOME/sources/imlib/1.9/imlib-1.9.15.tar.bz2] md5=7db987e6c52e4daf70d7d0f471238eae sha256=4e6a270308a9ae16586bfc133c1a3dfb2e56f431edb66aaa3a80e36e5ed84ce0 @@ -7050,10 +8886,18 @@ sha256=4e6a270308a9ae16586bfc133c1a3dfb2e56f431edb66aaa3a80e36e5ed84ce0 md5=ca9ad2142464f34a5716990aa162c94f sha256=beb929f4ceff865375a9e56c0156ffbfb197dff82299071bdb641bb60299f84b +[http://gpephone.linuxtogo.org/download/gpephone/ptim-manager-1.0/immanager-1.0.tar.bz2] +md5=cafd1d222ae30fa496e299950de19ae7 +sha256=e8e5144314fd2cd13722835338105c0236bf3da4dbf383a6ce052574c1ba7230 + [http://downloads.sourceforge.net/imposter/imposter-0.3.tar.gz] md5=5bcaa0fe3fec26840c8f1ecefc891887 sha256=53b67c08477623bb03436f79bf2ca859d7cd9684c57775ea539e1db449658236 +[http://heanet.dl.sourceforge.net/imposter/imposter-0.3.tar.gz] +md5=5bcaa0fe3fec26840c8f1ecefc891887 +sha256=53b67c08477623bb03436f79bf2ca859d7cd9684c57775ea539e1db449658236 + [ftp://ftp.gnu.org/gnu/inetutils/inetutils-1.4.2.tar.gz] md5=df0909a586ddac2b7a0d62795eea4206 sha256=9f001daa0f3d571ae35aac88f04d5dd982a14e90257e4dfb535c143fa18d5830 @@ -7070,18 +8914,34 @@ sha256=f1252122f09cc63a57843ec1b8a51ce30c7bfcbc857f476a996b374006433a48 md5=dffa08601c822de29b8c3e436a3994bf sha256=dc1d3525483fa503ad4312c3b6aa3742951c8e7428674de9f43077c26f353122 +[http://heanet.dl.sourceforge.net/inkscape/inkscape-0.38.1.tar.bz2] +md5=dffa08601c822de29b8c3e436a3994bf +sha256=dc1d3525483fa503ad4312c3b6aa3742951c8e7428674de9f43077c26f353122 + [http://downloads.sourceforge.net/inkscape/inkscape-0.39.tar.bz2] md5=3542a646c6742686557b2f0e52c5f6dc sha256=9436f3c01dc69a1e7781633cd85936a40b3a84325e01930188bbae45e13fdbdc +[http://heanet.dl.sourceforge.net/inkscape/inkscape-0.39.tar.bz2] +md5=3542a646c6742686557b2f0e52c5f6dc +sha256=9436f3c01dc69a1e7781633cd85936a40b3a84325e01930188bbae45e13fdbdc + [http://downloads.sourceforge.net/inkscape/inkscape-0.42.tar.bz2] md5=4af587b942647bf9e27861e2238844c8 sha256=00f94678fff587288f8e7848466b35c3f894dcc007e7101f467c46d155cddfb8 +[http://heanet.dl.sourceforge.net/inkscape/inkscape-0.42.tar.bz2] +md5=4af587b942647bf9e27861e2238844c8 +sha256=00f94678fff587288f8e7848466b35c3f894dcc007e7101f467c46d155cddfb8 + [http://downloads.sourceforge.net/inkscape/inkscape-0.43.tar.bz2] md5=97c606182f5e177eef70c1e8a55efc1f sha256=74d6088a6f7521c36b73550baa9dd0381505d66658f0bc01802aa2dfc7430fbc +[http://heanet.dl.sourceforge.net/inkscape/inkscape-0.43.tar.bz2] +md5=97c606182f5e177eef70c1e8a55efc1f +sha256=74d6088a6f7521c36b73550baa9dd0381505d66658f0bc01802aa2dfc7430fbc + [http://www.geocities.co.jp/SiliconValley-Oakland/4550/inkwp-0.1.1.tar.gz] md5=a19896b756f1b29a33411a1fb2842c4b sha256=4afa4f4ddfdc40a32ef2c6034b2fa3bca415088b7eac4b7ad2b814202153f1e0 @@ -7090,6 +8950,10 @@ sha256=4afa4f4ddfdc40a32ef2c6034b2fa3bca415088b7eac4b7ad2b814202153f1e0 md5=8053f441fc3fe0f0c73cf483399da17b sha256=84a111a6a979152cd25b60825b4945da4b167f19fb9ec115f9c59b4b49927547 +[http://heanet.dl.sourceforge.net/inotify-tools/inotify-tools-3.12.tar.gz] +md5=a593b2eabde56f122e2bb3d2d45f7ca7 +sha256=90f69ae24cc21fa6d33dc406077f16c06113b3000f7d267e7056e52f50d0abc0 + [http://www.rpsys.net/openzaurus/patches/archive/input_modalias_fix-r0.patch] md5=291fdc77615d56d1ec8a9d4ad3dcc39e sha256=04f8f5890cc45beb1305f6b94f3a4cdd480132703277ed53c32e1d8e0975702e @@ -7206,6 +9070,10 @@ sha256=76cceaaaf188dfac032b21eb5dc4c7d231efe7ff180dee85dbf5e18bc5d27fe7 md5=7adee54938b22d32c63ecb5223fd4249 sha256=f30cbb62345310a27f74a43fef17f146d99203c097c6460002da0a22d969a594 +[http://modeemi.fi/~tuomov/ion/dl/ion-3ds-20041104.tar.gz] +md5=e187a0ca83642afddf3b21898b683ced +sha256=b47388c35922bc0f3419a2b059c77b80fee1c5b6d0ffcde7442c854fac6e90d6 + [http://guichaz.free.fr/iotop/files/iotop-0.2.1.tar.bz2] md5=127e038106492de258a206433f4c3a96 sha256=c2a7032057f9e1a6515f8062c13b52a6f0b77609677839399521da67dc123b7c @@ -7250,6 +9118,10 @@ sha256=e382a4c0de31a5196e0c7829d6f7e29d0263cf90a4def10302db694fc2f30da2 md5=193b570128cf852afba337438413adf9 sha256=038aabd2894f46d3a4a7583ab2bff13b2da51682ccb921ceb7c87326ec1d344f +[http://developer.osdl.org/dev/iproute2/download/iproute2-2.6.20-070313.tar.gz] +md5=7bc5883aadf740761fa2dd70b661e8cc +sha256=3b3960f867bf878a6561428a3c572e87dcccadb7123aa47d7aaca77b32adecc8 + [http://developer.osdl.org/dev/iproute2/download/iproute2-2.6.22-070710.tar.gz] md5=20ef2767896a0f156b6fbabd47936f79 sha256=3c6b48af9e655e4f0a34c7718e288960a1dc84a3ac7eb726e855adb45fbd953a @@ -7266,6 +9138,14 @@ sha256=e1c8b396b8753cce4107ad3df76feba0a4bf0f0f9d2791d16eee1c07f662a174 md5=e908f3cf367e31c7902df5ab16fbe5c3 sha256=2291dd75794a4fc307eb420eb035087a4cf56d3ef6b187f1a1386d3e33851044 +[http://heanet.dl.sourceforge.net/ipsec-tools/ipsec-tools-0.6.6.tar.bz2] +md5=e908f3cf367e31c7902df5ab16fbe5c3 +sha256=2291dd75794a4fc307eb420eb035087a4cf56d3ef6b187f1a1386d3e33851044 + +[http://heanet.dl.sourceforge.net/ipsec-tools/ipsec-tools-0.6.7.tar.bz2] +md5=4fb764f282dc21cf9a656c58e13dacbb +sha256=4239f836dc610a2443ded7ba35cb3b87de9d582c800e5d9eb5eed37defd61ef2 + [http://www.netfilter.org/files/iptables-1.2.11.tar.bz2] md5=0a5f5f226e41ce408a895bec995e8c05 sha256=be7bd67232fddbe3ce81f40f5b79123380a2e67cd166ec06e650842f8acb373d @@ -7282,6 +9162,10 @@ sha256=84ac04a28ae41e17df0f181d8bc0049ae7a83baae07296e890ea5977a2952318 md5=0a9209f928002e5eee9cdff8fef4d4b3 sha256=c5c8a091ed9a1fa2dab86b4d87719064b50c202e8503046f50f299a361e6211c +[http://heanet.dl.sourceforge.net/iptstate/iptstate-2.2.1.tar.bz2] +md5=6b08f09b9917f644629efea1febec4b3 +sha256=004f8358f4f84d90a260a76ac46ce8512126ac490d73460fcee6c11effd34362 + [http://www.tux.org/pub/people/alexey-kuznetsov/ip-routing/iputils-ss020927.tar.gz] md5=b5493f7a2997130a4f86c486c9993b86 sha256=25d45acf19e3acd09745df47581ac7a13e3694ee51fe4e642108f9f228cacca9 @@ -7298,6 +9182,10 @@ sha256=27badd5d9f3167443099c6b6cf66b05b9e32cc71f03d692cff474c2279c4f4cd md5=6b4bbf1b97d1fe777c881c0576e4cb65 sha256=e3c0d1991f6a35f789bf305bc56971e2ced6208d19443ccea8d1d64417a90faf +[http://bitchx.sourceforge.net/ircii-pana-1.1-final.tar.gz] +md5=611d2dda222f00c10140236f4c331572 +sha256=7464cd75a10f2d117a10cf0184e5d4b9ece44de03a226402c17bdd3f2c7eca57 + [http://www.bitchx.org/files/source/ircii-pana-1.1-final.tar.gz] md5=611d2dda222f00c10140236f4c331572 sha256=7464cd75a10f2d117a10cf0184e5d4b9ece44de03a226402c17bdd3f2c7eca57 @@ -7306,14 +9194,26 @@ sha256=7464cd75a10f2d117a10cf0184e5d4b9ece44de03a226402c17bdd3f2c7eca57 md5=a77124e7efa6b31369404371485179b2 sha256=729da519ffeb604ac0b9b6c6d8123a3fdf17956134e105c04778f13c4d4ce4ae +[http://heanet.dl.sourceforge.net/openobex/ircp-0.3.tar.gz] +md5=a77124e7efa6b31369404371485179b2 +sha256=729da519ffeb604ac0b9b6c6d8123a3fdf17956134e105c04778f13c4d4ce4ae + [http://downloads.sourceforge.net/irda/irda-utils-0.9.15.tar.gz] md5=b69b75464d6ee72e6600a8459d9b68ac sha256=27df093409e65279b5cf60777c3310feb50a522bebd4f5038cfebe41a7a46809 +[http://heanet.dl.sourceforge.net/irda/irda-utils-0.9.15.tar.gz] +md5=b69b75464d6ee72e6600a8459d9b68ac +sha256=27df093409e65279b5cf60777c3310feb50a522bebd4f5038cfebe41a7a46809 + [http://downloads.sourceforge.net/irda/irda-utils-0.9.16.tar.gz] md5=2ff18f0571b5a331be7cd22fc3decd41 sha256=09a30fa12d81014b2877e8b5c36f5a341788579669d72f2dec0e29d22efe11e9 +[http://heanet.dl.sourceforge.net/irda/irda-utils-0.9.16.tar.gz] +md5=2ff18f0571b5a331be7cd22fc3decd41 +sha256=09a30fa12d81014b2877e8b5c36f5a341788579669d72f2dec0e29d22efe11e9 + [http://ewi546.ewi.utwente.nl/mirror/www.openzaurus.org/official/unstable/3.5.4/sources/irk-0.11.0.tgz] md5=5b39a7fb06fd24edfb543a3a0130065c sha256=5eeba81a5e5163e0b0b92b5e5aaf91c07b412a743a98f59975c75d28c133a85f @@ -7330,6 +9230,10 @@ sha256=47344b444d78ad5965eb40cc4c8df8450fdc54135e2b058710ee8c500b958d6c md5=e407b557b3cfc7c91ce4de2571dd79cb sha256=462d634bb509cc2bdd550ee5c7b269495f3173721b7404f162ad1f69b49bfff0 +[http://heanet.dl.sourceforge.net/iscsitarget/iscsitarget-0.4.16.tar.gz] +md5=c7ea3192f1717b40e4c483c9d630082d +sha256=e6605ae5f9ed2e2fdbe84df967236678579a4fbe536b75a93277cbb607bead7d + [ftp://pkg-isocodes.alioth.debian.org/pub/pkg-isocodes/iso-codes-1.4.tar.bz2] md5=4073466e57df23d39721513219e4f7ae sha256=0a7cf177c25b3f0d77c60a5f1149aab9e03ba70f69bac70138a867efe19a1d97 @@ -7338,10 +9242,18 @@ sha256=0a7cf177c25b3f0d77c60a5f1149aab9e03ba70f69bac70138a867efe19a1d97 md5=007ff9e08e26504f5c28462d7bbdaa3e sha256=c682a23faf732203a7de9b82ffb736396e5948e000ab10c1a42b0e936b6cc329 +[http://download.ikaaro.org/itools/itools-0.16.5.tar.gz] +md5=38f42b91b99645d606d1633736aa844d +sha256=7f2794f64b83955787457fc30562313119c43021046cbc152584d1663c2f8eb2 + [http://downloads.sourceforge.net/ivman/ivman-0.6.14.tar.bz2] md5=ebef12559268e2c5ea932cbb5aaa789e sha256=62a6f9cb90999694e48528e16f427433c13a99424b5dca4cb38cda99e13d10e8 +[http://heanet.dl.sourceforge.net/ivman/ivman-0.6.14.tar.bz2] +md5=ebef12559268e2c5ea932cbb5aaa789e +sha256=62a6f9cb90999694e48528e16f427433c13a99424b5dca4cb38cda99e13d10e8 + [http://www.kokkinizita.net/linuxaudio/downloads/jaaa-0.4.2.tar.bz2] md5=e3013bb1e287b495b0668f4b6e2887c7 sha256=0bae72d819963c40e0a202bb08bc55a600fe7c453749601a3836bc9272cffb3a @@ -7350,6 +9262,10 @@ sha256=0bae72d819963c40e0a202bb08bc55a600fe7c453749601a3836bc9272cffb3a md5=03a0f63b997ce7b83a1eeaa6b80f4388 sha256=a5d9fd696d7ee4a1c7679b5a688155bc1e0abbdf5f144d6762dbbee874df235f +[http://heanet.dl.sourceforge.net/jackit/jack-audio-connection-kit-0.103.0.tar.gz] +md5=03a0f63b997ce7b83a1eeaa6b80f4388 +sha256=a5d9fd696d7ee4a1c7679b5a688155bc1e0abbdf5f144d6762dbbee874df235f + [http://downloads.sourceforge.net/jackit/jack-audio-connection-kit-0.99.0.tar.gz] md5=a891a699010452258d77e59842ebe4a0 sha256=2096acc56c314e689faad0036bbc1d86dea1b9d9620f711d471de76b1dd6859e @@ -7378,18 +9294,46 @@ sha256=dae915b7f963762385df2f4660eaad497261fa72393ba69339530e5b0b5d8bc3 md5=3f538bab6e1c77aed331e5e71f754f5b sha256=f329d1c8f42c06b53a3e82763d33900b100b8e9acd7afe02f7583c51253fd6e5 +[http://heanet.dl.sourceforge.net/jamvm/jamvm-1.4.5.tar.gz] +md5=3f538bab6e1c77aed331e5e71f754f5b +sha256=f329d1c8f42c06b53a3e82763d33900b100b8e9acd7afe02f7583c51253fd6e5 + [http://downloads.sourceforge.net/jamvm/jamvm-1.5.0.tar.gz] md5=a965452442cdbfc94caba57d0dd25a8f sha256=18b269b1bfad7230384681e89189c6af18584e19cddbf92208c0acef814046ab +[http://heanet.dl.sourceforge.net/jamvm/jamvm-1.5.0.tar.gz] +md5=a965452442cdbfc94caba57d0dd25a8f +sha256=18b269b1bfad7230384681e89189c6af18584e19cddbf92208c0acef814046ab + [http://downloads.sourceforge.net/jamvm/jamvm-1.5.1.tar.gz] md5=5a82751b50391eb092c906ce64f3b6bf sha256=663895bd69caf3a1fda6af5eea8263d90a5fd35ca8f4c32e2210ac410788901a +[http://heanet.dl.sourceforge.net/jamvm/jamvm-1.5.1.tar.gz] +md5=5a82751b50391eb092c906ce64f3b6bf +sha256=663895bd69caf3a1fda6af5eea8263d90a5fd35ca8f4c32e2210ac410788901a + +[http://heanet.dl.sourceforge.net/gakusei/jards_gakusei.cvs.sourceforge.net__20070212.tar.gz] +md5=1282913edd226bc9e865f39d79573117 +sha256=3c884982ebf40aade899379902ec92c41782d18c19506cf0ec40bcf6a7df8e3b + [http://www.ece.uvic.ca/~mdadams/jasper/software/jasper-1.900.1.zip] md5=a342b2b4495b3e1394e161eb5d85d754 sha256=6b905a9c2aca2e275544212666eefc4eb44d95d0a57e4305457b407fe63f9494 +[http://www.jasspa.com/release_20060909/jasspa-memacros-20060909.tar.gz] +md5=d4d7f84744fedb933bcc408734940f0a +sha256=0d5ac080cafe6ad08e4b8eda0c85df48950c0cd3056c9f8896b1474172616b12 + +[http://www.jasspa.com/release_20060909/jasspa-mesrc-20060909-2.tar.gz] +md5=6606ec40da39352e5cbb644090a13820 +sha256=2cb80e403a1c76c6a3405ccbf67e457e2f558e19f80c96baa608635f3e917299 + +[http://www.ch-werner.de/javasqlite/javasqlite-20080130.tar.gz] +md5=842932cfb22d44d8ebf85d1e184b4c55 +sha256=ea216b2fa82e784fe7572074246fb0bbaaeac46e655f554d44da827f82b95231 + [http://www.rpsys.net/openzaurus/patches/archive/jffs2_longfilename-r1.patch] md5=1e30c4f6d5148d8462c41b7f58738531 sha256=f01a8f0975905597aaccd2d6647331aac14615b67a37ccf626bb2ea45db13294 @@ -7402,14 +9346,26 @@ sha256=55a65214c19f9a61265fdef21ae4d7f59b725248d06c0595152c14774bd31065 md5=4e45eeab4c75918174e16ea2b695d812 sha256=30093eab8df4cad8ef94a1c4197272b75c719bbbbdf077c8b64e7cfbb9cbc9ae +[http://heanet.dl.sourceforge.net/jikes/jikes-1.21.tar.bz2] +md5=4e45eeab4c75918174e16ea2b695d812 +sha256=30093eab8df4cad8ef94a1c4197272b75c719bbbbdf077c8b64e7cfbb9cbc9ae + [http://downloads.sourceforge.net/jikes/jikes-1.22.tar.bz2] md5=cda958c7fef6b43b803e1d1ef9afcb85 sha256=0cb02c763bc441349f6d38cacd52adf762302cce3a08e269f1f75f726e6e14e3 +[http://heanet.dl.sourceforge.net/jikes/jikes-1.22.tar.bz2] +md5=cda958c7fef6b43b803e1d1ef9afcb85 +sha256=0cb02c763bc441349f6d38cacd52adf762302cce3a08e269f1f75f726e6e14e3 + [http://downloads.sourceforge.net/joe-editor/joe-3.1.tar.gz] md5=2a6ef018870fca9b7df85401994fb0e0 sha256=252390e4bc687957f09f334095904c8cc53b39c7b663ed47861ae1d11aef5946 +[http://heanet.dl.sourceforge.net/joe-editor/joe-3.1.tar.gz] +md5=2a6ef018870fca9b7df85401994fb0e0 +sha256=252390e4bc687957f09f334095904c8cc53b39c7b663ed47861ae1d11aef5946 + [http://www.ijg.org/files/jpegsrc.v6b.tar.gz] md5=dbd5f3b47ed13132f04c685d608a7547 sha256=75c3ec241e9996504fe02a9ed4d12f16b74ade713972f3db9e65ce95cd27e35d @@ -7430,10 +9386,22 @@ sha256=cffbcf6721b897ca1259661f418f3d81c1193702f59a29f0f3232c9b8f24faa3 md5=5571134c3863686b623ebe4e6b1f6fe6 sha256=44363f0f3895800ee6010763eae90c0d15ed28e07d783bc7b3c607ce98d8668b +[http://oss.metaparadigm.com/json-c/json-c-0.6.tar.gz] +md5=2d8b899aeeebbbe68158d25adf8a4f1e +sha256=915ee6c4b8f1ffd5313d990875cd44e5e7092a51de259707daca797fd5c42b46 + +[http://downloads.openmoko.org/sources/juce_1_29.zip] +md5=7965d33e47a7cc97c4084c2e9aa0bf82 +sha256=bc4f62cbac4716c2c1a25cf53b73343a03883964576d9dd590a9e4c7a70f465a + [http://downloads.sourceforge.net/justreader/justreader_2.0k.tgz] md5=74b2b89b12668cbbbb093b6343e9f52d sha256=55b0dd7ac3f9860a4cba0797213fdaa898b77f3228612e3499d54e6fe6144514 +[http://heanet.dl.sourceforge.net/justreader/justreader_2.0k.tgz] +md5=74b2b89b12668cbbbb093b6343e9f52d +sha256=55b0dd7ac3f9860a4cba0797213fdaa898b77f3228612e3499d54e6fe6144514 + [http://www.kaffe.org/ftp/pub/kaffe/v1.1.x-development/kaffe-1.1.5.tar.gz] md5=928c578d4808012fe5ba5587071d2aa2 sha256=f4ed45720d76f5182f2dede135c1856ad01bdf9875f54459b6baa1071af67280 @@ -7454,6 +9422,10 @@ sha256=28272f61ec09c607a3578e3626e9e4fd43d1d9d1e21cb64328745766d00ee9e1 md5=2171f02d58a575e148436c7102686afb sha256=87ad1345e1d6df6ffdb1b43af92cfd87a16eade7de4060c5ce2fabd4d37bf99a +[http://iij.dl.sourceforge.jp/kazehakase/25610/kazehakase-0.4.7.tar.gz] +md5=44d7105f394b982661ba0567a0d23b90 +sha256=0d52a80161b5dccfa904afd58dac4b5c79944943e7d81649459d2419362a014d + [http://ftp.debian.org/debian/pool/main/k/kbd/kbd_1.12.orig.tar.gz] md5=7892c7010512a9bc6697a295c921da25 sha256=f3bc6747dba7d1a35cd125ca0bd4649f88704be211cf7e47d36b43c7f44ce803 @@ -7474,6 +9446,14 @@ sha256=779f563fdf0385b973f2238f04d82b5729aefe1c949e4d29482b6bb170aa3fe6 md5=3a9e14a245d293d143715c0318e3d0bd sha256=63a7d777cfb610c06c3778b4fc780a7e3f4158b5a7125588ccbc0c59f11b48b8 +[http://heanet.dl.sourceforge.net/kdepimpi/kdepimpi-2.2.10.tar.gz] +md5=1b918fa70812b24df0c4de00bb2c8896 +sha256=88f68d15052932ac763c007570a6e12e7be6e0d177706f96ddda7c358adcf871 + +[http://heanet.dl.sourceforge.net/kdepimpi/kdepimpi-2.2.3.tar.gz] +md5=b452510c392d852c7a94bb08547f4e9a +sha256=d6b21f0dad8277925abbb15d3c9cbc0a58af5b5119bbd1fde8637b600bae0489 + [http://downloads.sourceforge.net/kdepimpi/kdepimpi-2.2.7.tar.gz] md5=9ea0265229fab492d4ec70d734e823f3 sha256=ad5d912a4c726015e351981b5c71014f6cbd6b9d79d6b58d89ea8b4ffa31bb76 @@ -7494,6 +9474,10 @@ sha256=afe5bddd14c06e1e9350742c5569511039ceaf82a2437b89a62c7ae8c82df245 md5=f2a893efdc2712b70ee8fbb65da2a70e sha256=f219303e60f81b3cf6206b6c1851bd42069bd018ed18482ab04dded0b4339f8a +[http://www.kerneloops.org/download/kerneloops-0.11.tar.gz] +md5=a0daa9437f0638912a91afe66f51545b +sha256=2f23a1a2f1b928b2ad44f13a98c704c3d7abd5e3c7157f6a8915acc74c8dcd71 + [http://www.rpsys.net/openzaurus/patches/archive/kexec-arm-r3a.patch] md5=e86438fb4fff46bda188c2211eede1bf sha256=54bfe3995975d17355152c7bd1c5b0dbe61973e15135d52a799be890bc979467 @@ -7554,6 +9538,10 @@ sha256=27000ba4bc73a5977502b27d7036df24dd6ab94a1c33b8f5d6d54ba62772f0c7 md5=d12f56384b4ccde11cd756db2b14065c sha256=48ae508d72e453e2a1f5748870362259786b475548c545feaec1aea71d2f8fdb +[http://heanet.dl.sourceforge.net/klimt/klimt-src-0.6.1.zip] +md5=d12f56384b4ccde11cd756db2b14065c +sha256=48ae508d72e453e2a1f5748870362259786b475548c545feaec1aea71d2f8fdb + [http://www.openzaurus.org/mirror/knights.tar.gz] md5=fea3047d5501a1abea868bb661cbc0c8 sha256=1f6d50b3602f01b852810ab1e62f3328edee5130fe3ba21fd868f376c89e66fd @@ -7566,6 +9554,10 @@ sha256=305a7178d3351ea5e1faad157c2f056b633fbbabc006e19165a55314e9352d7b md5=90d1517db39d4e3f7934af566ea18fca sha256=a1b86dc2ef641bc644ff5a206b5e2d3a61dacf58c2c489e0669ba1d71d0534a0 +[http://heanet.dl.sourceforge.net/kdepimpi/kphone_pi_1.0.0.tar.gz] +md5=90d1517db39d4e3f7934af566ea18fca +sha256=a1b86dc2ef641bc644ff5a206b5e2d3a61dacf58c2c489e0669ba1d71d0534a0 + [http://kstars.sourceforge.net/kstars-embedded-0.8.5.tar.gz] md5=ae02647516a4a5c47674316ef8343c11 sha256=650f0b3ae4d30282b191e456ebf2679a4ec549da83f69667bd4396bad9abf9f5 @@ -7578,10 +9570,22 @@ sha256=125fcecc9f650dc2ec82db3194d17c0af40b48900204fedb0c695b5fcc5a99e3 md5=c2701d7f8e094b41aa5a7c771b981393 sha256=204156fadfdefb31f6cbd3d0d7e5cb032af40c037a0682c75651c3191de09150 +[http://heanet.dl.sourceforge.net/kdepimpi/ktimetracker_pi097.tar.gz] +md5=c2701d7f8e094b41aa5a7c771b981393 +sha256=204156fadfdefb31f6cbd3d0d7e5cb032af40c037a0682c75651c3191de09150 + [http://downloads.sourceforge.net/kxml/kxml2-src-2.3.0.zip] md5=cb830720148bad0c555a02b27e1e7f9a sha256=f2441575236be69a460c6a54344b6ba8b8ba03fd0bab242b989f4f0976944cd8 +[http://heanet.dl.sourceforge.net/kxml/kxml2-src-2.3.0.zip] +md5=cb830720148bad0c555a02b27e1e7f9a +sha256=f2441575236be69a460c6a54344b6ba8b8ba03fd0bab242b989f4f0976944cd8 + +[http://sump.org/projects/analyzer/downloads/la-src-0.8.tar.bz2] +md5=dc8f16011da37ee3114616b96dc80798 +sha256=c735f3c0b32f379020a52965e5af45fcd00330b94f94d51603ab5a05b06675fb + [http://handhelds.org/~zecke/oe_packages/labyrinth-0.7-zecke1.tar.gz] md5=027e5fd07dd6bd6c1f25161a266a0646 sha256=547088fbbc3c3f4e60544dca8500c5f7097911427fd7dd04ad082db03f117001 @@ -7590,6 +9594,14 @@ sha256=547088fbbc3c3f4e60544dca8500c5f7097911427fd7dd04ad082db03f117001 md5=e1206c46a5e276feca11a7149e2fc6ac sha256=f4f093e371c999a2a079607b74582a8ef5c1c3c9b322e3e997a47c1ea2afe2a5 +[http://heanet.dl.sourceforge.net/lame/lame-3.96.1.tar.gz] +md5=e1206c46a5e276feca11a7149e2fc6ac +sha256=f4f093e371c999a2a079607b74582a8ef5c1c3c9b322e3e997a47c1ea2afe2a5 + +[http://lasertraq.googlecode.com/files/lasertraq-0.8-r213.tar.bz2] +md5=c24cc9ba196b32134186843324bfe784 +sha256=7a2162c783f98a2de9658a217cd0409a7bd16d40040c34a6077df376a2135aea + [http://eaglet.rain.com/rick/linux/schedstat/v10/latency.c] md5=56a9be3b788ad32a169069f332ebf0f3 sha256=cc1fc10fe3e8473efd3af315a47500d646665554fe6fe5993028adb1f189334b @@ -7598,6 +9610,14 @@ sha256=cc1fc10fe3e8473efd3af315a47500d646665554fe6fe5993028adb1f189334b md5=41d6e0be4654b1716b1b3f5b53abf014 sha256=3e406c76874827c236c7070c1349f8b4ee058aa664fc3066435c938bf6d5f0e8 +[http://heanet.dl.sourceforge.net/lgames/lbreakout2-2.6beta.tar.gz] +md5=41d6e0be4654b1716b1b3f5b53abf014 +sha256=3e406c76874827c236c7070c1349f8b4ee058aa664fc3066435c938bf6d5f0e8 + +[http://xorg.freedesktop.org/releases/individual/app/lbxproxy-1.0.1.tar.bz2] +md5=9d5045a5c76b1fe360221b967a5aa0e9 +sha256=e2e757986724a5d2ee299aa7616a3d9985af45e363021b486b7abbcac4ca01c2 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/lbxproxy-X11R7.0-1.0.1.tar.bz2] md5=d9c05283660eae742a77dcbc0091841a sha256=35360dd6160d94a981d923486a026fe91dfc3e0db2f5923aeb782b7e9c5e606f @@ -7610,14 +9630,30 @@ sha256=9e69ded08dc9a8c75f36a3c020e7aa96b90313d91b2f58add6d4dfff1f8861b0 md5=c1e74364963054b26b2a77a37bd2bf36 sha256=a2163b474d75dc87891c6a81ce9e89f0c9ceab7cbef14b50f066bf3508eec977 +[http://heanet.dl.sourceforge.net/lcdproc/lcdproc-0.4.5.tar.gz] +md5=c1e74364963054b26b2a77a37bd2bf36 +sha256=a2163b474d75dc87891c6a81ce9e89f0c9ceab7cbef14b50f066bf3508eec977 + [http://downloads.sourceforge.net/lcdproc/lcdproc-0.5.0.tar.gz] md5=4b67e421c19063fa322611a849ab5b80 sha256=a7567f3f68517008e68d15b33630f36ba539540fbb361a2f9c440ce2ceb8393b +[http://heanet.dl.sourceforge.net/lcdproc/lcdproc-0.5.0.tar.gz] +md5=4b67e421c19063fa322611a849ab5b80 +sha256=a7567f3f68517008e68d15b33630f36ba539540fbb361a2f9c440ce2ceb8393b + [http://downloads.sourceforge.net/lcdproc/lcdproc-0.5.1.tar.gz] md5=ad13d6cce7a7e068d85a66d30285af95 sha256=f459280eb4eeb70be584895364c97ffab22b888235b2351a31e1c87ca9710727 +[http://heanet.dl.sourceforge.net/lcdproc/lcdproc-0.5.1.tar.gz] +md5=ad13d6cce7a7e068d85a66d30285af95 +sha256=f459280eb4eeb70be584895364c97ffab22b888235b2351a31e1c87ca9710727 + +[http://heanet.dl.sourceforge.net/lcms/lcms-1.13.tar.gz] +md5=902ea29818ab4f3c86225ec7d6b5d5b6 +sha256=28e1648256cd18ccb3d0df149d3c33f94e7e2e0384b344f2792aa62309f825d6 + [http://www.littlecms.com/lcms-1.15.tar.gz] md5=76c921973fdea4f880944a024197f924 sha256=930ef7de15eb028c1cdbfe3f1170aaa1d5b0b4d45a8fa496d944216e155122c2 @@ -7626,6 +9662,10 @@ sha256=930ef7de15eb028c1cdbfe3f1170aaa1d5b0b4d45a8fa496d944216e155122c2 md5=07bdbb4cfb05d21caa58fe3d1c84ddc1 sha256=5ef3b4dab30956772009e29dba33fe1256cf9da161106a1e70b0966c96d14583 +[http://heanet.dl.sourceforge.net/lcms/lcms-1.17.tar.gz] +md5=07bdbb4cfb05d21caa58fe3d1c84ddc1 +sha256=5ef3b4dab30956772009e29dba33fe1256cf9da161106a1e70b0966c96d14583 + [http://savannah.nongnu.org/download/leafpad/leafpad-0.8.15.tar.gz] md5=f3570c052f4987f4122cd48d2c629f64 sha256=f294a7894efc8eee0c0c4238f41cc97492c61dd3dcceae4fcf555e31e841d86a @@ -7658,6 +9698,10 @@ sha256=0ee6a3caee4812827b8e167d4a07dbf859cb08a00a20f09568c3baae379d6ce8 md5=ab895165c149d7f95843c7584b1c7ad4 sha256=e5ef90ff30897448a7c090c2e31ceb302ed064a60411436e8995580848ed1a63 +[http://heanet.dl.sourceforge.net/lesstif/lesstif-0.95.0.tar.bz2] +md5=ab895165c149d7f95843c7584b1c7ad4 +sha256=e5ef90ff30897448a7c090c2e31ceb302ed064a60411436e8995580848ed1a63 + [ftp://ftp.wiretapped.net/pub/mirrors/lftp/old/lftp-3.5.1.tar.bz2] md5=c6d48782cdad4759000bf7cd24555723 sha256=463f0b46ce3a0fc09ef9ad7a5429959034d50a1eadbed5dfeae36c25dca31130 @@ -7706,6 +9750,10 @@ sha256=91a5b69435f10002b222be022c832d9860a93e0bc181e3f94abc150486ab031a md5=a75d2dbf3a3c66b567047c94245f8b82 sha256=1c9529f7245778a4f1422d6257d446b7c90a19c3b603b1a25db1669552c464b3 +[http://ftp.gnome.org/pub/GNOME/sources/libIDL/0.8/libIDL-0.8.2.tar.bz2] +md5=a75d2dbf3a3c66b567047c94245f8b82 +sha256=1c9529f7245778a4f1422d6257d446b7c90a19c3b603b1a25db1669552c464b3 + [http://ftp.gnome.org/pub/GNOME/sources/libIDL/0.8/libIDL-0.8.3.tar.bz2] md5=39640ea026d81e721b0c78a8aaeb7d59 sha256=808cd8e7b499a3519f8492a5bda75c55e770f976c98b2c2c21edcca4b9c30168 @@ -7742,6 +9790,10 @@ sha256=6ad87266173d21ba7e0e4506db0c094769fd58c3f0b741b37f30c297deec166a md5=d94f0389cd655b50e2987d5b988b82a5 sha256=76ccdb6adfc51a4c40e90fe66f599ee4de4787fca44860b851dd4bbf97f7889d +[http://xorg.freedesktop.org/releases/individual/lib/libX11-1.0.1.tar.bz2] +md5=58f0537f21183e27149cf906a1b6bef9 +sha256=f99e4ce6d8e3b8833957978fe22223897b0e636c83580f2b07eff0388eb75294 + [http://xorg.freedesktop.org/releases/individual/lib/libX11-1.0.3.tar.bz2] md5=60b787a812c92d33f71860e4e19cb59d sha256=fb42f2400c3709a0c2c17f27cc4a902c191ebd6228c70698891bf3a13ea5b3ac @@ -7942,6 +9994,10 @@ sha256=130d6991971a10ba8b54f52848bcb00cbb7b4229eb839f88500972e11fecf8f0 md5=2f2085310f75900044d9dcd469637d26 sha256=2f8c004c0b914d460e6fd2b48d8b425cf4778d415467fc1f1d938b200462d18b +[http://xorg.freedesktop.org/releases/individual/lib/libXfont-1.2.8.tar.bz2] +md5=83b8e21f6ee22512a8f72ba51e2d74f6 +sha256=374a2ca12f62a4d9f09a17a34765a5289cefa9db7f9f0913e1c3731b4088aad8 + [http://xorg.freedesktop.org/releases/individual/lib/libXfont-1.3.0.tar.bz2] md5=d1d3fa170d74b066f1f23ca8574e7c90 sha256=07567b9880f28d1a404389c024a185419bfe81136aef3d9eda52407f34c3d3dd @@ -7994,6 +10050,10 @@ sha256=0473d1db21968f05b39ff9832b18545ba6b93be76d2e61b04a14208c515680f3 md5=4a5207a29a6b220e5462129854689844 sha256=7e6339539d3d0a4fc95cc23ca2b13ae67dd783e011b3cc5ca76040e376bff57f +[http://xorg.freedesktop.org/releases/individual/lib/libXi-1.1.0.tar.bz2] +md5=c25abbe604029855eb11a3a75fb1f386 +sha256=0f90d7e27d8a7d6bccf9350b6283ffe122e5347fa51d4ea9055653b297339989 + [http://xorg.freedesktop.org/releases/individual/lib/libXi-1.1.2.tar.bz2] md5=9c4dd85f3e2a75bfb60bd288502bc288 sha256=4deda13613f03e4524d3cf0ac14b9e20be5044d415cb8478713ecbe47f4de862 @@ -8242,6 +10302,10 @@ sha256=512674419ac2013d11eccf4f106d6cfc719c9c2b49215a8f0e89c5327d176a84 md5=1264bd213c631d29d1b4bc04696de66a sha256=0f34656e262d7c41c1499dbe1aa3bc91c1fe8dc230ab79d5cf027ab6d141ee56 +[http://gpephone.linuxtogo.org/download/gpephone/libabenabler2-1.0/libabenabler2-1.0.tar.bz2] +md5=6bb28fc35f7589b8fae2ed73f9e5e08e +sha256=901eb2cd2b817f70ee400565f714ee95b3ebed692ba37a579b6d71a21dab1a43 + [http://www.ngolde.de/download/libacpi-0.2.tar.gz] md5=05b53dd7bead66dda35fec502b91066c sha256=13086e31d428b9c125954d48ac497b754bbbce2ef34ea29ecd903e82e25bad29 @@ -8258,6 +10322,10 @@ sha256=953e39b44b80bb89e52b00f7a7c4045fdd9c698e265bfa14a3d2291e64dffaf1 md5=9480e31cce6506091080d59211089bd4 sha256=89f47d77d0f660cef80efeecc1cbd194ebf4afdd3be5ab2c3584bd8a90ac44c0 +[ftp://ftp.nl.debian.org/debian/pool/main/liba/libaio/libaio_0.3.106.orig.tar.gz] +md5=9480e31cce6506091080d59211089bd4 +sha256=89f47d77d0f660cef80efeecc1cbd194ebf4afdd3be5ab2c3584bd8a90ac44c0 + [http://www.xiph.org/ao/src/libao-0.8.4.tar.gz] md5=0525549b0bf665f617913c916064cc87 sha256=a2f434898bd5319024a97294cc4c7ba1d89bda4951af2015a887feca116e162f @@ -8286,6 +10354,10 @@ sha256=46d66be76f962cd6f921011c60409c1d5070db4b01619e6d3e5093705665e7a7 md5=f619b4f01aeda6d5f2679be9dcec5a51 sha256=ae2d5d228a1251666f9f80248178b40fb22513597cf78b976e4c3f15d8fc260c +[http://heanet.dl.sourceforge.net/libassa/libassa-3.4.2-2.tar.gz] +md5=f619b4f01aeda6d5f2679be9dcec5a51 +sha256=ae2d5d228a1251666f9f80248178b40fb22513597cf78b976e4c3f15d8fc260c + [ftp://ftp.gnupg.org/gcrypt/alpha/libassuan/libassuan-0.6.7.tar.gz] md5=db4e6939fafbaae80cab11a67f28771d sha256=c72dc7b2a3bb2945d1fb693b401ddff44f3eefbe248f2e6d29c86487b69c1dd4 @@ -8302,6 +10374,10 @@ sha256=a3d8768aa8fd2f6ae79be2d756b3a6b48816b3889ae906be3d5ffb2de5a5c781 md5=f0f55eec32c641d0e8602c92acabd56c sha256=f490172a14c264f390d682c25cf33353ac5e6f9876722c8348c1e2d4b11dd1dd +[http://heanet.dl.sourceforge.net/bedic/libbedic_1.1-0.tgz] +md5=211ea5a881b5691ec7a1aedbe7fc406c +sha256=0cb299278f17d4580d9b1b56df8b7c356afb016f2a68ce7d13a8169f74e2a16b + [http://ftp.gnome.org/pub/GNOME/sources/libbonobo/2.10/libbonobo-2.10.0.tar.bz2] md5=68179b91f5043ce0ef050dbbed04979b sha256=b1a185c6e20ac50c95ec3ba1aca486819984cd213e9cea69ab0dbca21db78b92 @@ -8350,10 +10426,18 @@ sha256=66c3f033fdc8f9ba0bd9d0ae2d1f2c11f9fa51bf0d1418e5cb75e29e6577a5bc md5=15de3830b751818a54a42899bd3ae72c sha256=5fdaf9af5ac4f75c0215d000b82b128fd054a582f81cc4f039a1e7fe69335ebb +[http://heanet.dl.sourceforge.net/libcdaudio/libcdaudio-0.99.12p2.tar.gz] +md5=15de3830b751818a54a42899bd3ae72c +sha256=5fdaf9af5ac4f75c0215d000b82b128fd054a582f81cc4f039a1e7fe69335ebb + [http://gpephone.linuxtogo.org/download/gpephone/libchenabler-0.1/libchenabler-0.1.tar.gz] md5=866fd13611a8de946428db1df9be8468 sha256=74def55ba6a61e966e0873a4081fd3dd65089b94b837810d3bc056221d7e41c7 +[http://repository.maemo.org/pool/maemo4.0/free/source/libc/libconic/libconic_0.13-0.8.tar.gz] +md5=b4078390c459ae4df3acdabca36f53da +sha256=1ee5bf796367d27987098f73dad866359e188cafe32f1871c12b4469f262c846 + [http://repository.maemo.org/pool/bora/free/source/libconic_0.13.tar.gz] md5=f852e61c2700b5bc571a730c6516e4ce sha256=1a9caf3ab9fd4d84fb2d8bb2fa1459e41d896a778d63cfd515cd55e1181379b0 @@ -8390,6 +10474,10 @@ sha256=d23619f37fbc175027315ca641adbc51cae8a055fb78f169a35b965d6ebf3059 md5=baee4e3f0a765eb664922fc78f346014 sha256=9aa09bb2de91727de68ee57b1a1e4c03059cbbc7166f9f181ee8b5c2792e724d +[http://heanet.dl.sourceforge.net/libcwd/libcwd-0.99.47.tar.gz] +md5=9f734d279fa7a91f81d07fb9fd5de049 +sha256=8e9bfe9838fce18bb55d41ec883be5b7330aeead265feec0347745e8e589822a + [http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.10.tar.gz] md5=6812a5e4063b5016f25e9a0cebbd3dd9 sha256=83004489cce844d4f9180fb74cc4781bb79e31aecf60d529608a510cf114484e @@ -8410,10 +10498,18 @@ sha256=1f918fc7c51e8de4b97aa3556b829a03ef7a06bd44c344a494326dc222785a6a md5=308e5746a2d0804be1d638319ad7b9c0 sha256=bd518b930f76c976bf693c247f0742d88808c776a2aeb51ab7830dedb0eb692d +[http://heanet.dl.sourceforge.net/libdbi/libdbi-0.7.2.tar.gz] +md5=308e5746a2d0804be1d638319ad7b9c0 +sha256=bd518b930f76c976bf693c247f0742d88808c776a2aeb51ab7830dedb0eb692d + [http://downloads.sourceforge.net/libdbi-drivers/libdbi-drivers-0.7.1.tar.gz] md5=f11020119ceb7a6dee3969cb0589d4bc sha256=5ae76aff042249750437ab7e490ae7d9e19a10f0005cd9bb525106365998aca8 +[http://heanet.dl.sourceforge.net/libdbi-drivers/libdbi-drivers-0.7.1.tar.gz] +md5=f11020119ceb7a6dee3969cb0589d4bc +sha256=5ae76aff042249750437ab7e490ae7d9e19a10f0005cd9bb525106365998aca8 + [http://nchipin.kos.to/libddmpeg/libddmpeg_1.5.orig.tar.gz] md5=89e59638d31384987d912741986398b6 sha256=9422e73c55aa921fbbce06e5e01bba0b98bb7a0f1640c27cfd307c290dba792c @@ -8434,6 +10530,10 @@ sha256=f776abe417432b3c4ff8b063201c4b4b45479a563fb43e6fd64504b538ef4689 md5=181f063344a0e674e5c2546544d5e27f sha256=b0159537f22453fcf30d7c4d7d9a39b6996233217c1f80a49ede135cf6ed32ca +[http://heanet.dl.sourceforge.net/libdmtx/libdmtx-0.5.2.tar.gz] +md5=129d960e30498f2a68d31c2c40b145af +sha256=bd9669e5f1a43d1cfcff4d3dc5f18736ba7c950c8ba7b71b1d9cf4436a3783b3 + [http://xorg.freedesktop.org/releases/individual/lib/libdmx-1.0.2.tar.bz2] md5=4d866967210d06098fc9f302ed4c79b1 sha256=fa3ff31a543f7cea04762c08f48b418e75230de8b4dfdf9d2d3ae9e2af26b9c4 @@ -8466,14 +10566,30 @@ sha256=941e8020129111377652bd7253ea85e6c133fd1c23c66bd9fc0ca9eabab1385a md5=c8ddee96ba1182d73447eaf0bb6fde81 sha256=c2c6ee274cbd5759715a786b949df8ac3e848ffc771173c4f006b88c665346d0 +[http://heanet.dl.sourceforge.net/dvd/libdvdnav-0.1.10.tar.gz] +md5=c8ddee96ba1182d73447eaf0bb6fde81 +sha256=c2c6ee274cbd5759715a786b949df8ac3e848ffc771173c4f006b88c665346d0 + [http://www.dtek.chalmers.se/groups/dvd/dist/libdvdread-0.9.6.tar.gz] md5=329401b84ad0b00aaccaad58f2fc393c sha256=509503979441e078866d75a628d8a6483e67737454feaa5366f609ecf2a0f5cf +[http://download.savannah.nongnu.org/releases/exosip/libeXosip2-2.2.3.tar.gz] +md5=837a35f085890eac3328ac402b24383b +sha256=a09e97847f3983431c5453bf2f3de1629e629c1b4ea9ddc5e3aa6caaf7417b05 + [http://download.savannah.nongnu.org/releases/exosip/libeXosip2-3.1.0.tar.gz] md5=ed6005a146501a5f9308e28108ae7bca sha256=eed72871201e2c1deae3d7c0b618bf16f306d91fc7ebcb53956ab7468663514f +[ftp://ftp.linux.ee/pub/gentoo/distfiles/distfiles/libedit-20050118.tar.bz2] +md5=c261f059f71cef79d0f793ba944a5891 +sha256=494c19b29d2880d92361bb5bd0e02b8db9cd2dd9c1c3b330170a91e215911f89 + +[http://bolgo.cent.uji.es/files/libeina/libeina-0.96.7.tar.gz] +md5=72fade0fea5b67e92c2e1ff9e2c07f52 +sha256=d4fda4fc89cc5492f3cdf0445e84ab93311f9e1b22e487f3d95f3f86c90fe4f5 + [http://www.mr511.de/software/libelf-0.8.3.tar.gz] md5=f85d6dc4b4ef1c126080d86cf0ce63fd sha256=644262514d0f6c3572f66935921a5290383a15e804e9b085e293ab78102d3513 @@ -8506,14 +10622,26 @@ sha256=407ec85a4c3ce2c4045608d28c36a8e19f1cfbad02bf3de784f6b6fa83d15a56 md5=afa4abd73665e1a46b0510c4f4efa9a9 sha256=74c81e8c29de3fda2e196ce7082a5ec35aad9399a6c7f67bb906b3c9d91dc6f3 +[http://heanet.dl.sourceforge.net/libetpan/libetpan-0.46.tar.gz] +md5=afa4abd73665e1a46b0510c4f4efa9a9 +sha256=74c81e8c29de3fda2e196ce7082a5ec35aad9399a6c7f67bb906b3c9d91dc6f3 + [http://downloads.sourceforge.net/libetpan/libetpan-0.48.tar.gz] md5=493de1bfc84c1e0f82fd865795e48ffb sha256=039861766d330b8ff2309334feb97d384e16d927dd859fdc0fad4c4a13d66b7c +[http://heanet.dl.sourceforge.net/libetpan/libetpan-0.48.tar.gz] +md5=493de1bfc84c1e0f82fd865795e48ffb +sha256=039861766d330b8ff2309334feb97d384e16d927dd859fdc0fad4c4a13d66b7c + [http://downloads.sourceforge.net/libetpan/libetpan-0.52.tar.gz] md5=119eb4ac27fb75540ca74d8997f7fc7f sha256=dddf7b94e3547436beca1ed5ed22616f350d7e79cd1d72c83b122c1707237525 +[http://heanet.dl.sourceforge.net/libetpan/libetpan-0.52.tar.gz] +md5=119eb4ac27fb75540ca74d8997f7fc7f +sha256=dddf7b94e3547436beca1ed5ed22616f350d7e79cd1d72c83b122c1707237525 + [http://downloads.sourceforge.net/libetpan/libetpan-0.54.tar.gz] md5=0214de45b1b92277fbfc6c9a00af5316 sha256=f4547fae43a30265dd1d1e7f88c556d067a3ba67ca7ec0d46e540e6dc561a010 @@ -8558,14 +10686,26 @@ sha256=3bc2b8d1cd657b2f8f8ec82168791f7b0fce8c8161ab24eee4b577d5876026e0 md5=97e17fa05cb638eed5e8e59db431ed3a sha256=8daa7618787b3af2218eee9e074f90664bff5676896b997a760f8034383d70d6 +[http://heanet.dl.sourceforge.net/libexif/libexif-0.5.12.tar.gz] +md5=97e17fa05cb638eed5e8e59db431ed3a +sha256=8daa7618787b3af2218eee9e074f90664bff5676896b997a760f8034383d70d6 + [http://downloads.sourceforge.net/libexif/libexif-0.6.13.tar.bz2] md5=1b1e2b495c5aa20c08725f30545a110b sha256=830802525700e65809afdd56ccdb5cd9950747044ab50666257bbb3d59a82754 +[http://heanet.dl.sourceforge.net/libexif/libexif-0.6.13.tar.bz2] +md5=1b1e2b495c5aa20c08725f30545a110b +sha256=830802525700e65809afdd56ccdb5cd9950747044ab50666257bbb3d59a82754 + [http://downloads.sourceforge.net/libexif/libexif-0.6.16.tar.bz2] md5=deee153b1ded5a944ea05d041d959eca sha256=db6885d5e40e3a273ff8bb9708ab739c8ace3c5abdd75509eec8ea31a31aac43 +[http://heanet.dl.sourceforge.net/libexif/libexif-0.6.16.tar.bz2] +md5=deee153b1ded5a944ea05d041d959eca +sha256=db6885d5e40e3a273ff8bb9708ab739c8ace3c5abdd75509eec8ea31a31aac43 + [http://qa.debian.org/watch/sf.php/libexif/libexif-0.6.16.tar.bz2] md5=deee153b1ded5a944ea05d041d959eca sha256=db6885d5e40e3a273ff8bb9708ab739c8ace3c5abdd75509eec8ea31a31aac43 @@ -8574,6 +10714,10 @@ sha256=db6885d5e40e3a273ff8bb9708ab739c8ace3c5abdd75509eec8ea31a31aac43 md5=0aa142335a8a00c32bb6c7dbfe95fc24 sha256=a2f309c702ee72967676d96b1a9d06806d069fde8e88076200cca6479c3d3c38 +[http://heanet.dl.sourceforge.net/libexif/libexif-0.6.9.tar.gz] +md5=0aa142335a8a00c32bb6c7dbfe95fc24 +sha256=a2f309c702ee72967676d96b1a9d06806d069fde8e88076200cca6479c3d3c38 + [http://klaus.geekserver.net/libflv/libflv.tar.gz] md5=5eb6b38393d81f16fb4155fe406e527c sha256=b53afe2a88fa24bdd53e2a3dd51ab660b89b46b1ba4918735d7331b2e56548d6 @@ -8590,18 +10734,34 @@ sha256=448a4e35a8685b60829d1b51b498e2a6e4107549fd0458fa17dcc801d29d5f72 md5=d8ca3192867c98669bd7d6a41ed26b09 sha256=2cbce6d32c31c53df3e3f6fdd9d74c81b02ca1295598acd56061effa2b299b65 +[http://www.intra2net.com/de/produkte/opensource/ftdi/TGZ/libftdi-0.13.tar.gz] +md5=7b4a660fd644980f3d45873d156d021a +sha256=98ceb0a3174564f310c4ff1c021bdca52558bf693003a410cdb95c8388aa11f3 + [http://www.intra2net.com/de/produkte/opensource/ftdi/TGZ/libftdi-0.8.tar.gz] md5=0de290c864b64efbd02c265a683478a3 sha256=c0516891d36c6987f7a573dab556630a1e5390b0cb2ef6ffcf177ae018622979 +[http://www.intra2net.com/de/produkte/opensource/ftdi/TGZ/libftdi-0.9.tar.gz] +md5=6b1bf276ba8d623332083477f91deefd +sha256=1ffb6284de02c75a2cd6709b6148eac0336cd0297742500da12aedd151838295 + [http://downloads.sourceforge.net/g15tools/libg15-1.2.1.tar.bz2] md5=51d42e50ec00315f71be184ba1ddf32b sha256=fd9468704d55fc6796604380ee63454e954720519f827e5ac563e2144b719155 +[http://heanet.dl.sourceforge.net/g15tools/libg15-1.2.1.tar.bz2] +md5=51d42e50ec00315f71be184ba1ddf32b +sha256=fd9468704d55fc6796604380ee63454e954720519f827e5ac563e2144b719155 + [http://downloads.sourceforge.net/g15tools/libg15render-1.2.tar.bz2] md5=a5a2a833d098926c3d289aeae452cc53 sha256=d22335af6a17ec44799da82671778d2072499b26c5773ab913d9ba20d159d20f +[http://heanet.dl.sourceforge.net/g15tools/libg15render-1.2.tar.bz2] +md5=a5a2a833d098926c3d289aeae452cc53 +sha256=d22335af6a17ec44799da82671778d2072499b26c5773ab913d9ba20d159d20f + [http://www.galago-project.org/files/releases/source/libgalago/libgalago-0.3.3.tar.gz] md5=94d5223445deb1ed95973424d4958386 sha256=148bc83e4ab6e87a6f26b60efdffc1258752a42079783e6f2b080f287e8b15fc @@ -8642,6 +10802,14 @@ sha256=14d457c3ed1d4751664f7196cbcd20e7db82532025f35634812f0cb7470fc43e md5=555488ddfc81a6e0df1fb5112e7eee13 sha256=7562042a6210947363bd6a9bbcdd03f8d02470c0347970b507f689d25a907844 +[http://www.geda.seul.org/devel/20050820/libgeda-20050820.tar.gz] +md5=356182f379af726045a70de3024c7e6d +sha256=c2fdec2c186c11aac2f941dc238ee89f51412707bd7c952e02faefa70e38d700 + +[ftp://ftp.gnome.org/pub/GNOME/sources/libgee/0.1/libgee-0.1.2.tar.bz2] +md5=8e977443e2b4c8f2014cfedd0559bcf3 +sha256=01cb83ef0e765c9856bed79c18a766eed2027f2b2576e8eaa14e02c15c7658fd + [http://gpephone.linuxtogo.org/download/gpephone/libgemwidget-0.1/libgemwidget-0.1.tar.bz2] md5=95d269ad7e7cb7d3032498ad2e47643b sha256=b8a1da871aa34362caf0c76dcbd3df42aef7313a4ed08f38eddcb159b80302c5 @@ -8686,6 +10854,10 @@ sha256=868b9320127904a96656a2852b602265f858c8d87116274836b1bdb9e3da5c42 md5=ebef72abd4fbccdad9291378ac625d9a sha256=24285b0d5d8ba33a900db27e8d2c55ae8bb0a0d5c753d01764978b83f4c70b5e +[http://heanet.dl.sourceforge.net/libgmail/libgmail-0.1.6.tar.gz] +md5=7adb94dea0b687eb46da4b36f5712921 +sha256=8c4d31673f51a5e0eae8930f1a2e9c208ff74df33098ed55eb8b1205f587c888 + [http://ftp.gnome.org/pub/GNOME/sources/libgnome/2.10/libgnome-2.10.1.tar.bz2] md5=dfb1a9b5fd25da8680a166c83ce0b6a8 sha256=9cf2d20f528470b2fc7995aea314c5898fad654fde265880002de0669b869c27 @@ -8778,6 +10950,10 @@ sha256=552c34d20f30847429e342e6c6ddeece707b69a5abe9aeeafcfeb65cec2eebd7 md5=dbdb274517ad643d9397dd6868788631 sha256=d6eef491e70fcc2c1e5b94f6a8dbb3774443b3b76b1ca5d62bfb5b802df14120 +[http://ftp.gnome.org/pub/GNOME/sources/libgnomeui/2.23/libgnomeui-2.23.90.tar.bz2] +md5=310ede3d7fd6dbdb0f53bfa7af46f09a +sha256=1f112ea46c51e063f4085e27b97c88d4e23164eb07056edbbee1a190abe713ec + [http://ftp.gnome.org/pub/GNOME/sources/libgnomeui/2.24/libgnomeui-2.24.0.tar.bz2] md5=7d50e1fc4c1ee3c268b26e8dfe7e677b sha256=9ecf81d3ad2e1ec0b371d720b37154e8b716af1cd464dbeb06232f8fa4c5e07d @@ -8890,11 +11066,23 @@ sha256=aa7df632134dfd3d4e65f5a98edd6bb9a97b498db911f4287bbaeb5ae83a1bad md5=a201650482bbc2edbd948449cf4d3f5a sha256=98af9747179c4d284104fc155b624c6cda4e91a554de0a04e6a6878c0e852c63 +[http://heanet.dl.sourceforge.net/gphoto/libgphoto2-2.1.4.tar.bz2] +md5=a201650482bbc2edbd948449cf4d3f5a +sha256=98af9747179c4d284104fc155b624c6cda4e91a554de0a04e6a6878c0e852c63 + [http://downloads.sourceforge.net/gphoto/libgphoto2-2.1.5.tar.gz] md5=210844f0d88f58842917af6eaff06382 sha256=4691bc87f567eba4938d1465e7a2ddfaf7bdea86629390830111bd03bd227ed5 -[http://downloads.sourceforge.net/gphoto/libgphoto2-2.1.6.tar.gz] +[http://heanet.dl.sourceforge.net/gphoto/libgphoto2-2.1.5.tar.gz] +md5=210844f0d88f58842917af6eaff06382 +sha256=4691bc87f567eba4938d1465e7a2ddfaf7bdea86629390830111bd03bd227ed5 + +[http://downloads.sourceforge.net/gphoto/libgphoto2-2.1.6.tar.gz] +md5=1938cbd9718595fd419907bf2f7c3195 +sha256=f80dc7b4b280db736b07089e31aefc8112a47e285e7d0b4f53249630a07fec80 + +[http://heanet.dl.sourceforge.net/gphoto/libgphoto2-2.1.6.tar.gz] md5=1938cbd9718595fd419907bf2f7c3195 sha256=f80dc7b4b280db736b07089e31aefc8112a47e285e7d0b4f53249630a07fec80 @@ -8902,10 +11090,18 @@ sha256=f80dc7b4b280db736b07089e31aefc8112a47e285e7d0b4f53249630a07fec80 md5=a60154772635b693ff08b4f34dea7f61 sha256=0dc26b7a8568dee7634bebbaf9f7d3e3ab9460424e6297a595e41c4fddbbdb79 +[http://heanet.dl.sourceforge.net/gphoto/libgphoto2-2.4.0.tar.bz2] +md5=a60154772635b693ff08b4f34dea7f61 +sha256=0dc26b7a8568dee7634bebbaf9f7d3e3ab9460424e6297a595e41c4fddbbdb79 + [http://downloads.sourceforge.net/gphoto/libgphoto2-2.4.2.tar.bz2] md5=714859617c0b616855f6906280010c5d sha256=f319655b272186ad76ab73317b7e8c5e3b87d51c1265ce676f02e8c312745226 +[http://heanet.dl.sourceforge.net/gphoto/libgphoto2-2.4.2.tar.bz2] +md5=714859617c0b616855f6906280010c5d +sha256=f319655b272186ad76ab73317b7e8c5e3b87d51c1265ce676f02e8c312745226 + [http://repository.maemo.org/pool/bora/free/source/libgpsbt_0.1-18.tar.gz] md5=ce884aff8d063f9d51ebf75d899747fa sha256=495ebd711a63bee4eeaae7f0766323f2070bf30ab9b54f5ac18912baa1b41084 @@ -8970,10 +11166,18 @@ sha256=1964a9fb46e5f57bda75bfc37e19036b32c6a7d57bf13020776dfaaca348920b md5=fa1c82cd9fd2fafd7ff10d78eb5781c5 sha256=383e0a22a537f653b8d41688277560f95678a042967198085ec7caa1a5cc2f4c +[http://ftp.gnome.org/pub/GNOME/sources/libgtop/2.23/libgtop-2.23.4.tar.bz2] +md5=bb37766ba407983a8e055eb4705a1a81 +sha256=7d9b0e68b4e84e7938197c5240023d3b6840026cfc9f83bdab202fbab4029a9b + [http://ftp.gnome.org/pub/GNOME/sources/libgtop/2.24/libgtop-2.24.0.tar.bz2] md5=f0e3584b9157d3425184a9e21e3ac482 sha256=af9643abf15887c9cb501a4dcc6f432ec0896b7087ef8739526f284ed1461a18 +[http://ftp.gnome.org/pub/GNOME/sources/libgweather/2.22/libgweather-2.22.3.tar.bz2] +md5=151e03d925579241decc92afa4d07182 +sha256=d5a799e1d11cd91865cb716a11de970de97d7ef679684db0a893fc6a65a9acd0 + [http://ftp.gnome.org/pub/GNOME/sources/libgweather/2.24/libgweather-2.24.0.tar.bz2] md5=d006328ec5cebc5dbf3a18834db95bba sha256=0abae1eef7210e4decab7f89ea5b3a012c06859e91923a7212ca50856bffd500 @@ -8986,6 +11190,10 @@ sha256=68dd467cf8bd54283da874af54ac35de58b88444371ea48bb5cef289a0942981 md5=8ec44fda9476391ed372f835d5358fe8 sha256=9505377f6b4d4b657889e8468fca8049c8c2c46c3ddd03bb4eef0e7b2e1bad3b +[http://kldp.net/frs/download.php/3733/libhangul-0.0.4.tar.gz] +md5=a32301e03a381917cb2ec836a43a9664 +sha256=939bbcacd49487f830cd9d8bf56f81043f519bb7bfbcfb568fd87bf484120a10 + [http://repository.maemo.org/pool/maemo4.0/free/source/libh/libhildon/libhildon_1.99.0-1.tar.gz] md5=0ac69c278bd9f531a93b3c535f7ff145 sha256=67e74666b49b0d17ff16e209196674dc23faa8c45b4f9b2ad33b94ffb6f3be4c @@ -9034,6 +11242,14 @@ sha256=a1dd25b7b4a8979f1d78596c2c65f062c30b5db794be71508ceb4d662052a8ee md5=cf829bb82f84728194c64a41e9f1cf32 sha256=10197df9daee806453c5a7e99e538d7eac0421796f2a9ae114d4369d85fcf3af +[http://gpephone.linuxtogo.org/download/gpephone/libiac-1.0/libiac-1.0.tar.bz2] +md5=6bb2fd1841d9c1be22edc999970a55a3 +sha256=821290104ef79b6a35a4a7456d50aff0536f66f05a5d6c255e7155d1cacd12b6 + +[http://heanet.dl.sourceforge.net/freeassociation/libical-0.27.tar.gz] +md5=87d48321bff08de08794132d60b55d94 +sha256=7f1fa404e5540c880cc747c4a680a89d88b87b10a1c77655f512780fcb0ca5d0 + [ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.11.tar.gz] md5=b77a17e4a5a817100ad4b2613935055e sha256=fbf5b9a63ea6e3abebfabc04506f0e18a2860071031e34ea4ad4f450b8c43d4b @@ -9042,6 +11258,10 @@ sha256=fbf5b9a63ea6e3abebfabc04506f0e18a2860071031e34ea4ad4f450b8c43d4b md5=c2be282595751535a618ae0edeb8f648 sha256=a99e244fd78babb95ea3c9a5c88b964994edaa1d15fd8dde5b4067801e23f0cd +[http://download.tangent.org/libid3-1.1.tar.gz] +md5=e089e8c8c7276373db0a856c508bd8f9 +sha256=117831ba06b255ede3cc318278108d19db972b6365c3d80d374d8f888f834c98 + [ftp://ftp.mars.org/pub/mpeg/libid3tag-0.15.0b.tar.gz] md5=a625307d2cda4f3c609b79c1e3a93d87 sha256=794092368890321ffbb9cb1b260808d732658af093bd0a3e01c9b54c4bd657e5 @@ -9066,6 +11286,10 @@ sha256=1a64895c9a6cdbb5cdfff81f1520541fee28e85fb940d9b0484de656d69ae8f5 md5=7ee7d8c834f1e06093130a86cbb9e79a sha256=3453c1426fdc06b32bc5f4e7d3ce039ec7f38f0fa4018d505e515099b209dd25 +[http://heanet.dl.sourceforge.net/tapioca-voip/libjingle-0.3.10.tar.gz] +md5=7ee7d8c834f1e06093130a86cbb9e79a +sha256=3453c1426fdc06b32bc5f4e7d3ce039ec7f38f0fa4018d505e515099b209dd25 + [http://xorg.freedesktop.org/releases/individual/lib/liblbxutil-1.0.1.tar.bz2] md5=b73cbd5bc3cd268722a624a5f1318fde sha256=94c31c7090106d3a95e2a7c083961efca1321b970118fe103ab06e5d927b7258 @@ -9082,6 +11306,10 @@ sha256=d9ca5d502f8a4a6c146d1f0458ac27c95cc59724caa6d845e24946d299463bc5 md5=2de88389da013488bfd31356523070c0 sha256=14f9690328318d11f9ba13a9356a2c008bdd169b7a817f38cb7f9eb32cf7240e +[ftp://ftp.nl.debian.org/debian/pool/main/libl/liblockfile/liblockfile_1.06.tar.gz] +md5=2de88389da013488bfd31356523070c0 +sha256=14f9690328318d11f9ba13a9356a2c008bdd169b7a817f38cb7f9eb32cf7240e + [ftp://ftp.mars.org/pub/mpeg/libmad-0.15.0b.tar.gz] md5=2e4487cdf922a6da2546bad74f643205 sha256=5666a1dec6956a9b9869aacc3b05a10222639651790be3a9c43772890eb49cd6 @@ -9094,6 +11322,10 @@ sha256=bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690 md5=1be543bc30c56fb6bea1d7bf6a64e66c sha256=bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690 +[http://heanet.dl.sourceforge.net/mad/libmad-0.15.1b.tar.gz] +md5=1be543bc30c56fb6bea1d7bf6a64e66c +sha256=bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690 + [http://qa.debian.org/watch/sf.php/mad/libmad-0.15.1b.tar.gz] md5=1be543bc30c56fb6bea1d7bf6a64e66c sha256=bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690 @@ -9130,6 +11362,10 @@ sha256=58169f20fa59b3f2a41ee39191d6f4ee7a121e63a3aba241e3323952054703fb md5=465fa15c43bf0091a3810e7702fe143f sha256=f7054f93c57ba6b758d0e4f47d4d2dd96a7fe487e1157eb70a4d642910275aea +[http://www.matthew.ath.cx/projects/java/libmatthew-java-0.7.1.tar.gz] +md5=6a4db221129f230c64a0f937d00bb703 +sha256=003c44be21859d1495c0571e249ce17edd5ac58636f67b6a8bc4f395a6c7e6a2 + [http://mikmod.raphnet.net/files/libmikmod-3.1.11.tar.gz] md5=705106da305e8de191549f1e7393185c sha256=2d7598cd2a8c61c023f27c9c7c1aca8bbfd92aadbee2f98b7a6d421eae35c929 @@ -9138,6 +11374,10 @@ sha256=2d7598cd2a8c61c023f27c9c7c1aca8bbfd92aadbee2f98b7a6d421eae35c929 md5=9f3c740298260d5f88981fc0d51f6f16 sha256=891a2b780306e6ef86e381f459e71a085d4e7f56c970a879d3bf341c01bdfc32 +[http://heanet.dl.sourceforge.net/mikmod/libmikmod-3.1.12.tar.gz] +md5=9f3c740298260d5f88981fc0d51f6f16 +sha256=891a2b780306e6ef86e381f459e71a085d4e7f56c970a879d3bf341c01bdfc32 + [http://qa.debian.org/watch/sf.php/mikmod/libmikmod-3.1.12.tar.gz] md5=9f3c740298260d5f88981fc0d51f6f16 sha256=891a2b780306e6ef86e381f459e71a085d4e7f56c970a879d3bf341c01bdfc32 @@ -9162,6 +11402,10 @@ sha256=9841831972bebef827348a9f9b0875d8dd0f5079b0f1cb6b8283ceb43befd584 md5=d688ca879c934e9cde8b323cf3025f89 sha256=321c2dc105dfbe61ddde859040c79dec65e4daef8fb44167484d1ce99119c14c +[http://heanet.dl.sourceforge.net/libmng/libmng-1.0.8.tar.gz] +md5=d688ca879c934e9cde8b323cf3025f89 +sha256=321c2dc105dfbe61ddde859040c79dec65e4daef8fb44167484d1ce99119c14c + [http://downloads.sourceforge.net/modplug-xmms/libmodplug-0.7.tar.gz] md5=b6e7412f90cdd4a27a2dd3de94909905 sha256=c80da366576501be18a987c28609bd8ffa340ed20fc03249c70c43634f077052 @@ -9170,6 +11414,14 @@ sha256=c80da366576501be18a987c28609bd8ffa340ed20fc03249c70c43634f077052 md5=cea399626e2a074e2a77c8cd98387a48 sha256=ef2269cc4ba5c8574d38321349d76063c6b200857f0c9256ea97e608583e8857 +[http://heanet.dl.sourceforge.net/modplug-xmms/libmodplug-0.8.tar.gz] +md5=cea399626e2a074e2a77c8cd98387a48 +sha256=ef2269cc4ba5c8574d38321349d76063c6b200857f0c9256ea97e608583e8857 + +[http://files.musepack.net/source/libmpcdec-1.2.6.tar.bz2] +md5=7f7a060e83b4278acf4b77d7a7b9d2c0 +sha256=4bd54929a80850754f27b568d7891e1e3e1b8d2f208d371f27d1fda09e6f12a8 + [http://www2.autistici.org/bakunin/libmrss/libmrss-0.17.2.tar.gz] md5=54935c6cff42df2f1daada267b701392 sha256=18f0e2df191219c29b47dc12b4b06b5be7eaeef34b3436156547e5a9f4eb51c1 @@ -9190,14 +11442,34 @@ sha256=e9e3f157c5c75acef702da9b41c17daa7ea7bb8d0952e6c6960f26980497477e md5=d5e19bb77edd6ea798ce206bd05ccc5f sha256=c6629c4bed428f9df3f89efc065b2d96f05eba36286532ebe8b8e404022371a0 +[http://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-3.0.1.tar.gz] +md5=d42110ae548dae1eea73e83b03a1a936 +sha256=243311225a6bdcee065aaabc63334086cdd4298f13def45c7e798201f88d08cc + [ftp://ftp.debian.org/debian/pool/main/libn/libnet0/libnet0_1.0.2a.orig.tar.gz] md5=bf4983ea440542f3ec019cc1bb6ca87d sha256=cf6bf75d590884fa9d0725d4d86afa93211e29cf0c5f333a60bb4e4eb347dc29 +[ftp://ftp.nl.debian.org/debian/pool/main/libn/libnet0/libnet0_1.0.2a.orig.tar.gz] +md5=bf4983ea440542f3ec019cc1bb6ca87d +sha256=cf6bf75d590884fa9d0725d4d86afa93211e29cf0c5f333a60bb4e4eb347dc29 + [ftp://ftp.debian.org/debian/pool/main/libn/libnet/libnet_1.1.2.1.orig.tar.gz] md5=be845c41170d72c7db524f3411b50256 sha256=ab01882a3d0556176018c09342cd0731f7cbc8e687795009894c3326942c76ff +[ftp://ftp.nl.debian.org/debian/pool/main/libn/libnet/libnet_1.1.2.1.orig.tar.gz] +md5=be845c41170d72c7db524f3411b50256 +sha256=ab01882a3d0556176018c09342cd0731f7cbc8e687795009894c3326942c76ff + +[http://www.netfilter.org/projects/libnetfilter_queue/files/libnetfilter_queue-0.0.13.tar.bz2] +md5=660cbfd3dc8c10bf9b1803cd2b688256 +sha256=1d6b180272befbfb19fedd80b5641354b82d6e719bf3d9ffa2d8287c62046536 + +[http://www.netfilter.org/projects/libnfnetlink/files/libnfnetlink-0.0.30.tar.bz2] +md5=7fd3c8ddc03d42fa9f0177a17a38f163 +sha256=a6a336a5b3e063748d93ae910bbf6b2d36ead9f9ecd6011b14325b8814b54bc2 + [http://www.citi.umich.edu/projects/nfsv4/linux/libnfsidmap/libnfsidmap-0.20.tar.gz] md5=9233cb77876eb642374a0d2bcaba1170 sha256=c2ae0a07d863536261b8a0562f3f77aa224fa1f413d85d824a765d00e37c5de4 @@ -9206,6 +11478,10 @@ sha256=c2ae0a07d863536261b8a0562f3f77aa224fa1f413d85d824a765d00e37c5de4 md5=9ee6dcdfac97bae6fe611aa27d2594a5 sha256=b0275c914197a53c6ccf631eac756fd37ec6f2d8f09f15757061495cf9be0fcd +[http://heanet.dl.sourceforge.net/libnids/libnids-1.18.tar.gz] +md5=9ee6dcdfac97bae6fe611aa27d2594a5 +sha256=b0275c914197a53c6ccf631eac756fd37ec6f2d8f09f15757061495cf9be0fcd + [http://people.suug.ch/~tgr/libnl/files/libnl-0.5.0.tar.gz] md5=c58ec5032f393f569ef7f489436651b3 sha256=89a6b5086987460ddd9b24723f35a3a951ccf2886cabe26bef89b8c53528fec5 @@ -9298,10 +11574,18 @@ sha256=ad2336edd245788a528e55555e92a11bd434360fb7ff092e9edaeafb0442f3ab md5=6d6b6a75bc8751a7421b5e739c53ef6e sha256=07128710a699b453dcd7b92e33f2aa8dcbbfe0a657d33040803cdaf0997e442c +[http://heanet.dl.sourceforge.net/omxil/libomxil-bellagio-0.9.0.tar.gz] +md5=6d6b6a75bc8751a7421b5e739c53ef6e +sha256=07128710a699b453dcd7b92e33f2aa8dcbbfe0a657d33040803cdaf0997e442c + [http://download.ofb.net/liboop/liboop-1.0.tar.bz2] md5=88fc8decf99fd75d2af40e0a005fa0d3 sha256=4a973d28466fde0b689099192f9bcd081b129d90b3c5a9815e5ade73052cf8d2 +[http://libopenraw.freedesktop.org/download/libopenraw-0.0.2.tar.gz] +md5=eae40ecaa92f69d99b27ae3bad8aa8ae +sha256=2c3f58a4dff1b74ad93da0468d8806207488134d51b2d81947932a1bca8553ae + [http://ewi546.ewi.utwente.nl/OE/source/libopensync-0.18.tar.gz] md5=ce94a69fb7ae7533d1f8828b6402cec8 sha256=f9c803ba28d5deb18d9feb5c7818ce99325b09204b7dc0447798f2f47a657a46 @@ -9318,6 +11602,10 @@ sha256=3394bae1e3bcfe463d139a367ba5ebe73d968df128c871842dcb4965a725d0dc md5=d8cc7835663566e3626e959d8fb531bf sha256=c686d27f0818e2d8cc6277ba123c74d7210e70fa2b320c5a828eaaedd598e908 +[http://www.opensync.org/attachment/wiki/download/libopensync-plugin-evolution2-0.22.tar.bz2?format=raw] +md5=c4419dd2451bd1595fe42fcf96a9ba45 +sha256=2a309178a1aafaa147b792502a241e0036889e2f4153065a10313e7db3c26e65 + [http://opensync.org/download/releases/0.36/libopensync-plugin-evolution2-0.36.tar.bz2] md5=ed3aca114a81ad8cc543b3dd68af657a sha256=19f1a24d54daec7b6e1321548799e500893b8aebe6dda995dc8eb162f77932c2 @@ -9326,6 +11614,10 @@ sha256=19f1a24d54daec7b6e1321548799e500893b8aebe6dda995dc8eb162f77932c2 md5=a9ffd002169406fb31eee885c9742c26 sha256=c03ad432d46e8f562ad4eaa08972c5bd229fdc45e5c01ac9af094cbfc38cdf59 +[http://www.opensync.org/attachment/wiki/download/libopensync-plugin-file-0.22.tar.bz2?format=raw] +md5=d600836ab5182751d07ea42c6b997eb4 +sha256=52231306a388f7ad49b273e0a90e3320811cfcad6c222669d05fe92e4c157825 + [http://opensync.org/download/releases/0.36/libopensync-plugin-file-0.36.tar.bz2] md5=785a79d70e3d6e0637c7f21b2a09987c sha256=932726d69b398686b9d6a1e2afd53c537c03ae8a476df1b8b00ba1f8b4abbf44 @@ -9342,6 +11634,10 @@ sha256=218e8d5194d866109db3419c66d071cdbd319446288e7012ed135d4a6b8a3762 md5=52f86db50d653f5af0adefeb76cf9a31 sha256=db7250647b86dc8d0bd45c73d454d73ca182c88f6ffe2ccf1760f40be81080f2 +[http://www.opensync.org/attachment/wiki/download/libopensync-plugin-irmc-0.22.tar.bz2?format=raw] +md5=ecec872b2bccd824b1c5cbb2ec1d5399 +sha256=4bed935f596bd5ae11f6263a97e3cd25029a911f7e476e9b8f11b8036d89a0f6 + [http://opensync.org/download/releases/0.36/libopensync-plugin-irmc-0.36.tar.bz2] md5=21f9789fa41c2f06c547a17bc13c6081 sha256=f7ccff0bc136d3aa21ab961f31414f4856a94e9f1a1b17c44c8ec33b67ace4ac @@ -9386,6 +11682,10 @@ sha256=687f46d5d5eb5ced18534f3cfcfdd82db6b25679437602f1519cae48d019b55d md5=4c5b31154943108ba0fecf00c8af9f3c sha256=687f46d5d5eb5ced18534f3cfcfdd82db6b25679437602f1519cae48d019b55d +[http://repository.maemo.org/pool/maemo4.0/free/source/libo/libosso-gsf_1.11.10.4-1.tar.gz] +md5=4c5b31154943108ba0fecf00c8af9f3c +sha256=687f46d5d5eb5ced18534f3cfcfdd82db6b25679437602f1519cae48d019b55d + [http://repository.maemo.org/pool/maemo/ossw/source/libo/libosso-help/libosso-help_1.0.01.tar.gz] md5=dbc3c68809e39bd6681aab8ad16ffe3c sha256=ef6f6fda31dfbf7b3186b6f1d0ffd12ee0675d9a057ad2994f81b5164213a693 @@ -9458,6 +11758,10 @@ sha256=e4ad16bd198722ba4ea41be77b17fe1c2b6e60de7a96fc4aac6a7b20f3fa448d md5=2287cfaad53a714acdf6eb75a7c1d15f sha256=7d06103ce32bffa39730d1c12c4b4dcfd50a8f1c18d2462807cfe7c0c3ca0e64 +[http://heanet.dl.sourceforge.net/libpng/libpng-1.2.12.tar.bz2] +md5=2287cfaad53a714acdf6eb75a7c1d15f +sha256=7d06103ce32bffa39730d1c12c4b4dcfd50a8f1c18d2462807cfe7c0c3ca0e64 + [http://downloads.sourceforge.net/libpng/libpng-1.2.16.tar.bz2] md5=7a1ca4f49bcffdec60d50f48460642bd sha256=3a14200862cf4fe59fd66340364537d9973b032b7831b7fe33eb827baebc0019 @@ -9466,6 +11770,10 @@ sha256=3a14200862cf4fe59fd66340364537d9973b032b7831b7fe33eb827baebc0019 md5=8c186d9da3d011e2c3076b28f9c6be7b sha256=f5e1037be2cb2a47a7f50181a42fac289a662e78d0ec4c68971f557d5451b8c2 +[http://heanet.dl.sourceforge.net/libpng/libpng-1.2.20.tar.bz2] +md5=8c186d9da3d011e2c3076b28f9c6be7b +sha256=f5e1037be2cb2a47a7f50181a42fac289a662e78d0ec4c68971f557d5451b8c2 + [http://downloads.sourceforge.net/libpng/libpng-1.2.24.tar.bz2] md5=1e676c5cc7dfa4ef78affe8fb8f1011d sha256=502bbf08f55dc5a3fed9740881930e3b98230004b9f09f6d14f01736d5c4a04d @@ -9474,6 +11782,10 @@ sha256=502bbf08f55dc5a3fed9740881930e3b98230004b9f09f6d14f01736d5c4a04d md5=78d2f8c4e0d64f8948819563587302d3 sha256=24b354dcd8843274a20e1625e04d618d43f9851082254cb9dae6f33f15c2a5cd +[http://heanet.dl.sourceforge.net/libpng/libpng-1.2.31.tar.bz2] +md5=78d2f8c4e0d64f8948819563587302d3 +sha256=24b354dcd8843274a20e1625e04d618d43f9851082254cb9dae6f33f15c2a5cd + [http://qa.debian.org/watch/sf.php/libpng/libpng-1.2.31.tar.bz2] md5=78d2f8c4e0d64f8948819563587302d3 sha256=24b354dcd8843274a20e1625e04d618d43f9851082254cb9dae6f33f15c2a5cd @@ -9494,6 +11806,10 @@ sha256=6fb70d0b8f410f05988e1f3a3e8c86990c3e84c9958041803e6d0658faae91ea md5=a487a98a40d64b9f6ee118b10b9cb97a sha256=7cadb398c106ba8df3b297e345ab1db750ad058c6c2e78b184f18a7f685bf8ef +[http://gpephone.linuxtogo.org/download/gpephone/librecord2-0.1/librecord2-0.1.tar.bz2] +md5=782dc4ea50518d5dfce4b47a7c9b56b6 +sha256=7131cf051d6a98d29358ea56a60db3d8e104bf97d9e9473622cc3523391839e5 + [http://gpe.linuxtogo.org/download/source/librewrite-0.1.tar.bz2] md5=f25a9f8aefde5e2bf0dc5c8318020a00 sha256=3a892543df587f645911289af7fead594bb161913ce04619360f25cb3adeefad @@ -9530,6 +11846,10 @@ sha256=33a5ae2cf0a4056d46f0f09d4bd464ccfa7fa8768a1f03833e2fad5081b9bba2 md5=24cdb6b78f45e0e83766903fd4f6bc84 sha256=6633e4605662763a03bb6388529cbdfd3b11a9ec55b8845351c1bd9a92bc41d6 +[http://heanet.dl.sourceforge.net/librsync/librsync-0.9.7.tar.gz] +md5=24cdb6b78f45e0e83766903fd4f6bc84 +sha256=6633e4605662763a03bb6388529cbdfd3b11a9ec55b8845351c1bd9a92bc41d6 + [http://www.mega-nerd.com/SRC/libsamplerate-0.1.2.tar.gz] md5=06861c2c6b8e5273c9b80cf736b9fd0e sha256=98b8766323c78b7b718dfd4ef6b9292bbf0796b742abb2319b8278cbeee731d4 @@ -9550,6 +11870,14 @@ sha256=a33977201ff13a4c08d3a74de0fcdbe7f072e4a92a261d5f39fbf16aab069050 md5=ba3a1063a9e8cd5a730b3871e468c227 sha256=802c72f5f11d60f5cb75ef8acc116c5ab0600e3bc099fc5accf8a997e463b374 +[http://heanet.dl.sourceforge.net/libserial/libserial-0.5.2.tar.gz] +md5=7a3766e354c31513ff6d7859a4b2c1b8 +sha256=898012c30596bba605cdee76a80dd6a7a42506cc04d0137e23e2c40681573f03 + +[http://gpephone.linuxtogo.org/download/gpephone/libsettings-0.3/libsettings-0.3.tar.gz] +md5=9219923ee3f4d465757f23ac0c2be584 +sha256=01c4d4bcf893be8f86007280f231985117c16faf15a007bd6ec41624463abf6b + [http://releases.chipx86.com/libsexy/libsexy/libsexy-0.1.10.tar.gz] md5=c009b0c89e5cf91dba17261f4cccfc4c sha256=e7720307f3fafb210963b6d91c608f25ae2088880260b3e39508c27aab13a3a0 @@ -9582,10 +11910,18 @@ sha256=a6b13f25e5e6b91ad490fe9e8afac22c484f372e4e245d397a813ea6563abdb3 md5=d0d1ffcae0eced97ef4f17ce0ba81352 sha256=dcd6d3ea9a2c185b5286f80eefe9ac1402036b8fa21cfc742442d99579bd2b3e +[http://heanet.dl.sourceforge.net/libsigc/libsigc++-1.2.5.tar.gz] +md5=d0d1ffcae0eced97ef4f17ce0ba81352 +sha256=dcd6d3ea9a2c185b5286f80eefe9ac1402036b8fa21cfc742442d99579bd2b3e + [http://ftp.gnome.org/pub/GNOME/sources/libsigc++/1.2/libsigc++-1.2.7.tar.bz2] md5=212f48536019e1f003d2509b4c9b36df sha256=d9163d90e259bfde9164c7b218475a7664a7907a1b3197f17bc1035f36112225 +[ftp://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.0/libsigc++-2.0.17.tar.gz] +md5=556c5f66c58ef02906e22ab199c35222 +sha256=2023cabe7a502232177c9bdca574e3ad97bd81d2a7badbb427f561e1703ae7db + [ftp://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.0/libsigc++-2.0.6.tar.gz] md5=9eab84e54790093be3aa93fb4163c4b9 sha256=25d21557dccebbed2c7ff704fded0399194164d0a5e318791b4594a7db1cfa6b @@ -9598,6 +11934,10 @@ sha256=53258864f9fc951c26b491bbc958ebccf4b1cc287cd71209e86e5aff67d0f12e md5=02e78c3cfbdb4be285d97653e563f65a sha256=bd55717374674ed69de46c13b52aaba0420d5c68582cac34d863e44f6f1d560e +[http://heanet.dl.sourceforge.net/libsigcx/libsigcx-0.6.4.tar.gz] +md5=02e78c3cfbdb4be285d97653e563f65a +sha256=bd55717374674ed69de46c13b52aaba0420d5c68582cac34d863e44f6f1d560e + [http://www.mega-nerd.com/libsndfile/libsndfile-1.0.16.tar.gz] md5=773b6639672d39b6342030c7fd1e9719 sha256=79e305112a4d9598b93b614a7747604f9ef10d9a2dee52c5903b554bbeaedd7c @@ -9614,6 +11954,10 @@ sha256=13447233b19f7a9d4e14b362f28f1dbe4bb6652bdc182bba974234b0bc15e791 md5=5a36bc38b8b70a0951fb3acc479503f5 sha256=d74ed600fab1bf5bab86a4815a5170157607317030bd9316e587486e29e815f8 +[http://gpe.linuxtogo.org/download/source/libsoundgen-0.5.tar.bz2] +md5=de41eed3de2bb441969db8254dc0c889 +sha256=08bc3bf18fdd5b27eb554e3cb0c2f0c2805f470909f21a09df26bc8fb8732fd7 + [http://gpe.linuxtogo.org/download/source/libsoundgen-0.6.tar.bz2] md5=ce7e2c206c612e2dd09ec42e1179c9a7 sha256=b4d9050bf46dab0f2f3a47911eac255c08159ab3965f5f10c4ab4e903eee1e31 @@ -9654,6 +11998,10 @@ sha256=6b498c1070e17f665625dc3e5113e8af55da5ce3d4d5abf0ae3fec344b8208d4 md5=e6505bdff9048bf61533c00caf48d553 sha256=8451c7182a99f0f4a88b3c19234c5182689f91444c50fcb510452b5e5b8a7805 +[http://heanet.dl.sourceforge.net/libspiff/libspiff-0.8.2.tar.bz2] +md5=e6505bdff9048bf61533c00caf48d553 +sha256=8451c7182a99f0f4a88b3c19234c5182689f91444c50fcb510452b5e5b8a7805 + [http://downloads.sourceforge.net/libspiff/libspiff-0.8.3.tar.bz2] md5=0f989402e5edcbd84c456be56c856f25 sha256=8b4ebd22dcfa7511109c2f6fa9e304c2ef3acaa492d55423cdf9a6f54a2fdb22 @@ -9662,6 +12010,14 @@ sha256=8b4ebd22dcfa7511109c2f6fa9e304c2ef3acaa492d55423cdf9a6f54a2fdb22 md5=ad703c4702646c83ca4fcace92c220d3 sha256=94ca32ac10615a7c0ba19180e67f2e40e2bfa4cc8de6ceb2a3a54d2dd83141cb +[http://snowball.tartarus.org/dist/libstemmer_c.tgz] +md5=8358a9ddaaffeeca7cb00725770f7cdb +sha256=f3e93a41ad76e91f08e3115fa5065df8b69fd3f2dbdd9e982ae890b892ac6477 + +[http://www.etla.net/libstroke/libstroke-0.5.1.tar.gz] +md5=51b9a4e309ac15cfcab96191eed03cb2 +sha256=0da9f5fde66feaf6697ba069baced8fb3772c3ddc609f39861f92788f5c7772d + [http://cairographics.org/snapshots/libsvg-0.1.4.tar.gz] md5=ce0715e3013f78506795fba16e8455d3 sha256=4c3bf9292e676a72b12338691be64d0f38cd7f2ea5e8b67fbbf45f1ed404bc8f @@ -9682,10 +12038,18 @@ sha256=2be78a947bdbfd24aa4f35ae97d2b7bafa60162c5e824cf3dd085b40eddee8ff md5=d524b18c1eafe5805f83e29c01a91b66 sha256=818740eb5df3cf7913ab7e7979874ccf403831744c89efa4ebaf74c7e2c090bc +[http://telepathy.freedesktop.org/releases/libtelepathy/libtelepathy-0.0.53.tar.gz] +md5=015611ff5cbd3b3718fcb49adc47bd13 +sha256=dfc90b2c92bc313c67d80611945823799581b5b4eb5758d6d77846d4e22666de + [http://telepathy.freedesktop.org/releases/libtelepathy/libtelepathy-0.0.55.tar.gz] md5=2cbbbeaf97c154a7fb9b088b95deb70e sha256=53e8740a3a36ece8078b371b95c79646dc69f0ad3ee2665e5fb659412c0baf35 +[http://telepathy.freedesktop.org/releases/libtelepathy/libtelepathy-0.2.0.tar.gz] +md5=a2083338ed480fd507925e00a93fd96b +sha256=c33ef2820ea954aa2aa6d048f4540aa75f09cfc4c7915558d736dcedc1b8fa07 + [http://telepathy.freedesktop.org/releases/libtelepathy/libtelepathy-0.3.1.tar.gz] md5=594e9999483cdd5cd913b6ea8cf9b076 sha256=413ac7973fb4a353d98079b4ace1adaa8dcf8ce858113544c1ddb45660441b91 @@ -9702,14 +12066,38 @@ sha256=f5c7730ded0273a8615b12b46a32b800bbcb9e861e3a18aa92b1c062981a2fef md5=354675bfbd881082a9447efde9935226 sha256=1c091859f09d5a38c76f0d64a93db46aa2b5d637c8a7370d348f21e7be324c37 +[http://heanet.dl.sourceforge.net/tilp/libticables-3.9.2.tar.gz] +md5=354675bfbd881082a9447efde9935226 +sha256=1c091859f09d5a38c76f0d64a93db46aa2b5d637c8a7370d348f21e7be324c37 + [http://downloads.sourceforge.net/tilp/libticalcs-4.5.9.tar.gz] md5=8e93f2a4f4e67a9558d97166b4a4155f sha256=d9bc0f2f19eb8d21d8319a40dd85c2b1ef45a01499187a424a50173bbdd4ff12 +[http://heanet.dl.sourceforge.net/tilp/libticalcs-4.5.9.tar.gz] +md5=8e93f2a4f4e67a9558d97166b4a4155f +sha256=d9bc0f2f19eb8d21d8319a40dd85c2b1ef45a01499187a424a50173bbdd4ff12 + [http://downloads.sourceforge.net/tilp/libtifiles-0.6.5.tar.gz] md5=cfac4188328b888e80995f0ef3f6e0bf sha256=2216944bee1bafe60bf64ec01f6b8cd27ed9adfd2d1a185b43617d6e80d8b2c8 +[http://heanet.dl.sourceforge.net/tilp/libtifiles-0.6.5.tar.gz] +md5=cfac4188328b888e80995f0ef3f6e0bf +sha256=2216944bee1bafe60bf64ec01f6b8cd27ed9adfd2d1a185b43617d6e80d8b2c8 + +[http://tinymail.org/files/releases/pre-releases/v0.0.1/libtinymail-0.0.1.tar.bz2] +md5=fea9081686f1157157fd2b0e68b9aeee +sha256=40bc855073422f893a919896a915e1f3d98f24a269c4c38be0072ad76feb5ca4 + +[http://tinymail.org/files/releases/pre-releases/v0.0.3/libtinymail-0.0.3.tar.bz2] +md5=de3fd5f8c838ba9c876783d21ebf43bb +sha256=e234d314f0bdfcc54f52111519624fcd3d1ff37a267c39848b5de7a272367976 + +[http://tinymail.org/files/releases/pre-releases/v0.0.5/libtinymail-0.0.5.tar.bz2] +md5=8c8d1f7378734231fd0458569346b9d4 +sha256=9269060f1a8c36c66748520a44d6ffc5059ae736de1e282bb8b6fd65d7890813 + [http://gpe.linuxtogo.org/download/source/libtododb-0.07.tar.gz] md5=5df2e1f7564d066dce6ec24344605528 sha256=bc3fb1a20ec97149f6e81285a22bdc48fea9c4fbc9abad6919b87ce2f44acbc3 @@ -9738,10 +12126,18 @@ sha256=de00404262d5601edd953d2c83adc8e4897c2a34dfa2d8248f521136c266cc52 md5=e2093a85f6d48f1562c36920087502d6 sha256=6524e6d7a4adbda7fcda27ecd7b08bbeab88ad59d81bc6b166c617530f3dee1a +[ftp://ftp.gnu.org/gnu/libtool/libtool-1.5.22.tar.gz] +md5=8e0ac9797b62ba4dcc8a2fb7936412b0 +sha256=88e9ffaaade21c1ddaf6297723dd2fb4ca18ccaef0499a28b6e672f02c8ceb5d + [ftp://ftp.gnu.org/gnu/libtool/libtool-1.5.24.tar.gz] md5=d0071c890101fcf4f2be8934a37841b0 sha256=1e54016a76e9704f11eccf9bb73e2faa0699f002b00b6630df82b8882ff2e5b2 +[ftp://ftp.gnu.org/gnu/libtool/libtool-1.5.6.tar.gz] +md5=f9b709f4ac6d094afdee9cdbe1c6ffe7 +sha256=eb95567b78f00208c4932b8ea2f157059db9b58efcec515fa62c5bcb95670f04 + [ftp://ftp.gnu.org/gnu/libtool/libtool-2.2.2.tar.gz] md5=9281a5f1976da110be872b1ba048d8ac sha256=c3963d969e13588fb142001d5a81c07962dc2ce7c03e2f4f551a29760e844a10 @@ -9770,22 +12166,42 @@ sha256=59e835a57e6df03e4d2253b2357253f3d13da9473ff465563a3b9833a744fc36 md5=8c198831cc0495596c78134b8849e9ad sha256=59e835a57e6df03e4d2253b2357253f3d13da9473ff465563a3b9833a744fc36 +[http://heanet.dl.sourceforge.net/giflib/libungif-4.1.3.tar.bz2] +md5=8c198831cc0495596c78134b8849e9ad +sha256=59e835a57e6df03e4d2253b2357253f3d13da9473ff465563a3b9833a744fc36 + [http://downloads.sourceforge.net/upnp/libupnp-1.3.1.tar.gz] md5=6646be5e31e58188e8f47c6ce64faa4c sha256=4d0d6a5302222757fb36ee21d8f8e1b3de849c2de658ab1105272f32ff78767d +[http://heanet.dl.sourceforge.net/upnp/libupnp-1.3.1.tar.gz] +md5=6646be5e31e58188e8f47c6ce64faa4c +sha256=4d0d6a5302222757fb36ee21d8f8e1b3de849c2de658ab1105272f32ff78767d + [http://downloads.sourceforge.net/pupnp/libupnp-1.6.5.tar.bz2] md5=2b0370e7c405a5bc80880085e6d7d827 sha256=95b11e2db04c2e714c2f4fb05d9d31351d3388dababd4e1dd5300f4b0d5e8767 +[http://heanet.dl.sourceforge.net/pupnp/libupnp-1.6.5.tar.bz2] +md5=2b0370e7c405a5bc80880085e6d7d827 +sha256=95b11e2db04c2e714c2f4fb05d9d31351d3388dababd4e1dd5300f4b0d5e8767 + [http://downloads.sourceforge.net/libusb/libusb-0.1.10a.tar.gz] md5=c6062b29acd2cef414bcc34e0decbdd1 sha256=2f0ed0261074beaa6e060f9539c54017a3f3b4d2b272311e6cf60ba09c4aeadc +[http://heanet.dl.sourceforge.net/libusb/libusb-0.1.10a.tar.gz] +md5=c6062b29acd2cef414bcc34e0decbdd1 +sha256=2f0ed0261074beaa6e060f9539c54017a3f3b4d2b272311e6cf60ba09c4aeadc + [http://downloads.sourceforge.net/libusb/libusb-0.1.12.tar.gz] md5=caf182cbc7565dac0fd72155919672e6 sha256=37f6f7d9de74196eb5fc0bbe0aea9b5c939de7f500acba3af6fd643f3b538b44 +[http://heanet.dl.sourceforge.net/libusb/libusb-0.1.12.tar.gz] +md5=caf182cbc7565dac0fd72155919672e6 +sha256=37f6f7d9de74196eb5fc0bbe0aea9b5c939de7f500acba3af6fd643f3b538b44 + [http://downloads.sourceforge.net/libusb/libusb-0.9.0.tar.bz2] md5=a23f06379e05f04a77aec1c1428082a0 sha256=49aaecc7b8ff57903801745ad56e918b25df8a3839cff526c8a210c5cf5a2995 @@ -9794,6 +12210,10 @@ sha256=49aaecc7b8ff57903801745ad56e918b25df8a3839cff526c8a210c5cf5a2995 md5=f28e7ae610147a057e481bc731749bc5 sha256=d112f79489d5deabc0cbb48c6192353d488d9e62c28752eda091f585f2e41176 +[http://heanet.dl.sourceforge.net/libusb/libusb-0.9.2.tar.bz2] +md5=f28e7ae610147a057e481bc731749bc5 +sha256=d112f79489d5deabc0cbb48c6192353d488d9e62c28752eda091f585f2e41176 + [http://qa.debian.org/watch/sf.php/libusb/libusb-0.9.2.tar.bz2] md5=f28e7ae610147a057e481bc731749bc5 sha256=d112f79489d5deabc0cbb48c6192353d488d9e62c28752eda091f585f2e41176 @@ -9806,6 +12226,10 @@ sha256=9365108d71cecb78055de4df6eeb2fadf0fe9143ef105bcb6934dcf391983a49 md5=1fd5b9457e662531a48993191c1dfb64 sha256=4ab03b0d1d41db6a5c4e10c6dd819ad90876e712fd66a2de2b824a2fd3ce7dee +[http://heanet.dl.sourceforge.net/libusb/libusb-compat-0.1.0-beta2.tar.bz2] +md5=1fd5b9457e662531a48993191c1dfb64 +sha256=4ab03b0d1d41db6a5c4e10c6dd819ad90876e712fd66a2de2b824a2fd3ce7dee + [http://qa.debian.org/watch/sf.php/libusb/libusb-compat-0.1.0-beta2.tar.bz2] md5=1fd5b9457e662531a48993191c1dfb64 sha256=4ab03b0d1d41db6a5c4e10c6dd819ad90876e712fd66a2de2b824a2fd3ce7dee @@ -9814,10 +12238,22 @@ sha256=4ab03b0d1d41db6a5c4e10c6dd819ad90876e712fd66a2de2b824a2fd3ce7dee md5=e70e91d2e90831c0eb78944b6a9605ef sha256=fc04f2f2bae4b3eef7eb331330e2e3fd336d1894dbf4cae631c8b635622cdd52 +[http://heanet.dl.sourceforge.net/libvisual/libvisual-0.1.3.tar.gz] +md5=e70e91d2e90831c0eb78944b6a9605ef +sha256=fc04f2f2bae4b3eef7eb331330e2e3fd336d1894dbf4cae631c8b635622cdd52 + +[http://heanet.dl.sourceforge.net/libvisual/libvisual-0.4.0.tar.gz] +md5=f4e78547c79ea8a8ad111cf8b85011bb +sha256=0b4dfdb87125e129567752089e3c8b54cefed601eef169d2533d8659da8dc1d7 + [http://downloads.sourceforge.net/libvisual/libvisual-plugins-0.1.3.tar.gz] md5=9c3012e7a648540ac8c7053a0801830f sha256=7f681c64c5940a757a636281915d170d715fc4936e294052957f635ea1af0d67 +[http://heanet.dl.sourceforge.net/libvisual/libvisual-plugins-0.1.3.tar.gz] +md5=9c3012e7a648540ac8c7053a0801830f +sha256=7f681c64c5940a757a636281915d170d715fc4936e294052957f635ea1af0d67 + [http://gpephone.linuxtogo.org/download/gpephone/libvocenabler-0.1/libvocenabler-0.1.tar.gz] md5=536cd97488c0882913c097a833cb2ca2 sha256=748a9a5a1b2e6bf1db4cc767742acf58d836e551e56a493bd34ad759d3bb4f53 @@ -9842,6 +12278,10 @@ sha256=e881c527398904f450f3983dcebb71094b5f558f823fe57d0af5a4c1fa6f6f7f md5=cb2da2795f517c713ec98560d078a102 sha256=ce959b7349de056205e992b05c9c914994bc269d2b1d02de85eacd398263aab6 +[http://ftp.gnome.org/pub/GNOME/sources/libwnck/2.23/libwnck-2.23.6.tar.bz2] +md5=9c6d134dc1d454b4c5a717638caa56c6 +sha256=ea7945a131b67d4cf6bd02e41b0008d6aa1575d1aed75a0019d3c63cb61d07ea + [http://ftp.gnome.org/pub/GNOME/sources/libwnck/2.24/libwnck-2.24.0.tar.bz2] md5=860cd0ddce03c41a328e580d4efd4654 sha256=8cf49cf1d882ceb0b7b3a984ec350e5e2e4d608fec97911a0b0acf36a18d4df4 @@ -9854,14 +12294,26 @@ sha256=e9d15538a0bb97f6a440b23a5b372c41387773065dac69cab9fd1dc1d22a432b md5=64d66018897d759358f454010b6e75d2 sha256=01744fa637ad16a8ffaefb1aa7b9b42a56e92f0a2a18753f6720a85aa289d4eb +[http://heanet.dl.sourceforge.net/libwpd/libwpd-0.8.14.tar.gz] +md5=64d66018897d759358f454010b6e75d2 +sha256=01744fa637ad16a8ffaefb1aa7b9b42a56e92f0a2a18753f6720a85aa289d4eb + [http://downloads.sourceforge.net/libwpd/libwpd-0.8.4.tar.gz] md5=0461d4bf2da534b4bed041b67d7f7064 sha256=b6393088bf6c49b72a07d2aec7d84d14f6cab0ab00ad177c17157f03095f2096 +[http://heanet.dl.sourceforge.net/libwpd/libwpd-0.8.4.tar.gz] +md5=0461d4bf2da534b4bed041b67d7f7064 +sha256=b6393088bf6c49b72a07d2aec7d84d14f6cab0ab00ad177c17157f03095f2096 + [http://downloads.sourceforge.net/libwpd/libwpd-0.8.6.tar.gz] md5=464a390c66511831821de81b887d3e61 sha256=05a67a8b8d907ebcbac0e8505fc59fc50731ba9f73b8c177898ce41d0575bb17 +[http://heanet.dl.sourceforge.net/libwpd/libwpd-0.8.6.tar.gz] +md5=464a390c66511831821de81b887d3e61 +sha256=05a67a8b8d907ebcbac0e8505fc59fc50731ba9f73b8c177898ce41d0575bb17 + [http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/libwww-perl-5.808.tar.gz] md5=72120d9195ab1649c2d787eb1102a90c sha256=22e0778a16bb9ac0526efc99f7e03265e19ca5844aee7540f3f47a643ad5b9e4 @@ -10046,6 +12498,10 @@ sha256=cba8ac22d77bbf8f6ed4a98933242b89ee2426cbc216f54415eafcac1274547a md5=fc1d3add18afbb8e61b8277b89c525c6 sha256=cfde4a06df9fb4f26f8629d4ed3320ea813ba05a25217ec4ff55bbe5da04f504 +[http://heanet.dl.sourceforge.net/lineak/lineakd-0.8.3.tar.gz] +md5=fc1d3add18afbb8e61b8277b89c525c6 +sha256=cfde4a06df9fb4f26f8629d4ed3320ea813ba05a25217ec4ff55bbe5da04f504 + [http://links.twibright.com/download/links-2.1pre26.tar.bz2] md5=841af2540c789e254b8465e07e24c684 sha256=c89f10d42be2a0be8a017e1084897b1aabc5bca76817e9dab43b758dff051c56 @@ -10066,6 +12522,10 @@ sha256=460d29f603864281bef60a919e79d84d5477ac14e930da446e765d17f2706a6c md5=86c01dbbcdb41786229f51ec0994ff67 sha256=02b7d27564cb06f56f7fb14cd4a4eb60093c441decfec9b475d892518a5509a1 +[http://download.savannah.nongnu.org/releases/linphone/unstable/source/linphone-1.3.99.8.tar.gz] +md5=5e87231bc214a003a7d2c3a998ea6a8e +sha256=6855707d72e64ebdec3907fbaaa5d031255cb4b1118159d4b59f26b3704b6929 + [http://download.savannah.nongnu.org/releases/linphone/1.5.x/source/linphone-1.5.0.tar.gz] md5=e9b01b74a3bb989aa5859d06e56162bd sha256=8178dcf9552bf34cbb7098bbe6168fa1780232dbb649a2d1642eda18c87fa06f @@ -10262,6 +12722,10 @@ sha256=97004d6cefd1b5c5f37efc1603e4103f9a809d79f8cc0faf2397fa882cdd6ee6 md5=b2b0ffd11d27c72a9c01b8a9ef3832b7 sha256=9dbd0f6c92b33ae8b96c5a045a341a00b2454492c2229839d056e4fd1488bca5 +[ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-0.2.8.tar.bz2] +md5=5d86ca7bb4ed458743acd922ff09dae6 +sha256=e4b6ab08eaff2766c3bf85ea8d63ab31ae774266b8351772117fcc94d1318ade + [http://linuxtv.org/downloads/linuxtv-dvb-apps-1.1.1.tar.bz2] md5=de958cdb8d00e74792dd69f3c945b037 sha256=371f8133db705bde6c2f79cccb0b1a1f626a0d94bf41acceba5d76a69155f057 @@ -10278,10 +12742,18 @@ sha256=381d88261fa307ffa97edab6ba8488533b9fb45cccc5ae6cda5ccb64ef65adc0 md5=596e05980f75372fa998d50eb1dcade0 sha256=4097abc39b928970ba3232942ac5a6db7ec4ed4164593b9223c90470c9c994dc +[http://heanet.dl.sourceforge.net/lirc/lirc-0.8.0.tar.gz] +md5=596e05980f75372fa998d50eb1dcade0 +sha256=4097abc39b928970ba3232942ac5a6db7ec4ed4164593b9223c90470c9c994dc + [http://downloads.sourceforge.net/lirc/lirc-0.8.1.tar.gz] md5=5687331324ff5fc551f37ce419b2a926 sha256=d701ba12a96d913fc963eb7e5cc751bbd12fefb921dae4e70c8549a43a108dd6 +[http://heanet.dl.sourceforge.net/lirc/lirc-0.8.1.tar.gz] +md5=5687331324ff5fc551f37ce419b2a926 +sha256=d701ba12a96d913fc963eb7e5cc751bbd12fefb921dae4e70c8549a43a108dd6 + [http://downloads.sourceforge.net/lirc/lirc-0.8.3.tar.gz] md5=056d3ff0d855427da9628d2ff2ab4f57 sha256=8bc1c6cfc6a9c312c8f5b8cc79b501e26b438c96a2d245f42e50bfb353617716 @@ -10290,6 +12762,10 @@ sha256=8bc1c6cfc6a9c312c8f5b8cc79b501e26b438c96a2d245f42e50bfb353617716 md5=cba116a4880f77205e0813d93bf14310 sha256=986a923a5247468db1d2a03e93268f4025ae5dc27e911dafc7b37e6a802122db +[http://xorg.freedesktop.org/releases/individual/app/listres-1.0.1.tar.bz2] +md5=827a1ac5adf9aadd0c13b54a897e297b +sha256=7156e58025e240a501d5b32244b923b283bb35014ea5a4081b70044af8aef7a3 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/listres-X11R7.0-1.0.1.tar.bz2] md5=2eeb802272a7910bb8a52b308bf0d5f6 sha256=41711ff3c94144b8a561146948b9b5fd49a55756532fa4d254d9a959e6622d87 @@ -10306,6 +12782,14 @@ sha256=9532b981c9b8974ceedd3d25a8f9a0e167a92c9da0dece47f34a4ec34e34b1cf md5=866ba97420f5ce978b6a6b1cb4338890 sha256=17b82323151925ff5a7ad09a21781a0fa50ead4b87a339cee262271e4ededa13 +[http://llvm.org/releases/2.0/llvm-2.0.tar.gz] +md5=6f88002301a25f31a492052695f6138e +sha256=84d7ca0331963d2b2be7e18af61a80f49653c692f0bad63c5d26b2a2f7bc3375 + +[http://llvm.org/releases/2.1/llvm-2.1.tar.gz] +md5=b930e7213b37acc934d0d163cf13af18 +sha256=8cabd422f249ada736d864fc8a1f4d14aabefacb6f860c9beefbc53f93e0f96c + [http://dl.lm-sensors.org/lm-sensors/releases/lm_sensors-2.10.1.tar.gz] md5=cdc857b78e813b88cbf8be92441aa299 sha256=a332cacfa9d0eed6e9158c394db714e536f38c27451d7df08b9634952118fa1b @@ -10314,6 +12798,14 @@ sha256=a332cacfa9d0eed6e9158c394db714e536f38c27451d7df08b9634952118fa1b md5=eddf56af6f248812e3016a9e34b42bbd sha256=5a729a49ce591a58d241ac39979cb496ab30687556633782557196d2b262921e +[http://heanet.dl.sourceforge.net/lmbench/lmbench-2.0.4.tgz] +md5=eddf56af6f248812e3016a9e34b42bbd +sha256=5a729a49ce591a58d241ac39979cb496ab30687556633782557196d2b262921e + +[http://heanet.dl.sourceforge.net/lmbench/lmbench-2.5.tgz] +md5=d5b05498af26d5c09b372caab82a0337 +sha256=e7431530a4cf4c44b5068e23454f95765dc0b51e7d98bc2bd70451b17d505bd9 + [http://xorg.freedesktop.org/releases/individual/util/lndir-1.0.1.tar.gz] md5=1a53ddd7e1804abe8f3d9799a88b6aa8 sha256=89bff89702ebf2e5cc2268d79d5a27c62190c5a85ab080935d4425d3e309bc57 @@ -10426,10 +12918,22 @@ sha256=898db51a4016efca7d408163578443238373773357949e1b4978e26807a1fb2b md5=afd35e0770f28121a9f8d6093d20a62b sha256=bfc8cf4258574b48d33e9d622627db496e6533a469a6a87fd7ed76098dabb8a6 +[http://heanet.dl.sourceforge.net/ltp/ltp-full-20070228.tgz] +md5=afd35e0770f28121a9f8d6093d20a62b +sha256=bfc8cf4258574b48d33e9d622627db496e6533a469a6a87fd7ed76098dabb8a6 + +[http://heanet.dl.sourceforge.net/ltp/ltp-full-20080229.tgz] +md5=5860835de7e8d6f76a856243fd5f299e +sha256=e4c56dbbbf2d1a4d641624234b561e9402c00e47b5b253ae126aa444182310a4 + [ftp://ftp.debian.org/debian/pool/main/l/ltrace/ltrace_0.4-1.diff.gz] md5=89c0ebdd0a27bc7f68726100f4bb079b sha256=27c0b2051949b88514d4a32300377d531db314d7c93750b0abff049c2b93d739 +[ftp://ftp.nl.debian.org/debian/pool/main/l/ltrace/ltrace_0.4-1.diff.gz] +md5=89c0ebdd0a27bc7f68726100f4bb079b +sha256=27c0b2051949b88514d4a32300377d531db314d7c93750b0abff049c2b93d739 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/l/ltrace/ltrace_0.4-1.diff.gz] md5=89c0ebdd0a27bc7f68726100f4bb079b sha256=27c0b2051949b88514d4a32300377d531db314d7c93750b0abff049c2b93d739 @@ -10438,6 +12942,10 @@ sha256=27c0b2051949b88514d4a32300377d531db314d7c93750b0abff049c2b93d739 md5=8dbadad76ee360c2ed2caa915f5b1c8e sha256=28bbab4a69a3c78539b2588d2219327009d93cafc74fb59b9a4ea5f5b794f8db +[ftp://ftp.nl.debian.org/debian/pool/main/l/ltrace/ltrace_0.4.orig.tar.gz] +md5=8dbadad76ee360c2ed2caa915f5b1c8e +sha256=28bbab4a69a3c78539b2588d2219327009d93cafc74fb59b9a4ea5f5b794f8db + [ftp://ftp.pl.debian.org/pub/debian/pool/main/l/ltrace/ltrace_0.4.orig.tar.gz] md5=8dbadad76ee360c2ed2caa915f5b1c8e sha256=28bbab4a69a3c78539b2588d2219327009d93cafc74fb59b9a4ea5f5b794f8db @@ -10482,14 +12990,26 @@ sha256=fb423dc3ae75e64a256172c873732fe869ae482409cf1f3e7d980d222f070cee md5=bcebff4526b02dad4070cbbcb3d1b7e0 sha256=2ac2154e3f66b5b32ca25d47e3977db115ac6dc52ddb7442ce16e65a4ac1afee +[http://codespeak.net/lxml/lxml-1.3.3.tgz] +md5=2baa9f8ad14aa6dcfb763cfa0ce3bbcb +sha256=88903347bde122d50d358471788a6cc3f5dee18f2adee8c177d708f8c2773aae + [http://www.xtreefanpage.org/download/lxt-1.0.tgz] md5=c703192481d94dfa3f4e24eed22c8182 sha256=daa670b686f959ab15e457425e57c50f0b973ee4d24d6a4171c33f467961ad1d +[http://lyx.cybermirror.org/stable/lyx-1.5.1.tar.bz2] +md5=0ae3b9ccb2aa74776be4af8c199dbbe9 +sha256=d720ff082ed29d385c52e7ad370499d23275e595e9d7a321b383609f68acf23e + [http://downloads.sourceforge.net/sevenzip/lzma417.tar.bz2] md5=b1ab85e4dc1eb1323d77fef47a2cb71c sha256=84124d4501798ecb284fceb28931db023850535e1b1146c884add7b3b0331cbc +[http://heanet.dl.sourceforge.net/sevenzip/lzma417.tar.bz2] +md5=b1ab85e4dc1eb1323d77fef47a2cb71c +sha256=84124d4501798ecb284fceb28931db023850535e1b1146c884add7b3b0331cbc + [http://www.7-zip.org/dl/lzma417.tar.bz2] md5=b1ab85e4dc1eb1323d77fef47a2cb71c sha256=84124d4501798ecb284fceb28931db023850535e1b1146c884add7b3b0331cbc @@ -10562,6 +13082,10 @@ sha256=d7ee2e668455f9a092418e5475f32676eb0b37c54ae38a7fcdf2d14e0fb80c91 md5=be2790a34349ab452dddbcfe4c95606a sha256=c1c67839d4af290aecd8f7743312aacc0a39ae99757f0910918531ef9a63e14f +[http://chandlerproject.org/pub/Projects/MeTooCrypto/m2crypto-0.18.2.tar.gz] +md5=445dce53fcfc7ec8f6fd31f54da8a067 +sha256=62ed44c8b2d392bdc757981ac37f05d808a0d917e4f9d95de2fbf3c2bdad41a7 + [ftp://ftp.gnu.org/gnu/m4/m4-1.4.11.tar.gz] md5=988aa098326d5f2b5b5aa4b3efe8d528 sha256=c67b759d96471c9337d3b9f0ab2e1308f461a7dba445cfe0c3750db15b7ca77f @@ -10590,6 +13114,10 @@ sha256=324d0a55f73c82ad48635a94a8d72277a2280030df6d036eafe3498c933dee6d md5=6814b47ceaa99880c754c5195aa1aac1 sha256=5a79c7516ff7560dffc6a14399a389432bc619c905b13d3b73da22fa65acede0 +[http://heanet.dl.sourceforge.net/madwifi/madwifi-0.9.3.tar.bz2] +md5=26c31e8e1528fd098e3aaa11c0d34d99 +sha256=847596646417abbdce9cfd0e1dca2cced29c6a8b814d1bd28d0c7301e9e4e9d8 + [http://snapshots.madwifi.org/madwifi-ng/madwifi-ng-r1844-20061208.tar.gz] md5=9ab58ff1c9b3803f76b064eba3555679 sha256=da423f508cc3624a1f510e9c153ebb7c5413e765546e9d44d55818358862cc64 @@ -10618,6 +13146,10 @@ sha256=46a30f2cd62c66099d4b87a32fb82751598758c213a1486ec7f44c23a33f5529 md5=fe1758398de89fce57f05f9c1d1bb923 sha256=70cfa5eacd27d46a5e6f562b01769c64794d20ce4636cf133def7db7f0715efb +[http://snapshots.madwifi.org/madwifi-trunk/madwifi-ng-r3314-20080131.tar.gz] +md5=2c7352cbbdac995de8c3bce5b80db5f2 +sha256=0599c75b95ba63bdc554cb8124192e62c75fbeb71b9e8a5a7bc351c8e0666758 + [http://snapshots.madwifi.org/madwifi-trunk/madwifi-trunk-r3837-20080802.tar.gz] md5=d6e04fa7fb0bea5079f24a753633fb29 sha256=d504e1e7b8f0d01b5441a86d1086aa4088c8896d87d8aabd6dabace76997467a @@ -10678,18 +13210,34 @@ sha256=38fedc49b0b38018b3b5249499d28c6581b43a45a412f0c144341bee52575498 md5=e51180fe1b43fcdf3125fd9be4734b0c sha256=131fe674be66bd3f464ee40aa457a9613f3d2a17ea83c724c4145a5d072a252e +[ftp://ftp.nl.debian.org/debian/pool/main/m/mailx/mailx_8.1.2-0.20040524cvs-4.diff.gz] +md5=e51180fe1b43fcdf3125fd9be4734b0c +sha256=131fe674be66bd3f464ee40aa457a9613f3d2a17ea83c724c4145a5d072a252e + [ftp://ftp.debian.org/debian/pool/main/m/mailx/mailx_8.1.2-0.20040524cvs.orig.tar.gz] md5=b7d8c2b5f64ac0b0ce51fdda482ec399 sha256=b8a15528701669c728bbdc74060512eb41ce6284601c87f4ba6820b92380bec0 +[ftp://ftp.nl.debian.org/debian/pool/main/m/mailx/mailx_8.1.2-0.20040524cvs.orig.tar.gz] +md5=b7d8c2b5f64ac0b0ce51fdda482ec399 +sha256=b8a15528701669c728bbdc74060512eb41ce6284601c87f4ba6820b92380bec0 + [ftp://ftp.debian.org/debian/pool/main/m/mailx/mailx_8.1.2-0.20050715cvs-1.diff.gz] md5=38de40f8b082f4d592262c04275e2f30 sha256=2fb891f912624766d0bef765d69cec75ad3334dda1aa58659f3c3c1d0579c2c3 +[ftp://ftp.nl.debian.org/debian/pool/main/m/mailx/mailx_8.1.2-0.20050715cvs-1.diff.gz] +md5=38de40f8b082f4d592262c04275e2f30 +sha256=2fb891f912624766d0bef765d69cec75ad3334dda1aa58659f3c3c1d0579c2c3 + [ftp://ftp.debian.org/debian/pool/main/m/mailx/mailx_8.1.2-0.20050715cvs.orig.tar.gz] md5=3ba08abd8bbd0a87ea5bad05cded3bc3 sha256=5c578a8c573b4430358d4f6523f8acd8b2c5039579d907c88ec09dab13b226d3 +[ftp://ftp.nl.debian.org/debian/pool/main/m/mailx/mailx_8.1.2-0.20050715cvs.orig.tar.gz] +md5=3ba08abd8bbd0a87ea5bad05cded3bc3 +sha256=5c578a8c573b4430358d4f6523f8acd8b2c5039579d907c88ec09dab13b226d3 + [ftp://ftp.gnu.org/gnu/make/make-3.80.tar.bz2] md5=0bbd1df101bc0294d440471e50feca71 sha256=a99b39e7b04c333724f48c38fede709481cfb69fafe7e32ae4285b7fadf92f1b @@ -10698,6 +13246,10 @@ sha256=a99b39e7b04c333724f48c38fede709481cfb69fafe7e32ae4285b7fadf92f1b md5=354853e0b2da90c527e35aabb8d6f1e6 sha256=f3e69023771e23908f5d5592954d8271d3d6af09693cecfd29cee6fde8550dc8 +[http://www.kegel.com/crosstool/crosstool-0.43/patches/glibc-2.3.6/make-install-lib-all.patch] +md5=b94605c3b7ba90bc01648ca6e5cc1aaf +sha256=16ff3ea972065925338da1a1f37322dc4d8774f6d34d2dde2ce85121c08c99e0 + [http://xorg.freedesktop.org/releases/individual/util/makedepend-1.0.1.tar.gz] md5=90f5f3b987497a481b94d49372f17dce sha256=0a4a0d4e2613b0cd4321e55fd4741788b728736fc8a517996e2015fa49862e61 @@ -10710,6 +13262,10 @@ sha256=1caf464a967ff9335a040f2d3ffe050c881efda13c14531be49cf1aa8dabda92 md5=89c4b6b4a89f6502626783716fc7d887 sha256=8599712f2b2b3778eea344f59e1512cea284e802560317fac436585885a41dfa +[ftp://ftp.nl.debian.org/debian/pool/main/m/makedev/makedev_2.3.1.orig.tar.gz] +md5=89c4b6b4a89f6502626783716fc7d887 +sha256=8599712f2b2b3778eea344f59e1512cea284e802560317fac436585885a41dfa + [http://handhelds.org/~zecke/oe_packages/maki_V1.0.4ern.tar.gz] md5=cb5e4656fc3b13aa02d94096966ef2a9 sha256=6d5f1f771de97e08378940070b28dd75ac394ea611965ed1751600adbd099a59 @@ -10718,6 +13274,10 @@ sha256=6d5f1f771de97e08378940070b28dd75ac394ea611965ed1751600adbd099a59 md5=3800006ccd2f1f16124a2ac3abf04b30 sha256=5431073fb315f9b8dd43f430d7a9082e0a6232e20af559604da573270df8236b +[http://kernel.org/pub/linux/docs/man-pages/Archive/man-pages-2.41.tar.bz2] +md5=7b193c2fcf1d8f625e998df54582fee9 +sha256=bc9e3fe06a550d6eb48fd84eaf58415c78fbc29ba042e4a074adb62736f50760 + [http://kernel.org/pub/linux/docs/manpages/man-pages-2.41.tar.bz2] md5=7b193c2fcf1d8f625e998df54582fee9 sha256=bc9e3fe06a550d6eb48fd84eaf58415c78fbc29ba042e4a074adb62736f50760 @@ -10730,10 +13290,18 @@ sha256=e88295f9d6fe792784ea7dd546a12b0e7bb96b023d4248e728a43eb6ad885135 md5=5ac39978f55ecaf6e887cd5be027b1c3 sha256=4ac5940d25a9b5a52d0ff1f8223bb85462f9cfcceb4ac547e3ca9b6690aad394 +[http://www.maradns.org/download/1.0/maradns-1.0.41.tar.bz2] +md5=9abc13da25c1103d788ee9def1c8e764 +sha256=42930f57e2fb965360a31de35d8eb8c2b0cdd06172e413e8cfec5745b6a236b8 + [ftp://ftp.debian.org/debian/pool/main/m/masqmail/masqmail_0.2.21.orig.tar.gz] md5=7e989a8b0562054aea22c654507f2cb5 sha256=2257099c760c12daf094744c6b2269d476e3bc6b523366168ad81bdd2ebd2445 +[ftp://ftp.nl.debian.org/debian/pool/main/m/masqmail/masqmail_0.2.21.orig.tar.gz] +md5=7e989a8b0562054aea22c654507f2cb5 +sha256=2257099c760c12daf094744c6b2269d476e3bc6b523366168ad81bdd2ebd2445 + [http://projects.o-hand.com/matchbox/sources/matchbox-common/0.8/matchbox-common-0.8.tar.bz2] md5=107ac7cfb5f5ad3eacd14388a34a706b sha256=39672384843942210eca6e16396768b979e479a8e1a8d42d092ad517f561c20d @@ -10854,6 +13422,10 @@ sha256=b46ade42d080851ba4c5a10d3c520eb169fc33ab5c259ee8ca147eff57741246 md5=83661e2f9b67fd910f9ca0b1db06d9e8 sha256=52980096f4dbe5ea52a8c1bded74e7c657f934de5320da3f30cf7baf4274c749 +[http://distro.ibiblio.org/pub/linux/distributions/pdaxrom/src/mb-applet-cards-1.0.2.tar.bz2] +md5=0c4f6da5da1196a60af9a7943e583d58 +sha256=b1bdff4c61d320fdbcf9c13a1cb3c3afa4908bdda1d7aad224c6145ab5128706 + [http://projects.o-hand.com/matchbox/sources/mb-applet-input-manager/0.5/mb-applet-input-manager-0.5.tar.bz2] md5=bf36926ac97d0419a141f9d18ffab103 sha256=7a1298ea42a976e7a133ec160400daee055450872dcc40d671f08376fc08850a @@ -10934,18 +13506,42 @@ sha256=d54ae28bdafdbd3c71bfafa8f8814583356714b6a1436783161413a1e34a38c9 md5=c02004f4588fdc19e5e861df896f5e2c sha256=38294fb58a3dfcc21d64f263370d039a2411dda0aa472d1e0d94b7864f1f8fc9 +[http://homepages.tu-darmstadt.de/~p_larbig/wlan/mdk2-v36.tar.bz2] +md5=fbe3aaefc220556a03bf06a7811dc83c +sha256=87aa1784ffba9131b9fe3bbe7b1fa5d2fcb3ddffe9f8b73435894923467b981a + +[http://www.tu-darmstadt.de/~p_larbig/wlan/mdk3-v2.tar.bz2] +md5=06ed66c2f6651004b436199d1aa9a3cb +sha256=3fa27adcc60b090b22b510343818f8076dd87ea5a911ebee7709ae8dadb6d4d0 + [http://downloads.sourceforge.net/mediatomb/mediatomb-0.11.0.tar.gz] md5=661f08933830d920de21436fe122fb15 sha256=25e0b3d761e41fc6793c780eb7f638719867cdc6d3429ec24f72d1e9556ac1d2 +[http://heanet.dl.sourceforge.net/mediatomb/mediatomb-0.11.0.tar.gz] +md5=661f08933830d920de21436fe122fb15 +sha256=25e0b3d761e41fc6793c780eb7f638719867cdc6d3429ec24f72d1e9556ac1d2 + [http://downloads.sourceforge.net/mediatomb/mediatomb-0.9.0-pre.tar.gz] md5=bd6bf1a44393ef96c490319606df70bb sha256=d48eca88957ba7c972a379321fb8165e67dae0e5a0039fe553183da1207b2ad6 +[http://heanet.dl.sourceforge.net/mediatomb/mediatomb-0.9.0-pre.tar.gz] +md5=bd6bf1a44393ef96c490319606df70bb +sha256=d48eca88957ba7c972a379321fb8165e67dae0e5a0039fe553183da1207b2ad6 + [http://downloads.sourceforge.net/mediatomb/mediatomb-0.9.0.tar.gz] md5=bfa110c41623ff689a60844430f91a34 sha256=5876c28d5015c9a947ba87b5005e23d0eeaffd5de9eea2f321d6f42c8a71ed17 +[http://heanet.dl.sourceforge.net/mediatomb/mediatomb-0.9.0.tar.gz] +md5=bfa110c41623ff689a60844430f91a34 +sha256=5876c28d5015c9a947ba87b5005e23d0eeaffd5de9eea2f321d6f42c8a71ed17 + +[http://heanet.dl.sourceforge.net/mediatomb/mediatomb-0.9.1.tar.gz] +md5=3cb8a14b17102ec828853679d879f7bc +sha256=64821ec2c678e5da1582ee116d919ce2beef166301586e42c547e4482fb8d945 + [http://www.pengutronix.de/software/memedit/downloads/memedit-0.7.tar.gz] md5=3d0f372fb213e09b8d04826f3a0bc2eb sha256=9bb7412a03a76da4219215d2f92addf71305ab3fcc7d9315bb6f9c41fbe851fd @@ -10958,6 +13554,10 @@ sha256=cd907918ff4a7d1eea4ed618c181da0e0894bcfcdb1e3e4909a2795da120ae4c md5=0e6f7335075443ed0863a0df75689359 sha256=2a4bf8bdac96d6498e323b93954099fb13a9d92ddd5704aa6553940b86a071bb +[http://www.equi4.com/pub/mk/metakit-2.4.9.3.tar.gz] +md5=89a25775fee5db536937f36deb5223f6 +sha256=4d6c46289b1f1dea4e8bbc78332901491bde0c552727c27431ca9cb0234658da + [http://www.equi4.com/pub/mk/older/metakit-2.4.9.3.tar.gz] md5=89a25775fee5db536937f36deb5223f6 sha256=4d6c46289b1f1dea4e8bbc78332901491bde0c552727c27431ca9cb0234658da @@ -10966,6 +13566,10 @@ sha256=4d6c46289b1f1dea4e8bbc78332901491bde0c552727c27431ca9cb0234658da md5=40940eb9829de7d5776b9bbd514f9d7e sha256=738f39e2bc4ff8a80a5f01f163b2dd30525466aca87b9791e140b9900402fe1c +[http://heanet.dl.sourceforge.net/metalog/metalog-0.7.tar.gz] +md5=40940eb9829de7d5776b9bbd514f9d7e +sha256=738f39e2bc4ff8a80a5f01f163b2dd30525466aca87b9791e140b9900402fe1c + [http://nslu.sf.net/downloads/mgetty_1.1.30.orig.tar.gz] md5=ff7872dbef3332dd8f550da78d387f2e sha256=008f0bea1fe7fd0f6484536442e660e533bad209ad7a57af3ee6f0a0300fd671 @@ -10974,10 +13578,30 @@ sha256=008f0bea1fe7fd0f6484536442e660e533bad209ad7a57af3ee6f0a0300fd671 md5=7f6a372f1f9371094d0dd433b89ec48d sha256=ebede057bf1c312182d069b958eccfafbb18fca4cbba0a41f0c5f35094cb15e2 +[http://heanet.dl.sourceforge.net/miau/miau-0.5.3.tar.gz] +md5=7f6a372f1f9371094d0dd433b89ec48d +sha256=ebede057bf1c312182d069b958eccfafbb18fca4cbba0a41f0c5f35094cb15e2 + [ftp://ftp.microwindows.org/pub/microwindows/microwindows-0.90.tar.gz] md5=203188db254cc418e9d9dd9791543b9a sha256=8253a341c3bdd49467ecfdb5ccc03b359eacec5aec0b35bd77cdce341e157399 +[http://software.twotoasts.de/media/midori/midori-0.0.10.tar.gz] +md5=7a4a20e21fb3f3109c81f6ff9cc4647e +sha256=b79b8aad657d2a2b59fb773fed4ef7567fb28e5a3f3bd645ff904f69d50a0555 + +[http://software.twotoasts.de/media/midori/midori-0.0.11.tar.gz] +md5=dea8fba05c35333c0c984745cb397acb +sha256=f3b82db4c4edd81087aa37e747501af903dfd2d1e6e2063f20a345e4e7924116 + +[http://software.twotoasts.de/media/midori/midori-0.0.12.tar.gz] +md5=f69826ece3b8a34ef431d2de57b60d96 +sha256=13831ee98f4daaee9b5569a6ac8924a1e5f3223b928f408ab7e8b013daa4921c + +[http://software.twotoasts.de/media/midori/midori-0.0.13.tar.gz] +md5=e67bc748c11606013a90a0760a843967 +sha256=5261c2e9d7a3d10832bedf3970dad89d8c9e39b54269111d719c6e60aa422aac + [http://software.twotoasts.de/media/midori/midori-0.0.15.tar.gz] md5=0b6eebdcedd224b2b9f437b706471762 sha256=3b449713a164d574031843ca38f37be12e3ac40804995b3e5a252562a598482f @@ -10994,6 +13618,10 @@ sha256=36c20ca7c59e6c35deb04a9febde8aa8040c78c6ba21f595442b94ab78ec137c md5=0b9298d00c598137431beb51dbe1f302 sha256=e561f66262eaf6b9cbd8e84688184b7f3ba6cba0e34e9791e578bdef9adc7731 +[http://software.twotoasts.de/media/midori/midori-0.0.8.tar.gz] +md5=069275806e0224b1de3e080c23c95dc5 +sha256=7861535eef2c0804dbdc6993db76574b4a812164bed7545a3697a3b97e36d2dd + [http://downloads.sourceforge.net/midpath/midpath-0.1.tar.gz] md5=afed8ebe979ce2ea189b117062aaa011 sha256=556729f60cf2de79a20627dd3f448a7b8dc164331576497f876a4a5c9179544f @@ -11002,6 +13630,10 @@ sha256=556729f60cf2de79a20627dd3f448a7b8dc164331576497f876a4a5c9179544f md5=89695ed5a40f6d818f792ee3666a0ecb sha256=ebd1462109e03854ad26a14fcb96761076ce7b5f71af8a1801f0b71ccb101aba +[http://heanet.dl.sourceforge.net/midpath/midpath-0.3rc1.tar.gz] +md5=89695ed5a40f6d818f792ee3666a0ecb +sha256=ebd1462109e03854ad26a14fcb96761076ce7b5f71af8a1801f0b71ccb101aba + [http://mikmod.raphnet.net/files/mikmod-3.2.2-beta1.tar.bz2] md5=006378681d520fa8ee1dacca965bbd3c sha256=0e760acb85584ea3e828989c5588f827f0dd845d3dd6948e2aea12bb6278651d @@ -11010,6 +13642,10 @@ sha256=0e760acb85584ea3e828989c5588f827f0dd845d3dd6948e2aea12bb6278651d md5=d779a0b8f58776c28296ae62f253784e sha256=8ee3e48da07e20899a11adb9f2dd4dfc4922b43bcb1dc7bd78c55aceeb5eccc1 +[ftp://ftp.nl.debian.org/debian/pool/main/m/mime-support/mime-support_3.28-1.tar.gz] +md5=d779a0b8f58776c28296ae62f253784e +sha256=8ee3e48da07e20899a11adb9f2dd4dfc4922b43bcb1dc7bd78c55aceeb5eccc1 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/m/mime-support/mime-support_3.28-1.tar.gz] md5=d779a0b8f58776c28296ae62f253784e sha256=8ee3e48da07e20899a11adb9f2dd4dfc4922b43bcb1dc7bd78c55aceeb5eccc1 @@ -11074,18 +13710,34 @@ sha256=73edd3f8e7c36c81c895ea723e7faefd3ee5a3671d0b1e0ea7b3a960b169231e md5=d9b86e649ee49cc5be2024d24e55cc3a sha256=d801b5ecdfce599b54142d32b0d89966cb33d97cbac94416907666d94c1a80a6 +[http://www.mobile-ipv6.org/software/download/mipv6-2.0.2.tar.gz] +md5=2cf58dca0ab3c38223e25dbecba8ed37 +sha256=474443cd4c80d958ea34e3645dab641868e5b6714854a4122b7e3753a20a2eb9 + [http://linux-h4000.sourceforge.net/mirror/mk-layouts-gui.git_5b42aeff36d930dc3a9b75eedc74dacfec45f43f.tar.gz] md5=bae81f5b80e7e923ee32e1b10c87de7f sha256=593d74ba14e8f1c6263f612f0f5ee53eb4a41d05d873d0019aa1542e6971a952 +[http://hp.vector.co.jp/authors/VA013651/lib/mkbold-mkitalic-0.11.tar.bz2] +md5=2384f0eb2e0d2d8f70ee292b81522619 +sha256=efddffd87681f0e8f3fc140c99ba6f4e15be4f144d2488886fb493cb3d85e990 + [http://files.fredemmott.co.uk/mkbot-0.3.tar.bz2] md5=094b5693c602c5d872e49e24d2747ef2 sha256=c1cace2663ee1ff32f95d14fc60a6b7eee3ec8e3d0e7c531e9a778bbf29960a1 +[http://xorg.freedesktop.org/releases/individual/app/mkcfm-1.0.1.tar.bz2] +md5=d5d560ea77541591d2a6656991286457 +sha256=7fbadfa5cb38f7d754214b792854c4a0cb32fd1c9b5ae8ff05434cb3b3acbe01 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/mkcfm-X11R7.0-1.0.1.tar.bz2] md5=912e6305998441c26852309403742bec sha256=25cba395022c878cf0323da5b2b4aba1cca03001311a4e2d7632d6a199806294 +[http://xorg.freedesktop.org/releases/individual/app/mkcomposecache-1.2.tar.bz2] +md5=c8237b4aea1ae0c15441deab6b12c5c0 +sha256=8c34cdd03f7d11ac86c681349d39a4faf88854faaad928f0663da55f125aedfb + [http://xorg.freedesktop.org/releases/individual/app/mkfontdir-1.0.3.tar.bz2] md5=4d0f89a23f77e22f1671a77bf0898955 sha256=2a786e03611a53c7f6263db446c0c9ef76e94bcf930b0b5867cc6a9c19653074 @@ -11102,6 +13754,14 @@ sha256=409f2fdfd87b5185ca651197c1d1facc22619bc1399bfb8dda8fda1fbb6205b2 md5=384ee10787c455c520bcf031989de6f3 sha256=94c4ab96ad858524b64864482f5623bd18f844b98788d7d4be1f8065a4f13a0d +[http://xorg.freedesktop.org/releases/individual/app/mkfontscale-1.0.3.tar.bz2] +md5=1d608771aca9695b828cec1e34178fd1 +sha256=0458a3a5525b4ab458a018648ef8575afc191f904364c00e27876a7bd53af020 + +[http://xorg.freedesktop.org/releases/individual/app/mkfontscale-1.0.4.tar.bz2] +md5=e5d7373c4266973b3b13aac5d1a4655b +sha256=dc9b946cc23490c960fbca8b32e4bba4bc23ce404a8d7e1c0e916894c83b4227 + [http://xorg.freedesktop.org/releases/individual/app/mkfontscale-1.0.5.tar.bz2] md5=5e6e210b70adfef1264b0212aab1f758 sha256=f79dff54153dc3beb9eb3f2e4776dbc55ed2a4d3d0adbf9c8a2d9eb230ed3850 @@ -11142,6 +13802,14 @@ sha256=9e0e4da4c414449efc1c38e908ba81dfc6a095d5c8e5f346c07589b5df8748c1 md5=5b31665390fb0b30d19dadec4e90abb8 sha256=9fffb28f0edb020dffe605b0d69d94f1b3abe3d1e8beffa2ea7809daecaff136 +[ftp://ftp.daper.net/pub/soft/moc/stable/moc-2.4.3.tar.bz2] +md5=8808082848e90eeec5415baaec7e98ad +sha256=8598bb4f65e0b7d2a669e06222e6ba5eb1127b52b9a30136b2a823ccee10929f + +[http://gnu.ethz.ch/linuks.mine.nu/modplugplay/modplugplay-1.0.tar.gz] +md5=ac8e98865d90dca25c85748b3916bf07 +sha256=d78a39b4158901695c59d0757e8fe622e9b4cebcfb77eedfc20b937e5a0d521d + [http://www.linuks.mine.nu/modplugplay/modplugplay-1.0.tar.gz] md5=ac8e98865d90dca25c85748b3916bf07 sha256=d78a39b4158901695c59d0757e8fe622e9b4cebcfb77eedfc20b937e5a0d521d @@ -11166,6 +13834,10 @@ sha256=ab4c9191645f9ffb455ae7c014d8c45339c13a1d0f6914817cfbf30a0bc56bf0 md5=4032f2305a3393ab18e02efe6550e1aa sha256=8447eb112e0e42db59e490fa98b0a1c9ed90ff3660b99734fe5119061eddce8e +[http://heanet.dl.sourceforge.net/moin/moin-1.5.8.tar.gz] +md5=79625eaeb65907bfaf8b3036d81c82a5 +sha256=569c9b4f7b2cf411718a3ac5e6427c1babacbaf1b085276f822d8d08040e4a8f + [http://www.tildeslash.com/monit/dist/monit-4.10.1.tar.gz] md5=d3143b0bbd79b53f1b019d2fc1dae656 sha256=f6a29300648381538a403f24506e75b94164e26c69c6861ca112d425edc9d193 @@ -11182,6 +13854,10 @@ sha256=434f91032e48c03e1202ba3cef1648e2708eeefcf51143d3547e34acc9c68a96 md5=391f85b4f962269e044ceac2b5235310 sha256=24cc4f396cac3053c7ba3fe68bc1b80359d75dc4f54a85f39a73cabc3d3f560f +[http://ftp.novell.com/pub/mono/sources/mono/mono-1.9.1.tar.bz2] +md5=6610c3b999d791553a9dc21059ca9d35 +sha256=990af2fa20ad4e99ae5000df1afdb2e3b70400ba22d62e8917123d6a9d966397 + [http://venge.net/monotone/downloads/monotone-0.20.tar.gz] md5=3bdf4da35ff576a401483815952f4045 sha256=56a5c5afd838f90146205ee4769b83988c6bafc85826c0fbcad982f1e0333d93 @@ -11226,6 +13902,10 @@ sha256=21a0502ae8b888d046d889478e7a0244f4761c4162edf70ec42399d3c2911947 md5=b7a3cd2d4fcb17287641ee2e33f660fd sha256=57cc436480dd29ac7e751c4d5adbc2b0289ba2273bda388352be15446894bc56 +[http://monotone.ca/downloads/0.37/monotone-0.37.tar.gz] +md5=d06193f2738626570692bed2173144c1 +sha256=061e2f6aa0a1c0105b105946744d84c44eb49e9a4fe4628e872c518533b6ec2d + [http://www.venge.net/monotone/downloads/monotone_0.19-1.tar.gz] md5=cd636aba15508940e202ff43dc483aa3 sha256=e17c283be0afa5abdf0be276e0240b3f1805afaea76537aacadc8e2ff626f9ef @@ -11234,6 +13914,10 @@ sha256=e17c283be0afa5abdf0be276e0240b3f1805afaea76537aacadc8e2ff626f9ef md5=5ffdc958313345c69d3e0d5ec5c013cd sha256=2798b2a5e4d248244d5f40cce32dfb0f027e103dd8469a800b6b934467bf6117 +[http://heanet.dl.sourceforge.net/motion/motion-3.2.11.tar.gz] +md5=3a26c00f3250eacf6fa93c7a7e0249d9 +sha256=f1e187c61702a727bbd20bf5a66a310363257acc04b1f1c6e0b2e06e9b5dfa6e + [http://downloads.sourceforge.net/motion/motion-3.2.6.tar.gz] md5=71e6bd13fcca70372e9b7c7806d62b30 sha256=48c456dfcadec2db472320e317fa37dc697f184e12f99006a1ec0b6512d2ebcd @@ -11254,6 +13938,10 @@ sha256=723b4674980e378efe07e097cf909894852054dd52d44f3d6f948d847c940815 md5=0d892d7c99df175eb0efb2bc31086285 sha256=6dae6f0a018010fbf65985eb03684c3da8ef5024edfc80cace22162377c96f2d +[http://heanet.dl.sourceforge.net/mp3blaster/mp3blaster-3.2.3.tar.gz] +md5=0d892d7c99df175eb0efb2bc31086285 +sha256=6dae6f0a018010fbf65985eb03684c3da8ef5024edfc80cace22162377c96f2d + [http://mercury.chem.pitt.edu/~shank/mpc-0.11.2.tar.gz] md5=c8411da7936662312cf9483f3490e285 sha256=1c35520f74ec932e8635896eca747925624574550813bcf71d1d77826385b633 @@ -11262,6 +13950,10 @@ sha256=1c35520f74ec932e8635896eca747925624574550813bcf71d1d77826385b633 md5=9ec03c5f3d136a9a58ef665dfb100e52 sha256=55bdff5fefa619682c4da7cf25c8e1281f21f405e98580b24d3cfb7ff781a87d +[http://www.musicpd.org/uploads/files/mpc-0.12.1.tar.bz2] +md5=a93a390315aacfec061c8df89fb5e35f +sha256=76e151048a736cf490630ace4909f2d4b65f1afe2447c7fd794d270eb956e045 + [http://downloads.sourceforge.net/musicpd/mpd-0.11.2.tar.gz] md5=b6e913dc4b63b161bb1b96030763c3a7 sha256=e784f78b3cce93367c105619c690465b78a88d3e4c616cc829f4cb5e66f2bbe0 @@ -11270,6 +13962,10 @@ sha256=e784f78b3cce93367c105619c690465b78a88d3e4c616cc829f4cb5e66f2bbe0 md5=1a9a1a9d31f00a43838b3752024f7ebe sha256=30e454514ef84f65162182b7cbcd0e46fdda4c99111ac500b5b2df7678ca10fd +[http://heanet.dl.sourceforge.net/musicpd/mpd-0.11.5.tar.gz] +md5=1a9a1a9d31f00a43838b3752024f7ebe +sha256=30e454514ef84f65162182b7cbcd0e46fdda4c99111ac500b5b2df7678ca10fd + [http://libmpeg2.sourceforge.net/files/mpeg2dec-0.4.0b.tar.gz] md5=52d10ea80595ec83d8557ba7ac6dc8e6 sha256=9416376952812e5b479745d67a2bf874fbcad10137517314ce7de37abb756df8 @@ -11286,30 +13982,58 @@ sha256=359f0d344f92d1f145ddcd37adf54f9b8069aa2ce89c4a19603d080ef17d2d48 md5=8352b619e04dcc73411a38b39dd855f6 sha256=d857f9df4a6cf50d0bc57dd11296dd1a8d1ac709442875ea4fcd757a89da8430 +[http://www.mpfr.org/mpfr-2.3.2/mpfr-2.3.2.tar.bz2] +md5=527147c097874340cb9cee0579dacf3b +sha256=18e078c996e182b7ceab32f2ab840e6a151b593e0cd5b83cb9d2960f212fba4c + [http://downloads.sourceforge.net/mpg123/mpg123-0.66.tar.bz2] md5=6753c7ce5bb35bd65c535b2b6322a9aa sha256=2cdcb3b78412034f787ae52e213d04455132f6c94c8b7f3f4b21c21c38d9afa5 +[http://heanet.dl.sourceforge.net/mpg123/mpg123-0.66.tar.bz2] +md5=6753c7ce5bb35bd65c535b2b6322a9aa +sha256=2cdcb3b78412034f787ae52e213d04455132f6c94c8b7f3f4b21c21c38d9afa5 + [http://downloads.sourceforge.net/mpg321/mpg321-0.2.10.tar.gz] md5=bb403b35c2d25655d55f0f616b8f47bb sha256=db0c299592b8f1f704f41bd3fc3a2bf138658108588d51af61638c551af1b0d4 +[http://heanet.dl.sourceforge.net/mpg321/mpg321-0.2.10.tar.gz] +md5=bb403b35c2d25655d55f0f616b8f47bb +sha256=db0c299592b8f1f704f41bd3fc3a2bf138658108588d51af61638c551af1b0d4 + [http://downloads.sourceforge.net/libw100/mplayer-imageon.patch] md5=d605b6068b6c9aa2bc7550f49c60958c sha256=7e5e1768db0201981f90256fa94db3f09f23285ffd60dc60a51a753825084848 +[http://heanet.dl.sourceforge.net/libw100/mplayer-imageon.patch] +md5=d605b6068b6c9aa2bc7550f49c60958c +sha256=7e5e1768db0201981f90256fa94db3f09f23285ffd60dc60a51a753825084848 + [http://downloads.sourceforge.net/materm/mrxvt-0.5.2.tar.gz] md5=ed87b7dd9f4fb482de0f14f085085027 sha256=558491d1f112362780abaf7429d14216e658b7768dd30f82f102ce646d3065cf +[http://heanet.dl.sourceforge.net/materm/mrxvt-0.5.2.tar.gz] +md5=ed87b7dd9f4fb482de0f14f085085027 +sha256=558491d1f112362780abaf7429d14216e658b7768dd30f82f102ce646d3065cf + [http://downloads.sourceforge.net/msmtp/msmtp-1.4.10.tar.bz2] md5=38c63aae762d5a31c5f6f5e58961cb52 sha256=30261e2f1ab064e089784578e0c63f31d5696a198db5f6ec793776ce70ccddb3 +[http://heanet.dl.sourceforge.net/msmtp/msmtp-1.4.10.tar.bz2] +md5=38c63aae762d5a31c5f6f5e58961cb52 +sha256=30261e2f1ab064e089784578e0c63f31d5696a198db5f6ec793776ce70ccddb3 + [http://packetstorm.linuxsecurity.com/sniffers/msn-cap.c] md5=900be0beea498b18f03e2d67656d9d32 sha256=f03c69e064f1269dfd5adbc668204d0a7e0eafb86317e293e9d6c1ce0a4f5761 +[http://www.opensync.org/attachment/wiki/download/msynctool-0.22.tar.bz2?format=raw] +md5=3ddc55209e682a8b99a47cf3d0053dbf +sha256=5a3008eaaf61dc9f7cc0cd0c762d700dfa8cc1aa65c07ec5bf12abe252f2d280 + [http://www.opensync.org/download/releases/0.36/msynctool-0.36.tar.bz2] md5=9ef1c03d1e087493dbca67dabb612e6b sha256=de08e22708348216e0e1ea3c32b4cf0c04d5acae5057b5995fc087790f0ae1a5 @@ -11318,14 +14042,26 @@ sha256=de08e22708348216e0e1ea3c32b4cf0c04d5acae5057b5995fc087790f0ae1a5 md5=87356d2750ad82388a58d901aa566465 sha256=92d9abd2d0cabaea198b9434100ebf1d5524283de8df02b0f04d907b2274959b +[http://heanet.dl.sourceforge.net/mt-daapd/mt-daapd-0.2.1.1.tar.gz] +md5=87356d2750ad82388a58d901aa566465 +sha256=92d9abd2d0cabaea198b9434100ebf1d5524283de8df02b0f04d907b2274959b + [http://downloads.sourceforge.net/mt-daapd/mt-daapd-0.2.2.tar.gz] md5=e5aee70f66d383f37ef650941cd7703d sha256=5e06d8ed89ba98092c2cda16ecd9cdfeaa08b6c0e77ac459f49ae6e5dd64d639 +[http://heanet.dl.sourceforge.net/mt-daapd/mt-daapd-0.2.2.tar.gz] +md5=e5aee70f66d383f37ef650941cd7703d +sha256=5e06d8ed89ba98092c2cda16ecd9cdfeaa08b6c0e77ac459f49ae6e5dd64d639 + [http://downloads.sourceforge.net/mt-daapd/mt-daapd-0.2.3.tar.gz] md5=17aa3fa0601cbe172d18f53489141e5a sha256=17e3966a9da7acb0560af1d2c1a5c0162da8e01de195aa096d594ab6248c4930 +[http://heanet.dl.sourceforge.net/mt-daapd/mt-daapd-0.2.3.tar.gz] +md5=17aa3fa0601cbe172d18f53489141e5a +sha256=17e3966a9da7acb0560af1d2c1a5c0162da8e01de195aa096d594ab6248c4930 + [http://www.informatik.hu-berlin.de/~tkunze/zaurus/patches/mtd-sharp-flash-hack-r2.patch] md5=8c63b0b47af4de62b48ea745faa11584 sha256=7206aaf289cd349ed0c52bf081b9a29a25d03e83eaf3e6de4a6070c4de1abe9d @@ -11350,6 +14086,10 @@ sha256=05c6ee9dd87d4a323c37b69009769f2912fe67e8f9a5c9f98b169b8b2bd9dbc4 md5=0f7cdd68da77a62e77f9012de052c513 sha256=2e56fe35b6f3b93dac201c55764b8bf6d899c995e0d165381368cfca886c6739 +[http://mtools.linux.lu/mtools-3.9.11.tar.gz] +md5=3c0ae05b0d98a5d3bd06d3d72fcaf80d +sha256=3415d425d37338aa4e18e7d60147db23cfbe6192565c697f201f44426665ce42 + [http://folks.o-hand.com/richard/poky/sources/mtools-3.9.9.tar.gz] md5=3e68b857b4e1f3a6521d1dfefbd30a36 sha256=af083a73425d664d4607ef6c6564fd9319a0e47ee7c105259a45356cb834690e @@ -11362,6 +14102,10 @@ sha256=af083a73425d664d4607ef6c6564fd9319a0e47ee7c105259a45356cb834690e md5=828013176f135fc24ffdf16a011c51e6 sha256=991a1376dc23d0663d45b3b395c0e5c5542fee3906a120889583d67f854f5206 +[http://heanet.dl.sourceforge.net/mtpaint/mtpaint-3.02.tar.bz2] +md5=828013176f135fc24ffdf16a011c51e6 +sha256=991a1376dc23d0663d45b3b395c0e5c5542fee3906a120889583d67f854f5206 + [ftp://ftp.bitwizard.nl/mtr/mtr-0.65.tar.gz] md5=32de3cb8f0763e352124ff4fd74690ab sha256=82da36fd013f33237a26f1a291e21fc041ebfeac90177a82cb8862732d824bc6 @@ -11374,6 +14118,10 @@ sha256=c7bc72443c17b5c169d43475ddd35d8ab78689d38a196b268f3b404fef718861 md5=d55d8eaeecb825b87a25eeceaef92cb9 sha256=c1454fdf5d3658f492253106c12bbf89a3bcc5789c36851a5f2f345d61a4ac0c +[http://osm.andi.de1.cc/mumpot-0.3.1.tar.gz] +md5=115dc5380ffdb03ec2e71ff9d6d97e72 +sha256=50bfab6d4b1b9af37ca6832b979f5c891f2dd9259a68700b37214d7897927c17 + [http://www.dotaster.com/~shuu/linux/murasaki/0.8/8/murasaki-0.8.8.tar.gz] md5=ea7afa7e0bd9cfa0df7c04a9b270df88 sha256=2033168723ffd612336acb8a64b33fcd91f7dedeaf78949d3dfce231cb962ce9 @@ -11398,14 +14146,30 @@ sha256=7744d78131619b73a82adb6f73d6cfc6bad11a6ad2806c0f5130f88fe88ac9dd md5=37b4479951fa0cf052269d27c41ca200 sha256=6bd2436fd0f233bb1518e15975cb4e9fa4434acb53c3c3cd7d4648219abf58e9 +[http://www.mythtv.org/mc/mythtv-0.18.1.tar.bz2] +md5=e6cabf88feeaf6ae8f830d3fdf7b113d +sha256=86c9cf038d5d8a3fdf137ff735b55820281543a4a08e86cfad81a113a7b9a1d2 + +[http://www.mythtv.org/mc/mythtv-0.20.tar.bz2] +md5=52bec1e0fadf7d24d6dcac3f773ddf74 +sha256=777ff60afa89426f0e52e49b0e7a7661ddb45b59d2ebbfdcbe07fd179e526ff3 + [http://www.mythtv.org/mc/mythtv-0.21.tar.bz2] md5=49fc135e1cde90cd935c1229467fa37e sha256=33a878a8fc3efdd74519b09b4ec3d16fa9d3a0436b321c13344e5f3ab723c5e4 +[http://kldp.net/frs/download.php/3742/nabi-0.17.tar.gz] +md5=8746890ea666ac1b7ae6db77993c6592 +sha256=1a239a7bb0644441ca781459fbf5a1c5fb95e823351bf308aa680eb60cc45b94 + [http://optusnet.dl.sourceforge.net/sourceforge/nail/nail-11.21.tar.bz2] md5=2478bff31a9223afffcb74e4dd021770 sha256=e8caa07c0a841fab2f11db43809c073485b0c1aa12be5dc1b90ca72fa6660175 +[http://naim.googlecode.com/files/naim-0.11.8.3.1.tar.bz2] +md5=239f8865b6f044aed26e3124a0721652 +sha256=a629efbd182552712009b0636c7b8be0c190052a3303c8de66a3649a9df4f224 + [http://www.nano-editor.org/dist/v1.2/nano-1.2.1.tar.gz] md5=188d24b9cc4c1041ac58d6b6f7941eb4 sha256=f12483dbe029836cad6c58e53077281d9e71a062b1145e57342ea9671296ca40 @@ -11426,10 +14190,18 @@ sha256=5dc783c412c4d1ff463c450d2a2f9e1ea53a43d9ba1dda92bbf5182f60db532f md5=9f682490c132b070d54e395cb6ee145e sha256=87e64eff736196862ed46c04a3dffa612d765df980fa974fc65e026d811bd9d0 +[http://heanet.dl.sourceforge.net/nasm/nasm-0.98.38.tar.bz2] +md5=9f682490c132b070d54e395cb6ee145e +sha256=87e64eff736196862ed46c04a3dffa612d765df980fa974fc65e026d811bd9d0 + [http://ftp.gnome.org/pub/GNOME/sources/nautilus/2.12/nautilus-2.12.2.tar.bz2] md5=1c1304e458eda551da11ed8c52b1faa2 sha256=9b1a11fde474d0bc0891afeef912aaa01bf8189e453bb555b2977f60f98d5455 +[http://ftp.gnome.org/pub/GNOME/sources/nautilus/2.22/nautilus-2.22.5.tar.bz2] +md5=b2f65d5b01399a5d3daca5f3ba280f9b +sha256=14ddc03f05f6116c2d0545ef264f6dc5a9064ba321cba94547b02911fa5bd440 + [http://ftp.gnome.org/pub/GNOME/sources/nautilus/2.6/nautilus-2.6.1.tar.bz2] md5=50c5732c0c9736b7026bce1c6b0007dc sha256=83f1d6623e142af30a9b3fa9135ecf973fbb8c89f1dc36a218de0c0fef6ddf07 @@ -11450,10 +14222,22 @@ sha256=a28132fbdb9fd97b2e0e28c2cca516096e3607e50efe3175c51a8d6000774c6f md5=c2ec1ddff62c2b248dbaeab1ab656d74 sha256=c069e983ea8bb9b6706d35126350d4d14619b9ce0ac888adbcdda3ff13362ab4 +[http://heanet.dl.sourceforge.net/navit/navit-0.0.4.tar.gz] +md5=c2ec1ddff62c2b248dbaeab1ab656d74 +sha256=c069e983ea8bb9b6706d35126350d4d14619b9ce0ac888adbcdda3ff13362ab4 + [http://downloads.sourceforge.net/nbd/nbd-2.8.7.tar.bz2] md5=bc7995b4961385269abc645575bcaf4d sha256=a69d1690ad587d81b85c34d1ef9bf47abf0ba21dc96876d95dd6a9a193a859f1 +[http://heanet.dl.sourceforge.net/nbd/nbd-2.8.7.tar.bz2] +md5=bc7995b4961385269abc645575bcaf4d +sha256=a69d1690ad587d81b85c34d1ef9bf47abf0ba21dc96876d95dd6a9a193a859f1 + +[http://dev.yorhel.nl/download/ncdu-1.3.tar.gz] +md5=204bacb8376819059bec6c8287a87a67 +sha256=f556a4b07c07bb66eabb5f2a20b3c52ea22020a68f2b5302d03e7b93b0ffee54 + [ftp://ftp.ncftp.com/ncftp/ncftp-3.2.0-src.tar.bz2] md5=384b7f01d725c89ccd30692628b3ac1b sha256=2ebc7b51af96cb0fa8b703c7cb995bfb46ccf5312e335270d0420e260544c376 @@ -11494,6 +14278,14 @@ sha256=8a29457052b73ac0139e3b2824a74323256dd7631b1691239ddb18124e231a71 md5=8080555ab3f90011f25d5122042d9a8d sha256=1fca69e934c3d526e308450cc5af2478d440e012922dd0bb10388fcf093ef32e +[http://heanet.dl.sourceforge.net/net-snmp/net-snmp-5.1.2.tar.gz] +md5=8080555ab3f90011f25d5122042d9a8d +sha256=1fca69e934c3d526e308450cc5af2478d440e012922dd0bb10388fcf093ef32e + +[http://heanet.dl.sourceforge.net/net-snmp/net-snmp-5.4.1.tar.gz] +md5=6c974df7a5a5b1579f72115e6b045bda +sha256=0ea976722c993c87dede8eb6348e6feb059e3851bbef2de824bf18ac97cdb565 + [http://download.berlios.de/net-tools/net-tools-1.60.tar.bz2] md5=888774accab40217dde927e21979c165 sha256=7ae4dd6d44d6715f18e10559ffd270511b6e55a8900ca54fbebafe0ae6cf7d7b @@ -11514,6 +14306,10 @@ sha256=b6e01cfc0b4223f60fd994eee950635b165d54a96cf63bbe607a5ff64355bd8c md5=4e4582ed5f84fa074137c1a7ee39a689 sha256=aa54d1822f8505f600b4c8d5debdf289b956b3b86bfd72e2ba02026352c107fc +[ftp://ftp.nl.debian.org/debian/pool/main/n/netbase/netbase_4.21.tar.gz] +md5=4e4582ed5f84fa074137c1a7ee39a689 +sha256=aa54d1822f8505f600b4c8d5debdf289b956b3b86bfd72e2ba02026352c107fc + [ftp://ftp.pl.debian.org/pub/debian/pool/main/n/netbase/netbase_4.21.tar.gz] md5=4e4582ed5f84fa074137c1a7ee39a689 sha256=aa54d1822f8505f600b4c8d5debdf289b956b3b86bfd72e2ba02026352c107fc @@ -11526,6 +14322,10 @@ sha256=aa54d1822f8505f600b4c8d5debdf289b956b3b86bfd72e2ba02026352c107fc md5=0a29eff1736ddb5effd0b1ec1f6fe0ef sha256=b55af0bbdf5acc02d1eb6ab18da2acd77a400bafd074489003f3df09676332bb +[http://heanet.dl.sourceforge.net/netcat/netcat-0.7.1.tar.bz2] +md5=0a29eff1736ddb5effd0b1ec1f6fe0ef +sha256=b55af0bbdf5acc02d1eb6ab18da2acd77a400bafd074489003f3df09676332bb + [ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/netkit-base-0.17.tar.gz] md5=1f0193358e92559ec0f598b09ccbc0ec sha256=16dd81625ebfc8f5dcb0dfd2e6bac223aad325a9405d66a556fe349446b3c332 @@ -11546,26 +14346,58 @@ sha256=3a43c0010d4e61f412563fd83769d4667d8b8e82903526d21cb9205fe55ad14d md5=18ed6d0f1adf75a748df55d5e924fabb sha256=e42d3b3f30de0c1ad0a86aa039b35cf2bf64c7f64c29ee333cbf934784639973 +[http://heanet.dl.sourceforge.net/netpbm/netpbm-10.28.tgz] +md5=18ed6d0f1adf75a748df55d5e924fabb +sha256=e42d3b3f30de0c1ad0a86aa039b35cf2bf64c7f64c29ee333cbf934784639973 + +[ftp://ftp.netperf.org/netperf/netperf-2.4.4.tar.bz2] +md5=0e942f22864e601406a994420231075b +sha256=28e76af491ea3696885e4558ae2f5628a4b9ebdbefc2f1d9cf1b35db2813e497 + [ftp://ftp.debian.org/debian/pool/non-free/n/netperf/netperf_2.3.orig.tar.gz] md5=b50e49d5f0d3780438af0027a182b997 sha256=0578f4fafb309adf3413c9f56076b1b16476cb71e83c02ff7efafad172d91adb +[ftp://ftp.nl.debian.org/debian/pool/non-free/n/netperf/netperf_2.3.orig.tar.gz] +md5=b50e49d5f0d3780438af0027a182b997 +sha256=0578f4fafb309adf3413c9f56076b1b16476cb71e83c02ff7efafad172d91adb + [ftp://ftp.debian.org/debian/pool/non-free/n/netperf/netperf_2.4.2.orig.tar.gz] md5=c747042975c2965b2cd45ebf8525c5f8 sha256=844ba97e745a0b9f37afc7daa323cafcef00108cd0254667da0a00558eb323a7 +[http://web.purplefrog.com/~thoth/netpipes/ftp/netpipes-4.2-export.tar.gz] +md5=36f7b3120e00c9c74cb6619334de419f +sha256=6eed89b661ae9f2ac0d383414ca964abea8a115f8fba0f7ab37b49b565ffb2a8 + +[http://ftp.gnome.org/pub/GNOME/sources/network-manager-applet/0.6/network-manager-applet-0.6.5.tar.bz2] +md5=1c94a41e2399d261985a75f0cd3b895b +sha256=9cca3e34e23f00c82bc5e7237aa81639874e90d43a689e26fbfd938279ca31c9 + [http://downloads.sourceforge.net/nfs/nfs-utils-1.0.6.tar.gz] md5=f17e9983457e1cf61c37f0be4493fce6 sha256=aa99fcb016971290f9a871331eed60150ebdd84785dda1b252556a54760b97bf +[http://heanet.dl.sourceforge.net/nfs/nfs-utils-1.0.6.tar.gz] +md5=f17e9983457e1cf61c37f0be4493fce6 +sha256=aa99fcb016971290f9a871331eed60150ebdd84785dda1b252556a54760b97bf + [http://downloads.sourceforge.net/nfs/nfs-utils-1.1.2.tar.gz] md5=76ee9274c2b867839427eba91b327f03 sha256=1d09b1c133e4eed9d2df07ead4eba813e6993875c39e66d7b4081287029d4033 +[http://heanet.dl.sourceforge.net/nfs/nfs-utils-1.1.2.tar.gz] +md5=76ee9274c2b867839427eba91b327f03 +sha256=1d09b1c133e4eed9d2df07ead4eba813e6993875c39e66d7b4081287029d4033 + [http://downloads.sourceforge.net/ngrep/ngrep-1.42.tar.bz2] md5=35e821cfd888e9523a90fb7e5074a072 sha256=fd5a85b48613452fbfc9ce6d6e3fa3f37992731422eb2843235fbf4e02d6f1e9 +[http://heanet.dl.sourceforge.net/ngrep/ngrep-1.42.tar.bz2] +md5=35e821cfd888e9523a90fb7e5074a072 +sha256=fd5a85b48613452fbfc9ce6d6e3fa3f37992731422eb2843235fbf4e02d6f1e9 + [http://ftp.debian.org/debian/pool/main/n/nkf/nkf_2.07.orig.tar.gz] md5=af11dcd3fe71d67831c020e3bfd5073b sha256=71d2ba992df209a00bb1dca45e3336729dc16e51b71526bd20f897cc6127a275 @@ -11582,6 +14414,10 @@ sha256=aac281c7437e4007236eb461a668311eb3453e85012acf619aa3d62683330a6a md5=af4c4ad64196f26a245c385a234f462f sha256=5d6c456b30318cc05b19915aa601ea4c2cf46ddf43a39e33948dea6280ac5395 +[http://heanet.dl.sourceforge.net/materm/no_debug_x.patch] +md5=021613030ae67c5c9868ec2a0c031172 +sha256=a41c3eb4cf94fe7b059468983a2f533e0669d0204088fa5ece365b1663b560c7 + [http://zaurus.vivaphp.net/nogravity.tar.bz2] md5=42d9e4cfd86b15826426797a0fb6d499 sha256=f9c86a163bd27dc4fd05abb958bb857109a556a4a58f8d06663d49ac0559ac92 @@ -11590,10 +14426,22 @@ sha256=f9c86a163bd27dc4fd05abb958bb857109a556a4a58f8d06663d49ac0559ac92 md5=0b8b1a58bfdb60fa41df46771a464b82 sha256=a99b07c2193eebeb766bc422dd2ebba6649680457d58a4f5a86f2567ce49b3fa +[http://heanet.dl.sourceforge.net/notecase/notecase-1.2.6_src.tar.gz] +md5=0b8b1a58bfdb60fa41df46771a464b82 +sha256=a99b07c2193eebeb766bc422dd2ebba6649680457d58a4f5a86f2567ce49b3fa + +[http://heanet.dl.sourceforge.net/notecase/notecase-1.6.9_src.tar.gz] +md5=da3267f271cd6e2c82d4efa4176ae583 +sha256=2d814209506cb52db87f4dae5cbb3de6165e1d46c845114d0eee242385165fb0 + [http://downloads.sourceforge.net/notecase/notecase-1.7.2_src.tar.gz] md5=ad8b93c16e740988b5114826c47a53bb sha256=763529033d4858285401d9e68c6412d21ed62624fb65e8150d8c703012a4ca49 +[http://heanet.dl.sourceforge.net/notecase/notecase-1.7.2_src.tar.gz] +md5=ad8b93c16e740988b5114826c47a53bb +sha256=763529033d4858285401d9e68c6412d21ed62624fb65e8150d8c703012a4ca49 + [http://www.holtschneider.com/notez/notez-1.1.0.tar.gz] md5=c348a626fc09265fa74a12470c83c113 sha256=11ee0a660faca7993a2f525d2964391d135b9552d9e94abad6cb6c5f3983f964 @@ -11638,6 +14486,10 @@ sha256=b5bbf81230bb21573d69fc471721b0b0c404eaa5040ef28e7dcec38320a1b2e4 md5=1ec6055c75f1acbb5d5600492481ef85 sha256=c50cdf2c6cf7309f88c7ec0a56158eca76c80532502b36f3378eeca433423d83 +[http://heanet.dl.sourceforge.net/ntop/ntop-3.0.tgz] +md5=1ec6055c75f1acbb5d5600492481ef85 +sha256=c50cdf2c6cf7309f88c7ec0a56158eca76c80532502b36f3378eeca433423d83 + [http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.1/ntp-4.1.2.tar.gz] md5=98e16c7aa4ecd4c004b51bff18962e95 sha256=9f4a5271a285d390c9225e3ea28f70049ea377d30fc6de4659007cfff278671a @@ -11662,6 +14514,10 @@ sha256=295ed5ecfab595901cbe2cd41998d1715913318d30c22349784733e79de0e8f8 md5=40cec6ce8ca2e95a4fbc7a28879bf4a5 sha256=7a6f7f2745cbcb02bf79cc7cd365a3f80679f2558dfaa378010675f40a7aff3b +[http://heanet.dl.sourceforge.net/numpy/numarray-1.1.1.tar.gz] +md5=40cec6ce8ca2e95a4fbc7a28879bf4a5 +sha256=7a6f7f2745cbcb02bf79cc7cd365a3f80679f2558dfaa378010675f40a7aff3b + [http://wwwpub.zih.tu-dresden.de/~mkluge/numptyphysics_setup.tgz] md5=24a031f628cc91825bb80ee2aaa21b77 sha256=3a60d6a6327f3ad8653e1de5dbf5c36f2a591d409d3e3ae7f6c84d25dbc3e7da @@ -11670,6 +14526,26 @@ sha256=3a60d6a6327f3ad8653e1de5dbf5c36f2a591d409d3e3ae7f6c84d25dbc3e7da md5=af066b59a50bf5dbe1a14d6be3df6937 sha256=d430273a77aed959c007595d969fefa36c59249807212d7d89f5d6cf2a701dd6 +[http://heanet.dl.sourceforge.net/numpy/numpy-1.1.1.tar.gz] +md5=af066b59a50bf5dbe1a14d6be3df6937 +sha256=d430273a77aed959c007595d969fefa36c59249807212d7d89f5d6cf2a701dd6 + +[http://heanet.dl.sourceforge.net/gakusei/nunome-1.0.2.tar.bz2] +md5=e5c9d2351de250aaa7abf581a1f2c0f4 +sha256=7bda9302036facd65b323d7042a809b08d55d5b61b38d4d40f22f41f27fec83c + +[http://www.networkupstools.org/source/2.2/nut-2.2.1.tar.gz] +md5=c7ae871961a7dbe12b22d504267dc132 +sha256=9aad15d8cdd8694839b54342c8b4c26ddce508f6fb29ff4bee3abbe1555771f4 + +[http://64.34.161.181/download/3.2.0/sources/nxcomp-3.2.0-7.tar.gz] +md5=5ea64a557c770d9f5cc4b9a7a9d1343c +sha256=ec1b9a9447bcbfe36cff46aaf4aaa6b3f8f945487438a92d0b8e70d9b7814f97 + +[http://64.34.161.181/download/3.2.0/sources/nxproxy-3.2.0-1.tar.gz] +md5=ac31e8f2f112e3720f3c00cec67c0734 +sha256=5642ce40e2f34caeed433e8c0ac010e2e7e738c2c5aa8fc59bba892a8b542d84 + [http://meshcube.org/download/nylon-statistics_20050909.tgz] md5=103c5c821474ae6df7a3055ee72f4d00 sha256=c80d9ea7ebca32b63ea23d2a52ac799cff32f8f30c66b491d2b8f93da05585e4 @@ -11682,14 +14558,26 @@ sha256=b69a259795762881a5384072085bb501d77c6fb974e0b7a16ca573565ffe3629 md5=085b9edc0504c0d79e7479a54e2018c5 sha256=7246fc75257afcd30ff16dc70185057157bcefc12fa9fba111b3b201577cc40e +[http://heanet.dl.sourceforge.net/openobex/obexftp-0.20.tar.gz] +md5=085b9edc0504c0d79e7479a54e2018c5 +sha256=7246fc75257afcd30ff16dc70185057157bcefc12fa9fba111b3b201577cc40e + [http://downloads.sourceforge.net/openobex/obexftp-0.22.tar.bz2] md5=d167cfdea244e3a5f973a7b16864419c sha256=09687012d5e016277fa638f22b8c784aea6803056c70d14614e3b75158aae877 +[http://heanet.dl.sourceforge.net/openobex/obexftp-0.22.tar.bz2] +md5=d167cfdea244e3a5f973a7b16864419c +sha256=09687012d5e016277fa638f22b8c784aea6803056c70d14614e3b75158aae877 + [http://www.caside.lancs.ac.uk/bt/obexpush.tar.gz] md5=edb66ba97fe6c84b6160c670c4bcdea8 sha256=341c6865aa392b6cf056e1bd9cda53d2f31a942460087ad22d6f6dc91bb0bd0e +[http://xorg.freedesktop.org/releases/individual/app/oclock-1.0.1.tar.bz2] +md5=91f49547f9ed3cd0137c8b7c3183e360 +sha256=49ab7d4f6402fbbe30714012ee38b49da17789f3a29ac41917987ce18c74217c + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/oclock-X11R7.0-1.0.1.tar.bz2] md5=e35af9699c49f0b77fad45a3b942c3b1 sha256=341d98894e76b4e3531c923b22bbb7603788a6f614a795c6285c339f6534bee9 @@ -11698,14 +14586,30 @@ sha256=341d98894e76b4e3531c923b22bbb7603788a6f614a795c6285c339f6534bee9 md5=811df48dfc472013e2d858cc5d1cad00 sha256=158ea1d061855ebb0bff92530f4975dd34e8e83d22ee0e425b49920ff2146351 +[ftp://ftp.octave.org/pub/octave/obsolete/octave-2.1.73.tar.gz] +md5=e75a109620e57de081ee73e0489e5990 +sha256=d44d23b09165e1d7008dbd4d0e052bb3fa3641de7705c9c0302c9cff583de609 + +[ftp://ftp.octave.org/pub/octave/octave-3.0.0.tar.gz] +md5=60ed361c7310eccce01395470b711a57 +sha256=b99b6e2c1a0977fbe2f0c19210694ed44ff182d17d3920c485fb6ce725b89816 + [http://downloads.sourceforge.net/opende/ode-0.5.tgz] md5=b33b21e04ee9661f27802b6b6c8eefd2 sha256=5388c4cd4666f270f18216c90ab6526229c53fdc7e82f93ddb0824e69521df1c +[http://heanet.dl.sourceforge.net/opende/ode-src-0.9.zip] +md5=4c03759b76a0649a6d5108c8e172e1e4 +sha256=460d0851b743b1f144ef2a8259004d6774504c95d08e9357a96a296111496feb + [ftp://ftp.debian.org/debian/pool/main/o/offlineimap/offlineimap_4.0.14.tar.gz] md5=b374415d7f5d485993fa697ab9a678b4 sha256=3b46936339fe5c2dcb8fb2f9213fa36dcddefaa1e00d1d93b5640d8cc9898ca1 +[ftp://ftp.nl.debian.org/debian/pool/main/o/offlineimap/offlineimap_4.0.14.tar.gz] +md5=b374415d7f5d485993fa697ab9a678b4 +sha256=3b46936339fe5c2dcb8fb2f9213fa36dcddefaa1e00d1d93b5640d8cc9898ca1 + [http://www.olsr.org/releases/0.4/olsrd-0.4.10.tar.bz2] md5=9807d4451e65cb4ec385155eef7bf3cf sha256=af04bdd8abd85bb4715fd6011566054847c75fcbac5e5e9cdee80858ac2957d3 @@ -11718,6 +14622,14 @@ sha256=b935aaf1e389f767ba8238c7a5c0b4387a345168acddf4f38bb6914149953a28 md5=593c0861fa10d2a8d0e7d8617479c5cf sha256=b3404a5a5dd78c0e1ba12b8aa1445589fa7861fa4d9ecafb53b38be760876913 +[http://www.olsr.org/releases/0.5/olsrd-0.5.3.tar.bz2] +md5=786fdf52adeb0d421905332312e5b75f +sha256=9c495773e9605a67b6cdbbc3fb70449b830ed55eb6e0082778a0ccf941b4b426 + +[http://www.olsr.org/releases/0.5/olsrd-0.5.5.tar.bz2] +md5=bd1cd216c318c1359ab6e832adbb1962 +sha256=2fab4646166cc887a87933f52e51ce07c23f4e0395d380ee2f8557805c4884bc + [http://people.openmoko.org/olv/om-maps/20080430/om-maps-berlin-20080430.eet] md5=25b515f30606b3f78d5d77c96663185d sha256=3ebb791e9bf6b00127b4961d8f15b4d1e48d209468b01365300d3ea5a5cacf37 @@ -11726,6 +14638,10 @@ sha256=3ebb791e9bf6b00127b4961d8f15b4d1e48d209468b01365300d3ea5a5cacf37 md5=306c1d9537f510b30273a030f5ace118 sha256=8486baf16bbc6dd4ad3820330a28546996f9383de96c1b6bf784999dcf4b712e +[http://people.openmoko.org/olv/om-maps/20080919/om-maps-hong-kong-20080919.eet] +md5=fdb477186a9a8deb6f62b93e2fd8ab72 +sha256=bb8b04b2befc76ad913cd1f8d4bb90764a13ce3ea015c51bdcdf553184c36a77 + [http://people.openmoko.org/olv/om-maps/20080430/om-maps-london-20080430.eet] md5=fa05427d09f98ea6cbceaa4c88f4c51d sha256=1776ba1ec93984d0ff755a677a769e200a6e435fd1385e699e106c9cec83b04c @@ -11758,18 +14674,42 @@ sha256=66150243fa43052fc762ec1d5d141b44c98a49bec49f726c7db7c54968d605c5 md5=5e82e0fb27f1ae480c5099f3bd572cf3 sha256=5dafd06260fe58847fb92f2e063f8fb0ae8ad4a3fb082f0871217d3ba88b162c +[http://www.devzero.net/openmoko/dist/omext-0.2.tar.gz] +md5=3c1fcd85f0a0cd3ccc4d7b4f26996b47 +sha256=3d3cc3e4f92f7e0b6a352c3f68a337a599a90f4e4b6e6743adc0c70b570639f5 + [http://downloads.sourceforge.net/omniorb/omniORB-4.0.7.tar.gz] md5=9d478031be34232e988f3d5874396499 sha256=e4c0875794a74ac627b7b74b6098e75c8413bd156856dc434a49c4c112a68af2 +[http://heanet.dl.sourceforge.net/omniorb/omniORB-4.0.7.tar.gz] +md5=9d478031be34232e988f3d5874396499 +sha256=e4c0875794a74ac627b7b74b6098e75c8413bd156856dc434a49c4c112a68af2 + +[http://www.daidouji.com/oneko/distfiles/oneko-1.2.sakura.5.tar.gz] +md5=456b318fa6e61431bf4f0a42b110014a +sha256=2c2e05f1241e9b76f54475b5577cd4fb6670de058218d04a741a04ebd4a2b22f + +[http://www.openal.org/openal_webstf/downloads/openal-0.0.8.tar.gz] +md5=641cf53761f35ee979f3e888614797a0 +sha256=723e2c57c3cdffa7ff11f9b6b5478d6cb4af017e5a1ee7a56032969c39c1c2fe + [http://downloads.sourceforge.net/opencvlibrary/opencv-1.0.0.tar.gz] md5=146a05005f2d2c16c4ee10ebd7f1dd58 sha256=3a6ee888e4dd4ab7f2bc80d046688c099c6a95d1267af554b7c8f1543b66f21e +[http://heanet.dl.sourceforge.net/opencvlibrary/opencv-1.0.0.tar.gz] +md5=146a05005f2d2c16c4ee10ebd7f1dd58 +sha256=3a6ee888e4dd4ab7f2bc80d046688c099c6a95d1267af554b7c8f1543b66f21e + [http://downloads.sourceforge.net/openjade/openjade-1.3.2.tar.gz] md5=7df692e3186109cc00db6825b777201e sha256=1d2d7996cc94f9b87d0c51cf0e028070ac177c4123ecbfd7ac1cb8d0b7d322d1 +[http://heanet.dl.sourceforge.net/openjade/openjade-1.3.2.tar.gz] +md5=7df692e3186109cc00db6825b777201e +sha256=1d2d7996cc94f9b87d0c51cf0e028070ac177c4123ecbfd7ac1cb8d0b7d322d1 + [http://jalimo.evolvis.org/repository/sources/openjdk-langtools-jdk7-b31.tar.bz2] md5=670931f67b2e4ac46c6e0cd15418f2fa sha256=f8b8820e410c137d279d14dec7e7a93217cc371acdfe1b3343b2278d1728932e @@ -11794,14 +14734,26 @@ sha256=83dd7c1e8ec8b4567afe49af539271b5a73562fb7a3ca51df73eccba89ec8c49 md5=c92746ae7bd69255c2c41f51e9349c65 sha256=501c611a73d2f7d8a3de5ef83202ff3f9ab21d2c467e39548737e344b085f931 +[http://heanet.dl.sourceforge.net/openobex/openobex-1.2.tar.gz] +md5=c92746ae7bd69255c2c41f51e9349c65 +sha256=501c611a73d2f7d8a3de5ef83202ff3f9ab21d2c467e39548737e344b085f931 + [http://downloads.sourceforge.net/openobex/openobex-1.3.tar.gz] md5=feaa5dfe5151c0e70e8f868fa4648a43 sha256=3a80ba2524c66a46db3ac17a788a759015a1f79de6a495fcdf3a316e19fe7c23 +[http://heanet.dl.sourceforge.net/openobex/openobex-1.3.tar.gz] +md5=feaa5dfe5151c0e70e8f868fa4648a43 +sha256=3a80ba2524c66a46db3ac17a788a759015a1f79de6a495fcdf3a316e19fe7c23 + [http://www.openpbx.org/releases/openpbx.org-1.2_rc3.tar.gz] md5=e270c40626dfa2131cc39dd1352b46f9 sha256=934e1e5438c46927236f1f3254265e94c7e38e7c0e02d92abb7efc4e03ce91e9 +[http://heanet.dl.sourceforge.net/openrdate/openrdate-1.1.3.tar.gz] +md5=af4785f615b9d87b9c86a32af4ecc225 +sha256=0f8a034107fc7593f28e77b276f964c1309343b4702ecdf0d61bb3e57ad0cb5f + [http://qa.debian.org/watch/sf.php/openrdate/openrdate-1.1.3.tar.gz] md5=af4785f615b9d87b9c86a32af4ecc225 sha256=0f8a034107fc7593f28e77b276f964c1309343b4702ecdf0d61bb3e57ad0cb5f @@ -11874,6 +14826,10 @@ sha256=56e844da580761ddbb580683fc455a8d9eb3179df631568c26b7188d1ff16363 md5=dcf63687c73ff56887049fedaf6c6019 sha256=39955ae5355299ac99f97093d01e66403516275dcac0f575bf1f3d0c67c17999 +[http://binaries.openttd.org/releases/0.6.2/openttd-0.6.2-source.tar.bz2] +md5=0678c02c92101616dbd710438dbfac43 +sha256=c28db9ae3798c6d44a5745319479478e758a207adf593a915e01014a38d42c7b + [http://downloads.sourceforge.net/openvpn/openvpn-1.5.0.tar.gz] md5=55d7ce958bb2ccf3d3204d1350c27179 sha256=d34d0a1a29de12cbb4fc6f8d80eced7b674ee3574e3df3d678fb0467283f7826 @@ -11882,6 +14838,10 @@ sha256=d34d0a1a29de12cbb4fc6f8d80eced7b674ee3574e3df3d678fb0467283f7826 md5=9eab3719b280a12d19ef1fda286cc363 sha256=22072a24bcaef8038a1e84363f3e209f65eb7c7ab37741752172a334acb31fb8 +[http://openvpn.net/release/openvpn-1.6.0.tar.gz] +md5=9eab3719b280a12d19ef1fda286cc363 +sha256=22072a24bcaef8038a1e84363f3e209f65eb7c7ab37741752172a334acb31fb8 + [http://openvpn.net/release/openvpn-2.0.2.tar.gz] md5=862f8788f080f669b1ae00a74ef68001 sha256=927512af1c0bc2af29690e205ce16c0cc920477be85742ebbedd8472ba01f807 @@ -11894,18 +14854,34 @@ sha256=347c551e7c88affc1f4b7a4b715080253c9298dcc512ed29fe8ca5cd26d015d9 md5=7401faebc6baee9add32608709c54eec sha256=063f00d5b889beee910eb113c8cfbb4fc85cd404693494bcaaf79dd09a98335c +[http://heanet.dl.sourceforge.net/gakusei/openwrt-imagetools-svn-rev7641.tar.bz2] +md5=7f35543286911b827dcbf8d07a7d72be +sha256=bad49b59646dbea380cc88be13a77d17c70488b8e11e85f7dd474930fa9cf36a + [http://downloads.sourceforge.net/oprofile/oprofile-0.9.2.tar.gz] md5=9af4e1e1aab89131516736bb60e9efba sha256=4b3780ee09efe665a69151c994e0e5f01a56c57338660c18df30916904df83a6 +[http://heanet.dl.sourceforge.net/oprofile/oprofile-0.9.2.tar.gz] +md5=9af4e1e1aab89131516736bb60e9efba +sha256=4b3780ee09efe665a69151c994e0e5f01a56c57338660c18df30916904df83a6 + [http://downloads.sourceforge.net/oprofile/oprofile-0.9.3.tar.gz] md5=bb91e4d5bd45ff0d5c3e6214653422b7 sha256=4f86ab165dabcc7bc4008710a66fa0ed391c083e2a8bdf8a8f5bf11c0244b2cb +[http://heanet.dl.sourceforge.net/oprofile/oprofile-0.9.3.tar.gz] +md5=bb91e4d5bd45ff0d5c3e6214653422b7 +sha256=4f86ab165dabcc7bc4008710a66fa0ed391c083e2a8bdf8a8f5bf11c0244b2cb + [http://downloads.sourceforge.net/oprofile/oprofile-0.9.4.tar.gz] md5=82b059379895cf125261d7d773465915 sha256=cb1452159036ba7d3003b75dfef38fcbc61503f76adfca2879ebf7766931cade +[http://heanet.dl.sourceforge.net/oprofile/oprofile-0.9.4.tar.gz] +md5=82b059379895cf125261d7d773465915 +sha256=cb1452159036ba7d3003b75dfef38fcbc61503f76adfca2879ebf7766931cade + [http://www.rpsys.net/openzaurus/patches/archive/oprofile_always_bt_arm-r0.patch] md5=9d1e6a9bd4d6dc9cae3c54c18c303ace sha256=e0e33fae512e54ff27474c926a758cf687e35d2c3007f69d4c647b69d47352ae @@ -11922,6 +14898,10 @@ sha256=07fbed267421ee26ee4b6bc410b68a10a284072d78e1e495c74865db0470306e md5=fb2b24560c993aba6a6badfdc5e666a6 sha256=78b6313164702e2907ea0f746e5cff443c82a16433c3b4f62831ca5755f451e9 +[http://heanet.dl.sourceforge.net/orinoco/orinoco-0.15rc1.tar.gz] +md5=fb2b24560c993aba6a6badfdc5e666a6 +sha256=78b6313164702e2907ea0f746e5cff443c82a16433c3b4f62831ca5755f451e9 + [http://ozlabs.org/people/dgibson/dldwd/orinoco-0.15rc2.tar.gz] md5=2246f0879439d74f7aabc7935cec90c0 sha256=2997613ab33ad42dc8269a63b7c40a6938b3552e196780a4a269cc7340dd23bd @@ -11938,22 +14918,42 @@ sha256=2f2fc74a13df58f560c40385cd78683c66623d7a8271cb17941a9de7be07d43f md5=4dad43f6e1291dfefaec6e9209928a0d sha256=78bed1f7a227c7844f4f1c3fd4eaa8c1c15f3ba6133ab1186f5b35371344de96 +[http://heanet.dl.sourceforge.net/gtk-webcore/osb-browser-0.5.0.tar.gz] +md5=4dad43f6e1291dfefaec6e9209928a0d +sha256=78bed1f7a227c7844f4f1c3fd4eaa8c1c15f3ba6133ab1186f5b35371344de96 + [http://downloads.sourceforge.net/gtk-webcore/osb-jscore-0.5.0.tar.gz] md5=969cda923c419e35a319911b30b1d4b8 sha256=f5ad6961288687b8dc44a3f5cd6d1901b1b5b293e592da7a63c201eee1089464 +[http://heanet.dl.sourceforge.net/gtk-webcore/osb-jscore-0.5.0.tar.gz] +md5=969cda923c419e35a319911b30b1d4b8 +sha256=f5ad6961288687b8dc44a3f5cd6d1901b1b5b293e592da7a63c201eee1089464 + [http://downloads.sourceforge.net/gtk-webcore/osb-nrcit-0.5.0.tar.gz] md5=b02f4a0dcaac722ad7cdc112db964df4 sha256=8977c50529ecd51441897d675a3eca980d50e2b33fb0885f9dae1f3c9fd417c8 +[http://heanet.dl.sourceforge.net/gtk-webcore/osb-nrcit-0.5.0.tar.gz] +md5=b02f4a0dcaac722ad7cdc112db964df4 +sha256=8977c50529ecd51441897d675a3eca980d50e2b33fb0885f9dae1f3c9fd417c8 + [http://downloads.sourceforge.net/gtk-webcore/osb-nrcore-0.5.0.tar.gz] md5=16d9a9a322025cae1a7fe8225690695a sha256=39123e386671e18873392fe221616bbfc2be5ca6ddc3660d6cc001a6aa1f59a8 +[http://heanet.dl.sourceforge.net/gtk-webcore/osb-nrcore-0.5.0.tar.gz] +md5=16d9a9a322025cae1a7fe8225690695a +sha256=39123e386671e18873392fe221616bbfc2be5ca6ddc3660d6cc001a6aa1f59a8 + [http://downloads.sourceforge.net/re-aim-7/osdl-aim-7.0.1.13.tar.gz] md5=925eb6675ce86cb011699f38468a1fd1 sha256=52d87bcb19fef6360d2e36274c2b5fe512e8427550eae04c5fa897ee77d34273 +[http://heanet.dl.sourceforge.net/re-aim-7/osdl-aim-7.0.1.13.tar.gz] +md5=925eb6675ce86cb011699f38468a1fd1 +sha256=52d87bcb19fef6360d2e36274c2b5fe512e8427550eae04c5fa897ee77d34273 + [http://stage.maemo.org:80/pool/maemo/ossw/source/o/osso-af-settings/osso-af-settings_0.8.5-1.tar.gz] md5=e24a9a9fb2167197ad6d141c891be9cf sha256=c243adca37a6b80e1ccd43da53e61d1794d4dede6787c9beebacd2c1932271ce @@ -12046,6 +15046,10 @@ sha256=dd9b3210a6f3168f7cf2c5ee1a36f7f19fd6f3dd834681cc561c813303077ebd md5=dadb84bbea954dfc1b38bc9760209fbc sha256=56f7a4c8ed79a7f00d171a83b6c0be7dc508c21f809d15dfa89887cfc9c40c2d +[http://killa.net/infosec/otpCalc/otpCalc-0.97.tar.gz] +md5=73c9a9e95462afda725fdf17a301f0b0 +sha256=e2c19fa6178ed42f0576650db6f94942cac366feadf82c2a679b35197c65f745 + [http://erlang.org/download/otp_src_R11B-1.tar.gz] md5=1fe3707d9bed898bc51444cb529fdd79 sha256=d5a8530dfee0b2348c4ad0107409fa73ac3233f31e2300ece625a2abd9eb4da7 @@ -12070,6 +15074,58 @@ sha256=8db9b3948c607315f0ba0df61b32f747bec5479c38051d3e0e55b31b82c81af5 md5=7f54ae7ebe9adbefc2a2ad55c62589da sha256=2c23dac41ef0ec0b74b38c4c1dc4b0f6f21386c97a0062a745a2896cdf026e8d +[http://heanet.dl.sourceforge.net/p3scan/p3scan-2.9.05d.tar.gz] +md5=7f54ae7ebe9adbefc2a2ad55c62589da +sha256=2c23dac41ef0ec0b74b38c4c1dc4b0f6f21386c97a0062a745a2896cdf026e8d + +[http://filehost.perforce.com/perforce/r04.2/bin.linuxarm/p4] +md5=ba983759366018ad2d90a7e088f509eb +sha256=de8bce2b3ae085a973dca4f7208c3cb1ab1fdc9bbcc9e3496ad3d56a4923dba0 + +[http://filehost.perforce.com/perforce/r05.2/bin.linuxarm/p4] +md5=9bc57695db5885ffac0a352fc17a7f84 +sha256=56dd1cb2364b8c8618f9019b641d17d6b307a5a797f3ac31c16a01247554e10c + +[http://filehost.perforce.com/perforce/r04.2/bin.linuxarm/p4api.tar] +md5=1eb1fb53531e09a03f158957016d55a6 +sha256=7d5455c9aa77aea548f3b52f579bf41fff034f0be1c283840b88be401f817792 + +[http://filehost.perforce.com/perforce/r05.2/bin.linuxarm/p4api.tar] +md5=7bdb4d9f59a231cc90a8e93709ec1595 +sha256=2e742bf3358f9b8b38f692f4222f96d6901a6faedca155942f58435cee385614 + +[http://filehost.perforce.com/perforce/r04.2/bin.linuxarm/p4d] +md5=690a404af3d916dc7c1cfa5a14a51171 +sha256=e41d44dbc5bd60f2140f0774945154105759b2dabf4c26c097cf754797274e39 + +[http://filehost.perforce.com/perforce/r05.2/bin.linuxarm/p4d] +md5=9a72849bb39cfe19da018271824a3ae1 +sha256=d67bc483b3cbccdcf32db6af21f02d20793a4c3ccc4b758c3a66374b410b73e8 + +[http://filehost.perforce.com/perforce/r04.2/bin.linuxarm/p4ftpd] +md5=c099df674fb3c249cb1d1984f00d573e +sha256=9839564335035bc92041fafd93d05a811dc4243bb72269b3afe5ba823f016418 + +[http://filehost.perforce.com/perforce/r05.2/bin.linuxarm/p4ftpd] +md5=eb47a4e532fca795893f0c727ae59c84 +sha256=bb5de57d0098e1c6f0d238cc4e658c64579b26fc1df58b9ce59c057fcb5b2f4c + +[http://filehost.perforce.com/perforce/r04.2/bin.linuxarm/p4p] +md5=02de68f26da402689f661662217cd77f +sha256=24d153529f669ff5fd9dc0d7a09bf7c6e658ee2d2496ab8025a2aaf12425907c + +[http://filehost.perforce.com/perforce/r05.2/bin.linuxarm/p4p] +md5=eed70a3a6af7e59a44d614d4a8022ff0 +sha256=b4b6546d16f161a50337bf9f5dfaf3a4795a3c9b56931e7ee2ace8bcf1863d6e + +[http://filehost.perforce.com/perforce/r04.2/bin.linuxarm/p4web] +md5=7bf9967719351c7a0758e20641978358 +sha256=70ebe07343989de042b9ef7866cfca540cfb28458e6c475d516c6916f4feb468 + +[http://filehost.perforce.com/perforce/r05.2/bin.linuxarm/p4web] +md5=e97b15e64be5a3773880f7d66e87a541 +sha256=ce72ef785a92aa8c71b6525e37da49bebab670a046b2ee0c023713f5aa497826 + [http://www.portaudio.com/archives/pa_stable_v19_20071207.tar.gz] md5=d2943e4469834b25afe62cc51adc025f sha256=06a17727d56d382a69036de2ed9aee9a15cac0329b995b8cfcd69b357f47bf2b @@ -12174,6 +15230,10 @@ sha256=6c57feb082c23e52f38366fff4ffa3961e5dc294d4ebb61ffa31462b5ae3681e md5=cce5bce8fa1d430e1ca3de3722807e01 sha256=2f67c40e2589e7804213493f24ebf80cd10847b47c95098854db0250511c3ed1 +[ftp://ftp.gnu.org/gnu/parted/parted-1.8.7.tar.gz] +md5=2ec5cb88b146f1a8ccd5b389455503c6 +sha256=bffb732ab47a8dfb528ab2513f6ae82a4f795c119decfe1f96310bf32c4dfc9e + [http://mutt.org.ua/download/mutt-1.5.15/patch-1.5.15.vvv.initials.gz] md5=414606ce18de730d1bb6478899532644 sha256=9385915adb106abba6f1576be58901f368688b1d55ef454e3993394828ee17e1 @@ -12282,6 +15342,10 @@ sha256=5ee24e1c5636bcffed155b1c01d7d09fedb135fa2458c190a0da03a82c8c2f60 md5=27544a58763bbd4ce497a77658af744a sha256=0f96188e8d1c6e0934f8e8dc2455e1f94a47c10cb17268364bcd77df68c83c2a +[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.6.bz2] +md5=f2948e364ab3e4736b9e34f02173472f +sha256=a85c8ce79cdc126b32aa9a74dbc64c368f0e7e9ec33e156af746003e1b5a8c4d + [http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.23-git9.bz2] md5=e89c566908bb21e43937fe8bc33062c4 sha256=126057524ae9707137b0c478753edc8072e1710160b0604a43e4625d0fde519e @@ -12290,10 +15354,18 @@ sha256=126057524ae9707137b0c478753edc8072e1710160b0604a43e4625d0fde519e md5=d23e6c5bb8294d61f0d9a4957c22eb20 sha256=c2085fc8fc6df586ef8c19a4562b84162f0b77956d691aa4fbee5e90c9800cb7 +[http://kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.23-rc3.bz2] +md5=736ea68a03158c24e55aa95e0ab15ceb +sha256=4d2c13dee5ea7bd8b5cdbf63afa9383b45f6bad1f75b163c49e086a5030a04de + [http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.23.1.bz2] md5=896c5d4e7fd68d37b8c16e5d2842563b sha256=55e811b4d4b0cbfde500bdd5455b7180d3def3dbdc52314520b7327d32b23f42 +[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.23.12.bz2] +md5=5932b5043abe8ca1ac7ee1ed73fa5e91 +sha256=bd83c501ff86103f054421496de31e6bc86d40d6bec6eafd2712bb0fb9da9d07 + [http://kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.24-rc1.bz2] md5=4f5daa28c871d9edd6d61f712f4b358d sha256=2512a51923318bde6175e073b3eec0e58ae07123bcdc49afa11f286b0d4bd06d @@ -12406,10 +15478,18 @@ sha256=61fd2a9225aad67d4e21727a297e571ddd6a973b845646cf10b24a92b88467bc md5=ac676498175495a37bef0b41bca9ace9 sha256=1f7dec1a275774cb6eff9a491b74bbea7a2276140d640c15ed260c798c8334ed +[http://heanet.dl.sourceforge.net/pcmanfm/pcmanfm-0.3.0.1.tar.gz] +md5=ac676498175495a37bef0b41bca9ace9 +sha256=1f7dec1a275774cb6eff9a491b74bbea7a2276140d640c15ed260c798c8334ed + [http://downloads.sourceforge.net/pcmanfm/pcmanfm-0.3.2-beta.tar.gz] md5=a0843bc54c60aac63cb04b55a6766402 sha256=f840326e6d6569444adf1d1c5d0fb8e93e7d16f0ef71dca4b1eeefddab8282c5 +[http://heanet.dl.sourceforge.net/pcmanfm/pcmanfm-0.3.2-beta.tar.gz] +md5=a0843bc54c60aac63cb04b55a6766402 +sha256=f840326e6d6569444adf1d1c5d0fb8e93e7d16f0ef71dca4b1eeefddab8282c5 + [http://downloads.sourceforge.net/pcmanfm/pcmanfm-0.3.2.2.tar.gz] md5=e735c8effc941912b5253a31d4136417 sha256=601c607115befa22567c7dae3399416787a549daaefcb03820851dcd8d8b4d50 @@ -12418,6 +15498,10 @@ sha256=601c607115befa22567c7dae3399416787a549daaefcb03820851dcd8d8b4d50 md5=0d6d65be8896eff081aee996049afaa5 sha256=ef93921e8555862df4c24b1c357430ff3d5ba1d3b6b7e324862ea37b511270c0 +[http://heanet.dl.sourceforge.net/pcmcia-cs/pcmcia-cs-3.2.8.tar.gz] +md5=0d6d65be8896eff081aee996049afaa5 +sha256=ef93921e8555862df4c24b1c357430ff3d5ba1d3b6b7e324862ea37b511270c0 + [http://www.informatik.hu-berlin.de/~tkunze/zaurus/patches/pcmcia_suspend.patch] md5=52423f0766882809c5ace9ed4ccb2131 sha256=c701207f506e3975510a9abc07eaab59f3e7e1fb13b8045ff1fff33964f4be89 @@ -12450,6 +15534,10 @@ sha256=1849733ce494a51334bd1cbf4cc96c63b037256ddab8cb2dc3672db916bb3094 md5=2af38e083fb90ef60fa9eda7cc290e86 sha256=362e4b4473f2f7a3bfa28ea73e80ec00a2fe525a1aceb5f66e1c528a900bd735 +[http://heanet.dl.sourceforge.net/pcre/pcre-7.6.tar.bz2] +md5=2af38e083fb90ef60fa9eda7cc290e86 +sha256=362e4b4473f2f7a3bfa28ea73e80ec00a2fe525a1aceb5f66e1c528a900bd735 + [http://alioth.debian.org/download.php/2479/pcsc-lite-1.4.102.tar.bz2] md5=b97d3a725ab93662adf09acfbc49efeb sha256=56fc9e6324539537324b071e5b51c3388df9bfa92fb7e210b989b463122fc333 @@ -12462,10 +15550,18 @@ sha256=99d6bc6b360baabd6044e8883d467cc6ed7955f9ab66d8f87f61e3cc757fb97a md5=912050a9cb6b0f415b76ba56052fb4cf sha256=89dcc463f88e0b785ee2cf2662d97c6b7d045393283664876370970a09b8cbef +[http://ftp.funet.fi/pub/CPAN/src/perl-5.8.4.tar.gz] +md5=912050a9cb6b0f415b76ba56052fb4cf +sha256=89dcc463f88e0b785ee2cf2662d97c6b7d045393283664876370970a09b8cbef + [ftp://ftp.funet.fi/pub/CPAN/src/perl-5.8.7.tar.gz] md5=dacefa1fe3c5b6d7bbc334ad94826131 sha256=916d7e1393ed09ca4c61b3c1ecb5f5564266c955db81ff587d2da8af7a7abaab +[http://ftp.funet.fi/pub/CPAN/src/perl-5.8.7.tar.gz] +md5=dacefa1fe3c5b6d7bbc334ad94826131 +sha256=916d7e1393ed09ca4c61b3c1ecb5f5564266c955db81ff587d2da8af7a7abaab + [ftp://ftp.funet.fi/pub/CPAN/src/perl-5.8.8.tar.gz] md5=b8c118d4360846829beb30b02a6b91a7 sha256=e15d499321e003d12ed183601e37ee7ba5f64b278d1de30149ce01bd4a3f234d @@ -12478,10 +15574,18 @@ sha256=e15d499321e003d12ed183601e37ee7ba5f64b278d1de30149ce01bd4a3f234d md5=fd3d67ac085332f074cd665424dcd631 sha256=d986dcbd954435e0ba78aaef391106c71a9b548a1cbd29cfb4eec3cb8c841313 +[http://heanet.dl.sourceforge.net/pexpect/pexpect-2.1.tar.gz] +md5=fd3d67ac085332f074cd665424dcd631 +sha256=d986dcbd954435e0ba78aaef391106c71a9b548a1cbd29cfb4eec3cb8c841313 + [ftp://ftp.math.muni.cz/pub/math/people/Dobes/phalanx-22.tar.gz] md5=8120f6383bb6d19e0c06ea47f69c2bda sha256=6eb45f17b50d864157dac2028ee5d45f4f54548825f5a732e1a430d5aa2dd889 +[http://ftp.debian.org/debian/pool/main/p/phalanx/phalanx_22.orig.tar.gz] +md5=e4e6155530a23ea0ea4ca59f8c5fda8c +sha256=e86a0a81ce1b989a4d06e0c07d64e1fcbba2456fa8e22ae24f333f186f3fc663 + [http://gpephone.linuxtogo.org/download/gpephone/phoneserver-1.0/phoneserver-1.0.tar.bz2] md5=195b684e025ff5c15617d6f757cf631f sha256=e14546d11e899e7e9f06ca58979fee14b273d53c637eb268d7c6fe3bf78d564d @@ -12534,6 +15638,10 @@ sha256=3f09878883c6980083e7774371ec57d8bdc320a325342965afb120d52780d15f md5=f76c269c02fafee9b45cc2a50b43b1f3 sha256=13e87a88b43804be72f8566402afa4c1c3756396aed4ef6b6b9d86d384e75b77 +[http://heanet.dl.sourceforge.net/pidgin/pidgin-2.5.1.tar.bz2] +md5=f76c269c02fafee9b45cc2a50b43b1f3 +sha256=13e87a88b43804be72f8566402afa4c1c3756396aed4ef6b6b9d86d384e75b77 + [ftp://ftp.cac.washington.edu/pine/pine4.64.tar.Z] md5=75af127948cc0c701d424d22d621f792 sha256=62c7b97695cb486e420afbbbe21bef853dd68a71665d867ffef50cb34dfba5f4 @@ -12558,10 +15666,18 @@ sha256=48625f6b5ce130672942503c683d306d957ee40f59f8e59be6ca30a245ad47d0 md5=8c8afc259af61d42aa9b3d8ec5a9a03b sha256=d034f4afb4329c38e8789a5a7a384194c7402094b4c2b7600d2d86d8589e8571 +[http://cairographics.org/releases/pixman-0.11.8.tar.gz] +md5=7b5db768c51337b5e5e954fc9c961cd3 +sha256=720db5ef6ed0e744b9bac5360ade9a7c024f9fb3fab05c83a90ee28b08e66e01 + [http://cairographics.org/releases/pixman-0.12.0.tar.gz] md5=09357cc74975b01714e00c5899ea1881 sha256=2b16516ef147bb604e1cf50c883143a052a7ff92d2930b70e571da0603b7d9ce +[http://xorg.freedesktop.org/releases/individual/lib/pixman-0.9.4.tar.bz2] +md5=c354ab5b0da10227226d3ef604254875 +sha256=261d239e9e3070a0a81e5b3eab92e6236c6295979bdae0a1ded05cbef93f67aa + [http://xorg.freedesktop.org/releases/individual/lib/pixman-0.9.5.tar.bz2] md5=f9fea77e46ec7a3a16e925e137f146e7 sha256=a9d4545b5dfc018cdd33fd21bc73c3f1b3c9c207f1bb6843606cc180eb10c6c8 @@ -12606,10 +15722,18 @@ sha256=25b84792473fa17d118e69b588f32fe940d13a01c3b3db89290ce6516ad01b2e md5=24a676bf495bec367b2d971cdca1c54c sha256=2632d931b5732eb1d0de7a2e2d92c75d64412438958ee96dceb4443e4fc2a62f +[http://heanet.dl.sourceforge.net/pmt/pngcrush-1.6.4.tar.gz] +md5=a329caad3f49ed3ca105e6fd441f5b93 +sha256=22ffea3aed00da9a9518a9c25b619d212bbe27b9ec72165cf74640f930108b2f + [http://downloads.sourceforge.net/gakusei/pobox-1.2.5.tar.bz2] md5=d1c988c2ac06d3111f80d59d30bb8bbb sha256=73bbc333d2a51d0e1cd73030012f2727ac26f5b1d41333994b01a47486fc16db +[http://heanet.dl.sourceforge.net/gakusei/pobox-1.2.5.tar.bz2] +md5=d1c988c2ac06d3111f80d59d30bb8bbb +sha256=73bbc333d2a51d0e1cd73030012f2727ac26f5b1d41333994b01a47486fc16db + [http://www.staikos.net/~staikos/pocketcellar/pocketcellar-1.1.tar.gz] md5=ef65260b37a0c11898c680a576846c94 sha256=5ae5e9816bc8503b768f831f058bd1c379bb821e8c0776015ffeb998e1d912f8 @@ -12618,14 +15742,26 @@ sha256=5ae5e9816bc8503b768f831f058bd1c379bb821e8c0776015ffeb998e1d912f8 md5=65408ad948c0b9e21dd5813e68ef76ad sha256=74c83c3283178656a6fc1ee571fb1ebbddda8f3b7c32ad405477ae278b0cf867 +[http://heanet.dl.sourceforge.net/cmusphinx/pocketsphinx-0.2.1.tar.bz2] +md5=65408ad948c0b9e21dd5813e68ef76ad +sha256=74c83c3283178656a6fc1ee571fb1ebbddda8f3b7c32ad405477ae278b0cf867 + [http://downloads.sourceforge.net/cmusphinx/pocketsphinx-0.4.1.tar.bz2] md5=8c1bc9d5bdd6f6298222125669d16e1e sha256=5a31aa10668b93e8283c58592b46368c26aa92e097cea0bda9b0554042bd6643 +[http://heanet.dl.sourceforge.net/cmusphinx/pocketsphinx-0.4.1.tar.bz2] +md5=8c1bc9d5bdd6f6298222125669d16e1e +sha256=5a31aa10668b93e8283c58592b46368c26aa92e097cea0bda9b0554042bd6643 + [http://downloads.sourceforge.net/podget/podget_0.5.8.tar.gz] md5=6619557b02559ac3191d4cc2054bf325 sha256=ab6e33b09bfbd407ee444ef37d769658e651cfe6eee96ce7aac5be8860e069e5 +[http://heanet.dl.sourceforge.net/podget/podget_0.5.8.tar.gz] +md5=6619557b02559ac3191d4cc2054bf325 +sha256=ab6e33b09bfbd407ee444ef37d769658e651cfe6eee96ce7aac5be8860e069e5 + [http://www.rpsys.net/openzaurus/patches/archive/poodle_asoc_fix-r1.patch] md5=7c766563674dec668baa5f650a14b7cd sha256=3f78e714248cdaa0b83f530a3b7f80da02446b179e86fbb043d57c3e05ae0d7e @@ -12674,6 +15810,10 @@ sha256=3238cc3553f721c110822bdc7fbfe7c57f33f59a05e406a19e956e71a1712aa8 md5=053fdfd70533ecce1a06353fa945f061 sha256=ca0f880a4ff07391e99b443f0e7c9860241df6a6aaa327b9d811b358d94a29c9 +[http://poppler.freedesktop.org/poppler-0.5.9.tar.gz] +md5=8d1ac008614c0e413bcac95b8102fa07 +sha256=bee251e5149ac9dd8824aac316456b78a82f4e1954eb3c1a94db3625340ef61e + [http://poppler.freedesktop.org/poppler-0.6.4.tar.gz] md5=13d12ca4e349574cfbbcf4a9b2b3ae52 sha256=54269075e4d611a61792a374986e920744c8ca39c2df45911233873c7e714354 @@ -12710,10 +15850,18 @@ sha256=4e75cb28793f0d44134f71fae53057d5f250805e6268fbd9c9780654b73b0dc1 md5=b003614237445d23b512cb9571565524 sha256=4347a70fe84bd2ccecc90738fb121d28298cf0bfdb4963ceee088c56d3109899 +[http://heanet.dl.sourceforge.net/poqetp/poqetp_0.0.6_src.tar.gz] +md5=b003614237445d23b512cb9571565524 +sha256=4347a70fe84bd2ccecc90738fb121d28298cf0bfdb4963ceee088c56d3109899 + [http://downloads.sourceforge.net/portabase/portabase_1.9.tar.gz] md5=3319e8eff133de0bc9e8fe810e052202 sha256=6b3d91811b098fb9e1a0f91d11a6c935c2d7e41d4431f022023d606d270fe0fc +[http://heanet.dl.sourceforge.net/portabase/portabase_1.9.tar.gz] +md5=3319e8eff133de0bc9e8fe810e052202 +sha256=6b3d91811b098fb9e1a0f91d11a6c935c2d7e41d4431f022023d606d270fe0fc + [http://neil.brown.name/portmap/portmap-6.0.tgz] md5=ac108ab68bf0f34477f8317791aaf1ff sha256=02c820d39f3e6e729d1bea3287a2d8a6c684f1006fb9612f97dcad4a281d41de @@ -12726,22 +15874,42 @@ sha256=02c820d39f3e6e729d1bea3287a2d8a6c684f1006fb9612f97dcad4a281d41de md5=b78c2ecfe378b03b8f1b36d2aed94eac sha256=09595393c56b24d45476bf414f9e32cf13d675711c8ac3f7e0754c938814e085 +[ftp://ftp.nl.debian.org/debian/pool/main/p/portmap/portmap_5-25.diff.gz] +md5=b78c2ecfe378b03b8f1b36d2aed94eac +sha256=09595393c56b24d45476bf414f9e32cf13d675711c8ac3f7e0754c938814e085 + [ftp://ftp.debian.org/debian/pool/main/p/portmap/portmap_5-26.diff.gz] md5=11118c91a095e8ff7f4a3f5f09062be7 sha256=8478eee317686f53e24519657f4653293bd120fae9815153d7cf54e0f8be9feb +[ftp://ftp.nl.debian.org/debian/pool/main/p/portmap/portmap_5-26.diff.gz] +md5=11118c91a095e8ff7f4a3f5f09062be7 +sha256=8478eee317686f53e24519657f4653293bd120fae9815153d7cf54e0f8be9feb + [ftp://ftp.debian.org/debian/pool/main/p/portmap/portmap_5-9.diff.gz] md5=8b77092f74e5638e90825973f0274729 sha256=a9ab1930048038d80a9e48e69a6f0d57e86a355545d6db3e2c67e06ec909b80a +[ftp://ftp.nl.debian.org/debian/pool/main/p/portmap/portmap_5-9.diff.gz] +md5=8b77092f74e5638e90825973f0274729 +sha256=a9ab1930048038d80a9e48e69a6f0d57e86a355545d6db3e2c67e06ec909b80a + [ftp://ftp.debian.org/debian/pool/main/p/portmap/portmap_5.orig.tar.gz] md5=781e16ed4487c4caa082c6fef09ead4f sha256=e8fb4429ecf03809f60b2e194be120a811be1c5cc3cc5d933ede938114357b61 +[ftp://ftp.nl.debian.org/debian/pool/main/p/portmap/portmap_5.orig.tar.gz] +md5=781e16ed4487c4caa082c6fef09ead4f +sha256=e8fb4429ecf03809f60b2e194be120a811be1c5cc3cc5d933ede938114357b61 + [ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-2.0.20.tar.gz] md5=92479b64d132262be505a17ec02bc2a8 sha256=78c03b41d75f7402a63a5e5e13f3690005411a85299bc6ec9edbe04888db6d18 +[ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-2.2.12.tar.gz] +md5=e73299c07407da60a53c0cf089b4abe8 +sha256=a736ed4936ad20c2b012fde699a033360c38ae6201ebb8a98d3bfaca6737d4b3 + [ftp://ftp-archives.postgresql.org/pub/source/v8.1.4/postgresql-8.1.4.tar.bz2] md5=a65bdc5d833169d28bf6fbaaa8d57fcf sha256=ac7e7d311b07abd27b084041bcc943398df303bc86601f281891537bdf1a4e0b @@ -12758,6 +15926,10 @@ sha256=91f75eb29c07271fcbfa2082c8300690efe4a72f2fbf35dace98108b0c6f7ba3 md5=b5789bb7eeaed0809c5c82d0efda571d sha256=4e8a7fecd44807343b6867e1f2440aa0e09613d6d69a7385ac48f4e5e7737a73 +[http://www.povray.org/redirect/www.povray.org/beta/source/povray-src-3.7.0.beta.25b.tar.bz2] +md5=cfb405e2ca3c3f3b30abd5dbef9a78e8 +sha256=ef54965dec05c8063c40eab768f3fb722eb0ed72ae7918afe45d7a6bd553abc8 + [http://linux.tlk.fr/games/Powermanga/download/powermanga-0.79.tgz] md5=3a4f00658496921b7327413ac476c1b7 sha256=99a9737480224be47362387d2d2389bee61d7685510b3a161b2b1db6c0556c26 @@ -12790,26 +15962,54 @@ sha256=1e0fddb5f53613dd14ab10b25435e88092fed1eff09b4ac4448d5be01f3b0b11 md5=848f6c3cafeb6074ffeb293c3af79b7c sha256=1e0fddb5f53613dd14ab10b25435e88092fed1eff09b4ac4448d5be01f3b0b11 +[http://heanet.dl.sourceforge.net/sourceforge/pptpclient/pptp-1.7.1.tar.gz] +md5=b47735ba5d6d37dfdbccb85afc044ede +sha256=8e3fa9f17c22818eae68419f66966865423206d736eb74d212a3501f62423276 + [http://downloads.sourceforge.net/pptpclient/pptp-linux-1.5.0.tar.gz] md5=281ee37788bdf3260426eca56a9af858 sha256=a2a10abcdfcfbd7da0ba173d2996d6555908069108d59296bf3e1c5c48b5be60 +[http://heanet.dl.sourceforge.net/pptpclient/pptp-linux-1.5.0.tar.gz] +md5=281ee37788bdf3260426eca56a9af858 +sha256=a2a10abcdfcfbd7da0ba173d2996d6555908069108d59296bf3e1c5c48b5be60 + [http://downloads.sourceforge.net/poptop/pptpd-1.3.0.tar.gz] md5=75d494e881f7027f4e60b114163f6b67 sha256=4f6fe4eb08ca7a69c83658ab13b23a77aa153ec1a2663596ddcbbf35768b0cee +[http://heanet.dl.sourceforge.net/poptop/pptpd-1.3.0.tar.gz] +md5=75d494e881f7027f4e60b114163f6b67 +sha256=4f6fe4eb08ca7a69c83658ab13b23a77aa153ec1a2663596ddcbbf35768b0cee + +[http://heanet.dl.sourceforge.net/poptop/pptpd-1.3.4.tar.gz] +md5=b38df9c431041922c997c1148bedf591 +sha256=c23a9bdd219a0a36ae7ca20e7c9749f2efdcdbf108aabeeeb5066ba442ec88b6 + [http://downloads.sourceforge.net/prboom/prboom-2.2.6.tar.gz] md5=ef0abe0aad017514857552434b5c6aaa sha256=200d3c50b082ae46be8c014bb576b4e2d23b1704508fd528c47e3e2b3b04759e +[http://heanet.dl.sourceforge.net/prboom/prboom-2.2.6.tar.gz] +md5=ef0abe0aad017514857552434b5c6aaa +sha256=200d3c50b082ae46be8c014bb576b4e2d23b1704508fd528c47e3e2b3b04759e + [http://downloads.sourceforge.net/prboom/prboom-2.3.1.tar.gz] md5=c53231604fe6cf7352e73911ad44c90d sha256=6465b37ef96c04d95dcb887f907da1af43a33783e8c5e80527bceda97202876a +[http://heanet.dl.sourceforge.net/prboom/prboom-2.3.1.tar.gz] +md5=c53231604fe6cf7352e73911ad44c90d +sha256=6465b37ef96c04d95dcb887f907da1af43a33783e8c5e80527bceda97202876a + [http://downloads.sourceforge.net/prboom/prboom-2.4.7.tar.gz] md5=9942f521764d7f89df2218a456da4f02 sha256=de22dbaacd25a0f0b16c507aa2326a90b7f5dcfcf862c3dc7076996c6187cd2f +[http://heanet.dl.sourceforge.net/prboom/prboom-2.4.7.tar.gz] +md5=9942f521764d7f89df2218a456da4f02 +sha256=de22dbaacd25a0f0b16c507aa2326a90b7f5dcfcf862c3dc7076996c6187cd2f + [ftp://ftp.debian.org/debian/pool/main/p/prelink/prelink_0.0.20060712.orig.tar.gz] md5=f897774889b14e5414983c3bf65e1fad sha256=ffe91ca709c381b94f8ed99a51ea8d865dad9667186c572dcfd5711a1700b232 @@ -12818,6 +16018,10 @@ sha256=ffe91ca709c381b94f8ed99a51ea8d865dad9667186c572dcfd5711a1700b232 md5=9b01aae72da2bb262f29392597847545 sha256=e70697c0c23da6b82b330c7db41537ee00dd770da87c92591682f486ab8d1752 +[ftp://ftp.nl.debian.org/debian/pool/main/p/prelink/prelink_0.0.20061027.orig.tar.gz] +md5=9b01aae72da2bb262f29392597847545 +sha256=e70697c0c23da6b82b330c7db41537ee00dd770da87c92591682f486ab8d1752 + [ftp://ftp.pl.debian.org/pub/debian/pool/main/p/prelink/prelink_0.0.20061027.orig.tar.gz] md5=9b01aae72da2bb262f29392597847545 sha256=e70697c0c23da6b82b330c7db41537ee00dd770da87c92591682f486ab8d1752 @@ -12826,6 +16030,10 @@ sha256=e70697c0c23da6b82b330c7db41537ee00dd770da87c92591682f486ab8d1752 md5=6617a6681f4e5e3d8ddc48955d73d7ab sha256=a1c6170e508a3516d0a23963d7fa5cf0a457be431c210096f6b1cecd0731a9f4 +[ftp://ftp.nl.debian.org/debian/pool/main/p/prelink/prelink_0.0.20071009.orig.tar.gz] +md5=6617a6681f4e5e3d8ddc48955d73d7ab +sha256=a1c6170e508a3516d0a23963d7fa5cf0a457be431c210096f6b1cecd0731a9f4 + [http://www.red-bean.com/~proski/firmware/primary.tar.bz2] md5=0c7c82264602ee2b7ad832d5cd1e1940 sha256=3b5bd68653ff5054586f9fad7ad729bd2d551e76949aec2d14b8a89308393a36 @@ -12846,10 +16054,18 @@ sha256=23bfd57906a1787814480f57763ded8fc10a696a903a4768869c56061283e972 md5=3ef1bf7bfa9a144013155a144aaaa091 sha256=3a568fbb3a68238d79731bcf933602171bb8d7d51226a7af722d357ab7d2a96b +[http://heanet.dl.sourceforge.net/prismstumbler/prismstumbler-0.7.2.tar.bz2] +md5=3ef1bf7bfa9a144013155a144aaaa091 +sha256=3a568fbb3a68238d79731bcf933602171bb8d7d51226a7af722d357ab7d2a96b + [http://downloads.sourceforge.net/prismstumbler/prismstumbler-0.7.3.tar.bz2] md5=3232b2a12136c6ec097bb2544cd7ab16 sha256=57c30824fc0fb901545e888f2cdefd7f2e848a698d5ac724e1a7701245e63b68 +[http://heanet.dl.sourceforge.net/prismstumbler/prismstumbler-0.7.3.tar.bz2] +md5=3232b2a12136c6ec097bb2544cd7ab16 +sha256=57c30824fc0fb901545e888f2cdefd7f2e848a698d5ac724e1a7701245e63b68 + [http://projects.linuxtogo.org/frs/download.php/14/prismstumbler-0.7.4pre1.tar.gz] md5=5b2e91311c94579e4f5e1d4fdd9bc4fe sha256=81d536d5307b8d5b96587ff673e69b9e5049d11d56643b3ea6984b31baa0ab56 @@ -12858,6 +16074,10 @@ sha256=81d536d5307b8d5b96587ff673e69b9e5049d11d56643b3ea6984b31baa0ab56 md5=b0710be8af09409bfb03f52523a17010 sha256=4dab0049049c1ae6cfb00faea606d981535d0f0a65aab17e3179cc3d75de9f84 +[http://heanet.dl.sourceforge.net/ijbswa/privoxy-3.0.3-stable-src.tar.gz] +md5=b0710be8af09409bfb03f52523a17010 +sha256=4dab0049049c1ae6cfb00faea606d981535d0f0a65aab17e3179cc3d75de9f84 + [http://procps.sourceforge.net/procps-3.1.15.tar.gz] md5=496d9f87be5eaebcd1080bb5b9999da4 sha256=dda7201dc74e4c247f3feab8eea53cceeb55e8a6994ecb8ca3ca139f7ccfc15a @@ -12882,6 +16102,10 @@ sha256=672b753f911bfb7cbf996ece57f46dd91d3bac9aa852178e3a56b5e111672aa9 md5=63047fcbe5ff853db0d04981dd9f1888 sha256=b8519dfd77939b23ca599a724b536f48340f2c795552aa2a600155230571141c +[http://xorg.freedesktop.org/releases/individual/app/proxymngr-1.0.1.tar.bz2] +md5=aad44d0f65b97fd6d564b1d2ae510bb1 +sha256=e9f5d4553411562477a0605fb0f0ec728016499e37230138a5e207dec79525c5 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/proxymngr-X11R7.0-1.0.1.tar.bz2] md5=0d2ca6876d84302f966fd105a3b69a8e sha256=f1ce23f66ed90c4be505f23c5b659ce48578099521663e788733315f3c36fdb2 @@ -12890,14 +16114,26 @@ sha256=f1ce23f66ed90c4be505f23c5b659ce48578099521663e788733315f3c36fdb2 md5=f0d40e38a150ee31123362e7c50bcf9d sha256=e2592a857ccc2b5ad6f327ce2acc7b5a0874ec10755476aa2cf6bfa054230214 +[http://heanet.dl.sourceforge.net/psmisc/psmisc-20.2.tar.gz] +md5=f0d40e38a150ee31123362e7c50bcf9d +sha256=e2592a857ccc2b5ad6f327ce2acc7b5a0874ec10755476aa2cf6bfa054230214 + [http://downloads.sourceforge.net/psmisc/psmisc-21.8.tar.gz] md5=d6276e071c10ddf4b0d98856e5573e1a sha256=495463860415171d9019798ed4fdf5848ffe93f8a380662a39dd2690a04717ed +[http://heanet.dl.sourceforge.net/psmisc/psmisc-21.8.tar.gz] +md5=d6276e071c10ddf4b0d98856e5573e1a +sha256=495463860415171d9019798ed4fdf5848ffe93f8a380662a39dd2690a04717ed + [http://downloads.sourceforge.net/psmisc/psmisc-22.2.tar.gz] md5=77737c817a40ef2c160a7194b5b64337 sha256=6bca237485a352362133792e000a3c8e367a26b0312c5c607db7c2a97717d15f +[http://heanet.dl.sourceforge.net/psmisc/psmisc-22.2.tar.gz] +md5=77737c817a40ef2c160a7194b5b64337 +sha256=6bca237485a352362133792e000a3c8e367a26b0312c5c607db7c2a97717d15f + [http://downloads.sourceforge.net/psmisc/psmisc-22.6.tar.gz] md5=2e81938855cf5cc38856bd4a31d79a4c sha256=a13c81897c94b3d6e705fc9da07c610492e28cf7abd5ff8e992f0ec95a269d62 @@ -12914,10 +16150,18 @@ sha256=2f18dc8e553b2eb9e40e429ccc829e2b8e25d2f82929cfbc4149b1147d00eee1 md5=9cb4a25331a4c4db866a31cbe507c793 sha256=72353660c5a2caafd601b20e12e75d865fd88f6cf1a088b306a3963f0bc77232 +[http://pypi.python.org/packages/source/p/ptrace/ptrace-0.3.2.tar.gz] +md5=8108c2474bef16d126e956dce3c5073b +sha256=634fe75e195179adafb6218040724f38252bd0fc8f796bb3e3e9bdba065890c5 + [http://0pointer.de/lennart/projects/pulseaudio/pulseaudio-0.9.10.tar.gz] md5=9187ac1b302b9ab45f355242f453882e sha256=1ae8b587759b33ad954e717728fab6df58bd28088d0ac8faf22e90253b774975 +[http://0pointer.de/lennart/projects/pulseaudio/pulseaudio-0.9.11.tar.gz] +md5=fa121f8e5dd4b98d65096de1b6c84021 +sha256=6cc4aff778275f087cfbd65d2040b1587cafc588749499a452eb496329505ab0 + [http://0pointer.de/lennart/projects/pulseaudio/pulseaudio-0.9.5.tar.gz] md5=99b5d9efd4fce35cabb4ae5d0ebb230d sha256=cd82eabcf9fa310a64b58b621730cebe5d3edae7596a9c121155db455b1e58f6 @@ -12930,10 +16174,18 @@ sha256=b7a5f14eb8cf7076f1df8fb78d4a05c83e1e655474688c48364fa1b96f478d64 md5=8fa6f7a9611bb194d94311764022b197 sha256=9caab8f9be8a371aea7cd0241aab7ffd4b1043fbc4a8f62736faea4229f11f7d +[http://ftp.de.debian.org/debian/pool/main/p/pump/pump_0.8.24.orig.tar.gz] +md5=866fc9f62b8161eb1514a6a06597edc9 +sha256=cbb423942a4295a07a23b76a02d645b76b4ac0b58c3a30076ad42c2ab80c2dba + [http://www.warmi.net/zaurus/files/puzz-le_2.0.0.tar.gz] md5=76535893b779926874f618d3fbf3e92b sha256=e4b4217b81ab0885db11cf7e0f18afdeaa969392fc15647a10c2aab9cbf583d8 +[http://pipeviewer.googlecode.com/files/pv-1.1.4.tar.bz2] +md5=63033e090d61a040407bfd043aeb6d27 +sha256=c8613c240ab4297f6ad346f0047138f551a093c603eeb581d5e83091cad3a559 + [http://www.isely.net/downloads/pvrusb2-mci-20050911.tar.bz2] md5=8522d37df012c70a954a966d40df1ad3 sha256=2831d99c1f60074f6f348643b13ae7d6ff1224075ae153125dd59db5f21efa3c @@ -13014,10 +16266,18 @@ sha256=dad803c34e902e286a3d6fb052f48b826c62a8ad19a54ced2936da7641b62907 md5=8567328b1ad7609f8851eec57658f1a0 sha256=19c6eeb42f2688464cf4fc7dadecf58faeebfa6a13f05974f6dad910f5fd6b98 +[http://heanet.dl.sourceforge.net/pwgen/pwgen-2.06.tar.gz] +md5=935aebcbe610fbc9de8125e7b7d71297 +sha256=61598c9e3a0f7eb2e7367d4ecc71522c4f16a7d41ed31db29e3afee8d9843454 + [http://www.openh323.org/bin/pwlib_1.5.2.tar.gz] md5=0fa33ba1b32b254abe0b731a52c0f2f9 sha256=62b254548ad7a9e71231a160275827d67ff39022ee8e2854a7c9d9fe9a688e65 +[http://heanet.dl.sourceforge.net/pwsafe/pwsafe-0.2.0.tar.gz] +md5=4bb36538a2772ecbf1a542bc7d4746c0 +sha256=61e91dc5114fe014a49afabd574eda5ff49b36c81a6d492c03fcb10ba6af47b7 + [http://www.rpsys.net/openzaurus/patches/archive/pxa-linking-bug.patch] md5=ce6d8a7a25cc1c9593417746bcf84ca0 sha256=24aac1d158095007a10a47e38320a1618fab2d536f19caff94f4dd0ab29f306b @@ -13094,14 +16354,34 @@ sha256=fad4e6ca8e9e2a9e4bcddc96194db69827164f65b8a35cb326d0c8cd3a870238 md5=d2aa74615aa9cf23413975a68613ffc1 sha256=12527f130dd695184c44c6197deb619c26c9b5b31ce7699a5dd97e0ad2dd7bd1 +[http://heanet.dl.sourceforge.net/py-xmlrpc/py-xmlrpc-0.8.8.3.tar.gz] +md5=d2aa74615aa9cf23413975a68613ffc1 +sha256=12527f130dd695184c44c6197deb619c26c9b5b31ce7699a5dd97e0ad2dd7bd1 + [http://downloads.sourceforge.net/pyopenssl/pyOpenSSL-0.6.tar.gz] md5=af67fda6d2125cae9c56ee50430a40c7 sha256=58ee9dd10fbd97d65347626f60a38aafdcb05d19ad90c883c4284266ba7ec959 +[http://heanet.dl.sourceforge.net/pyopenssl/pyOpenSSL-0.6.tar.gz] +md5=af67fda6d2125cae9c56ee50430a40c7 +sha256=58ee9dd10fbd97d65347626f60a38aafdcb05d19ad90c883c4284266ba7ec959 + +[ftp://ftp.alsa-project.org/pub/pyalsa/pyalsa-1.0.16.tar.bz2] +md5=a1f4d561fa5c41a570480f3f328559a2 +sha256=f2c9195284d3c3925d83424a9e24ac8ce96e706abced5d3007df57f9fe51518f + +[http://heanet.dl.sourceforge.net/pyalsaaudio/pyalsaaudio-0.3.tar.gz] +md5=1e061d726df57995e9b09594b304054b +sha256=04cda928ef4ebc4b340668fe49626fc50619e644cd3825a93344cd0a066a4a61 + [http://www.andrewchatham.com/pyogg/download/pyao-0.82.tar.gz] md5=8e00f5154401a6f6d99efd20606e2819 sha256=9a444518252f6d747e76a219e5efbc05b4e1742260a7419da9ddf93a519b30c5 +[http://org.csail.mit.edu/pybluez/release/pybluez-src-0.10.tar.gz] +md5=4c28dc47783ad232bf872ae7baad6033 +sha256=9877655ae7e4465d6c237f0896d359bd77021436abc7ed7c89ba76afe6ebe774 + [http://org.csail.mit.edu/pybluez/release/pybluez-src-0.13.tar.gz] md5=eb38d423b49255a7b9f5ba1f50844b53 sha256=d8e41f48c86403cb7fc8d0880a207c53a9e4ba6b6eab2fe8870c346567fa3a03 @@ -13118,14 +16398,26 @@ sha256=ab10b00c209e9feaebfff944d411f300ca032d09d3ebb64e3498acf9fea09c6d md5=e26e77919b606113f565d70036c1f504 sha256=9212afffee727e39ae99406b5a59ab3248556bcfebfae24d8278313678147e32 +[http://heanet.dl.sourceforge.net/pycap/pycap-0.1.6.tar.gz] +md5=c90bc5382dede1a941e023e7bc27c473 +sha256=961e37f49afeda70d89c21830751548a2ac4912a35122bf70bf29091eef5c4a0 + [http://downloads.sourceforge.net/pychecker/pychecker-0.8.14.tar.gz] md5=531214b2c922462eb57dde5d37f004ac sha256=4c8601f11112b7fce53634f65140da171d85fc1e1004d0be6d5120848eedcf77 +[http://heanet.dl.sourceforge.net/pychecker/pychecker-0.8.17.tar.gz] +md5=9d2a2d62b368ce503830f830a89bd230 +sha256=7ee4ea2fc02151196590cdef6073302dd61156503ee242a68a3c8aff50e86e52 + [http://web.mit.edu/~emin/www/source_code/pycodes/pycodes-1-1.tar.gz] md5=26c99a8b10ccb2a21ca4891b85a07978 sha256=2a9fbef7d953e1fc1eec837a4087cd518e465226b060b5cb3ea67bcef1760269 +[http://web.mit.edu/~emin/www/source_code/pycodes/pycodes-1-2.tar.gz] +md5=c39e0ffea530cbf0b4f2aa6af6e81b66 +sha256=d203b4be819e20314576d5c26329862e7d371c84e8f192e31402a0b6d9e055aa + [http://www.amk.ca/files/python/crypto/pycrypto-1.9a6.tar.gz] md5=cdcebdfd63e74754f57b9e9b0db4ea20 sha256=a6d7db68c87699e283a1f58b637a7e730c350899fd7b35b88e63caa0e85a9ab9 @@ -13138,6 +16430,14 @@ sha256=b08d4ed54c9403c77778a3803e53a4f33f359b42d94f6f3e14abb1bf4941e6ea md5=6f73d518fb520af14634a06ee1b7ddce sha256=a60e08b01fc3355ec18ec0e447349b6f8bff3f9628eb42891cff1eb51b9618b1 +[http://pycurl.sourceforge.net/download/pycurl-7.18.2.tar.gz] +md5=39210d56f1d5a75ac8dd6a2866a93dd5 +sha256=95d21bd61e03d22ee4ac18fc0b9040c163cb504c4b2cf1dc43c18f32508f6736 + +[http://www.rhodesmill.org/brandon/projects/pyephem-3.7.2a.tar.gz] +md5=92d035abe09b9dba39780bc66738ce23 +sha256=5e7e4a23544d9ef232913d3dc9fac3a9a6a2ced4892ce6c4d197ecbb23f89dcd + [http://www.rhodesmill.org/brandon/projects/pyephem-3.7b.tar.gz] md5=08ddcadfef79b6020d593b7665b4c3fa sha256=f310597a3da24cf6799f233cf88914ae5d4ddb2dc8ed6e47cbf95a39fa0e9634 @@ -13146,10 +16446,18 @@ sha256=f310597a3da24cf6799f233cf88914ae5d4ddb2dc8ed6e47cbf95a39fa0e9634 md5=7cab1ef229b47760f91437b427e43819 sha256=cbd1ee276a6e1bbd525b4c88ec13df9be5c40833d6ffc78b3cd76420c25e9938 +[http://www.stsci.edu/resources/software_hardware/pyfits/pyfits-1.1.tar.gz] +md5=c609558432e2b61bc91cf511e8b62fd9 +sha256=163dc19bf85754c013cd42102e5afc96f40d0264664acaa69d34404524c1928d + [http://www.divmod.org/static/projects/pyflakes/pyflakes-0.2.0.tar.gz] md5=da243a4425bda4a714b1338fe73663fa sha256=1fe008b728923f25d3c8ebd7f28cc538aa0814f3b090df817e25c266fcaecf6a +[http://www.divmod.org/static/projects/pyflakes/pyflakes-0.2.1.tar.gz] +md5=e65d9245d706350b3db811280d897f30 +sha256=3eecd66deecc2de5c31bb91a4b4479232087e80da94e3086e2a686879374cde9 + [http://www.pygame.org/ftp/pygame-1.6.tar.gz] md5=ea5db930c0031873a7f5ad1f2f7926db sha256=dff059338cc1b3409567a5b7f12bd23facc21b2c4ad356257fe50e5e85d2ae02 @@ -13174,10 +16482,18 @@ sha256=efa81e0281668988b8cc2af9d0546befa4365662f1ebec37e0c7c863e969da41 md5=0e9e9300e81847f4f7266f49d3bebbaf sha256=79c5d3ab8f072f1d0b102b2bd6410b0dc383a008b5efad1750d8b6dadfde8c6e +[ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/2.15/pygobject-2.15.4.tar.bz2] +md5=df59affe5b8fd7148506c3473d479868 +sha256=c746693328bfed7838a1f3bfac41b13d7f39a81ac961559cd0daf700fc677da7 + [http://downloads.sourceforge.net/pygoogle/pygoogle-0.6.tar.gz] md5=334e2d9e5a765ffa9769e2c4cdfcd110 sha256=ad3f4530977a15e52b379ef301a4a80cf69a883f24dd6cebc5b47b3009c092a4 +[http://heanet.dl.sourceforge.net/pygoogle/pygoogle-0.6.tar.gz] +md5=334e2d9e5a765ffa9769e2c4cdfcd110 +sha256=ad3f4530977a15e52b379ef301a4a80cf69a883f24dd6cebc5b47b3009c092a4 + [ftp://ftp.gtk.org/pub/gtk/python/v1.2/pygtk-0.6.12.tar.gz] md5=31f0991a18708d47fa29583c0ad956f6 sha256=7c95e6ae35d282fb333dc7b29bd91e543518ea7f3dfa11f21d52be0654234010 @@ -13202,6 +16518,10 @@ sha256=dee1ec46a43bf624f1ff796903bd2d49e65c1cc8396385f46bf1489817bd6e60 md5=49818a591430e08057c27a11e4c40aef sha256=2a7bdd52c24ed0e70e4a2d82c697214c4ab5a70f94ea9e7934df15ca202d1169 +[http://heanet.dl.sourceforge.net/pyid3lib/pyid3lib-0.5.1.tar.bz2] +md5=49818a591430e08057c27a11e4c40aef +sha256=2a7bdd52c24ed0e70e4a2d82c697214c4ab5a70f94ea9e7934df15ca202d1169 + [http://downloads.sourceforge.net/pyirclib/pyirclib-0.4.3.tar.gz] md5=b9d60e69314a548dfd7d48da3d540d62 sha256=1615a543e645dd2199f6315d606dcc561373d64d1d7dfc74aba2246a67632808 @@ -13210,6 +16530,14 @@ sha256=1615a543e645dd2199f6315d606dcc561373d64d1d7dfc74aba2246a67632808 md5=24e7d7c4ffe9ec96412786fe58d23073 sha256=cbc3fc0b95250078826b8bfdf98e982c6c3f28919b23a2bb0d2c1d204b13aada +[http://downloads.emperorlinux.com/contrib/pyiw/pyiw-0.3.3.tbz2] +md5=152e59edffd60464b737dfe26f9fedce +sha256=935a3b750ba4034deb41511a7d75393f93566a8a044227bfa19be6b04288dc91 + +[ftp://ftp.logilab.org/pub/pylint/pylint-0.13.2.tar.gz] +md5=79596b1bf05f0e5da7621a0bef798a3c +sha256=749e0b693c9e2a30ef8fe04b0ffaabe05e392e4837b2bf353715fc8a852c5a6e + [ftp://ftp.logilab.org/pub/pylint/pylint-0.3.3.tar.gz] md5=4ed7fb4b8bc126ca2412d9cf074f49c8 sha256=56399d61e1ab5662189bced26f6450684adf179f5dd308bab7602e7aee1334af @@ -13218,10 +16546,18 @@ sha256=56399d61e1ab5662189bced26f6450684adf179f5dd308bab7602e7aee1334af md5=4e3b6b50485610e273fededdb25b47ad sha256=a78315e1ddf5af61cf91000a4b2f8e2df0841edd97b2596b2e0c5505bf8330a2 +[http://heanet.dl.sourceforge.net/pylirc/pylirc-0.0.5.tar.gz] +md5=4e3b6b50485610e273fededdb25b47ad +sha256=a78315e1ddf5af61cf91000a4b2f8e2df0841edd97b2596b2e0c5505bf8330a2 + [http://spacepants.org/src/pymad/download/pymad-0.5.1.tar.gz] md5=9b9a6c77d1b7a7706e77fd2e7e964c01 sha256=4a854db3eefd5afcf5c5434f279a6c304129cce41d9046ba044db73686038412 +[http://spacepants.org/src/pymad/download/pymad-0.6.tar.gz] +md5=a1405fb4b610348565c8d0e400c5ff18 +sha256=1c9fc529b78de7d26e9e47cf182c9f8bf43838d8f62a9c1773540d57f5ebc522 + [http://www.schwarzvogel.de/pkgs/pymetar-0.11.tar.gz] md5=7953d8ac04b889e0968620193c66473a sha256=f3237fe997390469af50f79ed5981f6c8cf051300f23c464aea332c900194a8c @@ -13242,14 +16578,26 @@ sha256=8754669b8220aa1f151b920360029d5ea28c42bec55769059676725fe28397b8 md5=562ddc819d5f6b9d6e1458483e8bbd26 sha256=0ba5090c66aa76a78dac74f92162f3220ac244ad79ce3ee749ff59022c6ca9fd +[http://pypi.python.org/packages/source/p/pyrad/pyrad-1.1.tar.gz] +md5=ab1502f8ccd7409ced757d78b0dee7df +sha256=6a28096ae45261479048a0418b76ad5b6e370031ba8c773f495d8a2b018fc474 + [ftp://ra.stsci.edu/pub/pyraf/v2.3/pyraf-1.2.1.tar.gz] md5=cfa04c40cf969c81e882ad2820aa2914 sha256=9fb0f6ce1b8234af3a18c589212fe418efca36cd5977a23ab8ee5887315358e8 +[ftp://ra.stsci.edu/pub/pyraf/v2.5/pyraf-1.4.tar.gz] +md5=ec97161924bb644263eac9b010e705a5 +sha256=3fe6c1b65c44c105d72635b9fdf08560ec5e155e464a59cfe824a332d770fc0a + [ftp://ftp.logilab.org/pub/pyreverse/pyreverse-0.5.0.tar.gz] md5=a35281f7b3fea3cceff54378ebac09a4 sha256=703b204bd1d57b1bfc0ba95246d229a599259b782ee18072d6041656d412073b +[ftp://ftp.logilab.org/pub/pyreverse/pyreverse-0.5.2.tar.gz] +md5=499cfc69b3cacbdf70a32f253b4a0eb1 +sha256=cb5a5855c68743622b1902c7c106b30316c623c265906f2acb2fa2c9d97b3f37 + [http://www.vanille.de/mirror/pyserial-2.0.tar.bz2] md5=a8db6163466c21845faa6ef57af992da sha256=df76084516b34b5e04dd84e54ef38613d87c56bc04de3d0a711f72fb6707ab0b @@ -13258,6 +16606,10 @@ sha256=df76084516b34b5e04dd84e54ef38613d87c56bc04de3d0a711f72fb6707ab0b md5=14e774b7b6e5aa52820f0590d3b8c4d9 sha256=f37c49e29ab9efae5f0ee5004ed34da00436cc0a99810ac4aae53bacec12ab12 +[http://heanet.dl.sourceforge.net/pyserial/pyserial-2.2.zip] +md5=14e774b7b6e5aa52820f0590d3b8c4d9 +sha256=f37c49e29ab9efae5f0ee5004ed34da00436cc0a99810ac4aae53bacec12ab12 + [http://downloads.sourceforge.net/pysqlite/pysqlite-1.0.tar.gz] md5=f21b19ff048f6bafbbfc3edb86b4c4e4 sha256=ca921f56f8e5aa4032abc25b13cf4c86bf5ba24f631c13dc4f511c45d3781dad @@ -13274,6 +16626,18 @@ sha256=7e66c07d3eb93035f9272d01470e531a7c9f9d9751ad06f3a9c13b4f67c0a06a md5=984074d5d2ca0d6aafd770976e60b8d2 sha256=b957b471779237e1f0adb578a59a7a3c07217d01e9525314c5e6c28c348533ef +[http://heanet.dl.sourceforge.net/meta-tools/pytester-0.6.0.tar.gz] +md5=8a7763e31e4cc3fdf9154c793dda3bc0 +sha256=7d17f07aa470cac6afc1b7e68745c1bf1767913ce52b401296e21cab245fe26b + +[http://labix.org/download/python-constraint/python-constraint-1.1.tar.bz2] +md5=975e5449d6670dd19498bb9ec4856d39 +sha256=0d904161351a8e55b272ed9691b12dca4278bed62fde53ba2a36f479996db910 + +[http://heanet.dl.sourceforge.net/python-fam/python-fam-1.1.1.tar.gz] +md5=f6c760c6d8e5ea69a3fce029f7973558 +sha256=139f069a4455560a8c68c4c18569f2cb453eeda33d522862f7a4af13932d9cdc + [http://dl.cihar.com/python-gammu/latest/python-gammu-0.13.tar.bz2] md5=e92083c150264a2851fa5a7a1ef7bb9f sha256=1f43959d29b12397082a621f9ff436a76ec4b89cd44442ebce2e127e524f9b06 @@ -13290,10 +16654,30 @@ sha256=954134b57e91339fcc5f3413629d9dfae517b42e202588b53e343927fd3fef88 md5=f6bbd996e7dde9eef849468f3123a8f0 sha256=f88bfa19a707f83fe74613da74ac801b5e0cfb98628655ecc4cfac481c05ec38 +[http://rudd-o.com/wp-content/uploads/projects/files/python-inotify/python-inotify-0.1.0.tar.gz] +md5=361bcab2f0cd57cdaf6fe6fe433778b0 +sha256=22557b44a693918d2a4a4b267b22dd2baa542539e225e3999e1a2b1bf91b954a + +[http://heanet.dl.sourceforge.net/python-irclib/python-irclib-0.4.6.tar.gz] +md5=7e4fc4b5382c6b54ede8b6e29270cba8 +sha256=f1f472a698966b0350857b20fc7f6dd86e4a1f83870edfbe30eb36552b449680 + +[http://opensource.bolloretelecom.eu/files/python-netfilter-0.5.4.tar.gz] +md5=2029edea09db0829f16b06042c0004ed +sha256=1ef9ca0508159cc63e1cd097a204664b99eedfa596d326866c8fce9b30715379 + [http://downloads.sourceforge.net/pythondialog/pythondialog-2.7.tar.bz2] md5=19e68b362fe61ef84b981d53d96f0735 sha256=5f7dbcbd28eebadc736d957b9511a87ad5570c8fc822c8123a42e7259773cb7f +[http://heanet.dl.sourceforge.net/pythondialog/pythondialog-2.7.tar.bz2] +md5=19e68b362fe61ef84b981d53d96f0735 +sha256=5f7dbcbd28eebadc736d957b9511a87ad5570c8fc822c8123a42e7259773cb7f + +[http://heanet.dl.sourceforge.net/pyusb/pyusb-0.4.1.tar.gz] +md5=9576c3e471e40e021fa44f36712bbd04 +sha256=9991a999170c533c10dbff227a9d617ef592fd579edfc21a55f0b715a7d329db + [http://www.andrewchatham.com/pyogg/download/pyvorbis-1.3.tar.gz] md5=3ddd0dc996b57827c324910cc899d40b sha256=c7816f5ad6e45634d88de80cff288b1e1a30bf0afb80f7ca3773e634779d64c0 @@ -13318,10 +16702,22 @@ sha256=b7f91cec9b42404a680c780c40d37c825701d7e533c1043bbabf6a0551e86635 md5=e7180e9440d961c6aba5056fdd7997f0 sha256=00689fa56dd87eb47b30565ab7561c94d2cde58372e267116889d2531d880b98 +[http://heanet.dl.sourceforge.net/pyzeroconf/pyzeroconf-0.12.tgz] +md5=e7180e9440d961c6aba5056fdd7997f0 +sha256=00689fa56dd87eb47b30565ab7561c94d2cde58372e267116889d2531d880b98 + +[http://www.libqanava.org/dl/qanava-0.0.7.tar.gz] +md5=ff9b1bef0be97e81691697fa670461fc +sha256=a779934f67b8de54ab075834b7b1024b13f832a4299699a6fcf7c5d5cfc74972 + [http://www.piro.hopto.org/~piro/zaurus/qclockchange-0.1a.tar.gz] md5=05bb0611a9523ef8c095e768b357ba0d sha256=eba68cb125b017743a768bdc3c8788e97674ea499a40a03edee7976bf7b89063 +[http://piro.sytes.net/~piro/zaurus/etc/qclockchange-0.1b.tar.gz] +md5=4131497c414c7fedae1df58cab2ddfa3 +sha256=8cb7000f55ab124d5fe928960c3c9a059faf4f374981b88e74ac0cdb7904c98a + [http://www2.gol.com/users/ikezawa/zaurus/qcoptest_0.1.1.tar.gz] md5=a31f12647c5bb5f93c81465b4e5ff25a sha256=5795b9d619142e2d01016130c7ac71298aa1cabda4806f11762bb8fd489293af @@ -13350,10 +16746,18 @@ sha256=57d9c0be4714f9973ce50f70d77c68b874cc5456cab2d210861a4b1ee32cb67f md5=4a81867ea4212cb5ebd2a6bde91502c0 sha256=5782703fe0cbed713dc17ed10560f55408350310461483715b2c0a58bcd83c49 +[http://heanet.dl.sourceforge.net/qof/qof-0.6.0.tar.gz] +md5=4a81867ea4212cb5ebd2a6bde91502c0 +sha256=5782703fe0cbed713dc17ed10560f55408350310461483715b2c0a58bcd83c49 + [http://downloads.sourceforge.net/qof/qof-0.7.2.tar.gz] md5=dff6bfda556544a240e833d22e509b50 sha256=643359de7833c9fe661fcfc6fc0dc6e3f390bce55041eba123a495e661366990 +[http://heanet.dl.sourceforge.net/qof/qof-0.7.2.tar.gz] +md5=dff6bfda556544a240e833d22e509b50 +sha256=643359de7833c9fe661fcfc6fc0dc6e3f390bce55041eba123a495e661366990 + [http://qolsr.lri.fr/code/qolyester-20050728.tar.bz2] md5=922ac0c5a70d8bcba50b23009b3c4878 sha256=81ce65c833ecd7c98d0af1d19419a3d93af811d99865ed2c8b377a7e507af4a7 @@ -13366,6 +16770,10 @@ sha256=ba2d98c4fabb31a66a66a235a5bbc9cb9e8a2c6f3939e71826d8763a8e7e3c0d md5=6b94eda9bd8e2b884c753d70fee04b3f sha256=3378f7a92f3afbc3663cce8c99790092282eb01101ba21aed4709736cf875ad5 +[http://heanet.dl.sourceforge.net/qpdf2/qpdf2_2.2.1_20040217b.tgz] +md5=6b94eda9bd8e2b884c753d70fee04b3f +sha256=3378f7a92f3afbc3663cce8c99790092282eb01101ba21aed4709736cf875ad5 + [http://www.vanille.de/mirror/qpe-gaim_20041030.tar.bz2] md5=b61c7005301956e231feacff707c7b19 sha256=0b55004666e3353feef384c5795a05b5bf1a3b69a487aee5b8f8e9d66c133b86 @@ -13382,6 +16790,14 @@ sha256=5925931a046074598009ddee5c2989330f2fce570f6590c08a55ac955d1e64a6 md5=974ff064b13640329da21f565ac351e6 sha256=5b070799c3eebf1dd94b1d800da0d532d2e9c353e061d4addc3466232e4a3072 +[http://heanet.dl.sourceforge.net/qpegps/qpegps_0.9.2.3.3_src.zip] +md5=974ff064b13640329da21f565ac351e6 +sha256=5b070799c3eebf1dd94b1d800da0d532d2e9c353e061d4addc3466232e4a3072 + +[http://heanet.dl.sourceforge.net/qpegps/qpegps_0.9.3.1_src.zip] +md5=71b270b75bd773b81be3aaa0e4fc88cd +sha256=f186ef1f117d3a9a9374ac19cfc8daad40a522638e5a758ec79fdd79fac351f4 + [http://downloads.sourceforge.net/qpegps/qpegps_0.9.3_src.zip] md5=2e477f949ee47f446c05e718fae4ec3b sha256=12b7f014e9ac0b650836ee9e54f58bd728c66591b7de94a9a8bd600bfb217622 @@ -13550,6 +16966,18 @@ sha256=4044bfacb44ec9fa9160b56aeb1e76e1ca62b17115ae38298065cbaad16491a7 md5=78137ecaa66ff4c3780bd05f60e51cf5 sha256=a22c927f9ceb7152b0c45c939ccb81217c8d614f3c411c86781b24520f2ec15a +[http://www.quagga.net/download/attic/quagga-0.99.6.tar.gz] +md5=78137ecaa66ff4c3780bd05f60e51cf5 +sha256=a22c927f9ceb7152b0c45c939ccb81217c8d614f3c411c86781b24520f2ec15a + +[http://www.quagga.net/download/attic/quagga-0.99.7.tar.gz] +md5=f448281c50007408ce92c5d8e2107abc +sha256=fd258e4503646129ca77f6fe9c16b69f36f320256768b84dbabd2e4915ab8eb4 + +[http://www.quagga.net/download/attic/quagga-0.99.8.tar.gz] +md5=0a53fb579033fa57ca0e5c3ff0b52105 +sha256=7e745118921982ad7f67a6733161f74c88ba71c587158ab335f0581124be551d + [http://mirror1.pdaXrom.org/rc9/src/quake1src.tar.bz2] md5=28405a79f488570bf4e2e8d453f856a0 sha256=5cd896faae49268327231f299a1187a974cb85acb509fffe8a60b84693a7e3e8 @@ -13562,6 +16990,14 @@ sha256=8a1a1e67980fb664f12dd99851cb600b970371bf35bb5e3242ef4d341877e80f md5=2255c1d9857c725f6e82662593fcb51e sha256=f39180bbf8ca641a4a4b9a2d19fb5ef61f2e368b53729944588549b8cb9ac3c0 +[http://users.softlab.ece.ntua.gr/~ttsiod/quickstartindex.cc] +md5=841603b0b16162b3b47f9f85cb2e1dfd +sha256=8ed21bd84253d3d09a67481d3b441b6410a173b65c952c3e9e2e1c7b67aea6c8 + +[http://users.softlab.ece.ntua.gr/~ttsiod/quickstartsearch.cc] +md5=9874bb8924b9ffcfb82ffdfb9bac94d1 +sha256=643bcc948b53b2f2a72fc1698574e1004831784467f660b0da9955db0b392f1d + [http://download.savannah.gnu.org/releases/quilt/quilt-0.39.tar.gz] md5=34f0c654aefba0342db6c676988634b5 sha256=06b32d6f8fe7065b4c2c8142a244374e1be963757125bac20ba016b92231b5bf @@ -13578,14 +17014,26 @@ sha256=47bf030565bb462840db694acc183273455714028c74974c5b3a3bd4ad29ad89 md5=142b10ab27e837c3c4603cf9a7e9343b sha256=3b6db68d53441119dced27e5bad26ec087294cb9d878d37bcea61e1f1e4849a1 +[http://heanet.dl.sourceforge.net/qwt/qwt-4.2.0rc1.tgz] +md5=142b10ab27e837c3c4603cf9a7e9343b +sha256=3b6db68d53441119dced27e5bad26ec087294cb9d878d37bcea61e1f1e4849a1 + [http://www.xm1math.net/qxmp/qxmp-1.0.tar.bz2] md5=9eb52b5b6c1dda6ff96790acb9915da8 sha256=285be4b83819c4bf24b2db1e120a9c8e1756863f49aa631acf09bbbae1e04709 +[ftp://ftp.westwood.com/pub/redalert/previews/demo/ra95demo.zip] +md5=b44ab9ec1bc634ea755587d1988e3722 +sha256=8c48bdb53523ea4d353a7914d9234ce4e3e6f5832eeb47b3b6b005853e8748d2 + [http://downloads.sourceforge.net/radlib/radlib-2.6.2.tar.gz] md5=e3a4b94c4c70b66accb018fdd0e93209 sha256=fff54e79937babd9e519f2f56c60e15eee6c453cba9ad2d238154d6fc96450bf +[http://heanet.dl.sourceforge.net/radlib/radlib-2.6.2.tar.gz] +md5=e3a4b94c4c70b66accb018fdd0e93209 +sha256=fff54e79937babd9e519f2f56c60e15eee6c453cba9ad2d238154d6fc96450bf + [http://v6web.litech.org/radvd/dist/radvd-0.7.2.tar.gz] md5=26ea468b2323e44cf827ae5f84d18dc8 sha256=66ed3cbb85c77aaf8293e3e5df678dc9ade82253628d2ce8cec570655cf157e9 @@ -13610,18 +17058,34 @@ sha256=7a5eb58f10d02f58c2f7fb153bb5dc6d72173d5fa3d317bdbd9674f4577e0ad0 md5=968a1e3f5161bab80c306df31c54cfb1 sha256=67332a0a16471c1c3592d3e51ae5cc0562f9a2f1b1ab942b493f7d5080bd2c33 +[http://heanet.dl.sourceforge.net/rdesktop/rdesktop-1.3.1.tar.gz] +md5=968a1e3f5161bab80c306df31c54cfb1 +sha256=67332a0a16471c1c3592d3e51ae5cc0562f9a2f1b1ab942b493f7d5080bd2c33 + [http://downloads.sourceforge.net/rdesktop/rdesktop-1.4.1.tar.gz] md5=78dd2bae04edf1cb9f65c29930dcc993 sha256=db3da6016ceec07efda277adcb175b14c4e5255b0f85137f4a1dce79b0ee5144 +[http://heanet.dl.sourceforge.net/rdesktop/rdesktop-1.4.1.tar.gz] +md5=78dd2bae04edf1cb9f65c29930dcc993 +sha256=db3da6016ceec07efda277adcb175b14c4e5255b0f85137f4a1dce79b0ee5144 + [http://downloads.sourceforge.net/rdesktop/rdesktop-1.5.0.tar.gz] md5=433546f60fc0f201e99307ba188369ed sha256=5ead17c3d29cb1028aeca485ee7a8c65694c1b02a1b7014c3da920b265a438aa +[http://heanet.dl.sourceforge.net/rdesktop/rdesktop-1.5.0.tar.gz] +md5=433546f60fc0f201e99307ba188369ed +sha256=5ead17c3d29cb1028aeca485ee7a8c65694c1b02a1b7014c3da920b265a438aa + [http://downloads.sourceforge.net/rdesktop/rdesktop-1.6.0.tar.gz] md5=c6fcbed7f0ad7e60ac5fcb2d324d8b16 sha256=35026eaa8e14ca8bd0ba3730926f14222f8452f2ac662623bbf1909d8b060979 +[http://heanet.dl.sourceforge.net/rdesktop/rdesktop-1.6.0.tar.gz] +md5=c6fcbed7f0ad7e60ac5fcb2d324d8b16 +sha256=35026eaa8e14ca8bd0ba3730926f14222f8452f2ac662623bbf1909d8b060979 + [http://qa.debian.org/watch/sf.php/rdesktop/rdesktop-1.6.0.tar.gz] md5=c6fcbed7f0ad7e60ac5fcb2d324d8b16 sha256=35026eaa8e14ca8bd0ba3730926f14222f8452f2ac662623bbf1909d8b060979 @@ -13638,6 +17102,18 @@ sha256=0cbfb4b3940ecc9e351bbd72b5a9c53af050f2f5f63d500e8ff714ab6c91e447 md5=d6168a6c18d5912e98d9343b33fdad97 sha256=1a47035dd0f283dbc6c0964679afdf6f2c975b462419d1880ac379dc880ba74a +[http://heanet.dl.sourceforge.net/re2c/re2c-0.13.1.tar.gz] +md5=d6168a6c18d5912e98d9343b33fdad97 +sha256=1a47035dd0f283dbc6c0964679afdf6f2c975b462419d1880ac379dc880ba74a + +[http://john.fremlin.de/programs/linux/read-edid/read-edid-1.4.1.tar.gz] +md5=aadc9a21ea4a1c9819757cda973372f4 +sha256=bffac0107bf6a64a35291e4ca1afc8823996ca6b334f05e6debe9fa558934947 + +[http://ftp.de.debian.org/debian/pool/main/r/read-edid/read-edid_1.4.1-2.1.diff.gz] +md5=77a18acd52ece9540d62859e964943bf +sha256=4d129037dd239adf58280cd7f1110622995d5c1ce428d53b17cbdf32cfbadb96 + [ftp://ftp.cwru.edu/pub/bash/readline-4.3.tar.gz] md5=f86f7cb717ab321fe15f1bbcb058c11e sha256=eeaf6f050b9f515b0636e5b4f2c153f9ef78e9061ee5dd74f612fab54c77bf88 @@ -13670,6 +17146,10 @@ sha256=7cf45008810ca894b085ae0eb1a0071f0cb6989dd9ce35cfcd617fedf7018c7f md5=ed807a83455b8aaff5e894e94161a352 sha256=0b8591a646d214f0f959483dfcd9b9624996790d546982d814b47ca8fe4c5725 +[http://heanet.dl.sourceforge.net/refdbg/refdbg-1.2.tar.gz] +md5=ed807a83455b8aaff5e894e94161a352 +sha256=0b8591a646d214f0f959483dfcd9b9624996790d546982d814b47ca8fe4c5725 + [http://savannah.nongnu.org/download/regex-markup/regex-markup-0.10.0.tar.gz] md5=47f9df1cd3865d20aecd6d73e7a7518d sha256=879f0af7622c1eb2d1b7c5f7d0ec53ea96fd48b05bc4f4c17542a2ea17fafba5 @@ -13678,6 +17158,10 @@ sha256=879f0af7622c1eb2d1b7c5f7d0ec53ea96fd48b05bc4f4c17542a2ea17fafba5 md5=600da451b706c4f24451299e348da555 sha256=74f1521cc613855d26881c7b46fe72b59dafdf377cf26ec9d4f064979039a27f +[http://heanet.dl.sourceforge.net/regina-rexx/regina33.zip] +md5=600da451b706c4f24451299e348da555 +sha256=74f1521cc613855d26881c7b46fe72b59dafdf377cf26ec9d4f064979039a27f + [ftp://ftp.namesys.com/pub/reiser4progs/old-versions/reiser4progs-1.0.4.tar.gz] md5=b2cbc8eb9429b50e0e99ba4eeda4801e sha256=4990e24f9a49588cc2d7c3646fb9b5c3946213db26e1df129d218265a88ada2e @@ -13690,6 +17174,14 @@ sha256=c0862c53aecd23724a72d32fb54706d61d9858925c78408a2852d042417e68bf md5=b42cf15f6651c3ceff5cb84996c0d539 sha256=c0862c53aecd23724a72d32fb54706d61d9858925c78408a2852d042417e68bf +[ftp://ftp.nl.debian.org/debian/pool/main/r/reiserfsprogs/reiserfsprogs_3.6.19.orig.tar.gz] +md5=b42cf15f6651c3ceff5cb84996c0d539 +sha256=c0862c53aecd23724a72d32fb54706d61d9858925c78408a2852d042417e68bf + +[http://xorg.freedesktop.org/releases/individual/app/rendercheck-1.3.tar.bz2] +md5=eb6a358b79b0aeaf03d56c5e1f394365 +sha256=60e83bebab37c2754ae77cc359c0b67e8bc72b46821c7fa260ccc5c811bd741f + [http://xlibs.freedesktop.org/release/renderext-0.8.tar.bz2] md5=b00a97b00bf93ab2ac6442ea13ea9c0b sha256=779317ca2e99f02b394af0c6f77f16def56de3b71a5d9f9ac6e5e9cfb65192e1 @@ -13714,6 +17206,14 @@ sha256=467910e5f6b6e137db93a1ccaf668d4146c3dd27dfa0f368b2a20a0a14a23592 md5=fa360e7dcdb195fa5738216facc881c6 sha256=6c2bd1aa8894a7eb180945a39780e00f4b3949aa487fe278fcace5310d4a2da5 +[ftp://ftp.nl.debian.org/debian/pool/main/r/resolvconf/resolvconf_1.28.tar.gz] +md5=fa360e7dcdb195fa5738216facc881c6 +sha256=6c2bd1aa8894a7eb180945a39780e00f4b3949aa487fe278fcace5310d4a2da5 + +[ftp://ftp.nl.debian.org/debian/pool/main/r/resolvconf/resolvconf_1.41.tar.gz] +md5=f7cc9a2a30f480be3ecefedea363575c +sha256=357ae73b048a2a6db46c8b28e0b79bc9448dbae96f52e44b07db7e40895ef2cf + [http://xlibs.freedesktop.org/release/resourceext-1.0.tar.bz2] md5=007713326ca5f1adfd39f3cb587c3b9b sha256=78e0a532bb84d6d85e90244bf3bb0ee9a5246545ebc9b677173e37e231d30cdc @@ -13766,6 +17266,10 @@ sha256=1126f0ecc8cab3af14a562cddc5d8ffeef47df7eba34a7aadcdee35a25ec2b1e md5=773c1e4291177c5b7a887763f6cb83a6 sha256=bfaa36f246dc01775268644c153a2c65f5e2009b45d19f72e3d06c83c59d3aed +[http://heanet.dl.sourceforge.net/roadmap/roadmap-1.1.0-src.tar.gz] +md5=773c1e4291177c5b7a887763f6cb83a6 +sha256=bfaa36f246dc01775268644c153a2c65f5e2009b45d19f72e3d06c83c59d3aed + [http://www.roadmap.digitalomaha.net/roadmap/roadmap_1_0_12p2_src.tar.gz] md5=749f5923a146f0e29f2bce127f09c2af sha256=2d544f4205cc42b4da2cd39ca589f2c826f56ad106e571450fc2694666440a92 @@ -13782,6 +17286,14 @@ sha256=11f9cc331d0be87f0f172840e2bb6e03e27c3b8e9ecbb3eb8cffdc5b73afbd95 md5=56e6a29f2dbdf11d6f4b74a3f03ff959 sha256=d91120d78e770c9c09822560dacb42fca641d092cbe52064ca7232f089062921 +[http://heanet.dl.sourceforge.net/rox/rox-filer-2.5.tar.bz2] +md5=56e6a29f2dbdf11d6f4b74a3f03ff959 +sha256=d91120d78e770c9c09822560dacb42fca641d092cbe52064ca7232f089062921 + +[http://www.roaringpenguin.com/files/download/rp-pppoe-3.8.tar.gz] +md5=0e32760f498f9cde44081ee6aafc823b +sha256=d916e9cfe1e62395f63a5361936fa855f6d0f0a37dc7227b394cdb725f553479 + [ftp://ftp.jbj.org/pub/rpm-4.4.x/rpm-4.4-1.src.rpm] md5=07f932a5f2c06bc14278f91782613c12 sha256=a515675401cc9aff33cf8fd48d23a177cb9385907758c0e29a1dab693f55efe2 @@ -13806,6 +17318,14 @@ sha256=413523cd8ebd4429c192c5cab7a85d017655b32f21a9c261169597180889b370 md5=1fa701df95bb538fd0f0bf18d51534c7 sha256=ed783c3141176ae84b7caec3f76cb483b09cf5c6fbc675abcdaaf5970ff0a4f1 +[http://www.claws-mail.org/downloads/plugins/rssyl-0.18.tar.gz] +md5=7dfd8ae53cf1ed88d5e4150f77b9df63 +sha256=b02eff373fd66daec2ffd75afd3ad97c32c45679883ee65b21aa50fec92fc752 + +[http://xorg.freedesktop.org/releases/individual/app/rstart-1.0.2.tar.bz2] +md5=99aea04a27197056368a4431f30f9cdb +sha256=02fc48b5069018e4262f0e5ebb669acedc04167307c98f0fdb2ca22e568e9596 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/rstart-X11R7.0-1.0.1.tar.bz2] md5=6f33a1bd8e99372b7544ddfcad456369 sha256=d662e932154df4d99ffcf29cd1efe5adb7b0eb1841ccffe9155b9c5d8055434c @@ -13838,10 +17358,26 @@ sha256=17697db5bb9de399b71f7927070f60b3554b70b0ecc0419b50455d56560ea169 md5=c7536e907363ea1da63430b49e42931d sha256=d7d5a3d17f492049fceb2b9ea22c4c2af7243506219d83f7005b77ae410add29 +[http://heanet.dl.sourceforge.net/nogravity/rt-nogravity-data.zip] +md5=c7536e907363ea1da63430b49e42931d +sha256=d7d5a3d17f492049fceb2b9ea22c4c2af7243506219d83f7005b77ae410add29 + +[http://www.kernel.org/pub/linux/kernel/people/tglx/rt-tests/rt-tests-0.21.tar.bz2] +md5=b215112a3e06e7d932c64a91a4efa1e0 +sha256=ffaa7aad27b1b1518d270bc5812198a3029dbf6feb13823739c503e1f7f67c5f + [http://downloads.sourceforge.net/rt2400/rt2570-1.1.0-b2.tar.gz] md5=f4131d670920a878b4d4a0f5d4d8b93a sha256=a677291149687339396fed06c46cc08fd76fcb62d0f4459cae02c6cf54b4eb39 +[http://heanet.dl.sourceforge.net/rt2400/rt2570-1.1.0-b2.tar.gz] +md5=f4131d670920a878b4d4a0f5d4d8b93a +sha256=a677291149687339396fed06c46cc08fd76fcb62d0f4459cae02c6cf54b4eb39 + +[http://homepages.tu-darmstadt.de/~p_larbig/wlan/rt2570-k2wrlz-1.6.0.tar.bz2] +md5=9b96ffc8ceece0522daac443bc41c4af +sha256=31248ac19b7935638c373aeced6187262a440d195dabfef6128845b4b16bee6c + [http://homepages.tu-darmstadt.de/~p_larbig/wlan/rt2570-k2wrlz-1.6.1.tar.bz2] md5=87947cf1868ac37d4d756f3585dbf1e6 sha256=11d2c4a1b69a4b2b49811128a41c33f25c71e590b019ace392761598ca3d419f @@ -13854,10 +17390,18 @@ sha256=1d8fb8980025a0126520bb8f92dd0a5ce59c72e10889323212d3b4fd5496390a md5=0340e1ceba72330111e6fc85679c75bf sha256=94beb93da6dabd16892c899f496eeec745fc69b856abd0d19896b2a4b0fb7c72 +[http://homepages.tu-darmstadt.de/~p_larbig/wlan/rt73-k2wrlz-1.0.0.tar.bz2] +md5=be1820ec548283ccaf5eea7094193351 +sha256=6b9dfcfe509f3c659e2450610ad3bf0a9eef613481085b1b1bfed6647f21782d + [http://homepages.tu-darmstadt.de/~p_larbig/wlan/rt73-k2wrlz-2.0.1.tar.bz2] md5=121e2ed57d01e04f82e942c502b1ca75 sha256=e04718f3989bc567bf185cacfb27e324218cce5f5c87fca65328e49a3b56e603 +[http://homepages.tu-darmstadt.de/~p_larbig/wlan/rt73-k2wrlz-3.0.0.tar.bz2] +md5=952af13db40a8aa723c859256c697a9c +sha256=91619748c4dba733c60eb8a40805c972f407b2463dc6de856ac40336d66bc16c + [http://music.mcgill.ca/~gary/rtaudio/release/rtaudio-3.0.1.tar.gz] md5=5b60500bc9605d2409b71124e48aa929 sha256=59cc003bab753335b3ce14a908e663ea782514b3531dc7030379ff753ef1a78c @@ -13910,6 +17454,14 @@ sha256=33d2363d40b1db7568864dc063ce4af70e50a9f9292a16445f0b167618d8fbba md5=1b8cfd298b9fa10c4779c98fbe8e0bd3 sha256=564d375388284d7f13003202cba9fc1976b045bd14b3f12adec1449cded33f26 +[http://heanet.dl.sourceforge.net/sablevm/sablevm-1.12.tar.gz] +md5=6648af9bb5dd3dbbc8cb6835371f5ecd +sha256=576c1af8affdebb0d5e10f8a8edad10e994965cef6db7980a3c52e25e15d6b94 + +[http://heanet.dl.sourceforge.net/sablevm/sablevm-classpath-1.12.tar.gz] +md5=938602a0648660f13357115b6f1fbd60 +sha256=3e7b039a188ce5b2f74c86309936e193ea5d5eefcbdcaa92b38bc3f7e1e9fec4 + [http://sablevm.org/download/release/1.12/sablevm-classpath-1.12.tar.gz] md5=ae8788df73ee0c2dd1ba8ed0f6d9b817 sha256=1e50e20b9f597235709eadda23e6d15d3cdd5e63dbfeed6f50aeb5a85b31c405 @@ -13918,6 +17470,18 @@ sha256=1e50e20b9f597235709eadda23e6d15d3cdd5e63dbfeed6f50aeb5a85b31c405 md5=4bd5142c1741bb302dcd8e3b2e22dcd5 sha256=c93f35baa7100fa04033b646b273ebf1da01954ea1d1dd33ab599b92ed916fa1 +[http://heanet.dl.sourceforge.net/sailcut/sailcut-1.3.2.tar.gz] +md5=4bd5142c1741bb302dcd8e3b2e22dcd5 +sha256=c93f35baa7100fa04033b646b273ebf1da01954ea1d1dd33ab599b92ed916fa1 + +[http://www.pleyades.net/david/projects/sakura/sakura-2.1.0.tar.bz2] +md5=37ef8dee0b01107fc31ad3683af5572d +sha256=aa053f8b561a1ce50955d72a7b0e2145178edca9cff40ab2e6e8f1d71cac9d6b + +[ftp://ftp.suse.com/pub/people/tiwai/salsa-lib/salsa-lib-0.0.1.tar.bz2] +md5=abfe905d58fbc0910434d08539e36ff6 +sha256=8088a18b109f2c47eedd899f731b6f3fa9b92fa8b91335db0348802d28f8519e + [http://samba.org/samba/ftp/stable/samba-3.0.10.tar.gz] md5=b19fd86d3c11a1b43f75a5988cd9ceeb sha256=d13a8e562caaa21afe45027630baa33f0fab0bd25a7cfa2218307545dfbac73e @@ -13954,6 +17518,10 @@ sha256=89106b5bc5a66ca0eaf4553371c89ac8542a757964d7a91c07b8fb77e040eebe md5=8c0936272dcfd4e98c51512699f1c06f sha256=13271a7eb4dc4aa6072162abbd78848e4faad32c468b9b44e7f95cde96a4e17e +[ftp://ftp.sane-project.org/pub/sane/old-versions/sane-frontends-1.0.13/sane-frontends-1.0.13.tar.gz] +md5=2930626e627df49b45192a722cedc8a6 +sha256=94cd595fe1ae130b8490d5690c7665d15536554473ad648ed46fc0ac3f383a80 + [http://stage.maemo.org/pool/maemo/ossw/source/s/sapwood/sapwood_1.20-1.tar.gz] md5=92dbb7fbcf468030662d4a103ecaca58 sha256=d0baabff2a5dba4ad8dfc79f15f0d3110ab88564a451c835b56618cf808ba870 @@ -13998,6 +17566,10 @@ sha256=0e2e0524f0559daa6816e4f7ad83b29891455c35c61694bcc5869e2011e3c808 md5=c7b0363d646fbdee7fd09042de6fb0a7 sha256=2068e0dc61189a37487dcf432909540e30579e452907ccbbd97d914fd0e06911 +[http://www.secdev.org/projects/scapy/files/scapy-1.1.1.tar.gz] +md5=8ac720a1bea4304797c713ef1ed063f1 +sha256=2a11ba05f34b2978af3add623a641e0340d39322b4ca2bd26baae743c78de956 + [http://savannah.nongnu.org/download/scew/scew-0.3.1.tar.gz] md5=e9a69f7014cad332cc78667b07eebbce sha256=0e966359b9e1de31bf375b2a982b7f63cc6dd0c253bda480d1913c668791972a @@ -14006,10 +17578,18 @@ sha256=0e966359b9e1de31bf375b2a982b7f63cc6dd0c253bda480d1913c668791972a md5=0fd84a82c51f67d2d0531aab78f66d2a sha256=fc5cd165ecc07d2e254412f39a17a26a753bf081a0e02ed5db0b02d2f6bacc6f +[http://people.redhat.com/mingo/cfs-scheduler/sched-cfs-v2.6.23.12-v24.1.patch] +md5=a4a3cfd0abdb876cd6a353b882791ba2 +sha256=51703277e08c47f8c07585ae2319543ff89013465da67828b556b7e7df9313f8 + [http://downloads.sourceforge.net/schrodinger/schroedinger-0.2.0.0.tar.gz] md5=45f8d0efd9b76579a005e4ffe7f96ac3 sha256=0b01f9fb9c869ecb6e066993d59e34789f82d445438480ac0e2dc30f29d047a0 +[http://heanet.dl.sourceforge.net/schrodinger/schroedinger-0.2.0.0.tar.gz] +md5=45f8d0efd9b76579a005e4ffe7f96ac3 +sha256=0b01f9fb9c869ecb6e066993d59e34789f82d445438480ac0e2dc30f29d047a0 + [http://www.diracvideo.org/download/schroedinger/schroedinger-1.0.5.tar.gz] md5=55596c41572c5efcf4b2cae9c68c2152 sha256=bbb73ebc3a22f53e75dfbaa1718eebcc5a3619bb200b50df42d5377b99ebf4d4 @@ -14026,10 +17606,18 @@ sha256=2632398044dc6cb3d49b8760bfb0b878445daaa415af419d6d6a09eb7e423c31 md5=de530fa29e83f3b6efb618873398fa31 sha256=195df54afedd60767e55393187df0f1e7e0ddb3a46347a5ee82d5050f964c3ba +[http://heanet.dl.sourceforge.net/scons/scons-0.97.tar.gz] +md5=de530fa29e83f3b6efb618873398fa31 +sha256=195df54afedd60767e55393187df0f1e7e0ddb3a46347a5ee82d5050f964c3ba + [http://downloads.sourceforge.net/wordlist/scowl-6.tar.gz] md5=69d9b4b34dc85011d89115fa3cd2e011 sha256=2468f134a2a384eec8d154c7f8bdb9212c2601036aeec29bb38fdeaad3b14912 +[http://heanet.dl.sourceforge.net/wordlist/scowl-6.tar.gz] +md5=69d9b4b34dc85011d89115fa3cd2e011 +sha256=2468f134a2a384eec8d154c7f8bdb9212c2601036aeec29bb38fdeaad3b14912 + [ftp://ftp.gnu.org/gnu/screen/screen-4.0.2.tar.gz] md5=ed68ea9b43d9fba0972cb017a24940a1 sha256=05d087656d232b38c82379dfc66bf526d08e75e1f4c626acea4a2dda1ebcc845 @@ -14046,6 +17634,14 @@ sha256=c426660739a93f94364de29cde222f7c3621364d9843b52c91735ba8b6a81c62 md5=659bf15bbbb31817ebad9372c8827618 sha256=2a19694b9825ec13349adac691933a8f890117ef566a9cd58a9e439030a96a3a +[ftp://ftp.nl.debian.org/debian/pool/main/s/screen/screen_4.0.2-4.1sarge1.diff.gz] +md5=659bf15bbbb31817ebad9372c8827618 +sha256=2a19694b9825ec13349adac691933a8f890117ef566a9cd58a9e439030a96a3a + +[http://xorg.freedesktop.org/releases/individual/app/scripts-1.0.1.tar.bz2] +md5=08c7f078fc351196c21db3a8206d482d +sha256=1b154b4359302ca499818c45396325aef9ff364d6ff4ce5c3769e4803994a136 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/scripts-X11R7.0-1.0.1.tar.bz2] md5=b5b43aa53372b78f1d67c86301e3dc02 sha256=b502bc765cffc23189b77ba4d22e843fe03404bfab4e24b97ff4daee58176b33 @@ -14066,6 +17662,10 @@ sha256=24ec219323a3d1e20a9d080b2352411f37d171a4a02e12a2930e6ea199ee4341 md5=86b310223642b6841c9e04ecd4d7fed8 sha256=6b53eb1645ac64667f0ee109b3456ba909b1c8bec432330a9d90e9a20980823b +[ftp://ftp.nl.debian.org/debian/pool/main/s/scsi-idle/scsi-idle_2.4.23-5.tar.gz] +md5=86b310223642b6841c9e04ecd4d7fed8 +sha256=6b53eb1645ac64667f0ee109b3456ba909b1c8bec432330a9d90e9a20980823b + [http://downloads.sourceforge.net/scummvm/scummvm-0.12.0.tar.bz2] md5=cd5620c57645948c8da0d4d9c9fcffb3 sha256=db9aa3bbb648d09639d9e16f1872558a105f222dac5e3d0a16370b4cf7c3e699 @@ -14074,10 +17674,22 @@ sha256=db9aa3bbb648d09639d9e16f1872558a105f222dac5e3d0a16370b4cf7c3e699 md5=efc4207a7f10b24e9fc5afa10ed9c455 sha256=ac22ad70ad6f88c7c8450bc06ba38602331c7470abcafb9e7fe62bfb505b1a3b +[http://heanet.dl.sourceforge.net/scummvm/scummvm-0.6.0.tar.bz2] +md5=efc4207a7f10b24e9fc5afa10ed9c455 +sha256=ac22ad70ad6f88c7c8450bc06ba38602331c7470abcafb9e7fe62bfb505b1a3b + +[http://heanet.dl.sourceforge.net/scummvm/scummvm-0.6.1b.tar.bz2] +md5=143dd7cfe0995922c49e1f8a6cdf2055 +sha256=29007f54d9e5a37a3da9f51670de7828dde9a3559beddbdd5c2f59796fb220f6 + [http://puzzle.dl.sourceforge.net/scummvm/scummvm-0.6.1b.tar.bz2] md5=143dd7cfe0995922c49e1f8a6cdf2055 sha256=29007f54d9e5a37a3da9f51670de7828dde9a3559beddbdd5c2f59796fb220f6 +[http://heanet.dl.sourceforge.net/scummvm/scummvm-0.9.0.tar.bz2] +md5=5eede9c97d1883f80770a3e211419783 +sha256=5824f67aa37b00fc8b92ac4fcc413a9a7d868174dcd6df580c4d706807e4545e + [http://puzzle.dl.sourceforge.net/scummvm/scummvm-0.9.0.tar.bz2] md5=5eede9c97d1883f80770a3e211419783 sha256=5824f67aa37b00fc8b92ac4fcc413a9a7d868174dcd6df580c4d706807e4545e @@ -14086,18 +17698,34 @@ sha256=5824f67aa37b00fc8b92ac4fcc413a9a7d868174dcd6df580c4d706807e4545e md5=30a82ad466bae223875e66ee14b94904 sha256=5cd5d9c06281a4f81d85d9a9f9b0410045d4a764a855f06f574183b528c15d1a +[http://heanet.dl.sourceforge.net/scummvm/scummvm-0.9.1.tar.bz2] +md5=30a82ad466bae223875e66ee14b94904 +sha256=5cd5d9c06281a4f81d85d9a9f9b0410045d4a764a855f06f574183b528c15d1a + [ftp://ftp.debian.org/debian/pool/main/s/scw/scw_0.4.3.orig.tar.gz] md5=4c9fb66fa496cf32542e92f32f821818 sha256=fca3763b05f064728c9ff248fa0766808d1ceae561b88ad202811924e4ccdb45 +[ftp://ftp.nl.debian.org/debian/pool/main/s/scw/scw_0.4.3.orig.tar.gz] +md5=4c9fb66fa496cf32542e92f32f821818 +sha256=fca3763b05f064728c9ff248fa0766808d1ceae561b88ad202811924e4ccdb45 + [http://downloads.sourceforge.net/sdcc/sdcc-2.5.0.tar.gz] md5=c572e7842fe36348f5b2972c1025a75a sha256=138d2e59569f76f1a5d35bd5d85e7006eeebc4f48cd3dac902e2824ed50c3d80 +[http://heanet.dl.sourceforge.net/sdcc/sdcc-2.5.0.tar.gz] +md5=c572e7842fe36348f5b2972c1025a75a +sha256=138d2e59569f76f1a5d35bd5d85e7006eeebc4f48cd3dac902e2824ed50c3d80 + [http://downloads.sourceforge.net/sdcc/sdcc-src-2.8.0.tar.bz2] md5=1b9c2e581b92d5e3f13bca37c5784080 sha256=cbb035699d8910c7ca2fa360a773504b44165e98042ed8c208fea2fe47a96557 +[http://heanet.dl.sourceforge.net/sdcc/sdcc-src-2.8.0.tar.bz2] +md5=1b9c2e581b92d5e3f13bca37c5784080 +sha256=cbb035699d8910c7ca2fa360a773504b44165e98042ed8c208fea2fe47a96557 + [http://repository.maemo.org/pool/maemo/ossw/source/s/sdk-default-icons/sdk-default-icons_0.2-1.tar.gz] md5=85ccc685b72f6f77da8a4b0ef7c5281b sha256=8dcd3aac06f24111461433353015cd36bfaaf45b74ff9aa336713759b6759b0c @@ -14150,6 +17778,10 @@ sha256=3a8b96d7955a022045c781c1b8ac266fa8cdd47295744d60e7c00a6e88abbb3d md5=bee5d87d40615e67c84ab0b0c65049ba sha256=c23c12259854c7cec6d19bf397afff4a542a22170b14de73b321aa8cafcf3a86 +[http://xorg.freedesktop.org/releases/individual/app/sessreg-1.0.3.tar.bz2] +md5=07665816f2623ec82e665fb7d31c6cef +sha256=7d0c145d53246ddf09fc749f91324897ed9a3da0064808f99b789c37470080dc + [http://xorg.freedesktop.org/releases/individual/app/sessreg-1.0.4.tar.bz2] md5=839e968d7197b9563f0fd8a5a3aac2e3 sha256=23e163502e208ac16f04a12b15f7f8dcd9919f0149c714353b7f92539b7e9802 @@ -14162,6 +17794,10 @@ sha256=3769ad5059a2841a8ee28fc8a7d3a3ca8eb59f4fd46d0bd629829f3841202734 md5=b30985591b239d2913382b97817ba790 sha256=4639247cb15c306f2182eea53982fe8007a8b9080cb9c1a8a38d5d2a45e4c20f +[ftp://ftp.nl.debian.org/debian/pool/main/s/setmixer/setmixer_27DEC94.orig.tar.gz] +md5=b30985591b239d2913382b97817ba790 +sha256=4639247cb15c306f2182eea53982fe8007a8b9080cb9c1a8a38d5d2a45e4c20f + [http://www.vanheusden.com/setpwc/setpwc-0.9.tgz] md5=0ec56a142d79bc2dd346fc6f12f9aa5e sha256=827940306b30e3d92805052b31e8bff2f326fca7574b162260ca5386027091c1 @@ -14178,6 +17814,14 @@ sha256=7e4487d320ac31558563424189435d396ddf77953bb23111a17a3d1487b5794a md5=c4867d72c41564318e0107745eb7a0f2 sha256=7e4487d320ac31558563424189435d396ddf77953bb23111a17a3d1487b5794a +[http://heanet.dl.sourceforge.net/setserial/setserial-2.17.tar.gz] +md5=c4867d72c41564318e0107745eb7a0f2 +sha256=7e4487d320ac31558563424189435d396ddf77953bb23111a17a3d1487b5794a + +[http://mput.de/~kristian/.openmoko/settingsgui-0.8-beta.tar.bz2] +md5=4a4c4855447f506078dfb762ba72e35d +sha256=5f4f727cbe982db701dcc4a70cd2c19a4c153a4b0b35a6b5b561b48d53649855 + [http://mput.de/~kristian/.openmoko/settingsgui-0.8.tar.bz2] md5=8b6f19636983fe22bad5ee1e0906c837 sha256=e839e55b2d7babbbf0302429e9c58ff6e62a064c9ae4cb2d6f957a89b81e0022 @@ -14250,6 +17894,10 @@ sha256=1bd129c7a68537533c77267992eaf490ff64bcc3d01c6f4b51343b8f266ae99e md5=016f49d71bc32eee2b5d11fc1600cfbe sha256=0d48ffe4d801180c15466f20aaa5802adb9d22067e8941e051dc3c64717ec3c2 +[http://heanet.dl.sourceforge.net/shfs/shfs-0.35.tar.gz] +md5=016f49d71bc32eee2b5d11fc1600cfbe +sha256=0d48ffe4d801180c15466f20aaa5802adb9d22067e8941e051dc3c64717ec3c2 + [http://handhelds.org/~zecke/oe_packages/shisensho_V1.0.0.tar.gz] md5=001103f5847e71b0198c3a11df7d62d0 sha256=17cebdc8ae4374c3944a3233d86278f4d09aaf90279b48e98367e9387f7e6acc @@ -14262,6 +17910,14 @@ sha256=feec48d2d79aad6d5c7daa911702fccb3dce18ac2e1ee23341d135275ce2a719 md5=4d0f756b5b63a68593b2de560c1a5b35 sha256=06064e929423b1bd60a31652d2a31763dccc48e86ea9cdefbcadf524df2bd3f2 +[http://xorg.freedesktop.org/releases/individual/app/showfont-1.0.1.tar.bz2] +md5=339b2faf1ca5114fda414338e15b6e21 +sha256=87db3cf12914abc6b074d12b35c7f39c8fd7b5d3933b339e2c1260a51061760c + +[http://xorg.freedesktop.org/releases/individual/app/showfont-1.0.2.tar.bz2] +md5=8f83d774ed4cc2a6dca86edd856d820a +sha256=9bd0373659b2f24120dba887fd155f99aed02e4a7c2afae69e7db1c1fa05e88c + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/showfont-X11R7.0-1.0.1.tar.bz2] md5=334cb5133960108ac2c24ee27e16bb8e sha256=58716b9fb29b8b9397577ebddfe01202f7dcd4be90c1f73fab2fb8794b83b390 @@ -14270,6 +17926,10 @@ sha256=58716b9fb29b8b9397577ebddfe01202f7dcd4be90c1f73fab2fb8794b83b390 md5=bba4a99e59581066e905c9326a724ba5 sha256=bc6bfd100c495e74baa651c470252484b19bfc2e6fa8520f591b0c01b9fcfb5d +[http://www.sparc-boot.org/pub/silo/silo-1.4.8.tar.bz2] +md5=badc27616dc92ad42f5e30751a6b322c +sha256=2c5e3a832662aa962f700e64ce3c1fc8c77e801000c47b8d66feeb03e66d95de + [http://simh.trailing-edge.com/sources/simhv37-1.zip] md5=c8c57379e2e9afbf9817fbbe99ee1106 sha256=4c3f7374e1faa54c705f7c139e992bb7d3492e9dc62aca5b1e24e5a43bb0f132 @@ -14338,10 +17998,18 @@ sha256=28a6af2d1490374de26084e346bbd227586c0f6232dcf4cfebf80413adc7d932 md5=dfe9f5d3f17075ec23eb923899ac5f24 sha256=124499d3c5d2d44ab07b60c235547079044f3728fd3c907987900e270bd947f8 +[http://heanet.dl.sourceforge.net/slotsig/slotsig-0.6.tar.bz2] +md5=dfe9f5d3f17075ec23eb923899ac5f24 +sha256=124499d3c5d2d44ab07b60c235547079044f3728fd3c907987900e270bd947f8 + [http://downloads.sourceforge.net/slrn/slrn-0.9.8.0.tar.bz2] md5=47e9931771114ba192356a0473e9649e sha256=b97ea8385c4c9db64d69a84fcf87e5ffd98239932c88ff19f2e4c107ae24cdb2 +[http://heanet.dl.sourceforge.net/slrn/slrn-0.9.8.0.tar.bz2] +md5=47e9931771114ba192356a0473e9649e +sha256=b97ea8385c4c9db64d69a84fcf87e5ffd98239932c88ff19f2e4c107ae24cdb2 + [http://www.dakotacom.net/~ymg/files/slsnif-0.4.4.tar.gz] md5=78eeff8ba36ee0c3a954ec0878d2a997 sha256=315eb08a14255c137b435cb4f3c1dbfa67427be1c6bec62ff77a54246161c83e @@ -14354,14 +18022,26 @@ sha256=0a2080a48f8a52d10d49aa78a66027205920b76c8e901d07fb040759191aad9e md5=53f6861a916169a88a9edb1848e27dd0 sha256=2fdde1b4e610cd6e004db8f98ac1100fcbea03b8f11e236de536ce22bc6c620d +[http://heanet.dl.sourceforge.net/smartmontools/smartmontools-5.33.tar.gz] +md5=53f6861a916169a88a9edb1848e27dd0 +sha256=2fdde1b4e610cd6e004db8f98ac1100fcbea03b8f11e236de536ce22bc6c620d + [http://downloads.sourceforge.net/smartmontools/smartmontools-5.37.tar.gz] md5=4ab3668b7d1362ce923f64a211e0e568 sha256=2984645b207c52ea9b8ef3951af8bd0c5aab469607fabf63ade05f8fe87309c1 +[http://heanet.dl.sourceforge.net/smartmontools/smartmontools-5.37.tar.gz] +md5=4ab3668b7d1362ce923f64a211e0e568 +sha256=2984645b207c52ea9b8ef3951af8bd0c5aab469607fabf63ade05f8fe87309c1 + [http://downloads.sourceforge.net/smartmontools/smartmontools-5.38.tar.gz] md5=a282846532ecbd6b4a28072373b3a70b sha256=b2097320a1fca4851f1377a14f4cc14a46e27d2a44ca017c40a6cb618b2f31e8 +[http://heanet.dl.sourceforge.net/smartmontools/smartmontools-5.38.tar.gz] +md5=a282846532ecbd6b4a28072373b3a70b +sha256=b2097320a1fca4851f1377a14f4cc14a46e27d2a44ca017c40a6cb618b2f31e8 + [http://xorg.freedesktop.org/releases/individual/app/smproxy-1.0.2.tar.bz2] md5=31da204a0255ba8c6a65386e65dc1c90 sha256=76d22f0cf07c8c4386a15c5c935b58319bd747befb940a0f03f652d59c4f67d2 @@ -14378,6 +18058,10 @@ sha256=56f13e337de528530e35b192d84b869bd3d40cbd0320f3d108f7d741503b995b md5=7c11b59753ae8fea2c1f1030c34bff42 sha256=7b408a4e7eb5c4fa6861e3d5f0b49f5ce872c87775fb302a7d36956b77f1e2b9 +[http://gpephone.linuxtogo.org/download/gpephone/sms-1.1/sms-1.1.tar.bz2] +md5=baa60d94d99c943b136347a5438ad708 +sha256=b1118e32a03c245fe1140f968fc6d045dae66a7c092f2e42274e9bae3b7b96b8 + [http://www.linux-projects.org/downloads/sn9c102-1.32.tar.gz] md5=4d5b5bb9c70e69435a608c73da73b632 sha256=780edfac5a67172a49bc4e8b1bd384fa9184ceaf55bf5ab002fd7b8415db7e3b @@ -14394,10 +18078,22 @@ sha256=489bb2f9fb69922e9befc27ae1b8d19d31c83c586f55b7ecc503cb4f5e767da4 md5=6df271fd6a92d7641d7b060dedf7fec6 sha256=7eedc4ece1c82668c06222ef85457206139253e24a50e5b5d2401a41baee28c1 +[http://www.dest-unreach.org/socat/download/socat-1.3.2.1.tar.bz2] +md5=860fe417ea5e9ca2d2b2225192b85b87 +sha256=ecfbca297c26eff6cb04c2c45af1ee5c21d4a123a05f8b056a1c81ffcdfa1e3a + [http://downloads.sourceforge.net/sofia-sip/sofia-sip-1.11.7.tar.gz] md5=09d027ee9817cc1a1b8c0e96271bade4 sha256=328531d0f522a207a9721223c92b823643af5c82e5958fc5e9c945ea36ddafd6 +[http://heanet.dl.sourceforge.net/sofia-sip/sofia-sip-1.11.7.tar.gz] +md5=09d027ee9817cc1a1b8c0e96271bade4 +sha256=328531d0f522a207a9721223c92b823643af5c82e5958fc5e9c945ea36ddafd6 + +[http://heanet.dl.sourceforge.net/sofia-sip/sofia-sip-1.12.7.tar.gz] +md5=c6d7c4c6318fe1ac661862062aad241a +sha256=86a9522f4ccb17c3b86916784e1de1dce5fe72df6dab06db91f73c2cd3ab96f4 + [http://joshuawise.com/code/softfan/softfan-0.10.tar.gz] md5=e19e8a55c70d9b78f3c5abfa456ebf0c sha256=d1cf80381378041049c2b5ec25afca56939cce1d7dd8a8d8ab2ac46e210e354d @@ -14422,14 +18118,26 @@ sha256=03b2f2c0edba48457ec6178b0a10edfe3481254112936715603a21f638822f50 md5=53a3ebe3da0f5845770fd99e2ff0a965 sha256=9efdc359ccc15af51edc33ead837f0820d353165c633cbe8c86f65ff0d3be30c +[http://heanet.dl.sourceforge.net/sox/sox-12.17.5.tar.gz] +md5=53a3ebe3da0f5845770fd99e2ff0a965 +sha256=9efdc359ccc15af51edc33ead837f0820d353165c633cbe8c86f65ff0d3be30c + [http://downloads.sourceforge.net/sox/sox-13.0.0.tar.gz] md5=0243d62895caee558b5294d5b78cfbcb sha256=c66c52cfa42fe126592563c3d8974007a9858bd35d2c1136389a721eeebb9f8e +[http://heanet.dl.sourceforge.net/sox/sox-13.0.0.tar.gz] +md5=0243d62895caee558b5294d5b78cfbcb +sha256=c66c52cfa42fe126592563c3d8974007a9858bd35d2c1136389a721eeebb9f8e + [http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.3.tgz] md5=6ea33941985fbf94b5f79dc3255ad925 sha256=368467b757736aef99e19f68e4ed50012b555ef18445b4ad7e47da8c1c353118 +[http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.4pre16.tgz] +md5=9e4de1934d4d49bfee9640e39d19894e +sha256=3ab8a8ccaa5c9f3ca918209240d38f30e6d43fc9592ae0a791d0e235b15e28aa + [http://www.soft-switch.org/downloads/snapshots/spandsp/spandsp-20070123.tar.gz] md5=28b67b6f56d97051c48f251116e0519f sha256=18b335e1804cc24505ca683343d62cb98e845ff1e2e3c966502e67f1b61f2546 @@ -14438,6 +18146,10 @@ sha256=18b335e1804cc24505ca683343d62cb98e845ff1e2e3c966502e67f1b61f2546 md5=08bf3f6d8433a1f4981a2afaa6b49a6c sha256=b652bc27f95dcf10a7626b1d2943a1084e1e0b7f9bd3a97f9a46b6688370fe4b +[http://www.codemonkey.org.uk/projects/git-snapshots/sparse/sparse-2008-11-13.tar.gz] +md5=3f2c1e3c1b09e09cff1b94e334247221 +sha256=ddad6c18d9fbcbcd50452b3d432e6028e7703fb68c68612b28bf879a7c3fdb4c + [http://mxhaard.free.fr/spca50x/Download/spca5xx-20060501.tar.gz] md5=8fcec25715aea10f9ebec5728c37e752 sha256=b8049142742cc81bc945aadefb40d173aeb447e428ec62a93e781032ea9b40c2 @@ -14470,14 +18182,30 @@ sha256=77a3609bf1762f533461c01ef3485d0c9382fa54ec05204f0ff157a4789ce7ab md5=c4438b22c08e5811ff10e2b06ee9b9ae sha256=342f30dc57bd4a6dad41398365baaa690429660b10d866b7d508e8f1179cb7a6 +[http://www.sphinxsearch.com/downloads/sphinx-0.9.8.tar.gz] +md5=347e547b79b733778d7553ede34e0aac +sha256=86de861550fc7b119b3cbe63a34bad32ac771f44c930d229775ac124c83571d9 + [http://downloads.sourceforge.net/cmusphinx/sphinxbase-0.1.tar.bz2] md5=5ff76b3a4799405ad91e88331eb938bb sha256=ffb5e646d98c058ad2f1f0d7738b39e29fbe432981b1b5d9c8a79cdcb168c3c6 +[http://heanet.dl.sourceforge.net/cmusphinx/sphinxbase-0.1.tar.bz2] +md5=5ff76b3a4799405ad91e88331eb938bb +sha256=ffb5e646d98c058ad2f1f0d7738b39e29fbe432981b1b5d9c8a79cdcb168c3c6 + [http://downloads.sourceforge.net/cmusphinx/sphinxbase-0.3.tar.bz2] md5=17610af80be230e5760dbb25690a45f0 sha256=b5817b8629f89e16ba88e1c62dce0321978f3aea038aa77cb61a1ff7fa3e0dbb +[http://heanet.dl.sourceforge.net/cmusphinx/sphinxbase-0.3.tar.bz2] +md5=17610af80be230e5760dbb25690a45f0 +sha256=b5817b8629f89e16ba88e1c62dce0321978f3aea038aa77cb61a1ff7fa3e0dbb + +[http://pypi.python.org/packages/source/s/sphinxsearch/sphinxsearch-0.1.tar.gz] +md5=920deac1bd4d16fe1c5b51fe839140ab +sha256=7fcf0aa2e5e08719b39aeb145d3b6e953a8643bb6fd5e8359303399493ee6c39 + [http://www.rpsys.net/openzaurus/patches/archive/spitzkbd_fix-r0.patch] md5=d69c74ab8e2d7664a48a09773450dd27 sha256=59e2b9b2244c169c6580cbfffaf5e2bd2f453753f879036487ec6ed116cf851b @@ -14546,6 +18274,14 @@ sha256=1673b9218ec318067a662315c161ae123088cad319231ec079018acb4717e8bb md5=46f92e42243bc51aaa3871645ce78bd5 sha256=cb07a9801a128e2f42cf49b7e9d577b092ab54aa05242655af93491a73a91a1f +[http://www.zentus.com/sqlitejdbc/dist/sqlitejdbc-v041-src.tgz] +md5=11aad2f368734e1ff8e0ecc37710d4a9 +sha256=c04bb15b650ffcda80ccd3526b325b49a1173b3421da22b16845aad4a8945c10 + +[http://kamikaze.waninkoko.info/patches/2.6.23/klight1/broken-out/squashfs-lzma-2.6.23.patch] +md5=4f9b572c2381c457d866cda9300208de +sha256=e0f476d04af5921d4a44ab312a03fc6c7122b71adff6e38add8aa188d9969784 + [http://kamikaze.waninkoko.info/patches/2.6.24/kamikaze1/broken-out/squashfs-lzma-2.6.24.patch] md5=cfdb5caec0326a3ced8b4159f602c94f sha256=a7e784b151b25ca724bb7c9611b07cd9a9f3de12014ee80fcada7dd9a8248f53 @@ -14554,14 +18290,30 @@ sha256=a7e784b151b25ca724bb7c9611b07cd9a9f3de12014ee80fcada7dd9a8248f53 md5=0b7fcaab8e634ae2385984885c731082 sha256=353b768294783959219f1203e76c128fb4c75fa37f3a3bb139603c5db55c6974 +[http://heanet.dl.sourceforge.net/squashfs/squashfs2.0-r2.tar.gz] +md5=0b7fcaab8e634ae2385984885c731082 +sha256=353b768294783959219f1203e76c128fb4c75fa37f3a3bb139603c5db55c6974 + [http://downloads.sourceforge.net/squashfs/squashfs2.2-r2.tar.gz] md5=a8d09a217240127ae4d339e8368d2de1 sha256=750a7a4896d782698a0f531ca30582f0ddd365fe317a04c4dd4fa1ce2eb053eb +[http://heanet.dl.sourceforge.net/squashfs/squashfs2.2-r2.tar.gz] +md5=a8d09a217240127ae4d339e8368d2de1 +sha256=750a7a4896d782698a0f531ca30582f0ddd365fe317a04c4dd4fa1ce2eb053eb + [http://downloads.sourceforge.net/squashfs/squashfs3.1-r2.tar.gz] md5=c252e5286b142afa54ca49829c51a33f sha256=ec3159feae5324e78f7fc09f8f534bd6a3e7ed735144ee8a8e9e7871e77115e0 +[http://heanet.dl.sourceforge.net/squashfs/squashfs3.1-r2.tar.gz] +md5=c252e5286b142afa54ca49829c51a33f +sha256=ec3159feae5324e78f7fc09f8f534bd6a3e7ed735144ee8a8e9e7871e77115e0 + +[http://heanet.dl.sourceforge.net/squashfs/squashfs3.3.tgz] +md5=95c40fca0d886893631b5de14a0af25b +sha256=8423027a1e7dc238d27ec227f47ce22d1317b4c9a0a9ee49a38b6e6f8da8a5c8 + [http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE14.tar.bz2] md5=eadb138d48320df8b99349121159c6bf sha256=dcb0c10965430862721b675e2f9f6a30819880e03124b5e9403bfce2c7f3b69a @@ -14574,14 +18326,30 @@ sha256=3da4fccc40c7c8ad51dba5bc7ac29a3a53905d5f2de0761353214d7e359d4bfd md5=40fe4a353d03b80f8b37e4b0cc6159d3 sha256=f80f713105fc0747197b6e5d2440cd77205cb1febe25b7b4fe08809ab67ace26 +[http://heanet.dl.sourceforge.net/fuse/sshfs-fuse-1.8.tar.gz] +md5=3c575cf89a6d3d8ab6063c2f60bd5b25 +sha256=057626d78e5ade840568ab0e171a1d1ae87348ab51bf9e35d1cdc074fc4e2edb + [ftp://ftp.debian.org/debian/pool/main/s/ssmtp/ssmtp_2.61.orig.tar.gz] md5=957e6fff08625fe34f4fc33d0925bbc9 sha256=2151ad18cb73f9a254f796dde2b48be7318b45410b59fedbb258db5a41044fb5 +[ftp://ftp.nl.debian.org/debian/pool/main/s/ssmtp/ssmtp_2.61.orig.tar.gz] +md5=957e6fff08625fe34f4fc33d0925bbc9 +sha256=2151ad18cb73f9a254f796dde2b48be7318b45410b59fedbb258db5a41044fb5 + +[http://www.kegel.com/crosstool/crosstool-0.43/patches/binutils-2.16.1/stabs-tweak.patch] +md5=404d3f5e5adfd757dd91e58bd66ed10e +sha256=393d1f60ee4e3b4ce8138481e17da02ca2f23e06887a0650be2f5ecf85628844 + [http://downloads.sourceforge.net/stalonetray/stalonetray-0.7.6.tar.bz2] md5=eebb46182b64d75b89776bbfc867f470 sha256=35043df77437b66ade4a07b69f31aaa8c157ddc2833899eeb8a4794399a9e061 +[http://heanet.dl.sourceforge.net/stalonetray/stalonetray-0.7.6.tar.bz2] +md5=eebb46182b64d75b89776bbfc867f470 +sha256=35043df77437b66ade4a07b69f31aaa8c157ddc2833899eeb8a4794399a9e061 + [http://handhelds.org/~skyhusker/starling-0.1.tar.bz2] md5=4762b45291ff5f71691f187ee87a449e sha256=7a0002c9247b46ff61b44ecc800bec8b6239279475f9a359b35daf11e58c1406 @@ -14626,14 +18394,26 @@ sha256=262e2cb0e3f98891b3216df838a0257fb6675b0b98be8084bfd43843cfc234b4 md5=28335e15c83456a3db055a0a0efcb4fe sha256=9de428477d4d3f383d58c2f16b2544da2a5ec0acc50ee90ecb81dfe38f56edb8 +[http://heanet.dl.sourceforge.net/strace/strace-4.5.11.tar.bz2] +md5=28335e15c83456a3db055a0a0efcb4fe +sha256=9de428477d4d3f383d58c2f16b2544da2a5ec0acc50ee90ecb81dfe38f56edb8 + [http://downloads.sourceforge.net/strace/strace-4.5.12.tar.bz2] md5=c9dc77b9bd7f144f317e8289e0f6d40b sha256=d8d9d62f0ebab71fab62b5ba7eaddd8bb8df9b7f4988b4a8e0d0724662702acf +[http://heanet.dl.sourceforge.net/strace/strace-4.5.12.tar.bz2] +md5=c9dc77b9bd7f144f317e8289e0f6d40b +sha256=d8d9d62f0ebab71fab62b5ba7eaddd8bb8df9b7f4988b4a8e0d0724662702acf + [http://downloads.sourceforge.net/strace/strace-4.5.14.tar.bz2] md5=09bcd5d00ece28f8154dec11cadfce3c sha256=a6808914cbfead2595dfd061a0f14dcbb0a8bb645e3cfdfa5c247d7ded9e0e7d +[http://heanet.dl.sourceforge.net/strace/strace-4.5.14.tar.bz2] +md5=09bcd5d00ece28f8154dec11cadfce3c +sha256=a6808914cbfead2595dfd061a0f14dcbb0a8bb645e3cfdfa5c247d7ded9e0e7d + [http://qa.debian.org/watch/sf.php/strace/strace-4.5.14.tar.bz2] md5=09bcd5d00ece28f8154dec11cadfce3c sha256=a6808914cbfead2595dfd061a0f14dcbb0a8bb645e3cfdfa5c247d7ded9e0e7d @@ -14642,18 +18422,38 @@ sha256=a6808914cbfead2595dfd061a0f14dcbb0a8bb645e3cfdfa5c247d7ded9e0e7d md5=ef40944118841803391d212cb64d3c5b sha256=ba8c492c1b2033d4e2131f05df9e3780d4bc35bea87aa32a6052dd53a814e288 +[http://heanet.dl.sourceforge.net/strace/strace-4.5.15.tar.bz2] +md5=ef40944118841803391d212cb64d3c5b +sha256=ba8c492c1b2033d4e2131f05df9e3780d4bc35bea87aa32a6052dd53a814e288 + [http://downloads.sourceforge.net/streamripper/streamripper-1.61.10.tar.gz] md5=2d62a4546521980e1ed705a5094a6ec3 sha256=08ca63620c1c071f4b2d42c5f63f38cee920aa57cde151ac3cfcf344437e3f11 +[http://heanet.dl.sourceforge.net/streamripper/streamripper-1.61.10.tar.gz] +md5=2d62a4546521980e1ed705a5094a6ec3 +sha256=08ca63620c1c071f4b2d42c5f63f38cee920aa57cde151ac3cfcf344437e3f11 + [http://downloads.sourceforge.net/streamripper/streamripper-1.61.3.tar.gz] md5=57cd09098917bda29f841d366649681c sha256=1747aee9fa4cc09b49e0fb14baace3293f8f870c0de27fd3550cde21d99e9cd7 +[http://heanet.dl.sourceforge.net/streamripper/streamripper-1.61.3.tar.gz] +md5=57cd09098917bda29f841d366649681c +sha256=1747aee9fa4cc09b49e0fb14baace3293f8f870c0de27fd3550cde21d99e9cd7 + [http://weather.ou.edu/~apw/projects/stress/stress-0.18.8.tar.gz] md5=160d41166d98a1e88c3f95f556633b71 sha256=3f753cd91828808ecbdeffd1fe3125eccc6f71ecad7756115acc08b3e2c764dc +[http://weather.ou.edu/~apw/projects/stress/stress-1.0.0.tar.gz] +md5=d693ff044ac7d34f8aaea202cd96f679 +sha256=778126fdcc3ecb54d4a8dad6164001603bcc3b79ba64b3c2c5285275bc0cbedf + +[http://heanet.dl.sourceforge.net/strigi/strigi-0.5.10.tar.bz2] +md5=cfaa2114ea27f2a00e6773c374e98ec4 +sha256=3851f803de3759490073c1d682d018592b010437b9ac2b85394eaddc63621faf + [http://www.stunnel.org/download/stunnel/src/stunnel-4.09.tar.gz] md5=2077669b04c36e4c0baa68348e8860a7 sha256=56004db651fe180ed23882c555607c8f2723a3e99734d462fe644e531a574271 @@ -14662,6 +18462,10 @@ sha256=56004db651fe180ed23882c555607c8f2723a3e99734d462fe644e531a574271 md5=6042daa703d8bd34174b195843e7ffaa sha256=4cc4cc703bcd4da0df25e7b87b082bd9d1c836868bc4641b3c960931582dc3d2 +[http://heanet.dl.sourceforge.net/subapplet/subapplet-1.0.8.tar.gz] +md5=6042daa703d8bd34174b195843e7ffaa +sha256=4cc4cc703bcd4da0df25e7b87b082bd9d1c836868bc4641b3c960931582dc3d2 + [http://subversion.tigris.org/downloads/subversion-1.3.1.tar.bz2] md5=07b95963968ae345541ca99d0e7bf082 sha256=4f10334d72266815ff427eb25e0e574efcc684dcf01e0229b7d02f63b068d39d @@ -14674,6 +18478,10 @@ sha256=6960ed42174be9c54853e8708cc91a7c8355b23c4c3921a6d7fe7947d50843e4 md5=de0e792c9804c7bce397d267af5eb30d sha256=8260a2d3a67c5cebc100e7662f81679582c0f05a2a28260e235bdf051e72aee3 +[http://subversion.tigris.org/downloads/subversion-1.4.5.tar.bz2] +md5=4c333a5fe827568c67d195cda7a5e154 +sha256=763b8c9c16c03adc3ad00ccf1b5b47a08b5ffe94e499d3c87bb02acbc1026b53 + [http://ftp.sudo.ws/sudo/dist/sudo-1.6.8p12.tar.gz] md5=b29893c06192df6230dd5f340f3badf5 sha256=56f7d86032538a4a98d90af3742903a09ba16d6db82b593e4a47605f87fa581a @@ -14682,10 +18490,18 @@ sha256=56f7d86032538a4a98d90af3742903a09ba16d6db82b593e4a47605f87fa581a md5=1f26fa4aee57469a0636a70649343fb3 sha256=ca4c614e09371a986ca5d86065fc697f7eb07b2064a6a2cad541755df0135883 +[http://dev.laptop.org/pub/sugar/sources/sugar-artwork/sugar-artwork-0.82.0.tar.bz2] +md5=3d271bf9f0d412afb9a5618ba5496fb8 +sha256=dbe36fa758a49dd8526885e2025b51d6e1e6e32458168e420c955b633ee3b100 + [http://dev.laptop.org/pub/sugar/sources/sugar-base/sugar-base-0.82.0.tar.bz2] md5=5c568166761af4839cbc78db5dcd0061 sha256=124db55b59cdf5731096276e30d07b3537bc217ae63607f1394c2bb118cfe694 +[http://dev.laptop.org/pub/sugar/sources/sugar-datastore/sugar-datastore-0.82.0.tar.bz2] +md5=7a6bbb387c1f7cd3ddd6663869df3b88 +sha256=3fc7ed937865773089d146f0fce72ee556f0655c612ae840a08dbd1a13d92d39 + [http://dev.laptop.org/pub/sugar/sources/sugar-presence-service/sugar-presence-service-0.82.1.tar.bz2] md5=361bf10937908a638442b562ebb26d0b sha256=6aceb2140c44ada61c9deba9215a12b9a1025fabecc07907edfdcf0ba8ca341b @@ -14702,6 +18518,14 @@ sha256=ab958a3cc04858ab72f3fe2844362f249897c3bb2149208be22da2ce5d46c9c0 md5=7c10acf574f09ae5cb9eb2a4b9bf93ff sha256=8f2275d9667909d3418213522d5d4ef3312c158190429062f79da6b982b9ce6b +[http://heanet.dl.sourceforge.net/super-tux/supertux-0.1.2.tar.bz2] +md5=7c10acf574f09ae5cb9eb2a4b9bf93ff +sha256=8f2275d9667909d3418213522d5d4ef3312c158190429062f79da6b982b9ce6b + +[http://heanet.dl.sourceforge.net/super-tux/supertux-0.1.3.tar.bz2] +md5=f2fc288459f33d5cd8f645fbca737a63 +sha256=0092588351776626955339caaa62d12ce5954bb80c5f6952f60a122f53c2ad97 + [http://swfdec.freedesktop.org/download/swfdec/0.4/swfdec-0.4.0.tar.gz] md5=157d31c9dc02aa22b5f27323e5a203fc sha256=c31d3bbee984c7971d2b24cddc279d8ad65edff8216778d617484c147ba3ae3d @@ -14730,6 +18554,14 @@ sha256=68b1b032cdc6297f068ef8c3c09abdd46a08512e17705d477cc0bf7b80a550e8 md5=4a0bae63e3713e89b26db7209b6a7e05 sha256=c2ad63095e34b4a474e7ff4adb6ea8b7ab238bb5738d00a739102bb8bb71d805 +[http://heanet.dl.sourceforge.net/swig/swig-1.3.31.tar.gz] +md5=4a0bae63e3713e89b26db7209b6a7e05 +sha256=c2ad63095e34b4a474e7ff4adb6ea8b7ab238bb5738d00a739102bb8bb71d805 + +[http://crosswire.org/ftpmirror/pub/sword/source/v1.5/sword-1.5.10.tar.gz] +md5=4c920f2a3ee72040df8a8e105ad840df +sha256=5fb3f030e9395e23a48c02bde6bc81ad42b1c4056a011d9ee15c4c85110eb847 + [http://www.crosswire.org/ftpmirror/pub/sword/source/v1.5/sword-1.5.10.tar.gz] md5=4c920f2a3ee72040df8a8e105ad840df sha256=5fb3f030e9395e23a48c02bde6bc81ad42b1c4056a011d9ee15c4c85110eb847 @@ -14762,6 +18594,10 @@ sha256=c913105c740fe9cbbf7ab49f663acf5640b812995c2f9c716294f6b44a3185c4 md5=45e9e89775613b0afb732fbc11c73d26 sha256=72a6ab7c8a0baf0d1d432929c19a7d096335ba4adc43e40488b6a77e5995a0f5 +[http://www.logarithmic.net/pfh-files/synaesthesia/synaesthesia-2.4.tar.gz] +md5=784105cbeed3ab209231675f0e029497 +sha256=48505975e809ebadf416dc3e35a528ef87f01b117f2f1c5498d728ead8786493 + [http://hem.bredband.net/miko22/syncml-client-0.1.tar.gz] md5=a3a6ebd4d64a4de4234f6d8a7f7f61d5 sha256=d5b4d8a69bf72abcea74a3d02d9bed470abff0d5252c601b73ce8fe933822aea @@ -14770,22 +18606,42 @@ sha256=d5b4d8a69bf72abcea74a3d02d9bed470abff0d5252c601b73ce8fe933822aea md5=da9effc847d13f9725b6db043d8283a5 sha256=567a50863c04dc9ccf5def3c62bb9f0494e995357620603dd00bbe035ca7500e +[http://heanet.dl.sourceforge.net/synergy2/synergy-1.2.7.tar.gz] +md5=da9effc847d13f9725b6db043d8283a5 +sha256=567a50863c04dc9ccf5def3c62bb9f0494e995357620603dd00bbe035ca7500e + [http://downloads.sourceforge.net/synergy2/synergy-1.3.1.tar.gz] md5=a6e09d6b71cb217f23069980060abf27 sha256=4a15e26456498dda5f3aa7d688a4892e0c50394a2f01685136fbc954bacc9691 +[http://heanet.dl.sourceforge.net/synergy2/synergy-1.3.1.tar.gz] +md5=a6e09d6b71cb217f23069980060abf27 +sha256=4a15e26456498dda5f3aa7d688a4892e0c50394a2f01685136fbc954bacc9691 + [http://downloads.sourceforge.net/linux-diag/sysfsutils-1.3.0.tar.gz] md5=d11c99271531be3c1e6d36b53968cd2b sha256=03e3dc79fd7b36266372de0d331d792c04d185e57495c6fb1d46a0ea0ed0b04d +[http://heanet.dl.sourceforge.net/linux-diag/sysfsutils-1.3.0.tar.gz] +md5=d11c99271531be3c1e6d36b53968cd2b +sha256=03e3dc79fd7b36266372de0d331d792c04d185e57495c6fb1d46a0ea0ed0b04d + [http://downloads.sourceforge.net/linux-diag/sysfsutils-2.0.0.tar.gz] md5=b7857c045ef3b4810c9b8be965c05fb9 sha256=d162ddc4f4a29c770549cb135da179e205480c065739dbe6c3c1bed6d84a3060 +[http://heanet.dl.sourceforge.net/linux-diag/sysfsutils-2.0.0.tar.gz] +md5=b7857c045ef3b4810c9b8be965c05fb9 +sha256=d162ddc4f4a29c770549cb135da179e205480c065739dbe6c3c1bed6d84a3060 + [http://downloads.sourceforge.net/linux-diag/sysfsutils-2.1.0.tar.gz] md5=14e7dcd0436d2f49aa403f67e1ef7ddc sha256=e865de2c1f559fff0d3fc936e660c0efaf7afe662064f2fb97ccad1ec28d208a +[http://heanet.dl.sourceforge.net/linux-diag/sysfsutils-2.1.0.tar.gz] +md5=14e7dcd0436d2f49aa403f67e1ef7ddc +sha256=e865de2c1f559fff0d3fc936e660c0efaf7afe662064f2fb97ccad1ec28d208a + [http://qa.debian.org/watch/sf.php/linux-diag/sysfsutils-2.1.0.tar.gz] md5=14e7dcd0436d2f49aa403f67e1ef7ddc sha256=e865de2c1f559fff0d3fc936e660c0efaf7afe662064f2fb97ccad1ec28d208a @@ -14794,6 +18650,10 @@ sha256=e865de2c1f559fff0d3fc936e660c0efaf7afe662064f2fb97ccad1ec28d208a md5=d214aa40beabf7bdb0c9b3c64432c774 sha256=44357e0fae8c8f0e315bf130b4e86a4f96b91d66eeb4e473def4ce8336fff102 +[http://www.ibiblio.org/pub/Linux/system/daemons/sysklogd-1.5.tar.gz] +md5=e053094e8103165f98ddafe828f6ae4b +sha256=6169b8e91d29288e90404f01462b69e7f2afb1161aa419826fe4736c7f9eb773 + [http://kernel.org/pub/linux/utils/boot/syslinux/Old/syslinux-2.11.tar.bz2] md5=38a30cc790265f19f80330330ffaa527 sha256=cdc785cb2356a7147e988e6b572d378c3762cf701c85e4c91a634545e6b9aff4 @@ -14810,6 +18670,10 @@ sha256=57c4ca6e7836460297edcc45148373ec131157b29c184ee011b29ec491e010f0 md5=d1bfdaa53d31f572f540be55d1480027 sha256=c087b112da0afd1c50ba8a8a2727c4cabfb1e5a57f43701c5abdc05865072649 +[http://kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.63.tar.bz2] +md5=ee6b84cc7b598b4e1a00a4a8c6676d4e +sha256=d4d17102e014d3183a11719896061dc464c3d9a836caaf47b3b57da4ac23b52d + [http://www.balabit.com/downloads/syslog-ng/1.6/src/syslog-ng-1.6.11.tar.gz] md5=8f9ca6140f428dc9adec9fa1c270a2dd sha256=dd37f1e280bd6c2d66c9a15aa3ee9e209a1b649e3b79e70fee58aea1cb0ea093 @@ -14838,6 +18702,10 @@ sha256=035f98fae17d9cff002993c564ccc83dc4ed136127172caeff872b6abdb679d8 md5=cc5d4130b25bb8a1c930488b78930e9b sha256=34ff6a85d1dae64d06b5aca04fb17822dd26a734f40cd966e3dd980afa4a037a +[ftp://ftp.nl.debian.org/debian/pool/main/t/t1lib/t1lib_5.0.2.orig.tar.gz] +md5=cc5d4130b25bb8a1c930488b78930e9b +sha256=34ff6a85d1dae64d06b5aca04fb17822dd26a734f40cd966e3dd980afa4a037a + [http://repository.maemo.org/pool/maemo4.1/free/t/tablet-browser-interface/tablet-browser-interface_0.0.5-1.tar.gz] md5=930b83fa92154a2abb3d711b9e3af87a sha256=199fcaa5bc5b0b56537d43c522a9f0d839e61d7ffc58438da56574f642159519 @@ -14862,14 +18730,26 @@ sha256=d2a107e3a5ceaeeb15ab2e3d7cd308653b4ded8aaf8d3c0e0be3b64ba4e17cfc md5=e88c400394c092c2688bb2d490c80ccb sha256=fb89ac4e8578adc140e19cb4929b200d2898e5a8373230f500c16e59c803cba1 +[http://heanet.dl.sourceforge.net/tapioca-voip/tapioca-0.3.9.tar.gz] +md5=e88c400394c092c2688bb2d490c80ccb +sha256=fb89ac4e8578adc140e19cb4929b200d2898e5a8373230f500c16e59c803cba1 + [http://downloads.sourceforge.net/tapioca-voip/tapioca-xmpp-0.3.9.tar.gz] md5=8d810351eb5b30e70b202e067da450c1 sha256=51dd2ecda515e5872971cf80216915492686f5a5c9745e12ba1b3c5aec826fce +[http://heanet.dl.sourceforge.net/tapioca-voip/tapioca-xmpp-0.3.9.tar.gz] +md5=8d810351eb5b30e70b202e067da450c1 +sha256=51dd2ecda515e5872971cf80216915492686f5a5c9745e12ba1b3c5aec826fce + [http://downloads.sourceforge.net/tapioca-voip/tapiocaui-0.3.9.1.tar.gz] md5=2b0fc6997e793784763fe23c81a4986f sha256=d83dca75ba6088c90b993de9d30b4b0d3189e5efa84151c16d55ef0ec072c38a +[http://heanet.dl.sourceforge.net/tapioca-voip/tapiocaui-0.3.9.1.tar.gz] +md5=2b0fc6997e793784763fe23c81a4986f +sha256=d83dca75ba6088c90b993de9d30b4b0d3189e5efa84151c16d55ef0ec072c38a + [ftp://alpha.gnu.org/gnu/tar/tar-1.13.93.tar.gz] md5=71bfeab35c9935631fc133f9d272b041 sha256=0ef70273b6a54357c7823ed1f11015523f5cc5fe16df097e0b5300ae725c44e1 @@ -14886,6 +18766,10 @@ sha256=be8bf33afb5adc2377e45d94693ffd46b75f267f9b808df0c7006e51211f9deb md5=dc62a061d83cf72d1eca7e8ae2c8e1a6 sha256=4078c44beebfd298995983b9e2ea189167a1ab081d96a7c485a67b65a974e878 +[http://heanet.dl.sourceforge.net/subapplet/tasklist-105.tar.gz] +md5=dc62a061d83cf72d1eca7e8ae2c8e1a6 +sha256=4078c44beebfd298995983b9e2ea189167a1ab081d96a7c485a67b65a974e878 + [http://pimlico-project.org/sources/tasks/tasks-0.12.tar.gz] md5=a2926370099899e578082702328e55ee sha256=f9b99636f86c2747f84fa918b949152491ee92594a7f1e83418589e83f8d1e4a @@ -14902,6 +18786,10 @@ sha256=65083a94bce9e539c4d9141b4e765415872e01bf17ec4be906d2e304aa8c3e7f md5=629dfea34e4087eb4683f834060abb63 sha256=8dcfa54b58a6aaf4853fc27752c25d6c2592c485952b2fad25a9bea4b52bed33 +[http://heanet.dl.sourceforge.net/tcl/tcl8.4.11-src.tar.gz] +md5=629dfea34e4087eb4683f834060abb63 +sha256=8dcfa54b58a6aaf4853fc27752c25d6c2592c485952b2fad25a9bea4b52bed33 + [ftp://ftp.porcupine.org/pub/security/tcp_wrappers_7.6.tar.gz] md5=e6fa25f71226d090f34de3f6b122fb5a sha256=9543d7adedf78a6de0b221ccbbd1952e08b5138717f4ade814039bb489a4315d @@ -14918,6 +18806,10 @@ sha256=09f1daece22a3555f1ca1f9779caf36357cc8d5b9ad1964606093c7e884e0da4 md5=77b991a686e83cb716fd241aaa6ea432 sha256=db19142fd2ca6218ead04fb3144b1640e2ad5a1c784a4e790c8816a37a79ac2e +[http://heanet.dl.sourceforge.net/tcpick/tcpick-0.1.22.tar.gz] +md5=77b991a686e83cb716fd241aaa6ea432 +sha256=db19142fd2ca6218ead04fb3144b1640e2ad5a1c784a4e790c8816a37a79ac2e + [http://michael.toren.net/code/tcptraceroute/tcptraceroute-1.5beta6.tar.gz] md5=0200707ad81b88c31439820ae9bc5102 sha256=08ce9b24ab7b6ad45ac7f668eccfb7007ef182406f7db0b7e455decfb0b49bec @@ -14926,6 +18818,10 @@ sha256=08ce9b24ab7b6ad45ac7f668eccfb7007ef182406f7db0b7e455decfb0b49bec md5=f27e025d9e69f36a7d8b679c047daba1 sha256=2bfbdd6df159c815b392cd99146df5a450c1a8ffab30a13fd34bced8ee33cda0 +[http://heanet.dl.sourceforge.net/tea-editor/tea-17.3.5.tar.bz2] +md5=c28db354576aaec2152970b06d534640 +sha256=a7147079740acef2df0d2caab164062b12806d988216aa03667198d1100f5eb2 + [http://telepathy.freedesktop.org/releases/telepathy-gabble/telepathy-gabble-0.3.0.tar.gz] md5=12a4508e338a39c63c24c41261eba3dd sha256=b4fcd32237271e400b00e779116e8203eac5efdaf53c78b9909b85a158fd81d8 @@ -14950,6 +18846,10 @@ sha256=820af6a106ee3c2ee019ed5a1d9c6a751020a3d1fdeee84316faf8eff467a721 md5=18b6cae979e438628a1032ff1f12b38e sha256=f779fbfd30ddc80e15c39f42fc9877725e829dfa19101c3762d6ae809760a3a9 +[http://telepathy.freedesktop.org/releases/telepathy-glib/telepathy-glib-0.6.0.tar.gz] +md5=dd32a28c5ca484f950302a04e04d43a7 +sha256=51a82f05d0a323b294b7525aefb68d0611d5bd87739e206340f092d76ceed9fe + [http://telepathy.freedesktop.org/releases/telepathy-glib/telepathy-glib-0.7.0.tar.gz] md5=b4cb035a6e235be3179364341843e929 sha256=e5cffebb02ad5c8192c7bd98aae90e65b008b03150b613659efa641d5f96c141 @@ -14966,10 +18866,26 @@ sha256=49dca0428d69f43c856800967b2def8c890cd322fbdd0aa47c227aec5820a690 md5=21bfda9e1fa12e25b4173deb9ffd0b5d sha256=3ed0cb5dd687e4d9fa838a318f9ef12a8c221894ff188687c27625f0ac3bce82 +[http://heanet.dl.sourceforge.net/tapioca-voip/telepathy-inspector-0.5.0.tar.gz] +md5=7fe5810c15edacb0d9c5590d3767f8f0 +sha256=16ff39f1d80e6898d0c58e634211254833e6067bd55bc3b4eefabf53cbe6844d + +[http://heanet.dl.sourceforge.net/mission-control/telepathy-mission-control-4.21.tar.gz] +md5=2ad61079a79b0426c81593ad69f56ada +sha256=0b98c93fc64409aae43d8f2941784f8f11639ad68b67320417554fa471a86508 + +[http://heanet.dl.sourceforge.net/mission-control/telepathy-mission-control-4.22.tar.gz] +md5=aa8a8264c596c666f886f85356b56e09 +sha256=a36371f8f9d86cb767e4ea84ed378d6546750843d4b1c0d57f7e53153e8da51b + [http://downloads.sourceforge.net/mission-control/telepathy-mission-control-4.31.tar.gz] md5=75c59f2c0f990326fc1b66c0bc762c43 sha256=926a8c047bd43a1fc21539c2ec5b9bf00426083ffe18c2db8c44964b80286b6a +[http://heanet.dl.sourceforge.net/mission-control/telepathy-mission-control-4.45.tar.gz] +md5=b7810e1a53579bc496796538aefcc014 +sha256=cb5565a66fb233d7c0b9418bcef53fe330c8a5a0f904a9a04de087ad0b4d0be9 + [http://downloads.sourceforge.net/mission-control/telepathy-mission-control-4.49.tar.gz] md5=463234dcf1182ba71a0d39f594922488 sha256=c7cbaa8edec5c9be78aa954938c64b57e6c2c0f13de260c88fefdbf849e94d4d @@ -14982,6 +18898,14 @@ sha256=76009d233a69b2d12c2aff94770dfe9fc0558e07071f941b738bab357f8fb7b9 md5=0a547e7af4a33355bac3638dd2e40859 sha256=326b82519a49a238a476c028097bde5820c4b58af500dbb5b715cdfd6fe0bfcd +[http://heanet.dl.sourceforge.net/mission-control/telepathy-mission-control-4.67.tar.gz] +md5=0a547e7af4a33355bac3638dd2e40859 +sha256=326b82519a49a238a476c028097bde5820c4b58af500dbb5b715cdfd6fe0bfcd + +[http://telepathy.freedesktop.org/releases/telepathy-python/telepathy-python-0.14.0.tar.gz] +md5=a42cc4defcaf46099e07972ece791c2d +sha256=3065fae35064c22380963a0d29a04bedb86c05e51d3af84c73f3da8f2107cb2d + [http://telepathy.freedesktop.org/releases/telepathy-python/telepathy-python-0.15.1.tar.gz] md5=b3e9bd31393c4cebbd8077b62b2bcd8c sha256=02a5c752201e016905c75503217af5a25eebe3f6a4e02a75173ed34021401296 @@ -15014,6 +18938,10 @@ sha256=c4fa04257fea6e968d4caa28cc18dbbf9eea4769a463296eaca21ceea757a728 md5=e3bc57773a60134ef37e9f06fe541108 sha256=6fc9e28a574bf22028249e9a12e033c8bee0aeccbf90621238a6f538e60e7d60 +[http://heanet.dl.sourceforge.net/tesseract-ocr/tesseract-1.0.tar.gz] +md5=e3bc57773a60134ef37e9f06fe541108 +sha256=6fc9e28a574bf22028249e9a12e033c8bee0aeccbf90621238a6f538e60e7d60 + [http://www.cgsecurity.org/testdisk-6.6-WIP.tar.bz2] md5=3cc59a7e425c49dbdf76b54d85b55619 sha256=2b472be7105eaa88e0c9cca241225c56fdcb80d34dec60ef1d865b0877be771c @@ -15070,6 +18998,10 @@ sha256=16d746a7bf057a9147756e15fdd7ce76a63ddde122294ce188dc8332da5118ba md5=80b904d4a10fccee9045d0feeaa65df8 sha256=56062708bb547425f8e8f0f9c571d4fa06fcc89a11146a5b15c608fd8debdb80 +[http://heanet.dl.sourceforge.net/vnc-tight/tightvnc-1.3.9_unixsrc.tar.gz] +md5=80b904d4a10fccee9045d0feeaa65df8 +sha256=56062708bb547425f8e8f0f9c571d4fa06fcc89a11146a5b15c608fd8debdb80 + [http://qa.debian.org/watch/sf.php/vnc-tight/tightvnc-1.3.9_unixsrc.tar.gz] md5=80b904d4a10fccee9045d0feeaa65df8 sha256=56062708bb547425f8e8f0f9c571d4fa06fcc89a11146a5b15c608fd8debdb80 @@ -15110,6 +19042,10 @@ sha256=7e45b6f6824b1342e598dee162368ed8d1c9c1bcee96d8e1eda9a4c63c599f08 md5=408e34fe8a1cec497f98f05bbe89b348 sha256=8475bb2ff42f5f162de6825c8c700fd61bae7b629de3e0aaf95cb54a224220ba +[http://heanet.dl.sourceforge.net/tcl/tk8.4.11-src.tar.gz] +md5=408e34fe8a1cec497f98f05bbe89b348 +sha256=8475bb2ff42f5f162de6825c8c700fd61bae7b629de3e0aaf95cb54a224220ba + [http://trevp.net/tlslite/tlslite-0.3.0.tar.gz] md5=2d5f7efafa5d04598b21f1889e981207 sha256=bbc3bdbdefc81f7b186f1c5697f6939b5fc77d4569112edd1a6b3aceae177228 @@ -15142,10 +19078,18 @@ sha256=d158e56c43c978b6b2e5d3eed176357c6252ec5ec2ecd26c457fa9ae55fefc55 md5=9769f74c54b97b6fe53872e64137144f sha256=66adcad8c8ce58c8fb01dbe8cff9ad39855a4d548ddc9405e70198671dae813e +[http://tinymail.org/files/tmut/releases/v1.1/v1.1.0/tmut-1.1.0.tar.bz2] +md5=6178256c82efcd02b5d50f2289c13d9b +sha256=ac5dcd76faf25e0c40e91a4bcfea7f6f1bec33d361ad89a6e2f6fc63fa26590e + [http://downloads.sourceforge.net/tn5250/tn5250-0.16.5.tar.gz] md5=2f9ef4509198e96bb184577fdddfce6d sha256=794687ae1b34aba9a3cf6f9b118d0ba91b8f83858fe92a9ded0611225db3ca0e +[http://heanet.dl.sourceforge.net/tn5250/tn5250-0.16.5.tar.gz] +md5=2f9ef4509198e96bb184577fdddfce6d +sha256=794687ae1b34aba9a3cf6f9b118d0ba91b8f83858fe92a9ded0611225db3ca0e + [http://keihanna.dl.sourceforge.jp/tomoe/16048/tomoe-0.2.1.tar.gz] md5=95eca127a1d519ff4e836b3d00d7fa84 sha256=3942e0ff0a3b945d0464b69fcc01092a582f2c4e173bd8877572706e584e0e9e @@ -15206,14 +19150,26 @@ sha256=5730611c42f8a8540343faa9512d9161073d2f882668c80dd0cf6a34c72daa75 md5=fa658ae2f20458d3c5d3effba3b2dd7e sha256=3193c3446d211db2bd3c169c86f6d433666669336bd589a20c87f1483295cf2a +[http://www.gnome.org/~jamiemcc/tracker/tracker-0.5.4.tar.gz] +md5=724208e1b2d235148499672b44181298 +sha256=ad214a2692041f423d2150777c233b21cab2d108f849edc513192587ac63c9c2 + [http://downloads.sourceforge.net/transconnect/transconnect-1.2.tar.gz] md5=c255ff48387ea6a7092707ba992237e7 sha256=47d6cc44f78fc6d4cdb1dfee02fe6e0f4d8aae0ce2e3e92567667f0475736617 +[http://heanet.dl.sourceforge.net/transconnect/transconnect-1.2.tar.gz] +md5=c255ff48387ea6a7092707ba992237e7 +sha256=47d6cc44f78fc6d4cdb1dfee02fe6e0f4d8aae0ce2e3e92567667f0475736617 + [http://downloads.sourceforge.net/transconnect/transconnect-1.3-Beta.tar.gz] md5=50f75731e610fce00803cc7d98b301fd sha256=404df2c479517020290be9847191523c1fcbd3e929e8bb1191a7832209d04af8 +[http://heanet.dl.sourceforge.net/transconnect/transconnect-1.3-Beta.tar.gz] +md5=50f75731e610fce00803cc7d98b301fd +sha256=404df2c479517020290be9847191523c1fcbd3e929e8bb1191a7832209d04af8 + [http://xorg.freedesktop.org/releases/individual/proto/trapproto-3.4.3.tar.bz2] md5=3b713239e5e6b269b31cb665563358df sha256=ff32a0d3bc696cadc3457be9c85e9818af2b6daa2f159188bb01aad7e932a0e1 @@ -15282,6 +19238,10 @@ sha256=db5b27df7bbb318036ebdb75acd3e98f1bd6eb6608fb70a67d478cd243d178dc md5=4c3e6ae586be277537ebb68f2a45b883 sha256=4746c04c9a4ad9e0788a38e0a2f81919a630d8070ceabc89f156b6d41d8ceb37 +[ftp://ftp.nl.debian.org/debian/pool/main/t/ttf-gentium/ttf-gentium_1.02.orig.tar.gz] +md5=4c3e6ae586be277537ebb68f2a45b883 +sha256=4746c04c9a4ad9e0788a38e0a2f81919a630d8070ceabc89f156b6d41d8ceb37 + [http://www.bedroomlan.org/~alexios/files/SOFTWARE/ttyconv/ttyconv_0.2.3.tar.gz] md5=7997ba54401a7685290a6666b9d28585 sha256=d91b4addcbb241b04b6cf795447163ed890a436b10205d2cd9cc1885ea3d9433 @@ -15302,6 +19262,10 @@ sha256=67c4b7677469040b4fc37c084bc4f1ef4c365477e79862c3dc7c256c9f9257c2 md5=a56b71dc40249195b32b304633c28a3e sha256=5b41550477a893bf2b82ab73fc7fb6c839ba52d0deac059be1a473dd7bb92a4e +[http://xorg.freedesktop.org/releases/individual/app/twm-1.0.4.tar.bz2] +md5=0865e14c73c08fa8c501ae877298ee9f +sha256=daa088f9ae231508929b7bd4746e942212b53f2802ca4cee450139fabc8de1fa + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/twm-X11R7.0-1.0.1.tar.bz2] md5=cd525ca3ac5e29d21a61deebc1e0c376 sha256=2ce51682b63d1f3f3c566bddf84f74105634247d7b4ef559dd3f0199c9e6d41e @@ -15394,6 +19358,10 @@ sha256=64811b4ab4ca362b01a3d08f53a2dbbf059e18484b90cb5e21c0365d53b87f77 md5=78b1c2722d3907b5fae2cd219dbaf927 sha256=8ab07cd758a1775642629e624f70e376fa8e84a2f879dee4544158d9c90cde2a +[http://linux.omap.com/pub/bootloader/2430sdp/source/u-boot-SEP1106.tar.gz] +md5=49c07dec9e1be69fd01d46f47ec03731 +sha256=a090786113b02647413ebc15888af269f2e6d50f73cbb94b0619cc1702911dae + [http://www.reitwiessner.de/programs/u2nl-1.3.tar.gz] md5=d97a16d8b2231501ba418b5f1ffe018a sha256=7e1d8239a5bd43c50f6091b484acbc8a7c5886cd4523f1e369504266cbaca50d @@ -15474,6 +19442,10 @@ sha256=da0ca1e821e3fa7cfbe73ddb1480b921002ee992f5e5fbc611422c103b907443 md5=b2c104938c1c3eb47e7605432bbd3157 sha256=c750c8180057385eaa0844f1148d6f0223b986da322773195eab44b33b97c19f +[http://heanet.dl.sourceforge.net/ufraw/ufraw-0.12.tar.gz] +md5=b2c104938c1c3eb47e7605432bbd3157 +sha256=c750c8180057385eaa0844f1148d6f0223b986da322773195eab44b33b97c19f + [http://uim.freedesktop.org/releases/uim/stable/uim-1.3.1.tar.bz2] md5=2832e23d4778bbacbfa4b49bf642d667 sha256=ed2cfa15018a4fd2557e875f66fcb3f0b9dabe12fa0700aa2f11cca69c2cb256 @@ -15486,6 +19458,10 @@ sha256=e35fcb9b14e7621dc32975872a5147137ff12cc71e16993702a49268d59c079c md5=4ba5657f3f7d71a818f3e6259b5d4fde sha256=e5b7b7c4b61f7b0affa5e3987e0127c695d2e512f39df68b97479b50cc39ed78 +[http://upir.cz/maemo/dists/chinook/main/source/ukeyboard_1.2.tar.gz] +md5=cf291d487250e3e9c1cc34389ce49297 +sha256=1f54d52abc5a53db45bc063948375b947af2c031ee1b810686027f7694deb474 + [http://upir.cz/maemo/dists/chinook/main/source/ukeyboard_1.6.tar.gz] md5=78b8ab318d725b07c3c08c390290a556 sha256=0ecaf4e174c5b8eb3c1225cc60917404e14ad613f57fd2ca290d31548f089bcf @@ -15494,14 +19470,26 @@ sha256=0ecaf4e174c5b8eb3c1225cc60917404e14ad613f57fd2ca290d31548f089bcf md5=cea56d3a1a7e4f1a4d12697330c4526b sha256=00f40bf3c8e4ed3ca169ec54352fc7499d443e443d91b7460997ddca5448905e +[http://heanet.dl.sourceforge.net/ulxmlrpcpp/ulxmlrpcpp-1.7.3-src.tar.bz2] +md5=7c5d849d8d1cd9ccfb4b90350145d503 +sha256=0d568ff00cd45f73f3634723f8cb453f8bc952760cad3829bcbca88378a2ed83 + [http://www.unicap-imaging.org/downloads/unicap-0.9.3.tar.gz] md5=69db7c7dacb58c303d44f3b6598653ee sha256=bf619a4675aa4b7cec9c3a664e1fcd9d869facf393e4e9e51e52490db98d6585 +[ftp://ftp.fsl.cs.sunysb.edu/pub/unionfs/OLD/unionfs-1.x/unionfs-1.0.11.tar.gz] +md5=494651fe0cf724c093b4be80e35e857f +sha256=f1df81423a65590ffd20df43f5cd0be14cf6746437eb40c2c924f5f58a6e18a7 + [ftp://ftp.fsl.cs.sunysb.edu/pub/unionfs/unionfs-1.0.11.tar.gz] md5=494651fe0cf724c093b4be80e35e857f sha256=f1df81423a65590ffd20df43f5cd0be14cf6746437eb40c2c924f5f58a6e18a7 +[ftp://ftp.fsl.cs.sunysb.edu/pub/unionfs/OLD/unionfs-1.x/unionfs-1.0.13.tar.gz] +md5=1dca48ff260dacf890b8040a3cea55b3 +sha256=61b03ce855734b1a1b4b180856095876d562c22e359ba847a2544c488c7254b4 + [ftp://ftp.fsl.cs.sunysb.edu/pub/unionfs/unionfs-1.0.13.tar.gz] md5=1dca48ff260dacf890b8040a3cea55b3 sha256=61b03ce855734b1a1b4b180856095876d562c22e359ba847a2544c488c7254b4 @@ -15530,18 +19518,34 @@ sha256=145d95e2ef1ef9add2e3c97d1340907e33ab8749eb1235372e7f0b7af600a8e9 md5=e135bc8a390b65573bbc8ff4628e490c sha256=24859c992fb58f0bf4840e1378da91b942c73263b0213096e6755436af8d16bc +[http://upstart.ubuntu.com/download/0.3/upstart-0.3.8.tar.bz2] +md5=5cdd2dc3a3f02089c9450edf4e8f4941 +sha256=9a2a37455ad4e9dd2856b5a0f15adb1a3f84439f60d0f63b041584a2666e9835 + [http://downloads.sourceforge.net/sc2/uqm-0.3-source.tgz] md5=6abcdc3caf7efd3bd978332743ee7568 sha256=e42ac3b45c1c8a3199bbd9b666e9225d76bc18d902339c54cbb4df3a75909e53 +[http://heanet.dl.sourceforge.net/sc2/uqm-0.3-source.tgz] +md5=6abcdc3caf7efd3bd978332743ee7568 +sha256=e42ac3b45c1c8a3199bbd9b666e9225d76bc18d902339c54cbb4df3a75909e53 + [http://downloads.sourceforge.net/sc2/uqm-0.5.0-source.tar.gz] md5=9002b1bc2de9285588dd97b618a867a7 sha256=bdb715784bf0c94825cf40f97c60a5ec83fd3e17e9e186a78cd145781c4d9804 +[http://heanet.dl.sourceforge.net/sc2/uqm-0.5.0-source.tar.gz] +md5=9002b1bc2de9285588dd97b618a867a7 +sha256=bdb715784bf0c94825cf40f97c60a5ec83fd3e17e9e186a78cd145781c4d9804 + [http://downloads.sourceforge.net/uriparser/uriparser-0.5.1.tar.bz2] md5=faf561c6260e1b580cba2509f410a29f sha256=5a664f5c8f404c1148f661499866f1fe8df8debef2adc55c630ac83e6d57a98c +[http://heanet.dl.sourceforge.net/uriparser/uriparser-0.5.1.tar.bz2] +md5=faf561c6260e1b580cba2509f410a29f +sha256=5a664f5c8f404c1148f661499866f1fe8df8debef2adc55c630ac83e6d57a98c + [http://linux.duke.edu/projects/urlgrabber/download/urlgrabber-3.1.0.tar.gz] md5=2a92d8ce0d89c5e772a98e9b8dcd5b73 sha256=34d48f4f4390ed06c0fc8fac580f6fe4cd2bfb3557ff0f11254a7bea25d353ca @@ -15550,6 +19554,10 @@ sha256=34d48f4f4390ed06c0fc8fac580f6fe4cd2bfb3557ff0f11254a7bea25d353ca md5=4bf9e297f1db0502ec2753f3e084f4cd sha256=03c1970273b211be8a6a8d23e44522b5d20a774781d31b51c26109985ac28cdd +[http://excess.org/urwid/urwid-0.9.8.1.tar.gz] +md5=5a033bcafa4eb8c6e76636112bc3de98 +sha256=d0fb637d27f2aacdb116683970d915656bdfb68fa20affe68fffc52d5ab379a3 + [http://oz.drigon.com/patches/usb-ohci-hooks-r1.patch] md5=5fa0f5c96b0ac775457db1c34e2a2050 sha256=095745353b285a3675ab9778f13510171a49cb530dd6702fe5f2a137eaeeaa5e @@ -15598,6 +19606,10 @@ sha256=1d645fa76a9482a6630b9a7257d11eabfa94ef4337493ef7075e25cbb8820491 md5=05276dc307a0297904bc892e9998bf59 sha256=98d29c0c013debc32f1a17fd66f5e9248025959b07d13f1faba91aa5a1a9ba6b +[http://heanet.dl.sourceforge.net/linux-usb/usbutils-0.70.tar.gz] +md5=05276dc307a0297904bc892e9998bf59 +sha256=98d29c0c013debc32f1a17fd66f5e9248025959b07d13f1faba91aa5a1a9ba6b + [http://downloads.sourceforge.net/linux-usb/usbutils-0.72.tar.gz] md5=ee345fe605ffcfce843dae4aed81122b sha256=00385353242173b878413e0423c1dddcbbb50a3cadc3bb9d0a6adcf335794423 @@ -15738,6 +19750,10 @@ sha256=95b7b4d815bd479332637c93e69ec24167cd28d4f9d9f9b718e1b091bb88aafa md5=d97a8dbc72942c57542f50322b538a48 sha256=05b473815f9706387a3c5eaeb4da2e492f624e0b7783432179454f9d69bb973c +[http://heanet.dl.sourceforge.net/vde/vde-2.0.2.tar.bz2] +md5=d97a8dbc72942c57542f50322b538a48 +sha256=05b473815f9706387a3c5eaeb4da2e492f624e0b7783432179454f9d69bb973c + [ftp://ftp.billsgames.com/unix/x/vectoroids/src/vectoroids-1.1.0.tar.gz] md5=c63ce56b09aa7da9a6e95d804e9ee314 sha256=8d14dd281767e994108abd77c8e67d5a17718d0ad1e34d37e026911d14697b2e @@ -15762,6 +19778,10 @@ sha256=ab088478830cd30c2fe34fb7f44ffd4d177af7711c225c24676d3e9e9f24780c md5=de9e16a8a464531a54a36211d2f983bd sha256=074b4576113e89213940e3ea3901dd035ab317255cd78c929aa52d89227f1f37 +[http://xorg.freedesktop.org/releases/individual/app/viewres-1.0.1.tar.bz2] +md5=cdbed540daf7975b56000420c9aa5bf9 +sha256=bf49cd45ffb197a6992b3b7c99c94161eaf7cf6a2b661d3905ac382bedce34b8 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/viewres-X11R7.0-1.0.1.tar.bz2] md5=004bf8dd4646aca86faf5aa22b0c3f2f sha256=0ee43fd2dd9c8b60fad0e3d89bb04dcb8d7e398b33bbcc603a8e0900c3144a28 @@ -15770,6 +19790,10 @@ sha256=0ee43fd2dd9c8b60fad0e3d89bb04dcb8d7e398b33bbcc603a8e0900c3144a28 md5=14c7de0702a5bd5e45924bd166ae5ee2 sha256=9370d4e6a7166c03c8838edc9defd5c9c637b0a2a2f765e2a0d7ec4ed9079fb8 +[http://heanet.dl.sourceforge.net/viking/viking-0.9.6.tar.gz] +md5=14c7de0702a5bd5e45924bd166ae5ee2 +sha256=9370d4e6a7166c03c8838edc9defd5c9c637b0a2a2f765e2a0d7ec4ed9079fb8 + [ftp://ftp.vim.org/pub/vim/unix/vim-6.2.tar.bz2] md5=c49d360bbd069d00e2a57804f2a123d9 sha256=0619ddfa76f3856461f8d61b070a9da792ed587629f2b5718212ddb0c184fa70 @@ -15786,6 +19810,10 @@ sha256=494e27bd169d333917c0febcace466f89d119f71961e8959022fc6eab89764fc md5=89937e6d6cd8f658d037da0a7cfd3f4e sha256=bcf62f1121fe704a019363467f9182e29931ee6779f3b65e996171f4caa11369 +[http://ftp.gnome.org/pub/GNOME/sources/vino/2.22/vino-2.22.2.tar.bz2] +md5=be507a80ec2c3cd5888060b81ff74f4e +sha256=f01b24635120e9f5fc5332cbdff49e26603d1c7089d70057209f41cd634751e7 + [http://www.mneuroth.de/privat/zaurus/visiscript_src_0.3.2.tar.gz] md5=c43beaef5817fe525099341620e3584b sha256=3ec61d179aa29811f1383bd99c529342aecea1b3b4cffaa8670aecd7486d0c94 @@ -15886,6 +19914,10 @@ sha256=0e61bbccbc6689d8d9ea4842795498d3ff85079b870eda899cbbd7beb80866ec md5=309534fd03c5d13a19c43916f61f4bbf sha256=fc80dac6d622fdb2db16d772edc6ff7d0023ee6eb5f2acb79d894ee30197c2e5 +[http://heanet.dl.sourceforge.net/vtun/vtun-2.6.tar.gz] +md5=309534fd03c5d13a19c43916f61f4bbf +sha256=fc80dac6d622fdb2db16d772edc6ff7d0023ee6eb5f2acb79d894ee30197c2e5 + [http://gpe.linuxtogo.org/download/source/vtype-utils-0.6.tar.gz] md5=1bcb6f204f491d3813861dd8760cec61 sha256=51fa4fa2e2a8ecdce773d42d7ecb4bdf33b89a332418059c275b8a9d3fd3e8f9 @@ -15934,18 +19966,38 @@ sha256=b7bf9feeedea26d7e06935369a1a556089426e94f9ead946018526c96cd9b12e md5=3f9b5bf104ec523b8eebe69f93919ded sha256=acd218148d7f92ee7bd0539d6aabd0b42cca8ae4ffe241bfa8760d30605b28c9 +[http://heanet.dl.sourceforge.net/wbxmllib/wbxml2-0.9.0-src.tar.gz] +md5=3f9b5bf104ec523b8eebe69f93919ded +sha256=acd218148d7f92ee7bd0539d6aabd0b42cca8ae4ffe241bfa8760d30605b28c9 + [http://downloads.sourceforge.net/wbxmllib/wbxml2-0.9.2.tar.gz] md5=67a48fd9b69db8818a4dca5375c7993a sha256=cb4909d8753dff7f6ac90a62a61ed1ae68e49ead2dbc60c22673c55bb0e14a36 +[http://heanet.dl.sourceforge.net/meta-tools/weather-0.7.0.tar.gz] +md5=ce547183f7b455d837d654a484b29a83 +sha256=fabdec4b04d50b50558b6062d35884c60b419e65b3738b08be07d729b6f3d46a + +[http://webpy.org/static/web.py-0.21.tar.gz] +md5=9877a65a31bd97f649562ceab123995d +sha256=1900e88c268fe48b8f79589683068e1160792bcac2bd3867a262a02081755ccb + [http://downloads.sourceforge.net/webcamserver/webcam_server-0.50.tar.gz] md5=96830836f64edbb12c248eb84e6b0d18 sha256=b8e200ae66c20897c9aaa80b0044e638a0016d3bdb6e67560fd61f1ef162f305 +[http://heanet.dl.sourceforge.net/webcamserver/webcam_server-0.50.tar.gz] +md5=96830836f64edbb12c248eb84e6b0d18 +sha256=b8e200ae66c20897c9aaa80b0044e638a0016d3bdb6e67560fd61f1ef162f305 + [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.5.tar.bz2] md5=09b7b76d4a4eedf502f38df9d551d827 sha256= +[http://heanet.dl.sourceforge.net/wesnoth/wesnoth-1.4.5.tar.bz2] +md5=09b7b76d4a4eedf502f38df9d551d827 +sha256=ce4b00b85fd26cbb7b7362b405648f422d3c228df4236eac8ce2f464182cf750 + [ftp://ftp.gnu.org/gnu/wget/wget-1.9.1.tar.gz] md5=e6051f1e1487ec0ebfdbda72bedc70ad sha256=69044b87c517b986dbc17a5f7e4de430cb56e605330c19c6bb0d384d5c37e638 @@ -16002,6 +20054,10 @@ sha256=6fb80935fe208538131ce2c4178221bab1078a1656306bce8909c19887e2e5a1 md5=05fada181e12bfa94b52f0b10395b28c sha256=a4f15c73e2b67c888cbedfaa8093661dff6cb859357c197c60f3026baddb939e +[http://heanet.dl.sourceforge.net/wireshark/wireshark-0.99.4.tar.bz2] +md5=05fada181e12bfa94b52f0b10395b28c +sha256=a4f15c73e2b67c888cbedfaa8093661dff6cb859357c197c60f3026baddb939e + [ftp://ftp.elmeg.de/artem/ClientCards/11b/linux/wl_lkm_718_release.tar.gz] md5=049c6c3d410e9f46884627b57485d3e7 sha256=a28c7ea94d57a5354b7de06cf5f6416d80a40596911c129d4b6a4087dc916831 @@ -16066,6 +20122,10 @@ sha256=cf688be96ba5f3227876b3412150e84a3cee60ddd0207b6d940d1fbbaf136b57 md5=7bb22f2bcdeed54b3fb5407d6d8bc9bb sha256=2f9755e2e3f96d26380857ef95be7765e6e276f6b53194c70633c027485d67f0 +[http://hostap.epitest.fi/releases/wpa_supplicant-0.6.0.tar.gz] +md5=635c7af7cecb39954997146b5c734b1c +sha256=24ce7873cbf2b23c00f931dd7f20326bea5463dd2a50a865b3d9bffd3f5780b7 + [http://hostap.epitest.fi/releases/wpa_supplicant-0.6.3.tar.gz] md5=b51b2975f21006f85f7297f3fb1acde1 sha256=f70b18243e049bbda66254388b6e94d404e747d913b8496d6e93a9c56bbf4af2 @@ -16074,14 +20134,30 @@ sha256=f70b18243e049bbda66254388b6e94d404e747d913b8496d6e93a9c56bbf4af2 md5=eb06a9a05d3916addf9451297a558aa2 sha256=0c10e59dd079c4e5d9ec6eebe9a8ac0e1b9e472cccef49c705f87a78391e79fa +[http://heanet.dl.sourceforge.net/wqy/wqy-zenhei-0.6.26-0.tar.gz] +md5=bf2c1cb512606d995873bada27c777da +sha256=47355b6ec84bb309614b6d657ddfda993b96ed0be569264f82e523b254f945b2 + +[http://woodstox.codehaus.org/2.0.6/wstx-src.tar.gz] +md5=3fc8e914d13316aa254b883a99fd2b85 +sha256=e7ab2018865334a1b9b04161235192c2fdc7387baa422b576722db2011f75157 + [http://downloads.sourceforge.net/witty/wt-2.2.0.tar.gz] md5=c990186db06cf188cb267d12bc21e2da sha256=f91445e5e1a02ee16f0bc1eb31a1cdfa53c4bb1e1cb4f76fae33436d472e9345 +[http://heanet.dl.sourceforge.net/witty/wt-2.2.0.tar.gz] +md5=c990186db06cf188cb267d12bc21e2da +sha256=f91445e5e1a02ee16f0bc1eb31a1cdfa53c4bb1e1cb4f76fae33436d472e9345 + [http://downloads.sourceforge.net/wvware/wv-1.2.0.tar.gz] md5=b6319d5e75611fe2210453b5feb82c0c sha256=a76f44468e78591e6d510d326702e7c3999d2b9dd3ab8ab8c1c9811fd5b111e4 +[http://heanet.dl.sourceforge.net/wvware/wv-1.2.0.tar.gz] +md5=b6319d5e75611fe2210453b5feb82c0c +sha256=a76f44468e78591e6d510d326702e7c3999d2b9dd3ab8ab8c1c9811fd5b111e4 + [http://switch.dl.sourceforge.net/sourceforge/wvware/wv-1.2.0.tar.gz] md5=b6319d5e75611fe2210453b5feb82c0c sha256=a76f44468e78591e6d510d326702e7c3999d2b9dd3ab8ab8c1c9811fd5b111e4 @@ -16094,6 +20170,10 @@ sha256=0c65ea807950fab32e659d1869a7167ff978502bd5d0159dbe9de90eb6c2e16b md5=07f76102b9798f7a01cb35663589896f sha256=9dcbe3c0006ea63012c5a57720128170bef39b72d8e98e79ccbee202a3e7323f +[http://heanet.dl.sourceforge.net/wview/wview-3.1.3.tar.gz] +md5=07f76102b9798f7a01cb35663589896f +sha256=9dcbe3c0006ea63012c5a57720128170bef39b72d8e98e79ccbee202a3e7323f + [http://wvstreams.googlecode.com/files/wvstreams-4.4.1.tar.gz] md5=907b0cba8931553d848620ea16f006b9 sha256=cff48f9a87e94672c7a819661a3a5c893ee44e763c6e5775d00aff3de43619b1 @@ -16110,14 +20190,30 @@ sha256=1e09f6ad9dd987403f9549c2640680cf932ba00df5afa20a4531e98544b413a5 md5=029ff5aac16ff5c42c89b9a7c7ac4029 sha256=7c03f8e02b023c8843bc959bf32d972cdca27d5f6601c6c2ce1c1174208966d4 +[http://heanet.dl.sourceforge.net/wxwindows/wxBase-2.6.4.tar.bz2] +md5=6e55324d2a522d23fd8834ad8656e0b6 +sha256=1679c29f94983f3fb855f79dcffa2335eb638c6e159444185506e0ff50e6672a + +[http://heanet.dl.sourceforge.net/wxwindows/wxBase-2.8.9.tar.bz2] +md5=2f78233829bb8979ca31f86b6de87ee9 +sha256=5bad521a93021ee7af10127b8c9b4235c16274ad06943585022bfc23a6f4b005 + [http://downloads.sourceforge.net/wxwindows/wxWidgets-2.6.3.tar.gz] md5=7af577ac8a6d78d6a0fef1b09cf1093e sha256=f4f42e8b649285fb0d8cf8109e420f6a0d16b2315985d017935279ceb26eb035 +[http://heanet.dl.sourceforge.net/wxwindows/wxWidgets-2.6.4.tar.gz] +md5=43cbe5c7508f7dc3e141c346a897fbe7 +sha256=b31c3bc4e85e7f972db1dfb7b447d213694569e2a5794a84116295c334a11f43 + [http://downloads.sourceforge.net/wxwindows/wxWidgets-2.8.9.tar.gz] md5=3ad40ea2b1728eefa94f60beb9951ff7 sha256=9b4096bb1e273914adf101182c27d457f46fcc44d1b3ea027bae3d34ace8c6f7 +[http://heanet.dl.sourceforge.net/wxwindows/wxWidgets-2.8.9.tar.gz] +md5=3ad40ea2b1728eefa94f60beb9951ff7 +sha256=9b4096bb1e273914adf101182c27d457f46fcc44d1b3ea027bae3d34ace8c6f7 + [http://xorg.freedesktop.org/releases/individual/app/x11perf-1.4.1.tar.bz2] md5=fd06c8b8e3572a0e14af65a49e0dd7d1 sha256=c81819618ec596fda55b950ef80f2ee02e5ce149ea99f1f741cedb459b4d3064 @@ -16142,6 +20238,22 @@ sha256=0ab0690814d9b773ba790fde1728abea985f64e129b2cf42e12435d1f09adf69 md5=0683a56108ca6d0c4329c7b9a5b7fbde sha256=e3f8a224af7a8df4defc2c0b3567e1a697486443a2e073fa56122c4a4e439d65 +[http://heanet.dl.sourceforge.net/libvncserver/x11vnc-0.9.4.tar.gz] +md5=0683a56108ca6d0c4329c7b9a5b7fbde +sha256=e3f8a224af7a8df4defc2c0b3567e1a697486443a2e073fa56122c4a4e439d65 + +[http://www.oligarchy.co.uk/xapian/1.0.5/xapian-core-1.0.5.tar.gz] +md5=5fbfec7f23b0f539d32b50de4a278b95 +sha256=277e30cbd4a4d9355e9b2c02489d34cbaed87754bbdeb8956e5463e9fb592658 + +[http://www.oligarchy.co.uk/xapian/1.0.7/xapian-core-1.0.7.tar.gz] +md5=b4acff50028120852d4a8d943065f6d2 +sha256=75f2e805399ce61c423d7945f7f0d14aac53943538345425f6a1033b9fe59631 + +[http://xappy.googlecode.com/files/xappy-0.5.tar.gz] +md5=cc0c6d5a8f9346ad90bd5f8183789c96 +sha256=998d148114abb4ae68ef2c340d971dfe09ec581850a1f0fd7c856f3c9b397b3e + [http://xorg.freedesktop.org/releases/individual/app/xauth-1.0.2.tar.bz2] md5=31b956edaeb453ddaa640420e97b25b2 sha256=569e5a581e5eb16abf1c04a66da22c6dade14578ab34e5e78b8724bb655f1f17 @@ -16154,6 +20266,10 @@ sha256=1fd18b53fda74ea4649eb9577b1cf86538a25d171f10251eeb30d11cdd5bda8c md5=ef2359ddaaea6ffaf9072fa342d6eb09 sha256=cbb271f6c3586210f31953933c4d06bd34272df9c596f5e26124ca3caf8529be +[http://www.hoopajoo.net/static/projects/xautomation-1.00.tar.gz] +md5=5051d633c15a0aac8c6eada281584d1d +sha256=019578691e8ab02532e35033331e275b658b360033e9e34dfdecf4774d161e3c + [http://dl.bytesex.org/releases/xawtv/xawtv-3.93.tar.gz] md5=8d2731e6e95f173f41a0ddc875d55804 sha256=d5e333bc74c0a534bf96f40ea89b7e700f137d46f1fdbaea13fa552ad6227af8 @@ -16162,6 +20278,10 @@ sha256=d5e333bc74c0a534bf96f40ea89b7e700f137d46f1fdbaea13fa552ad6227af8 md5=51b4a1c0ae2b3bd77417306fd78a3e94 sha256=c795001f15974569e16f25b201ac2ac7666c5a646f8d0de3afa0c3a1ba5d64a4 +[http://xorg.freedesktop.org/releases/individual/app/xbiff-1.0.1.tar.bz2] +md5=404f5add4537d22dd109c33e518a5190 +sha256=9845b1fa8a1cfd408f01fd69b66808068e847cdc925d114c7723c17934a96503 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xbiff-X11R7.0-1.0.1.tar.bz2] md5=c4eb71a3187586d02365a67fc1445e54 sha256=c9c899fddcb5053d6cf2a00a933b6e6b0429af547efbe85f89ad3bb35176bbec @@ -16174,6 +20294,14 @@ sha256=5aa5be594e77f772b85d39f0c25f61a61c7f6fa02ba940e614c5ee386deeb867 md5=22c6f4a17220cd6b41d9799905f8e357 sha256=3d7b78cf588871caa00ef79f5f66657803cf9a07350ac5dcf56fbe5ca2a794a8 +[http://xorg.freedesktop.org/releases/individual/app/xcalc-1.0.1.tar.bz2] +md5=07b948cf671fde88df1a59bfb0cab3b8 +sha256=17484e5fec0ebe7dd8df7218fde1449c52be3f4c6377a85a9fd86e377a7f4248 + +[http://xorg.freedesktop.org/releases/individual/app/xcalc-1.0.2.tar.bz2] +md5=d31a99795b9668f047aa11bf36df6df0 +sha256=96375e2d212e7249d14d0beac73c1a6d89252b5fcf571bd9f5c7303a14bb4a32 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xcalc-X11R7.0-1.0.1.tar.bz2] md5=c1ecea85be15f746a59931e288768bdb sha256=a1af9c7474307077e69cf86c185c77a3a1454ada64e3abf766fcdee6e92b4fd6 @@ -16218,10 +20346,30 @@ sha256=abdc3055a9c85996c84adc858b2c8f02116f330bdbaeff9e7b38a99da4b852a4 md5=50fbc65bf9c051029ea081cf497493f3 sha256=4827a11db099d4968183d322e326ea5657ddec560c3f2ceef8d210d0a3b83584 +[http://www.xchat.org/files/source/2.6/xchat-2.6.8.tar.bz2] +md5=940fd8560a4e4e5d905e53207c6cbb87 +sha256=7e239a43c5e293da57a0ee8dc1e383d243ec44b00e682558db93be3d2752611f + +[http://www.xchat.org/files/source/2.8/xchat-2.8.4.tar.bz2] +md5=66d60febc62a01bafac9bb3a35fb37ae +sha256=f95a9a9e477128aae536669dedd79f4e7b4d469072565695289e4bbb5b36dd63 + +[http://xorg.freedesktop.org/releases/individual/app/xclipboard-1.0.1.tar.bz2] +md5=2c6ecedb10dc51adbb64c95f22fd99c2 +sha256=3399a27101285112ea578e1855c8374254afa8d427a3c5943458abc27c4d70fc + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xclipboard-X11R7.0-1.0.1.tar.bz2] md5=a661b0f922cbdc62514bfd3e700d00fd sha256=74e949dc0fc1d275b60a170975a9bb99a12153687f2a3478b963b1ae4c607d96 +[http://xorg.freedesktop.org/releases/individual/app/xclock-1.0.2.tar.bz2] +md5=6b930326f71993fb54b7203902b387cd +sha256=ced648762382eab09e0ccb87371cb745646ede08ffcb068faa6025d20c4d1f3d + +[http://xorg.freedesktop.org/releases/individual/app/xclock-1.0.3.tar.bz2] +md5=2b1a3d030d87e62a591db8ee4c0072e6 +sha256=10b5777ae9ef2a10d4cf447bd1bf13372d7061573835c2c87d5c948b65e9577f + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xclock-X11R7.0-1.0.1.tar.bz2] md5=00444fed4bf5cd51624476ee11dd1fab sha256=eb93d5278f5e46f8d7ff5b53a10a03fef09326e72966c3a0b8faa255436ee6b9 @@ -16246,6 +20394,18 @@ sha256=e275a39f41ffae854db77b2c5decfad2cac32afbcd158842032dc9ca04efe92e md5=1c8396ed5c416e3a6658394ff6c415ad sha256=6e1cdf207ca998acd4e1cc991bde47fcf9d01d24ba733f9d3afe3c64843ef838 +[http://xorg.freedesktop.org/releases/individual/app/xcompmgr-1.1.4.tar.bz2] +md5=3eb1c2b7a6ceaec4ee872cb06d202d91 +sha256=4bf647745b4de940ef75796fc8ad4e1f83c276e474f7b6779f317fcd070de884 + +[http://xorg.freedesktop.org/releases/individual/app/xconsole-1.0.2.tar.bz2] +md5=8678ddd23573022d68dcd883ae239be8 +sha256=45db847e810a932bb962041a4c242f97779142f7e36feec64ec5f9073bd9b377 + +[http://xorg.freedesktop.org/releases/individual/app/xconsole-1.0.3.tar.bz2] +md5=0e1a3110bebabecc2897d67a973526b0 +sha256=1b1ec25fefad34f5c33c74474358c1f5a8702d8c04defc854826bccb7a46bc45 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xconsole-X11R7.0-1.0.1.tar.bz2] md5=f983b589ba9de198d90abee220a80f81 sha256=f62bd7916589515d338055cf977b544d031883659f0ec97cbbd08441256f1059 @@ -16254,6 +20414,10 @@ sha256=f62bd7916589515d338055cf977b544d031883659f0ec97cbbd08441256f1059 md5=dd817a0fabe11b1b463492b37247b013 sha256=be246df3bb5b5ed6bcc3d527f7b6015b3c3f2035090f52729ec4c796f5da20e9 +[http://www.nickg.me.uk/files/xcowsay-1.1.tar.gz] +md5=cf08b324b67d5761158344adcea89402 +sha256=e0dd4b753690c650c6bfbb5af9d190fa6bb3d889a491c8553a34ba397ede8bbc + [http://xorg.freedesktop.org/releases/individual/data/xcursor-themes-1.0.1.tar.bz2] md5=014bad415e64c49994679cdb71a97e37 sha256=4e7dcd402cd045ce1bd1a3de496270e78d6ead2478a0bcb3404072b33c5c9ea0 @@ -16270,6 +20434,10 @@ sha256=b26adf2d503d01299718390ae39dab4691a67220de09423be0364e9a060bf7e4 md5=7b0c623049d4aab20600d6473f8aab23 sha256=b26adf2d503d01299718390ae39dab4691a67220de09423be0364e9a060bf7e4 +[http://xorg.freedesktop.org/releases/individual/app/xcursorgen-1.0.1.tar.bz2] +md5=39e1e62f5bd92603b0230b8b948c2fc4 +sha256=18d3e0d64853089c2154f1f867df087fc15f87e03e09fabc98ee5e265d8a53ef + [http://xorg.freedesktop.org/releases/individual/app/xcursorgen-1.0.2.tar.bz2] md5=6fc90896b8c786cb1a2100b4167f7874 sha256=e009322bd2afef8d4ad91bcb6b17874e1cd00b1aaf397e7019a82cc44f3c174e @@ -16294,6 +20462,10 @@ sha256=4511dc4df6ebb320a4a516b3b712c86f6924e5ee9832618f58ebba06c64712ea md5=b3884eaec59a63691f66bc29ce57a56d sha256=75378ad3eacbe32c625de3b4af3e1f6fc9772ab45c1cd1393483d95ac4da3b22 +[http://xorg.freedesktop.org/releases/individual/app/xditview-1.0.1.tar.bz2] +md5=e9a7192ef29453b8c810ddd556a463c0 +sha256=177194e5f83b31c2f934e3a0b573e8ae359edf2ef1a2403ee8e1dad383558117 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xditview-X11R7.0-1.0.1.tar.bz2] md5=21887fe4ec1965d637e82b7840650a6f sha256=c3662dc4e97f7eb0bbcd7cf952bd9f67218e8ceb8f5418fb6bf61ee5e8ec0392 @@ -16302,10 +20474,22 @@ sha256=c3662dc4e97f7eb0bbcd7cf952bd9f67218e8ceb8f5418fb6bf61ee5e8ec0392 md5=619d0549c6c20ca15aa77769f2fbabe2 sha256=9e640974c132ef1faafedc77e4602d55457b2791006b677cec071ee8afbf9a74 +[http://xorg.freedesktop.org/releases/individual/app/xdm-1.1.4.tar.bz2] +md5=a2b4c280f3e324d081a0d9ed76a8a123 +sha256=928238ea20e074372659b2902de0e0d754083196911319319795fdbfd1ca6073 + [http://xorg.freedesktop.org/releases/individual/app/xdm-1.1.6.tar.bz2] md5=c89f8bc74fda4d19e5f374f59c88810f sha256=c41ac89d9da5c3f5424e9c4871d363ff17acf0fd2a46830931c447ba0b5a8bcd +[http://xorg.freedesktop.org/releases/individual/app/xdm-1.1.7.tar.bz2] +md5=92effdb698d9ecc9113fe4f49294bd90 +sha256=6a7bceccb1eb9ce3d14259be7a6cc8268bc9e1f127298480b9322ceb6f032d6d + +[http://xorg.freedesktop.org/releases/individual/app/xdm-1.1.8.tar.bz2] +md5=cc1816bc62a3722ad509373b0b7f30fe +sha256=e1169058775a44b0898351d2f645039b4d8946360285831e553587a147b735e9 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xdm-X11R7.0-1.0.1.tar.bz2] md5=9ac363721dbb8cd39aa1064b260624a6 sha256=9bf8895b98fb35ee38ac713ce83c80abdd8e33de278e1ddf982a293c31b56b81 @@ -16326,6 +20510,10 @@ sha256=4294768751bd4ffb47e5ebacfc7b5b9f95a1a2f4d221d8af64474382473e1962 md5=2b08e9ca783e3aa91d7fb84fdd716e93 sha256=d97f2872f5400f7fb5c0ad9442eced4bea55ab523de27417bd479db0071e3fed +[http://xorg.freedesktop.org/releases/individual/app/xdriinfo-1.0.1.tar.bz2] +md5=be3c5a9b242a57226b5bb5f22ec341ca +sha256=f693977bdaea7eb6b095a6b6bc60b8a62110ecdef4c455211346e592f59c3772 + [http://xorg.freedesktop.org/releases/individual/app/xdriinfo-1.0.2.tar.bz2] md5=a5ec51ed9f0a55dc3462d90d52ff899c sha256=7b03ac095b6c79688c20ad61e3576d4698e3f16c09a7f3f1e7c50826814e7265 @@ -16338,6 +20526,10 @@ sha256=84753f1c33be507ed9c1cc9d5e78565cc61e60d1403e499d7f25603d9a3b4f6b md5=36cc576a71bca1177ce793003ed78f32 sha256=9049146404b9596d70f77a0250d26aff93ba7ba6f42e99f7ee2302a757dfd362 +[http://xorg.freedesktop.org/releases/individual/app/xedit-1.0.2.tar.bz2] +md5=c56160e93c24ddf17e69891ed50deb72 +sha256=2658d78bbaf8c9effac261f3c229c035fbfda817fa9636dea1e46078213362df + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xedit-X11R7.0-1.0.1.tar.bz2] md5=19f607d033f62fb1ee5965f4236b19d4 sha256=cfbea0872e9963ae3ff61b07000f92d840b65244eec0e1a9750a58a03d70db93 @@ -16390,6 +20582,14 @@ sha256=530902e8732130e37d9b46e73eecff90d6dbc5d5628620fded74a4e054aa8029 md5=3ffafa7f222ea799bcd9fcd85c60ab98 sha256=e93bb322fe96ceabd0581bb70101aaa1001b0b8f894b3ae0e1fa2e4b38f41af2 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-acecad-1.1.0.tar.bz2] +md5=ce0b7bec500273ad935cbfa212b8ac8a +sha256=3e5feea79f1d48cd46a2a40661140042ac586f90311669f79d65fea6cfc112ad + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-acecad-1.2.1.tar.bz2] +md5=2c371317f2aae34c04db63c19759a44e +sha256=07d2f8a1153d34a6516b8f1129fc32a18f2862bbb58c9bad4637fb282d60385a + [http://xorg.freedesktop.org/releases/individual/driver/xf86-input-acecad-1.2.2.tar.bz2] md5=2d6596b2b0cfa527b5ed4df2014684bf sha256=953ebb7d7ed579ce648dd6f6a25307c37ad8230a0336ec6fc58247732835f26e @@ -16402,6 +20602,10 @@ sha256=699ba1716f74db0aaa66aa510ebf195560ff09f88001f98bde9275d2826f30ea md5=7ed47ca8feb1fbbe305f3a6732181550 sha256=b2bcdb4ef8cb9645e476afcedeadbb9d1688f8e8f7bd010f6718a15f1673556b +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-aiptek-1.0.1.tar.bz2] +md5=951b2b1a270f67d28e2e89fd2b9f15ae +sha256=3db0e3259034d838c2ff7ae26718422db6d33d89cd1a2defa0efdddbbbfcc28a + [http://xorg.freedesktop.org/releases/individual/driver/xf86-input-aiptek-1.1.1.tar.bz2] md5=2aa75313ea5652a8cf93581c65ee6493 sha256=219116b0275b93333b8471fc94d97320a116d695c4249837fd97763f00a85d77 @@ -16414,6 +20618,18 @@ sha256=62d1dfdc2f902d016999861ec3fd58b4630341e8f4df45e65c7bee730b51fd8e md5=e4ede86a636263c02530005ba958b65b sha256=1d0cd2377f61974dca5ed141304ec2b55814af6f9d084ce634694713cdb6da28 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-calcomp-1.1.0.tar.bz2] +md5=af13f9de2af4e1d03b2da0c037fd718a +sha256=ebc446e74eea72d391104b1ce3b2a5376bced098154ec089a944f4311d240904 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-calcomp-1.1.1.tar.bz2] +md5=689099e2ade8a8c9f68f82fdf569b3ad +sha256=8117b37da2e031eb983e1e98034710a1511299496fcf235f936caff252fa8957 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-calcomp-1.1.2.tar.bz2] +md5=ebc9a64dc72ae3015c16011bbd2d3557 +sha256=bf6edb9d78c90952a16c8bab9e69aebb3e1361e4423ec90e47df57e8c873254b + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-calcomp-X11R7.0-1.0.0.5.tar.bz2] md5=f4199b5df063701462d5a8c84aadd190 sha256=f3f913f627e0871a65a4e18cc3df3b0188bfe0e73a755436921488756753f989 @@ -16422,6 +20638,14 @@ sha256=f3f913f627e0871a65a4e18cc3df3b0188bfe0e73a755436921488756753f989 md5=40a557a54cc8ff58cbc4dc1abd37bb18 sha256=89f23360b8eadd5bf602712d78d83147245b51424aa06d9b643265f840857610 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-citron-2.2.0.tar.bz2] +md5=1fe53cd055a69650f3c2e02377ec728c +sha256=26cfa755d3a383f80039fcd286c44ba5f7b353feb8c674f386bb08d741d2c3fe + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-citron-2.2.1.tar.bz2] +md5=4e254fcefb3bea55772e63c12570f6d9 +sha256=1480ba63b342c00a53292d513bd79a69e1ea7c01a0c77d1a368ffb22e37c1a83 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-citron-X11R7.0-2.1.1.5.tar.bz2] md5=62b5405d337bc055bc9345565cc0da8c sha256=fbac5de06334b6757d91fcc2abc08e2c56c7a57dcba1abdb5c99133decf7f795 @@ -16430,6 +20654,14 @@ sha256=fbac5de06334b6757d91fcc2abc08e2c56c7a57dcba1abdb5c99133decf7f795 md5=9d33544dc2beb9643cf329f5f4ab295b sha256=362d927749c899b18287afed4c3fff59480bc18cec63e9d104073b585fd3814a +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-digitaledge-1.1.0.tar.bz2] +md5=53461c34cc0712aacab92b820b9fcb84 +sha256=24001f19b46b5bc2fcf8212f04863e4efa90175fac797350525e14848ab98a38 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-digitaledge-1.1.1.tar.bz2] +md5=4c27e0f3c6447e76df39a837fd46a00f +sha256=ded010f82b1dbb57b1ee0ad6707902b31540e0592c94d6bbf3b43a7a35220775 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-digitaledge-X11R7.0-1.0.1.3.tar.bz2] md5=8342f3a0dcdaa1120af01dd25dabf0d7 sha256=964a13291f412a6da62d3ad98bb8afa21ad7c884eb6234f279a0d40d7f912b58 @@ -16438,6 +20670,18 @@ sha256=964a13291f412a6da62d3ad98bb8afa21ad7c884eb6234f279a0d40d7f912b58 md5=e98d51c032e9324ab961a1353f65b6b2 sha256=a416d031dcf31c28f0b91866ddf11594d86d5e40437c3b4529f95cc8a2958254 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-dmc-1.1.0.tar.bz2] +md5=e1bcbdefcb839173de79aeb3cd038b77 +sha256=c5ca8fb2dfe0130767b2c10bd0661277a67e7d5b9171a7f5f6264ec48790473f + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-dmc-1.1.1.tar.bz2] +md5=f21f008220bc7687ce1c34ab557ec32f +sha256=f98c5a7010fa71cee88b4c2470e5cd804e42dfbc5292cf1c20eb75e9b1814002 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-dmc-1.1.2.tar.bz2] +md5=91021ea8f3593221c0d9ee9cc14deb48 +sha256=b6f4eb367ab1aa7da5ac5218953d7cdde409c9ddf59f6cb6b2e1aa2789b3f361 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-dmc-X11R7.0-1.0.0.5.tar.bz2] md5=fdf127a2d419f7c2e02bec27273091d3 sha256=6e03c373f3aa25b7305e927d76dd9fd233d83a3ec08bf517e8cbdd2b00d32be5 @@ -16446,6 +20690,18 @@ sha256=6e03c373f3aa25b7305e927d76dd9fd233d83a3ec08bf517e8cbdd2b00d32be5 md5=d26f4abbb4c14a64cb5d19676edc1a58 sha256=8287cb7ca9af7996850eef6f32b4577f5747049ca635b6b5851fc56ff0b04bf3 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-dynapro-1.1.0.tar.bz2] +md5=1683178d09dfc604dde9ea2aab950a28 +sha256=fc2ad50b1aa027fe57da53cbb73db0b4b9d0de9032f00dd42e7cc0aae7c50d6a + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-dynapro-1.1.1.tar.bz2] +md5=d47be12a230c44a05d56d6b79ebcfc38 +sha256=ed0f1ba81febf8e7a20cfaf32b021fcaa102af37f3070d67d6a101eeb6964992 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-dynapro-1.1.2.tar.bz2] +md5=ceb5efbd3d62e24ab3a5f9f180777f7c +sha256=55b7b2e950331292ec05c81d566af6d1000ac3cf904068964c3b9d43cea4deec + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-dynapro-X11R7.0-1.0.0.5.tar.bz2] md5=89dbb839ab4c5fca3dbc3c2805a7efb9 sha256=28a2707b4633b99fa9b5fc5106d5eff9445344e50bd6a05a41094178a508e11b @@ -16454,6 +20710,18 @@ sha256=28a2707b4633b99fa9b5fc5106d5eff9445344e50bd6a05a41094178a508e11b md5=5121ef14108585c902753ae6e4b813f7 sha256=fe0f5a9dac8a7fa2e2758bbc5a50190d99b39c5510422ce99efd95d96e13889f +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-elo2300-1.1.0.tar.bz2] +md5=43885769d6f741272dda162e82902b0d +sha256=9551f67e24c4573867a64d032d1ff6b63654caab8a85d3c6b2af7748daaa2134 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-elo2300-1.1.1.tar.bz2] +md5=4eef20f44954d49571a10b9134fdb663 +sha256=cc2cd97f49cce1795ea74034b1416ff7cd5107e1a69258b09a741d55a98ba005 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-elo2300-1.1.2.tar.bz2] +md5=611d0a77a80286bc926dd3c414e59555 +sha256=ce575f79a5a93f4129a4e63572911d54cdc6640abc303afeb3c74741bb3c9627 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-elo2300-X11R7.0-1.0.0.5.tar.bz2] md5=6009a17f13a37bfde8b60c2fba5b0e5b sha256=6a4dec968d92c7a73dc801367c2743062b3a09b37bb8ed7ba720f435f1f53703 @@ -16462,14 +20730,30 @@ sha256=6a4dec968d92c7a73dc801367c2743062b3a09b37bb8ed7ba720f435f1f53703 md5=7eeb9f2018aef32299c37ad2b3744b8d sha256=46d3d459821a321cf82252bd4130134b5ecab0984cc0ec5ce0f0f8b3b6e41908 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-elographics-1.1.0.tar.bz2] +md5=ecb2bf1f800d4f5f4c295f2a0e6b1de7 +sha256=1583e1dae6e3ecd34ba55deae7dfc052efede0378f852de6224308d7e7d5b2d8 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-elographics-1.2.2.tar.bz2] +md5=50a9c32af12ca4733afe23042f012f9c +sha256=76ded0e6977f7d562a8236bc810423cd050320531be9621d868a48309ebc4d63 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-elographics-X11R7.0-1.0.0.5.tar.bz2] md5=24c33f833bb2db72a07c3d28bfc0aae9 sha256=f1b7f84175d33f4d18c83cd0d37bd3962acd668922fa074a8ae29e18517cdda7 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-elographics-X11R7.0-1.0.0.5.tar.bz2] +md5=24c33f833bb2db72a07c3d28bfc0aae9 +sha256=f1b7f84175d33f4d18c83cd0d37bd3962acd668922fa074a8ae29e18517cdda7 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-input-evdev-1.1.5.tar.bz2] md5=01705ea9a4d1699d5eeb17e7f297a581 sha256=52b7daab86dade2d189f0378ddf196c018cdc9dd47ade0b3b8fc7591cb4bbe9e +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-evdev-1.2.0.tar.bz2] +md5=0c7c41d3f1637bb559e80c2ad708f05d +sha256=b23b231d754cab717a4b145ee3a5f3e73db46d877d23502326e9794d92d976ba + [http://xorg.freedesktop.org/releases/individual/driver/xf86-input-evdev-1.99.4.tar.bz2] md5=f56d98ab11ef77cfcbafb5d93c697791 sha256=71e896168819bcf50044c175482d03873c31bc6eb355305a87e94772580789dd @@ -16486,6 +20770,14 @@ sha256=ba53e8ce6bfa01da7fa86a31853542a71722b41b511041bdb58cf66c10f3edb4 md5=6eba3b46ff77b99c44f93d2a08cc6935 sha256=e1e2b2ffe37e1c70829eef55f700cf3cffd49b3b3e0e2d3bb47c2cdd5db5adf6 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-fpit-1.1.0.tar.bz2] +md5=a31066a2076d18619ceaea67f6d89698 +sha256=8ee3b2df90516182460fbda025153aa7fb2c6ba343e4239d225963a287f694f8 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-fpit-1.2.0.tar.bz2] +md5=0f3e013d5ff58e0aba3d9e1d18830291 +sha256=87e3dd97d57ddb520cafa5e68fa7846cfc3d9d71cb054cdf0e1d650c7b1cff7e + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-fpit-X11R7.0-1.0.0.5.tar.bz2] md5=fc0e11fefc322623914a2d819d5b6d51 sha256=8f131c2b26b1e0e16e9dfacc73d457bb16cf6e455a1dbdc382f4a3e3b219c703 @@ -16494,6 +20786,14 @@ sha256=8f131c2b26b1e0e16e9dfacc73d457bb16cf6e455a1dbdc382f4a3e3b219c703 md5=223ef71e07b18e140ef227feef965ef2 sha256=a11dbb0bdb6bfc65fc2a8b096edd4797816767aabe49349517a51497e373ac0b +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-hyperpen-1.1.0.tar.bz2] +md5=1dfccb75069e61e0c6f990b47eb58c40 +sha256=d1c20a3340e06c5634759832dcf2edc6acb41476a4f637eba6880730e607f493 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-hyperpen-1.2.0.tar.bz2] +md5=175c1e1ad668ebbbe212c1e975dd14f9 +sha256=689d1c5c1f21eed00ae03a01c57482f7bbef36d7e07156556c99febe28c7d413 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-hyperpen-X11R7.0-1.0.0.5.tar.bz2] md5=0c4f2a6390e3045e4c48a48b47b6332c sha256=708011ed8fdb6d321e7ca91787ff06c7bcb011cc4a3b5d6c0c02562222da7ef4 @@ -16502,6 +20802,14 @@ sha256=708011ed8fdb6d321e7ca91787ff06c7bcb011cc4a3b5d6c0c02562222da7ef4 md5=8f1d96c97e48c794a61d2e81dcc1d06a sha256=798bc6be1385c2c39483553a9f20b022247d364a8acf7e31b3ee2c61e31183e3 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-jamstudio-1.1.0.tar.bz2] +md5=a32e36a24545791a3408cdc5563b6523 +sha256=ce41b360bd08ea31036b79cfc25a32c854147522e4580f5ca1a203233e657e1a + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-jamstudio-1.2.0.tar.bz2] +md5=8011f90d7dd801d26e8c3dd058633978 +sha256=c5bbade96f1849b45f665a54e08ac8f9d5a94d31a8a680edc4d3c9361d164ac0 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-jamstudio-X11R7.0-1.0.0.5.tar.bz2] md5=49de35ca024be2cb785832ae37ec30d0 sha256=ed5c17b702a43192710b7476f3a8540d04bc800554fd05e348be4f510f651dfa @@ -16510,6 +20818,10 @@ sha256=ed5c17b702a43192710b7476f3a8540d04bc800554fd05e348be4f510f651dfa md5=ca01cca63fa57600c1cf6b307bb9aa8c sha256=cacc590ac4e57f3374e18b9898c6fa8992f31db6e1cf985391fe42c33a29fe15 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-joystick-1.1.0.tar.bz2] +md5=e0025215542c7a11c5a7f9548631dbd7 +sha256=11c3e8056e8f44b9a6f348b5366c7e725155563374770b82e339e913b9a60d16 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-input-joystick-1.3.1.tar.bz2] md5=ff25ea697cfa1570cc28f4b9cf9c761f sha256=1d33b9668e039ea9adc0680c1f2971785508cfd74b2215749db23af23ef8f9ce @@ -16530,6 +20842,10 @@ sha256=240abf3bc4068f9823dbe6e8ff9c63e5aee1442fd85c80122f2ee44c00fe101e md5=babf094e37bdfc08076d4adb4c69c1d9 sha256=b7e7377d75f3a10cceb5df18019b8e4498fbed0100478edd4af75bf8cd45d6fd +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-keyboard-1.2.0.tar.bz2] +md5=06e14029e00b32ed085769775b398efd +sha256=8c45fc324ea01377f9932250824ee1769bdf1eab6e4b661c22a39deb0b01580a + [http://xorg.freedesktop.org/releases/individual/driver/xf86-input-keyboard-1.2.2.tar.bz2] md5=ab3122921f6359c54e250879288ffd47 sha256=c25b35524eaf00928d97bd0d8bf9e489d92993b133461b5f4d8d9655d37ec072 @@ -16546,6 +20862,18 @@ sha256=e82d510157d13be37eed604cfb0d9355c054c4d3ac39bdef0c6ef320f2973d77 md5=d81490c79db78b0c182f0b2a37e02756 sha256=33b2190541a96b601d22ce6f275b95b0869bad89af8629cf2d8035951f78c47e +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-magellan-1.1.0.tar.bz2] +md5=0d6a81aa864ac790d9a8b517ca7016ad +sha256=8eef54b50c428513a330ed7183ce37f269050252a4d1199d3b00ad6bf0a7833d + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-magellan-1.1.1.tar.bz2] +md5=8a966d3b74dc2a801ff09b895037090c +sha256=06da7d1b222ba47ba0c7fd561965d78f2c8e46f44c998cb768e98bdc3c0e1741 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-magellan-1.2.0.tar.bz2] +md5=9801ba10f15f8be2420dfb3f3b5d5d27 +sha256=c5285147a4df0b5b0fd5dcb7c0e5953bc982d3d6f2a2ed2e7767ead909a510e4 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-magellan-X11R7.0-1.0.0.5.tar.bz2] md5=fd7367f467dc3302604274cee59a7c7b sha256=e13fb01c5b86b9409d1e4024c06b55a18d5c2eba98370e73870caa19f8ef973b @@ -16554,6 +20882,10 @@ sha256=e13fb01c5b86b9409d1e4024c06b55a18d5c2eba98370e73870caa19f8ef973b md5=9e4bde8bbc56e99f43164bbe79343360 sha256=80734e0406f6cd8263c22dd6c34b4cc387d75d27a1cee02c13fb7626df05ba53 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-magictouch-1.0.0.5.tar.bz2] +md5=d23f2791cd634ef85b7cc5e9da8f8407 +sha256=9cedc831e9d86889f473fbe3b8f1478afe5ed8c0dd71492aeb896cc681d7444c + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-magictouch-X11R7.0-1.0.0.5.tar.bz2] md5=a51d84792b8c0079d7c8d13eb17acf31 sha256=1e384f8cf5f516c3b460b8e1a94ef98dba9681a3ca0a2f2fb3687a9df12d00d5 @@ -16562,6 +20894,18 @@ sha256=1e384f8cf5f516c3b460b8e1a94ef98dba9681a3ca0a2f2fb3687a9df12d00d5 md5=b3ed11fd57bf99ca515d72a16875cf68 sha256=ac0ff1cfa93d9512d0a2a5b47430f6ecbcb34bce2c3e76542e883e4731ea1f2b +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-microtouch-1.1.0.tar.bz2] +md5=7b3cc0330d70e7e4e07914fcb325b331 +sha256=7f92f5531495ecfbfd00744198fd4b2aa3b8f5c188b115e55e865e961bca2039 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-microtouch-1.1.1.tar.bz2] +md5=9843fbea6cc0c4129e96ce9a6c893cf6 +sha256=5f2f0b16705c6226081a452f9f876508c388b384fca69106d377cd134cfddfd3 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-microtouch-1.2.0.tar.bz2] +md5=1ad1aee7d8df84b9ea832d1e75963257 +sha256=b3034e0a768c4f646ea954d59dd414d00df3238e845848081221af6efe864f3b + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-microtouch-X11R7.0-1.0.0.5.tar.bz2] md5=0c25e0340b6483fb2a600b0e885724a2 sha256=f113b6649719261da21137d4b18168862d37efc1a79db2dcd1e078f6dc9d8a3b @@ -16574,10 +20918,18 @@ sha256=2776fe554835a2be94e69cc40af7b4d4f7048d9a36a844ebaf1a792ba0868dea md5=d8bcd9fb1b4efb02acd251495f9a30c1 sha256=7d4c2ecbe8f9327f7c8093c05401ab68b22f3343bcf04e4838cc40c21b7f8e0a +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-mouse-1.2.1.tar.bz2] +md5=72b07e65bbea6ab484d84c048f6835fb +sha256=82671998e2b02ad097e3d5cc7d964e11de0b3ca3dfec4876e8fa2a13af6aacc3 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-input-mouse-1.2.2.tar.bz2] md5=c47c598e55e7080b8ea30f70781f7ca3 sha256=80e9cb52b2036b71289b2140bcd3ac202cf46fd42830761c53120ddac38e7edf +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-mouse-1.2.3.tar.bz2] +md5=47da1fa52584933d045528109f094eff +sha256=a07cb2169f43018c90b7889781c0db30cda0da03811edccb8c4db533166357ab + [http://xorg.freedesktop.org/releases/individual/driver/xf86-input-mouse-1.3.0.tar.bz2] md5=31a51b0e5ddc4fac19754f48a3adf881 sha256=054b253f366795c2865714ce8bc545c79e59aa9ce1b7a9a4a05b9c674dff9dec @@ -16590,6 +20942,14 @@ sha256=183c1cda6550c8821ef4b8d13e681a32813bcd32b6cf34a75d3870e399fa292d md5=e427b9a1dfbed3d4c9de2bf01008fa60 sha256=ffc07ecf8bdb4cc30d399f06ea950d8016f254614930e3d3fe476ab88748f3b3 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-mutouch-1.1.0.tar.bz2] +md5=98ae915c67cabf0e6d40a425dbdbe10b +sha256=cc67e0dd4f4fcc8d798f0bfe42b975132c5739bdd80809580a74182e4d1b62ea + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-mutouch-1.2.0.tar.bz2] +md5=50711d390d2867e3fa7e06b59b2d575b +sha256=214f0831f36ebfc081b9f31f91ae27972ced9371b9b2256650998596a097061d + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-mutouch-X11R7.0-1.0.0.5.tar.bz2] md5=4758e667bfbba517df2a58d51270cfe2 sha256=f46f328c9d8ef4dd6fe118121831ff4cd34ea9f06b198f548af4c703a1aab771 @@ -16598,6 +20958,14 @@ sha256=f46f328c9d8ef4dd6fe118121831ff4cd34ea9f06b198f548af4c703a1aab771 md5=1f15391dc1b24cd400ccb9c370f568d0 sha256=751b2ea30696af593320b2cad3f0131b252851020fd3277ca5e1907a0ca29e4d +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-palmax-1.1.0.tar.bz2] +md5=0959dbf7972dfb95f56e4bd3f56447cf +sha256=5c00c85eed2950a575362bee2f21c2fa68eb8af81e7f1d451273a1302eac4145 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-palmax-1.2.0.tar.bz2] +md5=9655d2235569c5a6ac321c6fb89a6f3b +sha256=02177c339ba60fb6cc942d3bc93a322e94247f36a6fe90c7c1121694c929b05b + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-palmax-X11R7.0-1.0.0.5.tar.bz2] md5=d138024a20298304af883631d23c5338 sha256=0756cb4d78cd896811f06675b986bdaa8d48ef2b3c53bf68001634fe1f7806c9 @@ -16610,6 +20978,14 @@ sha256=311ea26819f0ba66eede1fcc88026f6563b42807d0d4a239ea14574ccca26e26 md5=0589f2eaa84afb9bd49b226ce7dacdda sha256=dea18a07cf8f59e7bc981cfa1f6ef476dd14f7d9bee3bb1a55a6cc49f766150e +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-penmount-1.2.1.tar.bz2] +md5=268af4dceda544d8c815b9b7e87d4536 +sha256=fab08de727da6f56b82d8ecee451a52e7129ff80522e711c5322f1bd2fa9970a + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-penmount-1.3.0.tar.bz2] +md5=24594c0222e631fedccc7c540c420b03 +sha256=9cb4e0e83dcefe1ece814d638bd186785b6bc1debe1aa2101ce2a4ea0376805a + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-penmount-X11R7.0-1.0.0.5.tar.bz2] md5=065b1cf862864741aebcfefcc7c09539 sha256=314492cea0998182623f2a67461d64df00b910acd052c3a50f9349ead740151a @@ -16618,6 +20994,14 @@ sha256=314492cea0998182623f2a67461d64df00b910acd052c3a50f9349ead740151a md5=6093b35d21ce93029b2b28d8b69a1444 sha256=101bee132f27fe7f53d8242955aa195a174aede066921445bc1ceb3ef1a35f07 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-spaceorb-1.1.0.tar.bz2] +md5=294810ca9e93c4096458c6a0f2fb5679 +sha256=9cd53cb719bf401ff3f72233d3a88c59539b94eaf11e586e307c807a325f0815 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-spaceorb-1.1.1.tar.bz2] +md5=c7fb96281874733480ba86a5a0a3b5af +sha256=be8f052e7132d39094f42a08c0b7171a9e280e9fa1b162a62343d1dc0d2449cf + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-spaceorb-X11R7.0-1.0.0.5.tar.bz2] md5=193ca7b1e87c3995b86f15a01b63b297 sha256=e5fa2e430b39ddfe443b6c433d975f02025b5fa90f31fa249942d8bf01452bc4 @@ -16626,6 +21010,14 @@ sha256=e5fa2e430b39ddfe443b6c433d975f02025b5fa90f31fa249942d8bf01452bc4 md5=62c381b6c56d41a75858c16dccd06394 sha256=06a4dff5bd575e65ef4984f5f6415e4ef11d2301b028bd3383d45117c125c737 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-summa-1.1.0.tar.bz2] +md5=b37a432fd87bb9f46d011622d6fce6b3 +sha256=f10f2cadd4120b40b3658000c87f910e3005f4d787441c7dd83b48ebbf2a11f2 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-summa-1.2.0.tar.bz2] +md5=7e17468c0d90dcbbb6202a8242efff4b +sha256=3e8bcd89b4b3f86677f338a4584f41acb2a3cca7fe492cbea32664aa6f4f8cd8 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-summa-X11R7.0-1.0.0.5.tar.bz2] md5=61d780857e5dc139081718c075e74a01 sha256=6456ddecc0e1b962b5f14b98b81d2e936cb48dcdacdd871dfa0e24c0d252498c @@ -16638,6 +21030,14 @@ sha256=57460dfa0429c58d598f192aa65661300dd104953073d977ad4f4b15a596eda8 md5=939f1c831c5cd3a6f027e982592dfc5b sha256=e7d481c375a11df55eb8f12390c329c2bfda3258c689cec11cfec27cb5895c8b +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-tek4957-1.1.0.tar.bz2] +md5=be8a4bd474ad6c85b93f66dd6fcfa6ee +sha256=09b9506d1bb1deaaf69872392bc56e1d75997bb8157e85a9121749bf5fe15727 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-tek4957-1.2.0.tar.bz2] +md5=8103db1ca5c55726e0b58148e4b1fc06 +sha256=b097a5b1acbd732d9ca5d28c13003a1f1c8a3465f4fa77c1578d36330f3358a2 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-tek4957-X11R7.0-1.0.0.5.tar.bz2] md5=df633403c91a48c6a316c6a5f48e53e2 sha256=1cc4a964e2b407d2b9ebbac0bf38787e572d9bd88759fc0b229f588ac90ed139 @@ -16650,6 +21050,10 @@ sha256=064f75c31ac167e61b9b29c2cef86908ecf1e1a742019298b37799664d08d19d md5=4231b517d216e9f80ba66f13a0f30afd sha256=d70c64f3f4fe931e12d5af7f91ff04cd0d16dd7459061c50b3149f9e35de8091 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-ur98-1.1.0.tar.bz2] +md5=3cf8928411458baaa9e726e51772c550 +sha256=214bceb0fd52a932d448ce03d66539eed2e6660617e3d42977704cb7eec6472a + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-input-ur98-X11R7.0-1.0.0.5.tar.bz2] md5=9b1530b3dcbb77690ad0e61f60489899 sha256=2cbcca2d5c62de8376bbc9e1fea6f4564ece32f6f6b5e926b199c2e60a3dae7d @@ -16658,10 +21062,22 @@ sha256=2cbcca2d5c62de8376bbc9e1fea6f4564ece32f6f6b5e926b199c2e60a3dae7d md5=7e8288f4f75bcba1e3aaf6ef68664b38 sha256=f06dea24204c6f3f42c29d1a89f51da801082094e393a716d592d638fa9ddb66 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-vmmouse-12.4.0.tar.bz2] +md5=313e403e56702f6c38d1a5c830b60dc2 +sha256=383e0973aad0e96812fc019cb579abaf016f97427fc07466b150fe15739ba63c + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-vmmouse-12.4.3.tar.bz2] +md5=44730af795616ed4d4a0cd9a3a07935d +sha256=d668c4cacd4be6d56608fbdf7779d60120f38f3315e6385a7cc87339124e77ab + [http://xorg.freedesktop.org/releases/X11R7.1/src/driver/xf86-input-vmmouse-X11R7.1-12.4.0.tar.bz2] md5=f253663de03e0fbb377ce085947412b1 sha256=973a51a442d0c97eb3f76af3b148194de8a4187e74f4a68033b0480c6408db42 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-input-void-1.1.0.tar.bz2] +md5=ea72a92d43b95f413347df96d6a73933 +sha256=b43c5d920821bd06b6a1a131dd071ab838bf024c3cb092c6d1f10d57b648b0e4 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-input-void-1.1.1.tar.bz2] md5=862c230f5f6e0c545f232b4c0fa9537a sha256=dde062d6267a3fd9d51b0daee88fd84fceea52a6019de51dece46e92012dbc4f @@ -16674,6 +21090,10 @@ sha256=ca90a522b78114d72748164c7a99274634cd2b50953f9c52f91b31746c790b5e md5=3683affae738de5ef130b6720bdfd6dd sha256=4612a45a90fb1aec8cabd36abeaf04f202ecc45d2074427bfa9f368f95514e43 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-apm-1.1.1.tar.bz2] +md5=ac7e05f0dfc7e02cac0bf17b9eb89b11 +sha256=09d7e6cf30b94f141f8ebe2560b301a058f645e74108edc28c908e750865dcec + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-apm-1.2.0.tar.bz2] md5=4f78650d79656dc803a720049d65682e sha256=f0fe020f892e6e3a696a490c86312a1b32672bffb7dead153c24f103540a6185 @@ -16686,6 +21106,10 @@ sha256=ceaf4a611b8ee8bc31bc784f1012b0d6be6380e8823f6bf03a9a1ee737264a78 md5=a5320411ba92e637ffb233e9cbb80d13 sha256=1e43d482e570328abcb8a1e03c62f8c3e3fcaf3eb09dc885503a1add158be0a2 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-ark-0.6.0.tar.bz2] +md5=6921479baca8f7b156029489fd335854 +sha256=e5abc4f4ae643ce56d5773f052515196f05786235e4afd155a3232e20dbc84d7 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-ark-0.7.0.tar.bz2] md5=6826c556ebe9a1248cbc7f7edd44f956 sha256=8e65e73045fabe37c15f6d4895baa09346bdac2f7537607b523aacd7bcf57594 @@ -16698,6 +21122,10 @@ sha256=47aa2ecf4129e72e049796571e3125ff3bc8dae7fe31e27d361470d4a3b8d548 md5=a5bed67815b9e650182806da301b488c sha256=06c2462dfa65c32e31a972292531bf686c56c3f9cf21baf814ab0eda5cf26653 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-ast-0.81.0.tar.bz2] +md5=04bc08907da13612dbc4918fe54e63e3 +sha256=b95553aaf89bef28051c82914cee2b91102dbc2370d0d855404ba453902459b8 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-ast-0.85.0.tar.bz2] md5=b415bf3259ad0acdaf62e3dde76e3289 sha256=9018ff84e4866d895c037aad33fb31c79d5f47d3f54707600cc3fe6076485b28 @@ -16714,6 +21142,14 @@ sha256=9b0899694000cb91d5643e2482376af24bd495cb01b4c9dcdd6ee3545b0aefae md5=f6d559f9d20f61567d381916b376590f sha256=d08a429e1fb1620ae81839181a4dc6cd579d52fc440d44d7bba36d19be355780 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-ati-6.7.196.tar.bz2] +md5=06db625391c75c8be86c4dd5a5d713e6 +sha256=8923a08232255ceacf770ef767d86bbfb195dffa9559baa1b1de90f9c947a6d9 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-ati-6.7.197.tar.bz2] +md5=7bd53945ce6d0b48b7fd558039e82aa2 +sha256=b6c67996cfdbbf9b3a191b9092f5d515dd7fae564544626792dd5ef404e29134 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-ati-6.8.0.tar.bz2] md5=3c97c7925ebf4162eeb3463e23adc0e3 sha256=3863851e3c85d25cc38941eec63e866656806821b028519ae32ab8b276664fba @@ -16726,6 +21162,10 @@ sha256=094da5eae789e50d1ebc4d7823d4c8ac701e3bbe387c0ff63285e2ab32aad1f8 md5=c490366e7a663b4d05acb45713be45ee sha256=4f471f90fcedd164c5e550afbe2dd3f7247b38c19e3d44b0b8941bbcdf0f1a10 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-chips-1.1.1.tar.bz2] +md5=3182d43439ca4cbf08ff9aa76990bba3 +sha256=16a81cdb6b311176936c3326d279c0d75530adbcf9a3489eea55992ac5bc7494 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-chips-1.2.0.tar.bz2] md5=0fec6bee65383790485d917247a61629 sha256=05f38c49b23be36afa68b738faf520b8dbf05b92c769107039426651801d4f99 @@ -16754,6 +21194,10 @@ sha256=29e6fdd67e8ec51c534f6123f9935a165711255d935fb9cb28cd44f9db278b3e md5=0af3af1dc5686e1f487815b231b3dc0a sha256=f1a07fb7b78604b2731d9e859d50d59f16ad839da3cb75b19a99fd0500006c0c +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-cyrix-1.1.0.tar.bz2] +md5=02ed7d5215610a3463a0307b30bb5425 +sha256=d6a66778e0f6ddd907cba5784386bd6bb526f773b5db9faa35875ba67c2ca6ad + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-cyrix-X11R7.0-1.0.0.5.tar.bz2] md5=14f868d16554b19fef4f30398a7b9cf1 sha256=6eb51d5d4489083c8a1eeabc1fbd22baeafe6486a7940516d1e2b741564acd06 @@ -16762,6 +21206,10 @@ sha256=6eb51d5d4489083c8a1eeabc1fbd22baeafe6486a7940516d1e2b741564acd06 md5=adb1e6346efd8dfe5dcccd47d46869cb sha256=25ba42dedc297ca2a7257fdb4e050e8d61cdd6710c8adabdb3925908b09f9d02 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-dummy-0.2.0.tar.bz2] +md5=22b7cc20a33443cbd218bd2521850cfe +sha256=46013885696f3c1a5e05c5d503abc69e691443319a97cf2c6a01ec031e06c910 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-dummy-0.3.0.tar.bz2] md5=3d96297556846bee02a74166ffb5d052 sha256=5a4bbde0b7f0334bb63b159e5ef6e164be3699e3424734c2bd9823f20a30a278 @@ -16790,10 +21238,22 @@ sha256=c6032ec1753a0f5975b5a7488ca3ca0d46f84bc5dd8fcb42eebd807c7faec765 md5=c209e54fa8dcd3cd3342e84d261b02db sha256=d03eb7e5b47e2f1e1a665700f4e22d15651dc949196b0ec880f0d63cafb6814c +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-geode-2.8.0.tar.bz2] +md5=a2b9c70a32b0a6436d837d67fa7aae18 +sha256=f0b68171dd4256c927fbee91ecf84fa28c409b5b6b39cbf47eaa48fd73db305f + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-glide-1.0.1.tar.bz2] md5=a825152b086564c1011bac9e48413189 sha256=2b636894ecd8fc3472e05e548f0390ea802f5d9db7906ac302ec8cbd1e5f64b3 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-glint-1.1.1.tar.bz2] +md5=2cf49f701024a145bd25aff9da11d479 +sha256=d63e0dd3f5cecebaf1915193a68ac83e90c1e973e3276a71bd14651d67115e6d + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-glint-1.2.0.tar.bz2] +md5=1f5271ac01d4475efe73ab6f2c3646f4 +sha256=a0edd1109c03efdb0f6defc18745f89fb3c11142381e2657f94d492ddd1e7419 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-glint-1.2.1.tar.bz2] md5=6d7afdac0a26cf201c3f3b417c31c5e1 sha256=161780d2127d0548a2017ca461ce38e7a69afce5d921a08604e91478c6be1cda @@ -16806,10 +21266,22 @@ sha256=d5b4cb7b490edc3be57c40a00299002b60b8060396b3c902b2bf92090fcbd940 md5=99073dcfdfa24df68879c7b01324e91a sha256=21b70d71593f123c470dae2b4e75bac7478fffa50503c85b02e8f2c1945417d2 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-i128-1.1.0.5.tar.bz2] +md5=6e0d3e09fc99d6f0a0e969613ddf58cc +sha256=a99d2b04b829faa7542545380317c8f59f54ecbd5e0a7008580f3155742d0381 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-i128-1.1.0.6.tar.bz2] md5=c483efc90b1935025b17e4b9e9c2e4df sha256=b52183f5a7d0adee1d21b4b0a0908886b7bbc69dc4498f1e7a3edc4b1988c41c +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-i128-1.2.1.tar.bz2] +md5=d0080732eaa15059b0a953aa3522185a +sha256=0d023cacf8134241cd8efcd5744eb156399406c92f59d3895392f2b5fd055eb1 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-i128-1.3.0.tar.bz2] +md5=aff4922d2f02bad7e0d8649358edbcee +sha256=62eadebd3417ffb3857f10f16597c59541ceb135ddbc30b2140f46d9eb7dddd7 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-i128-1.3.1.tar.bz2] md5=3b170a6df5114420cd4021a057918a09 sha256=49bb23625654ebcd74d0d23f534b074188f4b21c3cd443b06ac83b9485bf9a75 @@ -16822,6 +21294,10 @@ sha256=543d7b8bc0c9e7889c686a647f98641f0a9b052e58321a8a17518d680e6db95a md5=9252e33d14c8869d995bf67e445ffb4e sha256=4973e6bd62eb307131e179ba313cfa6e79d15184eef5324bba985e2f781bb3d4 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-i740-1.1.0.tar.bz2] +md5=57302e225060a7286ae1a970c87a589b +sha256=b8f2144c987d8a14f8b477ee3aa43fc1c76d040a77e40938c3c97c8e34e2b7c5 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-i740-1.2.0.tar.bz2] md5=d0e5a805c546b29b1dd3b55a68d16dc4 sha256=59c8f6ee465bef033c1c20bfff8121a318efda9656d5dc29f674bb655f18486f @@ -16838,6 +21314,10 @@ sha256=51c5c1503c884459d8d4f699aa095d163c2de8c8c4d434f4309916efda4c89f6 md5=fc1e0da3430551bf25a7babf7ccfd3bf sha256=30d0cd555d8b8b5bb53d93eaae1ad2aecb5c94a760e2346d60b6e194c254e40f +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-i810-1.7.4.tar.bz2] +md5=744a6ee1ebfe1c74e3b170b8d7ef8395 +sha256=ff8cd89c9ba39ce68dd6ac4dcb222280835d007a20b419819749298e8ec74259 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-i810-X11R7.0-1.4.1.3.tar.bz2] md5=fe6bec726fc1657b537508bbe8c2005b sha256=1d9227ba301152738c6b498ec512ddfa67ce7c09e40b883fdbf43cd31e85b523 @@ -16850,6 +21330,10 @@ sha256=debd142a815e5e2611433f1af97d467e50361ad5b3baa0b54fb4b61b0280ef83 md5=07c9557f6529a88845b01924313e5763 sha256=1528a123b41bf42506eb8e37c3506086395f062cca71f64cbc67929ff1010022 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-imstt-1.1.0.tar.bz2] +md5=94853ca217238ed1f568a10cbeebe057 +sha256=9238c2257f9437dd7ab37c049d7f20c010e2f5ff833a37d2d6243f223f10fb7d + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-imstt-X11R7.0-1.0.0.5.tar.bz2] md5=cc949688918b78f830d78a9613e6896b sha256=738463dbf1980b9d0f95936a2d951dc51bd776c7949215c2456580948660669e @@ -16870,10 +21354,18 @@ sha256=5afdc91e93ffed09ea5258c6fde210c729ea2b44d83f98acfd92c3da7e99e64b md5=6081b8fa50c689d51f85c2fbaf93867e sha256=fba616f88d351759e00a90965e38a0d82608698ae36fc2a18df4036cd384e1a1 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-mga-1.4.1.tar.bz2] +md5=ba373233a7d13084d14046a17b02e248 +sha256=5becb5f0caf0f99296db28b32be46eb95d0a88ac8e4829c47cb637fb52d06564 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-mga-1.4.9.tar.bz2] md5=11066b84b949cd04300ec819c9c51532 sha256=d57dd2323052f064092167a232fb7576f46e5d62e98bc9cc6a7f270cc8d0fdc0 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-mga-1.9.99.tar.bz2] +md5=29785ff1de2b0f7b7f1c48350449447c +sha256=82a91e523d40625c9e042ee640276756d1169cca7eb305c691a3378805c4c81c + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-mga-X11R7.0-1.2.1.3.tar.bz2] md5=cb0409782020b5cc7edc273624ffdd17 sha256=8f4ef9e7a82aa1f4624b2d87da8ff0472e3f5c2ccdc7998f4418c6906cadc915 @@ -16882,6 +21374,10 @@ sha256=8f4ef9e7a82aa1f4624b2d87da8ff0472e3f5c2ccdc7998f4418c6906cadc915 md5=b42cab6a2742bf90a205a991c281f4e2 sha256=d7e9fe8b79229cb76a2749eb9658dfa96ea580420de05170e5a7b402062a9592 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-neomagic-1.1.1.tar.bz2] +md5=7a3d3d6e60b9686d955c45d9ebbd5c1b +sha256=d6497080967b8285b663fedd7cafd4457578282ebd7da0b216b6fa214dd88a86 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-neomagic-1.2.1.tar.bz2] md5=a72f57fca4f4dff9a2c82eb1fe7456f4 sha256=96e38d5378596174f76c735c4723ff2ac336f9069644502a9b706586b845e0a5 @@ -16930,6 +21426,22 @@ sha256=97d47df7720d3cfcb56c4debca9218c3fc5352d34d82bc4880c8a620185f8c5e md5=42f12a36d7afc26c817e8e8f5c8b7274 sha256=f56d2bb42f6c4369dd3c6adc30988c53a229650f910b0db1bb3bf9376054011e +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-nv-2.1.3.tar.bz2] +md5=f9b38e24157c3aac6014119ac18d76da +sha256=8d9b5ea137c31919f7821e7f3ecbd133158813c1059f4a8ed0a723535d969952 + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-nv-2.1.7.tar.bz2] +md5=192414222f1a98e228832ee53f8178c0 +sha256=7c9135d80b519246b2a85ff0481d6ee0fddeb578d669ff490f236f85873e8c5a + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-nv-2.1.8.tar.bz2] +md5=c3e8c98287dc98677bebfbe1ba51ab77 +sha256=825ffb97525517de9f0ff7155946c6e58c278dba11957573cc970dd3b094f94a + +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-nv-2.1.9.tar.bz2] +md5=c6b7e52fa18455c22eb040b8d2575ce5 +sha256=20d92ff3ab4b9ecc150f4ed17a7012a48f56dbf3fb51b51dde769b28922976d9 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-nv-X11R7.0-1.0.1.5.tar.bz2] md5=9a88547fe550e20edcc5a938d31e22b1 sha256=0ce5ad1affc488f317fd297893a469ed20f451b8bd8b12bb36450ecc8c56e5d0 @@ -16938,6 +21450,10 @@ sha256=0ce5ad1affc488f317fd297893a469ed20f451b8bd8b12bb36450ecc8c56e5d0 md5=b5c7144231652242ef8436ec8898138c sha256=8fd91ce003998739677556bf13146e9a3560970ea5342bad5c44c11fc49410cb +[http://www.openchrome.org/releases/xf86-video-openchrome-0.2.902.tar.gz] +md5=6e3ea28e0b0baf3dc1230da4e1a850ea +sha256=f645da4120b3ad5356b46269ae13ef8e2315bbb443a8c147e05c611f7fa21df7 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-openchrome-0.2.903.tar.bz2] md5=c0820787e89958c9114d359b6a3cd464 sha256=b7e4858d6b5c6428fae2485a2c2097cdf6073268ef812aae2ccbc3d936db7410 @@ -16946,6 +21462,10 @@ sha256=b7e4858d6b5c6428fae2485a2c2097cdf6073268ef812aae2ccbc3d936db7410 md5=007bec0c6b07d9d3aeca4da18e561efb sha256=5689ca714fee9c9272bee12883b07a0ef2c40358ffb19fa684e963027b56567b +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-radeonhd-1.2.0.tar.bz2] +md5=6a932ec17da9ce5a6d9000c1649c3a7e +sha256=87c6353dd52bbe22d3a45f28fb39de1dd44f41568aaf8a9b0d45a7ed62313e27 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-rendition-4.1.3.tar.bz2] md5=a8b97feccb32184820d5856fe78d34db sha256=37e7aef72f7466485f5a3bafd0d43190cb7439de16868bfba2c59bb4c9df4408 @@ -16982,6 +21502,10 @@ sha256=b9b9abdd80c00782ca2e1313016c3d3904dc10a1de1c94d29cd4efafeb1f52f3 md5=4a293047e988d4ea1e9e96d3b5793f43 sha256=9094115621ef73c957cf887332717ec727c751959b1059e3d00fbfe0114a978a +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-s3virge-1.9.1.tar.bz2] +md5=a91c73285ef67ee7cd9e2da28acb6cc4 +sha256=cef5702963f49e737fb8b1472dc0241f7a5da49f844ac77f2df3e693a84bc822 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-s3virge-X11R7.0-1.8.6.5.tar.bz2] md5=d0164c37749ab5f565db9813487e1900 sha256=064293e33256c5baa8932b42f181ec0d2fc7c0ef5b72e655aefa72d58e2b91ff @@ -16994,6 +21518,10 @@ sha256=075fba99f38b900416858a39c7cd62f0f3f583ee48cb52d546b12e916fa13c32 md5=6367e921a98f6a7fec9d0a9bc5ff0a47 sha256=1a9aa442152c139e3c54bc6c323bd13edf0bfff70a81c03969bcb1159317edb2 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-savage-2.1.3.tar.bz2] +md5=9c5e541613b07de6e7b2b2df3a2e35b1 +sha256=f5f154df377cb445935d1453d6b7095d63912d5776dcb44f8d3c2f10ab1a3cc5 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-savage-2.2.1.tar.bz2] md5=62b8aba48b54eaefeae87df502bf219c sha256=adf95cae0fbaf72326c51c4c9e61486eef062bb1706f6ab46d942f2c36d8a37e @@ -17006,6 +21534,10 @@ sha256=e4ee3af5989cc9b0c8ff59082f64a564420dc22a2eb9fd53e41da24260a65e98 md5=7df6bc61424a566325e48e5eb89a21e2 sha256=efc0b44d7146c0d0f966dd1f0bdf6098e086fec7a33f5b480f99fa17e2bc7cc4 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-siliconmotion-1.5.1.tar.bz2] +md5=ee35d7714ce44a2b5ac7ad7b7b7dd75a +sha256=54cf791695a53d4836d32f899b7d34b969edf5415f02e36956b6e72993e21cd7 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-siliconmotion-1.6.0.tar.bz2] md5=a8419a8ed17b02b2a6dd4d30d5e94b00 sha256=cc5301b9c6adb9a0770509b8570d38730d43e9ffce6d6886cd9a090965017e53 @@ -17026,6 +21558,10 @@ sha256=bcc0dcde5d469cc2500676e0ad29dcd12b1370066289902387ead762260e4b40 md5=e35d817fa4ee7beb6cd5aa744b9c0783 sha256=898ee8fb16fff89ba8ac5c83b9f5a2371084719db0cf034140427229191436f6 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-sis-0.9.4.tar.bz2] +md5=43f12cabf770b06170cdd1cdaafdc50f +sha256=50856446841526fc393af6bae0fbc39c20bb07e60056a676d0bc620446b593ac + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-sis-X11R7.0-0.8.1.3.tar.bz2] md5=e3bac5a208b8bacfbec236b5a5b0ef40 sha256=c578fec74f7028ee28a46a62ab2b22fdcbd6de8cefa7a185e73c68b1d8a12e8b @@ -17034,6 +21570,10 @@ sha256=c578fec74f7028ee28a46a62ab2b22fdcbd6de8cefa7a185e73c68b1d8a12e8b md5=f3ed22290e677381dd6236ef3bbfc7ac sha256=6c4c821941c571b39c950acd57ed4a646a6474070a68a0caa09eb7c3b2715e03 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-sisusb-0.8.1.tar.bz2] +md5=cbd669507e4aa35e468905f09b546333 +sha256=1596b79ab3e33263bde2d456cc0376808abee80b4cde059605f176d98bdb45cb + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-sisusb-0.9.0.tar.bz2] md5=7b1f5465f423a859f306f4f1d6306a1b sha256=76b79c9b7d3b35b8e2e5354569bf0936c4afd39a9dcbdf66327714d75137930a @@ -17094,6 +21634,10 @@ sha256=f6ddac6bc0b0a446ff9401467e4219340151498824d98c9274ed38a959330aea md5=de3773fe837b633cd7841546358a90b0 sha256=5b5e22e501b0cf03704fe4737abc49c6c2a2f08a1af28067634f4b69c838e621 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-sunffb-1.1.0.tar.bz2] +md5=dee23564c0d8069f52c7cd29c78be667 +sha256=f897a427e83cf6965fd82724e3298aea44eb3131ba62f904cb514dfd0a879029 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-sunffb-1.2.0.tar.bz2] md5=816842de26bce8a935f3c9c3cfedbc42 sha256=59f2f8fc2399a4d6b0ce733481c58694e723a989f4712c00436d35e27c059292 @@ -17106,6 +21650,10 @@ sha256=318bd61c8da6e938d5c707a0c70ba3ada1c053ff3172a918f821a1a015b7b6ce md5=5bcb5b90c679a046d604d4f98d804d0d sha256=38406fc4e7aa1367587517b4a872fe88dd0be9751aa057b84dc62a7238ccffcc +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-sunleo-1.1.0.tar.bz2] +md5=0408d95795d754c92d12d6476b6932a1 +sha256=b504d50f261bea9bc9dcd2a9c9c3307b24dee97c18d13b5a6deb3eb393270da9 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-sunleo-1.2.0.tar.bz2] md5=14fe008620940a674981912fa02ae133 sha256=b315be97197020ae352efe48e9bcd13a572c3a03b2a4d598e89157a897746e06 @@ -17146,6 +21694,10 @@ sha256=65e95c95bc4fa5fdb766b7edf8f39253cf8496fca66bc4bc06f260ab9e9ce504 md5=21500d264bccecde3122835bc39c7793 sha256=018d27561286d39ea4fea5967f2433c6748da51472bd63db0c74bc32f18417e1 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-tga-1.1.0.tar.bz2] +md5=9eda4d4490706b2dd8f4ecdbaf779856 +sha256=50143dfdd259fd114dc2f41518a4898d5407bf55422251df75812b96a1fa6e9b + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-tga-1.2.0.tar.bz2] md5=f3bddf0a64932ca9bd72041ccd3b5501 sha256=a92f8cad0e21318be465719a9f30a50d5719b0b70bf8e15f3937e7850cf1aea6 @@ -17162,6 +21714,10 @@ sha256=250ed70d94070f6f8b14540b6509e6ea25f38616b0e0c443f232cc4028765db7 md5=c0e8b2f54942b6902b7dd4f30defe800 sha256=d23eb8fa165d238ddf64da63dcd60c70a01cd761608a18402cfb95aed6722495 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-trident-1.2.4.tar.bz2] +md5=7f628f7eb4abdc4c49bb252eefc4335a +sha256=f942596e7427a089be9c9353c45c22002999580197c9715d9363d19ee170ba8d + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-trident-1.3.0.tar.bz2] md5=e89799579d0cf3858362bd751469e0bf sha256=a4f66c9f46f6e93c2c1f10e782a211ddc338b0ff9f0a2ccd2d660db031d3ddb5 @@ -17190,6 +21746,10 @@ sha256=5e67a6893375585be731b0fd822e9c3407a0930f7addbc8cf01fffad57f9d0b6 md5=62d58d822fdd32e67658bb86ab4e4390 sha256=cd41d3b58a6ce65ebe4313735a2111880b27b910e5c2e09ea91720ad230f9006 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-v4l-0.1.1.tar.bz2] +md5=69339c38eba2cebc357d67e7a755d734 +sha256=33ad549ea3f6a8da7f58d9964f3f2d83aabc6d64c2ebc2ea0033ac8dacaec870 + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-v4l-0.2.0.tar.bz2] md5=2251ae2a0a905764941cd7b098e85ad1 sha256=cbff9120fbad900cbdc7ac535d04984e7b491d69a8eb0b371e30ae07cb61925d @@ -17222,6 +21782,10 @@ sha256=c6601cd278ebc30a0d20b49b6284bc21b4910f8ef5d24d1c62daa1591a251452 md5=16a20d6bf7ba858d511e96daaf43700c sha256=54241149f54d8355c54035a6ddf2af8a51ede1a4b72a404ff43b1bba54e465fb +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-vga-4.1.0.tar.bz2] +md5=b93e5fe9757db779a75cd3ce97b9613d +sha256=ca25f4c0f706688cbc2dcd03ffaf6a57a17290290257f0cc1b1f1bb261f95b41 + [http://xorg.freedesktop.org/releases/X11R7.0/src/driver/xf86-video-vga-X11R7.0-4.0.0.5.tar.bz2] md5=24437857707acc337cab331cc56f64e2 sha256=325a11679316f3ccd83e4c0712e45301285bda62ff716df232446211fb19cb34 @@ -17246,6 +21810,10 @@ sha256=6444f1b61a53b9ea89551d95d32bcf98d4d018d0d3ff9c34626c5c24d1b60507 md5=eaf1ce9fa23363799140602afaa10f37 sha256=1971fd356ba54204c3611edb9144c43c25c21167a5fa5ee725d3f2e3f9864fa9 +[http://xorg.freedesktop.org/releases/individual/driver/xf86-video-vmware-10.15.2.tar.bz2] +md5=99322cbcc9081ad44e9cba63e3df8f7e +sha256=edae155c82d348b76dabe1373605bf6715b577cdd7a95f8b54ad534dc47c71ff + [http://xorg.freedesktop.org/releases/individual/driver/xf86-video-vmware-10.16.1.tar.bz2] md5=a5e1f2539b82206e411c3647f10c425f sha256=91ed99ae936be5df25d310d81e31e0a7efefc023e462d93a9289ac18ebdf4e89 @@ -17458,6 +22026,10 @@ sha256=ddabfb0ccf04366820efdeb7c640ee3a648a55e51b5177c9861a5ab896e96ddd md5=4c3d1acb8ce37ea4dd55d82aeb38e9e7 sha256=7394906dec7b50789407219f85143ae83b10938949d38adeecdd59eb50c8c1c6 +[http://xorg.freedesktop.org/releases/individual/app/xfd-1.0.1.tar.bz2] +md5=c72abd90f50ef459bc14b39ec9fcc7f8 +sha256=111baa16780429d6739ab69b7393a18d75a10b7615dcc8cd0b0878ab9a5e2e1e + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xfd-X11R7.0-1.0.1.tar.bz2] md5=26c83a6fe245906cc05055abf877d0f2 sha256=a3fe35b19aa957e5261a12ef78de2c62b47796aa612b2334088b3d98dcd77e8f @@ -17490,10 +22062,18 @@ sha256=0cde8831dc56669a046f6284b0a8dabd583942837e41832e7ed57e57020c4446 md5=5d2a990bb725b6720db93f34dd91a731 sha256=791a05a2fd695508ff6b3fd3e0e2be66de28a3d0bf86ee22e14126992d7aef21 +[http://xorg.freedesktop.org/releases/individual/app/xfindproxy-1.0.1.tar.bz2] +md5=5df3a162429bdd6ce5aea3ca5f6365b8 +sha256=6b585ceadd3e17b433e177d80837e485869d6704f1181b6f3457ae56ba1988ea + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xfindproxy-X11R7.0-1.0.1.tar.bz2] md5=5ef22b8876bb452f670e0fc425a12504 sha256=33e4334126ee11aa6b68e0dc2c1aea0f0d37144240f650f21e10a90db9b05b6c +[http://xorg.freedesktop.org/releases/individual/app/xfontsel-1.0.2.tar.bz2] +md5=288fe4cf8a990e4e602aac16dd9109fb +sha256=7a66ba3910bd7e39d58f9d4a4a588f191a874b8607369fe2cc9203a7115006a9 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xfontsel-X11R7.0-1.0.1.tar.bz2] md5=d1df7b8622b7f8ebca4b2463118d7073 sha256=b87b5f171cb4d61e35ff0fda9231166c4b6132fe512b05e8ff63a91be47eab43 @@ -17514,6 +22094,18 @@ sha256=b9bb03820a8ba1995ffe3e5b96b6d5ebbbc0347ad1202172f13bba63b2984d54 md5=f43cb64d623b748208dfd9012d17b654 sha256=452dde2923c7ae5a2b8cb4b9735507c579c1c55a0e5e45a34210e52574ee641b +[http://xorg.freedesktop.org/releases/individual/app/xfs-1.0.5.tar.bz2] +md5=3fc73b5e39a1fe8b8d96563c8144cffe +sha256=f586f2101d42e512e7d20a6a6715c3c2cad19cacbee3b4034a0818de349e38f9 + +[http://xorg.freedesktop.org/releases/individual/app/xfs-1.0.6.tar.bz2] +md5=a62ea490a8b97f74b53732df8fc309d8 +sha256=5a3ad18fdc67e261454740217f7c02d1b6825013abcebdcd778a4865fd823353 + +[http://xorg.freedesktop.org/releases/individual/app/xfs-1.0.8.tar.bz2] +md5=f10717e45535b64eb45226aac571dac2 +sha256=34b5040b3db7552fc1cdfa46f926ce5b7217ea5d77cfafbbddf94fbae6b4f482 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xfs-X11R7.0-1.0.1.tar.bz2] md5=a297da3d906110e9c29ec56c5ea578a8 sha256=5d9df9048863f6d281fc1b71601ff7d31d5075eceeba462b3a32dd4734440c6a @@ -17522,6 +22114,14 @@ sha256=5d9df9048863f6d281fc1b71601ff7d31d5075eceeba462b3a32dd4734440c6a md5=b1650e876b19741762b654dcdb98be47 sha256=15094fbb2ebbe067c88ed32a62724b71019ee577c849b25aa6ebf0115efc63c6 +[http://xorg.freedesktop.org/releases/individual/app/xfsinfo-1.0.1.tar.bz2] +md5=e98b18fbce1261de30b1de819d86f48a +sha256=adc33443b3a7f334d2407de702004a0491f24708e0e1abe74cd8ae114cd60cd9 + +[http://xorg.freedesktop.org/releases/individual/app/xfsinfo-1.0.2.tar.bz2] +md5=e6c0071f6d5436113982f4a575d3f94b +sha256=95aaca84f948fc7e25d82c58d3fdbba44911b99f3e205378ce82a786c11bb96f + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xfsinfo-X11R7.0-1.0.1.tar.bz2] md5=55ca0cfd09b1c1555d492d6961d9af46 sha256=8d5f6ad0318a8958eaf5772657007ffb545a36c9cd8190f2511cfa03c0069d63 @@ -17566,10 +22166,18 @@ sha256=10b2f7ffbf309c12ec82b4bc28b35014cb223208d3003bab3765b70dea9d96bd md5=fbea3ef7eec87fd669958f9cf597bfb8 sha256=d6f6052ec9bdc2a048dd34a79248ee56abd903055adc0d89d04715eb17ac1dc0 +[http://xorg.freedesktop.org/releases/individual/app/xfwp-1.0.1.tar.bz2] +md5=0dbde8b3867032b9e4a383d46dfd7e48 +sha256=cdd6ecb453c62086dd01808a26787641add419dd42469349f79d0adeb89a6d93 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xfwp-X11R7.0-1.0.1.tar.bz2] md5=e1ef3fef10d1f7fbd936794982a8f0be sha256=d333ce08122e6cde1a9d4fc7cb8e58b13e9335b52fd249046e8380f23d9bf429 +[http://xorg.freedesktop.org/releases/individual/app/xgamma-1.0.1.tar.bz2] +md5=45d8fa3c85d4bfda87251798fd605a45 +sha256=085330064fdb90a152d2d44474fa20bb81ccb6c587c144f5f9c323cb9cc31eee + [http://xorg.freedesktop.org/releases/individual/app/xgamma-1.0.2.tar.bz2] md5=f13ddedaa63a608d3b025d326f4f5b5d sha256=5d3d5b230fc60aefae8f4865c17add133b5fb11377fd61c80897ef94fcccf41e @@ -17578,6 +22186,10 @@ sha256=5d3d5b230fc60aefae8f4865c17add133b5fb11377fd61c80897ef94fcccf41e md5=07167da3f6b21985e27174ec70f213c0 sha256=ec744335f06c070d30f7f256262f6326c2cfff35a0ed6178e7be18ad44ad8a86 +[http://xorg.freedesktop.org/releases/individual/app/xgc-1.0.1.tar.bz2] +md5=72fc8dd68f585000c0a542eba0264571 +sha256=7caddfc6c34f62a4ab2dba2ba34085f6b2343b36ec1bec3b522a2188170e1093 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xgc-X11R7.0-1.0.1.tar.bz2] md5=8cd01cf558c3eed738115abcf720277d sha256=6151d08a12e7a9874738c46119c6ffe8383d1fe6c5d10ffc9d88e2adc8e454e8 @@ -17602,10 +22214,18 @@ sha256=6a283d383358200a9d6866d5d666a0227c8412d9c33d41f166f39c011482aed4 md5=96e5195c366064e7778af44c3e71f43a sha256=6a283d383358200a9d6866d5d666a0227c8412d9c33d41f166f39c011482aed4 +[http://heanet.dl.sourceforge.net/xine/xine-lib-1.0.tar.gz] +md5=96e5195c366064e7778af44c3e71f43a +sha256=6a283d383358200a9d6866d5d666a0227c8412d9c33d41f166f39c011482aed4 + [http://downloads.sourceforge.net/xine/xine-lib-1.1.0.tar.gz] md5=3537cfd58d253b4be20a4975e7086e38 sha256=795085a067b3a11c1b3de48b4d07b01d8ffb6123bd188a73cb53b0605f875c64 +[http://heanet.dl.sourceforge.net/xine/xine-lib-1.1.0.tar.gz] +md5=3537cfd58d253b4be20a4975e7086e38 +sha256=795085a067b3a11c1b3de48b4d07b01d8ffb6123bd188a73cb53b0605f875c64 + [http://folks.o-hand.com/dodji/0xdeadbabe/xine.tgz] md5=8b78ce490cde6eb3c586656e9bc5ead8 sha256=86402c93b332c44b4e79c568137257d567de1f95cd5f6f6e5433b7e67b40050a @@ -17666,6 +22286,10 @@ sha256=330c3e5188abf256131c162c456060804f369349e9a0e7aa3efbc54add802e45 md5=2fbcae1323c266edf5b6c61751f2e343 sha256=0635bae5dae3c933ebba997475ae14fa213aee1f2ea8aaff2ca76c50f8aec716 +[http://xorg.freedesktop.org/releases/individual/app/xkbcomp-1.0.4.tar.bz2] +md5=d5122f1d5a91725a81c843f3bd388244 +sha256=fefc574bf639d64348939edf9654306af2bb3c20447be9cff493cb06d87cb672 + [http://xorg.freedesktop.org/releases/individual/app/xkbcomp-1.0.5.tar.bz2] md5=6cc96c3e4ed5d9802fe717beac008f19 sha256=204403e0388e83127212109310037d17f56c3c3fd3c96d7dcaa0df99684f00c1 @@ -17706,6 +22330,10 @@ sha256=9b358d085bb4fcbfcb0a928cacd4825ba918ef21a2a5e4a3ee401f09abc97f90 md5=af4fb106610b4ee3e36ddfdfe213f40f sha256=86ab048045dcd1de690de0b040235040f496c686730ad557c912e0f40edf5c4a +[http://xorg.freedesktop.org/releases/individual/app/xkbprint-1.0.1.tar.bz2] +md5=b98ae2d8b21c545b7b322d0b302efefa +sha256=008dffea5b213880cb3ebd40d0b9bf0cc10392fb0349831efdebf2a428dd2e17 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xkbprint-X11R7.0-1.0.1.tar.bz2] md5=6235c39690968d0a9a4c1b1c16c8905a sha256=d2e9c3c28e23010441ce40c48bda7adabd338a256cb9b99848be6ed937fc10e7 @@ -17734,10 +22362,22 @@ sha256=77a11aac6e4ae2132d8b7b4335be77de26655e6aa88b40e51fd2ee802f14a9de md5=35f47fd58d75c1ea5f414b21a10bdbf3 sha256=fe59dfdcd43faf8efa778f9b2390525a606a62dcd7a70774982bc19301f6a3ce +[http://xorg.freedesktop.org/releases/individual/app/xload-1.0.1.tar.bz2] +md5=ba013813f9c21eb015559466f8d02a44 +sha256=8d51184d6b18eea2f64e0c5b88cd95edff8353ce6529e780f95b1f2347babbf2 + +[http://xorg.freedesktop.org/releases/individual/app/xload-1.0.2.tar.bz2] +md5=b41ed6b4bcfc9897366c27a94d2bf150 +sha256=86b176b6efc52557b1c7631bfdd5c17e7060a438e1e85ce15ec9657be356c50b + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xload-X11R7.0-1.0.1.tar.bz2] md5=11080456822146ebc0118b15f4b911d9 sha256=6b5b3ef58e6646f004a5f1cbc6be8f32b824cfbf78a30bf242e4f07083668770 +[http://xorg.freedesktop.org/releases/individual/app/xlogo-1.0.1.tar.bz2] +md5=4c5482552f38a7d42398a694cc9b2ee6 +sha256=de59f9be3d45fe93f445f39bec3cea09753a671e56863ce77e3a797d2df526b2 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xlogo-X11R7.0-1.0.1.tar.bz2] md5=0314b2f5173da64957031400638fa5f8 sha256=1397377bae07e8907f73bc445e967d4d4400769e683c2119598d952c8ad28131 @@ -17758,6 +22398,10 @@ sha256=988c71c6dc3519523fe5844ee3e49d91f843a83c783dd0baa20526d9d2981698 md5=cc0d64e90eab0b90b38355e841824588 sha256=05c269e322ed1ef54b8a32883c8676f46330ec70d85b0a158dbefc2b0e91ceb8 +[http://xorg.freedesktop.org/releases/individual/app/xlsfonts-1.0.1.tar.bz2] +md5=ca9c6c88d0b83360b7b5092615fbf591 +sha256=c8d826194299b2b8e3c6edce7070f05421465b0118ed47135a0195d12fe8a720 + [http://xorg.freedesktop.org/releases/individual/app/xlsfonts-1.0.2.tar.bz2] md5=28958248590ff60ecd70e8f590d977b7 sha256=cc6e519b783b082a2fe4cd06ea5b3693ee6bdb23f4b36e7a72753c524ef5111c @@ -17766,6 +22410,14 @@ sha256=cc6e519b783b082a2fe4cd06ea5b3693ee6bdb23f4b36e7a72753c524ef5111c md5=e8681e5671e7f01922ce6c8f2327e602 sha256=1f8d23d5f7dac0f06bc6c6fe6ed7d8e620fe1b0057654da314e24f7c6faefc6f +[http://xorg.freedesktop.org/releases/individual/app/xmag-1.0.1.tar.bz2] +md5=058d168d1c7c991b8d12158433ea5f63 +sha256=1f239057cdfb2164b2e8fc229e2518d20b27a853f975e73618a4a81f09ebeb02 + +[http://xorg.freedesktop.org/releases/individual/app/xmag-1.0.2.tar.bz2] +md5=7c6a783e42c88360ac31d259a864a19d +sha256=51dd943e607ddd8067fd13cd597998fb00560cbf06450a8c374563a78a86da43 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xmag-X11R7.0-1.0.1.tar.bz2] md5=38ac487ac1b75be0253fe7f973947386 sha256=d039d857c6d334d481452c20f5e419b1e120e03e6c9af709f071d9c00ffd9cd1 @@ -17786,6 +22438,14 @@ sha256=5bd358381d75f17802a0c8dfc62dcdaf9e782ecad23c0fca3e5c5b6445ff7ba1 md5=e2571ce90bdf1517eea4d8085170fe6c sha256=c3044870d1778b4f6d64463f0aeda2995aade1e0bea0feb6935d18bf44fcf6cb +[http://xorg.freedesktop.org/releases/individual/app/xman-1.0.2.tar.bz2] +md5=855f2dbfa2aff58b8b9cd6a1c1120fad +sha256=00bc616892388c94505b09564daffbad2df2e7c684686dea2d78dbcd210212f2 + +[http://xorg.freedesktop.org/releases/individual/app/xman-1.0.3.tar.bz2] +md5=3d3a4b310a65ccce82472ef83acbbf97 +sha256=38e03bfa2d3d109d55342e3539be952268e405fb458fb8c4f87739594a25394a + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xman-X11R7.0-1.0.1.tar.bz2] md5=a4f21547120952aeb8e5663ebd72e843 sha256=3d159c703ba901657d9633b239d39b21c8de68a2c3358fd1aa4175d20359ef87 @@ -17794,10 +22454,22 @@ sha256=3d159c703ba901657d9633b239d39b21c8de68a2c3358fd1aa4175d20359ef87 md5=89761d6047acca5fb6fb69eb2633afe9 sha256=a7f195777e6520a912a231c3c97a5fba82d361bfeee8948a18c026da7b04654e +[http://xorg.freedesktop.org/releases/individual/app/xmessage-1.0.1.tar.bz2] +md5=b3674c3a00a089764d86aa94e257ccec +sha256=b921aef62c2a2f5c32048502cd96630e9d42493cd39d1841fde247274f24bbda + +[http://xorg.freedesktop.org/releases/individual/app/xmessage-1.0.2.tar.bz2] +md5=b4b561ef11fd184989a6062962e86748 +sha256=02b4016e93acab94105fa61f6dbe13082669276ab4650b871835fb7884b0c3c3 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xmessage-X11R7.0-1.0.1.tar.bz2] md5=5a17607184fd348c2b36b5499ae9d2e6 sha256=e9cb13ed6ae88cdeffe200ea1ec008b2413f182171c9d1ee7dede049f61df473 +[http://xorg.freedesktop.org/releases/individual/app/xmh-1.0.1.tar.bz2] +md5=656bcbdd41818a8b5a9f7dba77a3eeba +sha256=9471fb455ce0bfc582b865722ab7417c587c9fea82342181e9cd0a9629c2c6fa + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xmh-X11R7.0-1.0.1.tar.bz2] md5=53af2f87dc096d84f11ca6fbd6748b34 sha256=e86cbfb7d4fcad741751afd2e1304c41af42af3d95d09745cc27fb34200d5b8b @@ -17814,6 +22486,10 @@ sha256=ff9eabae2074043294a19ec7beaf0959bd076f6cd60558264faeec08f4a0eb6a md5=410b30968bdb4adce0baec8acc7f2ed4 sha256=c0c89d93442c85296386199dc08a8ad9b480a29deea31936e5688c2bcc9a5265 +[http://heanet.dl.sourceforge.net/xmms-mad/xmms-mad-0.10.tar.bz2] +md5=410b30968bdb4adce0baec8acc7f2ed4 +sha256=c0c89d93442c85296386199dc08a8ad9b480a29deea31936e5688c2bcc9a5265 + [http://mirror1.pdaxrom.org/source/src/xmms-tremor-1.0.tar.bz2] md5=998d2a399bd0fb9a2bcde6d5bd2443d4 sha256=66514764e9aa0168af22a5b4334e9882fbb0b87285ee2055c1daceb3a2214315 @@ -17842,6 +22518,10 @@ sha256=5002223fd102fc5bd454a8b62feb9d281f454769624a071804d6bfc82416a0b4 md5=2d9472aa72a7d530509aa12df58efdf1 sha256=c26fd58cd16b13fe305b7dadcabc1764552cdd30b55e798cb218df3cb0c88f03 +[http://xorg.freedesktop.org/releases/individual/app/xmore-1.0.1.tar.bz2] +md5=d36e918dce779a9d207b7a266f4e87c8 +sha256=653566be73c474bc45f1a6631e14b008445c74557a8f6f46effee1ac3e8f2527 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xmore-X11R7.0-1.0.1.tar.bz2] md5=99a48c50d486b7c9098b4f5598782cac sha256=0616d2c8d7aa990787f6c27e412c65b3f5e1b9a42b12562700bc2da953def4c1 @@ -17858,6 +22538,14 @@ sha256=019ba3dbfe2f23e5847cc839a26c630cea20fe8d62df4775a21087176908b9d7 md5=073c1b4f0029249a05800900abd13077 sha256=6044df7ff07d38c4ce1020453f259f4caa16272aca7d835204852e416dfa2605 +[http://xorg.freedesktop.org/releases/individual/doc/xorg-docs-1.0.1.tar.bz2] +md5=78fd95f6d5ea69d91723dcc16280c664 +sha256=b7b8593b055e29dedc0631e1db9781583038afc67bce0f715fdf3201570d1e4e + +[http://xorg.freedesktop.org/releases/individual/doc/xorg-docs-1.2.tar.bz2] +md5=f817c5df43817846c1b27bac83da74d7 +sha256=23648ac11d5cc57f3e1e747a73bd1c4f83c42a657969814af0d399fdd3d7beec + [http://xorg.freedesktop.org/releases/individual/doc/xorg-docs-1.4.tar.bz2] md5=4f2005bdd430a98c262901383459009e sha256=fffc67e50ce396e6ddd95e842fa8351954b8f09cb729a9a062e0496a8bda4925 @@ -17870,6 +22558,10 @@ sha256=a3adf1c61247254cc81c80a6c020fe6a9fe0abbdc5f66f8631ec87a1a356c4ae md5=a7c05bf0897ba99fe01af528c0831183 sha256=5118569d9214c308b532cfb04df9cc14288f29b307adb00e3eed7f2ab5744efb +[http://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.1.0.tar.bz2] +md5=d070c58a598fb52c5cb86344725c4ad6 +sha256=da1d5ce91098e1187579306275a9664ef6f1cea935fabcbd72f4c77af415a461 + [http://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.2.0.tar.bz2] md5=ea291c89e68832d570d9d5e007218bd6 sha256=e3e56b35ee13098f4ee79948beb20bfc9a06d1a7a35fb906405ff1531b92bb85 @@ -17930,6 +22622,10 @@ sha256=2a676fdaf45a7a1e40f4df2cbd09d542672c2d0fe1f890a874b8719e0a448ad7 md5=2b820facb5658160a08ff4d9ca906ad5 sha256=594d9b543d3e183d5f0a3669a2a1e3c8e18b1f10bf6952dc6c614aabe1a288b5 +[http://prdownloads.sourceforge.net/xoscope/xoscope-1.12.tgz] +md5=89f8019a772713a976b634305d29cfe5 +sha256=d7dec98f0d85f7ce889d0b2fcb4ed683a6384057ccea2ab531a0710969ff7ca2 + [http://math.mit.edu/~auroux/software/xournal/xournal-0.2.tar.gz] md5=db62deddcbf4dc7d52b7da405e61ed0d sha256=be1c24d49086a2b45462fb17deb8142533616182d728fd826a30bc32a87ed087 @@ -17946,18 +22642,34 @@ sha256=bb797a384b9acb8209fea572934d1b1484c5de41f062fe152ae99962f52f98ea md5=b3d352d08e71606383c31da5790b8d60 sha256=dff617ca33dc263caecb6afc5d42c109166ef2a1c0fe0afa070ff6691ea0e8d7 +[http://xournal.sourceforge.net/xournal-0.4.tar.gz] +md5=139ef3045c99dc5c07118b47ff9257e1 +sha256=4de076c38b4b64188d23821e7d7a0f6a26b1d6707e768dadda14eb69dcc84598 + [http://repository.maemo.org/pool/maemo/ossw/source/x/xpext/xpext_1.0-5.tar.gz] md5=1b0cb67b6f2bd7c4abef17648b062896 sha256=a3b06f5188fd9effd0799ae31352b3cd65cb913b964e2c1a923ffa9d3c08abbe +[http://xorg.freedesktop.org/releases/individual/app/xphelloworld-1.0.1.tar.bz2] +md5=5c7fd1e35dd63089229e357c46e4f407 +sha256=b1ca08e3ba4e5b135ee9d8675e717a6f88eafa53b031b2b821d2760897e35426 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xphelloworld-X11R7.0-1.0.1.tar.bz2] md5=80c9a23c7efb72b9674d7af6b7346992 sha256=4fbc61ec9405b0797318dcf54f5c3a3cc83221f27014563113d2f3f78b3982bf +[http://xorg.freedesktop.org/releases/individual/app/xplsprinters-1.0.1.tar.bz2] +md5=c1558277f4a010473ff0744845c49537 +sha256=adc60a1808e0974b75a0e7f95022f23411a0e2e9f83e84c441cba5f28f8db072 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xplsprinters-X11R7.0-1.0.1.tar.bz2] md5=1d0a68dada5e14ab07d7660abd4d03e3 sha256=4f54239ec09f4555d15969d44ac84719e739f78071b0f7855ec620a1f0257a3b +[http://xorg.freedesktop.org/releases/individual/app/xpr-1.0.1.tar.bz2] +md5=01c0a14755fc91369e8c011c9f881d5d +sha256=b871221d23dc4fc50398e9fe0e2a6a4e951aa6c9df2c5671d069ad88f0fd6249 + [http://xorg.freedesktop.org/releases/individual/app/xpr-1.0.2.tar.bz2] md5=6b3a6896081f628bf5a2c9129417c86f sha256=c325a9896d1cda43a681f1c2a6a2bbb1c580ade57a882b0a8f84ffa359238adf @@ -17966,6 +22678,10 @@ sha256=c325a9896d1cda43a681f1c2a6a2bbb1c580ade57a882b0a8f84ffa359238adf md5=487b5ab96b373acb80808758ce23eb49 sha256=8c77256313114c80d49ac5db0013c439ddf9888f2d265f66c9ee3da2de46cdf4 +[http://xorg.freedesktop.org/releases/individual/app/xprehashprinterlist-1.0.1.tar.bz2] +md5=99ee20a9af25375895f5d7ebc1004163 +sha256=ba67e9256f703d614ab891b1d676fc26e7479094b957370cbb363c78b2f20259 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xprehashprinterlist-X11R7.0-1.0.1.tar.bz2] md5=3907bce78d304dedb2a5dd6944bd2ed5 sha256=cc28f5d046d60c12e71b88863c502cca3c6457a07996bd54974debe115f11d73 @@ -17974,6 +22690,10 @@ sha256=cc28f5d046d60c12e71b88863c502cca3c6457a07996bd54974debe115f11d73 md5=83a43006896fc270515a86f9ccec2c35 sha256=03d2b69abb17382ead3bc796d451a61d576ff9ac2af34dcd6aba39f77e03df59 +[http://heanet.dl.sourceforge.net/xprint/xprint_mozdev_org_source-2004-07-07-release_009_001.tar.gz] +md5=83a43006896fc270515a86f9ccec2c35 +sha256=03d2b69abb17382ead3bc796d451a61d576ff9ac2af34dcd6aba39f77e03df59 + [http://xorg.freedesktop.org/releases/individual/app/xprop-1.0.2.tar.bz2] md5=5b6f02a3b1cda0cadc35f84814fe53d4 sha256=88b1e65703c68f14ac6cb735737d1a0e52751a18fdc8a39d2d1e5eaa07875ca0 @@ -18082,6 +22802,10 @@ sha256=964f96d9d86140564fa42de6f803bf3065ef287620cec4462d2fae8ca396034b md5=d8a54596cbaf037e62b80c4585a3ca9b sha256=67c2fc94a7ecedbaae0d1837e82e93d1d98f4a6d759828860e552119af3ce257 +[http://xorg.freedesktop.org/releases/individual/app/xrx-1.0.1.tar.bz2] +md5=5f65e24f8a225e255beb2059e33d6b37 +sha256=a51ac7c607f2f79de771807f590ccfe8b1819dae6f30dd615dd2afbe6007c4e4 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xrx-X11R7.0-1.0.1.tar.bz2] md5=9de3b04392c98df59c79a34fd51c385f sha256=2a177a9f36c92fdc109260a7c04980db6920fb9d3529d79e9bc019ae7f5a310e @@ -18090,6 +22814,14 @@ sha256=2a177a9f36c92fdc109260a7c04980db6920fb9d3529d79e9bc019ae7f5a310e md5=aeff1063bec0e906a20b9a6bbc8a83e3 sha256=fbf0ee62f55c432cd930df45ae31b39b9db3a44a80ebb472b06e59bf8ff78d75 +[http://www.jwz.org/xscreensaver/xscreensaver-4.22.tar.gz] +md5=9f37c428f034e581026e243445378195 +sha256=d0a4a6a60a1cad27aebc23580acdce442d3c6d8eae782883c7df08b3fc3184a1 + +[http://www.jwz.org/xscreensaver/xscreensaver-5.07.tar.gz] +md5=55a12fcb5d3a7231c9850ef9d9f82918 +sha256=8c50a74c07b1fffcbb20bd79e3ee92f1f52191e5a187433bb49964ccf94badb6 + [http://gpe.linuxtogo.org/download/source/xserver-common-1.10.tar.gz] md5=b73f38a79582e0d026a52bb5ee3ea0e3 sha256=7ada44f9b7bd1071d846e7c0dea6399ebcfd45d37b9583a4e44d18cf5c5fca29 @@ -18122,6 +22854,10 @@ sha256=c93e01cd754e8cafc6e02d32a7304d4b152e6aba9e6b0bcaea9ded12263f24b4 md5=72c8b5c4c4aa18abe4f29308d2726e1e sha256=3e198bf84fac63cd5d93521c1646cf6dc2d959b4c84a16aa9cd1d9ca94ddd212 +[http://gpe.linuxtogo.org/download/source/xserver-common-1.21.tar.gz] +md5=7810436d0085f8808a09ea6377526c71 +sha256=723dbbdfac6e421aa3343a2f1cef7cfb998bb5c045dcf0df870aeba6dd78b79d + [http://gpe.linuxtogo.org/download/source/xserver-common-1.22.tar.gz] md5=658badd22689cdde536050f740ec8319 sha256=70a767f1109bf70353c58b0fb54626a1300fd0724017196bfd17d13a582ddd62 @@ -18170,10 +22906,22 @@ sha256=988b47cd922991c6e6adbce15dc386ac75690b61744b526c3af5a4eaa9afa0aa md5=d83d6ef0b73762feab724aab95d9a4a2 sha256=ff7e076c77c35f746bc01d15d3ff9e203a45a850ef7e26ef11726b0b9f709e4a +[http://xorg.freedesktop.org/releases/individual/app/xsetpointer-1.0.0.tar.bz2] +md5=c94ea103e27e370e4e5030e50c5d5d69 +sha256=7d65f450420b4f764dcf38e4ccee9d608b5a5874706e716cb861bfe2586b7d4a + +[http://xorg.freedesktop.org/releases/individual/app/xsetpointer-1.0.1.tar.bz2] +md5=9e5bcbeda4aaf02bfa095e41d30baee4 +sha256=495d88871eb5081e98bbae55f813f73cb3ce4145d6ca3e8f2826800166c04571 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xsetpointer-X11R7.0-1.0.0.tar.bz2] md5=195614431e2431508e07a42a3b6d4568 sha256=103e35a5523e9237ef3a27bb8e08ab4443de5ceedfe5784be48afde6fba6cd06 +[http://xorg.freedesktop.org/releases/individual/app/xsetroot-1.0.1.tar.bz2] +md5=fc7eeb7130bb54345671a9dbaab567ac +sha256=897d77acd3f4a366472386139827eaac24cc423c811ef0e65e0d5eca099a3155 + [http://xorg.freedesktop.org/releases/individual/app/xsetroot-1.0.2.tar.bz2] md5=9af7db9f3052aef0b11636720b3101dd sha256=4f9a751f4830d479fae8ccb68ed04896dc99612789310b7917bd15c04aa3351d @@ -18186,10 +22934,18 @@ sha256=8327c294491dbd13c06c8d5d6bf971dca215f59facce99d3e4d0c170d7f0fe44 md5=63e6c23e5a2036cfba77bd22c9a7bff2 sha256=33237bb8fdad27e7f9fef9122198654e4e39081582baeb60ca4246308ffa4eb2 +[http://xorg.freedesktop.org/releases/individual/app/xsm-1.0.1.tar.bz2] +md5=cce867ff7d0df9c0b9e682591779952c +sha256=2f2535b5394d59be0a4bb15c12ea1b19b873a0096446ecc4c71aa81f0d99b29a + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xsm-X11R7.0-1.0.1.tar.bz2] md5=e3588272ce3b7dc21d42ead683135a8a sha256=c66e75117b4aa9dc3272f1568f83321a1273ab50309fcb4bc64e62d124596a49 +[http://go-mono.com/sources/xsp/xsp-1.2.5.tar.bz2] +md5=adb7871e5ebeefcf8ed959523442c0fb +sha256=25c246b7ed3e82a5f3562c2c15db551332830de4c238a53e3260ab7d40cd015a + [http://repository.maemo.org/pool/maemo/ossw/source/x/xsp/xsp_1.0.0-8.tar.gz] md5=2a0d8d02228d4cbd28b6e07bb7c17cf5 sha256=8b722b952b64841d996c70c3278499886c81bb5012991beed5f66f4158418f59 @@ -18198,6 +22954,10 @@ sha256=8b722b952b64841d996c70c3278499886c81bb5012991beed5f66f4158418f59 md5=cbe38d183fa6cf0d7c29b4befd0d71d6 sha256=f5d79766715012ea7bb7ef164994963950c3343ef025ee71d1540aa26ab48c8c +[http://xorg.freedesktop.org/releases/individual/app/xstdcmap-1.0.1.tar.bz2] +md5=86ab558441edfb86f853639e4290a754 +sha256=0d920660137dee514599f63b5a8c8ce14d2474607e28e32c973cafb360f7e738 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xstdcmap-X11R7.0-1.0.1.tar.bz2] md5=e276aa02d44dcacf5ac13aa0cabd404d sha256=3af07e423eddf28593a424f6cd53291d1413b905ddd6915aaa3f44007b238a8c @@ -18226,10 +22986,18 @@ sha256=16bc4646f105efd3d0dd105899ac19035d67acf50950ca8c70cf68772508272d md5=96e142331edd498a9364887b2548f1bb sha256=9ff21a8d9ea524ca9b7cb6d6b4d522b4cb20b1c35edeb8995a9e9265a0df64bd +[http://xorg.freedesktop.org/releases/individual/lib/xtrans-1.2.tar.bz2] +md5=a91fef8b932b21992af7dfff7b2643f3 +sha256=d6c3cabd5ecd0183a8a9bc6b3471545df8e2c78956b4c4cfd48f0c545a88c9a4 + [http://xorg.freedesktop.org/releases/X11R7.0/src/lib/xtrans-X11R7.0-1.0.0.tar.bz2] md5=153642136a003871a9093c8103d6ac5a sha256=c9a049b4367318b53cbad02bc7e3c4450778e3237400a515b2a6272405b8b912 +[http://xorg.freedesktop.org/releases/individual/app/xtrap-1.0.2.tar.bz2] +md5=97a62a011a11f03b46d72851aa298fa8 +sha256=8f513da45b0c65dff4a3d477e5600a98d677571d7ed283f52c905987dcae0fbc + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xtrap-X11R7.0-1.0.1.tar.bz2] md5=6d56946322d2875eb33f25f5e5f621a3 sha256=be25959a38d1e2d3b54e5620863a95c2eb712c6b4bce698b88ccff66d2964559 @@ -18254,6 +23022,18 @@ sha256=a3cfc867672924f27d5ed39a99bc089cc9417d193513984f0a081a92230e947b md5=9bcab80b474d5454477d1ca166a68c34 sha256=27b9dc2203de9b1706ca39fa6ca80ecab8807909ec901c4a345b8e41178800a1 +[http://heanet.dl.sourceforge.net/xvidcap/xvidcap-1.1.6.tar.gz] +md5=c6add7ae452e5cecbdda6e55e7c67cdb +sha256=17ca7b7f8ce12f7e312b2abc2da7f381dc0e964cdac6312631cd7987f02b9fba + +[http://heanet.dl.sourceforge.net/xvidcap/xvidcap-1.1.7rc1.tar.gz] +md5=449ee23b6ea171f090b9de48ffefb364 +sha256=487bf07b2f9ead6a59682d091081e47cfe4ca5777de32e6cec5bef55fa51c82f + +[http://xorg.freedesktop.org/releases/individual/app/xvidtune-1.0.1.tar.bz2] +md5=e0744594f4e5969b20df28d897781318 +sha256=6d0feb42c2f1d6011d97c776b9d580fd589cdf3cfe246cd99437c406a2740d36 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xvidtune-X11R7.0-1.0.1.tar.bz2] md5=a12e27fb732cb115b6adc4c724c44c5d sha256=f7b3925d7e9981d146d3e5774de0521e6d48e2ed99841f538f267e8bc58bf5cd @@ -18270,6 +23050,10 @@ sha256=126e2a612ac723f9688904fcfa612688d62e520ce55c56eb34eb5390074cf150 md5=39d79590345bed51da6df838f6490cbf sha256=5b52a7241aef8e3372fb15f58f2276e043e19a87269aa6a0330b5823bc3697f6 +[http://xorg.freedesktop.org/releases/individual/app/xwd-1.0.1.tar.bz2] +md5=911addfb7fa402217ddac63e5c1d97c7 +sha256=c8bd9bcd64df439c2cd09eaa3e83a1297fbfed5c7d3dd8117342b3a25eeae131 + [http://xorg.freedesktop.org/releases/individual/app/xwd-1.0.2.tar.bz2] md5=0a6ef08a2ac08ad5c4dd1522eb3788a3 sha256=ab8974e010c1957a9a65a54656215463dea324adcaa9954147ecdcc6e9307f61 @@ -18278,6 +23062,10 @@ sha256=ab8974e010c1957a9a65a54656215463dea324adcaa9954147ecdcc6e9307f61 md5=596c443465ab9ab67c59c794261d4571 sha256=8ec0abf34ec88f3681666c7727749bac1ccf3f935c1c7f78c009a764f7f0fb11 +[http://xorg.freedesktop.org/releases/individual/app/xwininfo-1.0.2.tar.bz2] +md5=e5dbc8866a55958297f5f38205b6be1e +sha256=9fdfd3259b335531cdba831872ec0e32c5f6df01e14b87c3187b494be75b7b66 + [http://xorg.freedesktop.org/releases/individual/app/xwininfo-1.0.3.tar.bz2] md5=721f84332c98c33152460bb22ba9ded6 sha256=fbe3a1aafbc6fa113e58971ff2a82605a7e106af8b810eea4b7512de58a5478a @@ -18346,6 +23134,10 @@ sha256=e145638ab4b0f267075b82db5ab9f7170ae2abf1fa1212d5175c31fe4bd28477 md5=96eb282a1a3e4fea69b94f1db069f4e9 sha256=f218b25c4be2261c49b9c9e1f10c93b64eaf6132ace6bc4052cf0489e3ac56e8 +[http://heanet.dl.sourceforge.net/bedic/zbedic_1.2-2.tgz] +md5=c7e8e267567a96cff7920a0365978c4d +sha256=b991cc5635849353081c2a3350142484763323bc58bfa49b62285645aac129b9 + [http://www.vanille.de/mirror/zbench-2.0.tar.bz2] md5=75beb13ea40ce93b7a141b82fbf4437a sha256=b1a1a5d98596fc24225968a480617feb5723390db9175cd6e01828b7fda3a921 @@ -18354,6 +23146,10 @@ sha256=b1a1a5d98596fc24225968a480617feb5723390db9175cd6e01828b7fda3a921 md5=ce40fdcd923110ee75717295a5fd4100 sha256=09bff63fdf2ae0704423ad232d31e792b342433e12306e107c14dc02f06ed507 +[http://heanet.dl.sourceforge.net/zeroconf/zcip-4.tar.gz] +md5=ce40fdcd923110ee75717295a5fd4100 +sha256=09bff63fdf2ae0704423ad232d31e792b342433e12306e107c14dc02f06ed507 + [http://zd1211.ath.cx/download/zd1211-driver-r77.tgz] md5=ab79187f18b102df2fb576bd4cf733fd sha256=8e5715e9d2bd2cb489c601ff91305f81fd662b27cb2da5486071fbab5bd8b634 @@ -18370,10 +23166,18 @@ sha256=dd71e82cd3df6ca60e629cc5655e7a380586b363a3d963482e9f151eb186dbad md5=19f28781d76569af8551c9d11294c870 sha256=866308f6f59f7075f075d4959dff2ede47735c751251fecd1496df1ba4d338e1 +[http://heanet.dl.sourceforge.net/zd1211/zd1211-firmware-1.4.tar.bz2] +md5=19f28781d76569af8551c9d11294c870 +sha256=866308f6f59f7075f075d4959dff2ede47735c751251fecd1496df1ba4d338e1 + [http://downloads.sourceforge.net/zd1211/zd1211-firmware1.3.tar.bz2] md5=cfff76ea35f4f93c37f6c99aa2058140 sha256=78b013e2e0bb4c1af1adbd7acca4299cd3d83e96d8da2731f629f562b5f153a6 +[http://heanet.dl.sourceforge.net/zd1211/zd1211-firmware1.3.tar.bz2] +md5=cfff76ea35f4f93c37f6c99aa2058140 +sha256=78b013e2e0bb4c1af1adbd7acca4299cd3d83e96d8da2731f629f562b5f153a6 + [http://www.cinlug.org/modules/Static_Docs/data/db/zddice/zddice_1.0.0_arm.src.tar.gz] md5=791e8986c6e16dcd1c9878126725e06b sha256=eba57692dadd21df8d4afaea4daf8db5179c7398e11cd019fd462aa6947f4119 @@ -18394,10 +23198,18 @@ sha256=a2683b8a6a172017f0fe6392fb07d87a5c02fc2714fbff4c98dcae67db588636 md5=538e86a10a0c373f98a4c2dff29b39dd sha256=84568814469d4d7c44a324badb8023b049aae5d5f17e4b788a955f8d5137b3c4 +[http://heanet.dl.sourceforge.net/zile/zile-2.0beta6.tar.gz] +md5=538e86a10a0c373f98a4c2dff29b39dd +sha256=84568814469d4d7c44a324badb8023b049aae5d5f17e4b788a955f8d5137b3c4 + [http://downloads.sourceforge.net/zile/zile-2.2.15.tar.gz] md5=1fa62e2309fa52e26a5594cc38911aee sha256=2822148fdf6f2054b51c776db21f71e817761c225b370ab3f3ce7efe3711368f +[http://heanet.dl.sourceforge.net/zile/zile-2.2.15.tar.gz] +md5=1fa62e2309fa52e26a5594cc38911aee +sha256=2822148fdf6f2054b51c776db21f71e817761c225b370ab3f3ce7efe3711368f + [http://ftp.info-zip.org/pub/infozip/src/zip232.tar.gz] md5=8a4da4460386e324debe97f3b7fe4d96 sha256=d0d3743f732a9baa162f80d0c4567b9c545b41a3385825042113810f2a56eb2f @@ -18430,6 +23242,10 @@ sha256=28e73da5403faad322022e8fb327f99677841d26396a1a1f1e854c768b47cf7c md5=7084c0d2b28108563ca45e5ec1533ba1 sha256=c4fb0477fdc110b63d867ae2a46cca7913fa6a0ca8bf574c7189329bea91dcdf +[http://heanet.dl.sourceforge.net/zrally/zrally_0.90_src.tar.gz] +md5=7084c0d2b28108563ca45e5ec1533ba1 +sha256=c4fb0477fdc110b63d867ae2a46cca7913fa6a0ca8bf574c7189329bea91dcdf + [http://handhelds.org/~zecke/oe_packages/zrev7_V1.0.1.tar.gz] md5=fa339990ee78b0fd1bad994f0b35764c sha256=bc3487bf3927f7e3ea46cef770724d20e820883f4173eb7f8a1332c51d9b6431 @@ -18446,6 +23262,10 @@ sha256=f539e6db53233fa75d5fa389b4807d54add312fc96de71b5eb7cf4f071719027 md5=1343c4de6d586a1b4ed2b5c97d53e717 sha256=6a136cbc7fdb38c73fe5862f21913e8fe63864063bba833c149c1098d758a12f +[http://www.lachner-net.de/old/Frames/Software/zshopi_0.2.tar.bz2] +md5=1343c4de6d586a1b4ed2b5c97d53e717 +sha256=6a136cbc7fdb38c73fe5862f21913e8fe63864063bba833c149c1098d758a12f + [http://handhelds.org/~zecke/oe_packages/zsubhunt_V1.0.0ern.tar.gz] md5=7f1fee1e58d92fbe72ffee34078c6fa2 sha256=d31c51a3db059c564e77ee8776f441b3ea530089a7b48aa31a49d2ebf7bf9dc9 @@ -18458,6 +23278,10 @@ sha256=b23ec333618729edeafbae77b5a73183e6e168c671452b98fac2bf3f13660207 md5=2c3881503615d86b78b89ad5f4ec675c sha256=006c061dc031e711cc3ccccbb659ffb9b09b74ff3be6c5768aecd7297738b1c0 +[http://www.gohome.org/cgi-bin/viewcvs.cgi/zten.tar.gz] +md5=d24f03c8df5c98d510590bd9a63dc932 +sha256=7fa88dcb6da482bc20fc4916f191e9c35d01b3c0f45c9bcd66067029c49cc0b4 + [http://www.linux-solutions.at/projects/zaurus/source/zuc_V1.1.2ern.tar.gz] md5=c4ed24fa825940f4803bd494fd9c12a6 sha256=8e7d8d05bcc99203f4ca8231647b2a24d51b10abffeb00910cb6eeee85427f86 @@ -18474,11 +23298,31 @@ sha256=42494c9c712caaf3ca96f8abf59aaeb0fb3dbd2076c21d8642ea4c6cd9a04900 md5=a01cbe39a48579ba92582ff75a5e37c2 sha256=a832819915838b364dd19f7f5d8d632b7d0493d8a19e2d011f9b5a3f2e8cf266 +[http://heanet.dl.sourceforge.net/zapping/zvbi-0.2.22.tar.bz2] +md5=a01cbe39a48579ba92582ff75a5e37c2 +sha256=a832819915838b364dd19f7f5d8d632b7d0493d8a19e2d011f9b5a3f2e8cf266 + [http://downloads.sourceforge.net/zapping/zvbi-0.2.24.tar.bz2] md5=918c8ebb03c0e2f3272e0d90a92f2289 sha256=12f5b654f6b91953391d2492a09d2c9586d5b7af419f0eeb306e1d30245659d3 +[http://heanet.dl.sourceforge.net/zapping/zvbi-0.2.25.tar.bz2] +md5=b63c626baf1fc385df04d88bc9628a4a +sha256=fa85c35ae5694e6b1ce0dee920c1ecb93698b66c35717368143560930aedbc13 + [http://downloads.sourceforge.net/zziplib/zziplib-0.10.82.tar.bz2] md5=a6538f6c44ceeed0ed7e8e356f444168 sha256=f684397ce39ec400ba3369521892b7c3a8711d3ef1be59115db9f8d57707bbb8 +[http://heanet.dl.sourceforge.net/zziplib/zziplib-0.10.82.tar.bz2] +md5=a6538f6c44ceeed0ed7e8e356f444168 +sha256=f684397ce39ec400ba3369521892b7c3a8711d3ef1be59115db9f8d57707bbb8 + +[http://heanet.dl.sourceforge.net/zziplib/zziplib-0.12.83.tar.bz2] +md5=4943ab7aa141af2c339266cd66b05c74 +sha256=5cc1a53bb909922596bdd0fa967b654fe1bfbe0dcf1d34608f0b7c90e0c27867 + +[http://heanet.dl.sourceforge.net/zziplib/zziplib-0.13.49.tar.bz2] +md5=5f7b88ebb2bcd7e8044328482d079661 +sha256=f57c4e33eb2cdd87a6c2f01bfa4794340fbe61ea1a1cfc7dac3b6671e1dd22af + -- cgit v1.2.3 From 1b337cac5398de7c3b6b02637c3f6faa0a6141fc Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 13 Nov 2008 19:59:20 +0100 Subject: angstrom 2008: start using binutils 2.19 --- conf/distro/angstrom-2008.1.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/distro/angstrom-2008.1.conf b/conf/distro/angstrom-2008.1.conf index 9bc0273466..cf668e9e0f 100644 --- a/conf/distro/angstrom-2008.1.conf +++ b/conf/distro/angstrom-2008.1.conf @@ -105,8 +105,8 @@ ANGSTROM_GCC_VERSION_avr32 ?= "4.2.2" #Everybody else can just use this: ANGSTROM_GCC_VERSION ?= "4.2.4" -PREFERRED_VERSION_binutils-cross ?= "2.18.50.0.7" -PREFERRED_VERSION_binutils-cross-sdk ?= "2.18.50.0.7" +PREFERRED_VERSION_binutils-cross ?= "2.19" +PREFERRED_VERSION_binutils-cross-sdk ?= "2.19" PREFERRED_VERSION_gcc ?= "${ANGSTROM_GCC_VERSION}" PREFERRED_VERSION_gcc-cross ?= "${ANGSTROM_GCC_VERSION}" -- cgit v1.2.3 From 92613df8d2e5603881999c5909c585daf484922e Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 13 Nov 2008 20:57:40 +0100 Subject: qt4 arch.inc: ARM_INSTRUCTION_SET = "arm" --- packages/qt4/qt4_arch.inc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/qt4/qt4_arch.inc b/packages/qt4/qt4_arch.inc index 60ede1db2b..7f4be63bca 100644 --- a/packages/qt4/qt4_arch.inc +++ b/packages/qt4/qt4_arch.inc @@ -1,5 +1,7 @@ inherit siteinfo +ARM_INSTRUCTION_SET = "arm" + def qt_arch(d): import bb, re arch = bb.data.getVar('TARGET_ARCH', d, 1) -- cgit v1.2.3 From 3327f7ef006e68206b933e45ba9256c5983fbb3d Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 13 Nov 2008 21:28:32 +0100 Subject: xf86-video-omapfb: bump PR for XORG ABI bump --- packages/xorg-driver/xf86-video-omapfb_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xorg-driver/xf86-video-omapfb_git.bb b/packages/xorg-driver/xf86-video-omapfb_git.bb index 348711c43a..d81f7622be 100644 --- a/packages/xorg-driver/xf86-video-omapfb_git.bb +++ b/packages/xorg-driver/xf86-video-omapfb_git.bb @@ -2,7 +2,7 @@ require xorg-driver-video.inc DESCRIPTION = "X.Org X server -- OMAP display driver" -PR ="r13" +PR ="r14" SRCREV = "e33601fe4c4c5e0d093321f86a633047056c7445" PV = "0.0.1+${PR}+git${SRCREV}" -- cgit v1.2.3 From a8ad62fc2c2ed762d46aa0b3ae26533f3c146b2f Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 13 Nov 2008 22:04:26 +0100 Subject: angstrom feed builder: add xserver-xorg-conf to machine specific section --- contrib/angstrom/build-feeds.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contrib/angstrom/build-feeds.sh b/contrib/angstrom/build-feeds.sh index c309c37fdc..d71d57b3bd 100755 --- a/contrib/angstrom/build-feeds.sh +++ b/contrib/angstrom/build-feeds.sh @@ -291,7 +291,9 @@ do task-opie task-opie-all \ task-openmoko-base task-openmoko-debug task-openmoko-examples task-openmoko-linux task-openmoko-native-sdk task-openmoko-net task-openmoko-phone task-openmoko-pim task-openmoko-ui \ angstrom-x11-base-depends angstrom-gpe-task-settings \ + xserver-xorg-conf \ " + do_build done -- cgit v1.2.3 From 95ec91500a2a0edbdc49e8af1e4f126cbae244bb Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Raster" Date: Wed, 29 Oct 2008 21:03:52 +1100 Subject: Linux (Palm): Fix Linux kernel build so it actually works for palmt650 Linux hackndev changed their git so the OE packages for palm ceased to work. This updates so it actually builds a kernel corectly. --- packages/linux/linux-hackndev-2.6_git.bb | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/linux/linux-hackndev-2.6_git.bb b/packages/linux/linux-hackndev-2.6_git.bb index 387a1da89c..71e1235b46 100644 --- a/packages/linux/linux-hackndev-2.6_git.bb +++ b/packages/linux/linux-hackndev-2.6_git.bb @@ -6,15 +6,10 @@ PR = "r14" COMPATIBLE_MACHINE = "(palmld|palmtc|palmtt3|palmtt5|palmtx|palmz31|palmz72|palmt650)" -SRC_URI = "git://git.hackndev.com/linux-hnd;protocol=git \ +SRC_URI = "git://git.hackndev.com/linux-hnd;protocol=git;tag=master \ file://defconfig" -SRC_URI_append_palmtx += "http://www.busybox.net/downloads/busybox-1.1.0.tar.bz2 \ - file://init \ - file://initramfs_list \ - file://busybox-config" - -S = "${WORKDIR}/trunk" +S = "${WORKDIR}/git" K_MAJOR = "2" K_MINOR = "6" -- cgit v1.2.3 From 81591cd3d159e74c944764fc9666c6758a77d291 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Raster" Date: Thu, 30 Oct 2008 14:31:23 +1100 Subject: netbase: provide a default network setup for palmt650 so usbnet works palmt650 system didnt have a specirfic netbase setup to make usbnet work. this provides that and makes it work. --- packages/netbase/netbase/palmt650/interfaces | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 packages/netbase/netbase/palmt650/interfaces diff --git a/packages/netbase/netbase/palmt650/interfaces b/packages/netbase/netbase/palmt650/interfaces new file mode 100644 index 0000000000..db4c4ca21f --- /dev/null +++ b/packages/netbase/netbase/palmt650/interfaces @@ -0,0 +1,22 @@ +# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) + +# The loopback interface +auto lo +iface lo inet loopback + +# Wireless interfaces + +# Wired or wireless interfaces + +# Ethernet/RNDIS gadget (g_ether) +# ... or on host side, usbnet and random hwaddr +auto usb0 +iface usb0 inet static + address 192.168.0.202 + netmask 255.255.255.0 + network 192.168.0.0 + gateway 192.168.0.200 + +# Bluetooth networking +iface bnep0 inet dhcp + -- cgit v1.2.3 From df3c983439ad9a14601522c69f77df1f355a1a82 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Raster" Date: Thu, 30 Oct 2008 21:56:07 +1100 Subject: palm.inc: plam.inc machne conf need to remove EXTRA_PACKAGE_ARCHS remove EXTRA_PACKAGE_ARCHS as this makes the arm architectures repeat and fail sanity test. --- conf/machine/include/palm.inc | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/machine/include/palm.inc b/conf/machine/include/palm.inc index 22c6ad4233..5394855523 100644 --- a/conf/machine/include/palm.inc +++ b/conf/machine/include/palm.inc @@ -3,7 +3,6 @@ # TARGET_ARCH = "arm" -PACKAGE_EXTRA_ARCHS = "arm armv4t armv5te" SERIAL_CONSOLE = "115200 ttyS0" -- cgit v1.2.3 From 2dfd8af9ca6668b1190e4ce644da99d8e8739b66 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Raster" Date: Wed, 29 Oct 2008 21:34:38 +1100 Subject: sysvinit: add the openmoko upstream changes to use exquisite as splash This just contains the upstream changes from openmoko to use exquisite as the bootsplash. --- packages/sysvinit/sysvinit/openmoko/rc | 181 ++++++++++++++++++++++++ packages/sysvinit/sysvinit/openmoko/rcS-default | 25 ++++ 2 files changed, 206 insertions(+) create mode 100644 packages/sysvinit/sysvinit/openmoko/rc create mode 100644 packages/sysvinit/sysvinit/openmoko/rcS-default diff --git a/packages/sysvinit/sysvinit/openmoko/rc b/packages/sysvinit/sysvinit/openmoko/rc new file mode 100644 index 0000000000..9d28a6890b --- /dev/null +++ b/packages/sysvinit/sysvinit/openmoko/rc @@ -0,0 +1,181 @@ +#!/bin/sh +# +# rc This file is responsible for starting/stopping +# services when the runlevel changes. +# +# Optimization feature: +# A startup script is _not_ run when the service was +# running in the previous runlevel and it wasn't stopped +# in the runlevel transition (most Debian services don't +# have K?? links in rc{1,2,3,4,5} ) +# +# Author: Miquel van Smoorenburg +# Bruce Perens +# +# Version: @(#)rc 2.78 07-Nov-1999 miquels@cistron.nl +# + +. /etc/default/rcS +export VERBOSE + +startup_progress() { + step=$(($step + $step_change)) + if [ "$num_steps" != "0" ]; then + progress=$((($step * $progress_size / $num_steps) + $first_step)) + else + progress=$progress_size + fi + #echo "PROGRESS is $progress $runlevel $first_step + ($step of $num_steps) $step_change $progress_size" +# FIXME: this should be virtualised and come from a generic boot splash script +# provided by some generic splash handler - be it psplash, exquisite or +# whatever else soa simple install of one splash instead of another works + if type exquisite-write >/dev/null 2>&1; then + EXQUISITE_IPC=/mnt/.exquisite/exquisite exquisite-write "PROGRESS $progress" || true + fi +} + + +# +# Start script or program. +# +startup() { + # Handle verbosity + [ "$VERBOSE" = very ] && echo "INIT: Running $@..." + + case "$1" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + scriptname=$1 + shift + . $scriptname + ) + ;; + *) + "$@" + ;; + esac + startup_progress +} + + # Ignore CTRL-C only in this shell, so we can interrupt subprocesses. + trap ":" INT QUIT TSTP + + # Set onlcr to avoid staircase effect. + stty onlcr 0>&1 + + # Now find out what the current and what the previous runlevel are. + + runlevel=$RUNLEVEL + # Get first argument. Set new runlevel to this argument. + [ "$1" != "" ] && runlevel=$1 + if [ "$runlevel" = "" ] + then + echo "Usage: $0 " >&2 + exit 1 + fi + previous=$PREVLEVEL + [ "$previous" = "" ] && previous=N + + export runlevel previous + + # Is there an rc directory for this new runlevel? + if [ -d /etc/rc$runlevel.d ] + then + # Find out where in the progress bar the initramfs got to. + PROGRESS_STATE=0 + #if [ -f /dev/.initramfs/progress_state ]; then + # . /dev/.initramfs/progress_state + #fi + + # Split the remaining portion of the progress bar into thirds + progress_size=$(((100 - $PROGRESS_STATE) / 3)) + + case "$runlevel" in + 0|6) + # Count down from -100 to 0 and use the entire bar + first_step=-100 + progress_size=100 + step_change=1 + ;; + S) + # Begin where the initramfs left off and use 2/3 + # of the remaining space + first_step=$PROGRESS_STATE + progress_size=$(($progress_size * 2)) + step_change=1 + ;; + *) + # Begin where rcS left off and use the final 1/3 of + # the space (by leaving progress_size unchanged) + first_step=$(($progress_size * 2 + $PROGRESS_STATE)) + step_change=1 + ;; + esac + + num_steps=0 + for s in /etc/rc$runlevel.d/[SK]*; do + case "${s##/etc/rc$runlevel.d/S??}" in + gdm|xdm|kdm|reboot|halt) + break + ;; + esac + num_steps=$(($num_steps + 1)) + done + step=0 + + # First, run the KILL scripts. + if [ $previous != N ] + then + for i in /etc/rc$runlevel.d/K[0-9][0-9]* + do + # Check if the script is there. + [ ! -f $i ] && continue + + # Stop the service. + startup $i stop + done + fi + + # Now run the START scripts for this runlevel. + for i in /etc/rc$runlevel.d/S* + do + [ ! -f $i ] && continue + + if [ $previous != N ] && [ $previous != S ] + then + # + # Find start script in previous runlevel and + # stop script in this runlevel. + # + suffix=${i#/etc/rc$runlevel.d/S[0-9][0-9]} + stop=/etc/rc$runlevel.d/K[0-9][0-9]$suffix + previous_start=/etc/rc$previous.d/S[0-9][0-9]$suffix + # + # If there is a start script in the previous level + # and _no_ stop script in this level, we don't + # have to re-start the service. + # + [ -f $previous_start ] && [ ! -f $stop ] && continue + fi + case "$runlevel" in + 0|6) + startup $i stop + ;; + *) + startup $i start + ;; + esac + done + fi + + # FIXME: this should be virtualised and come from a generic boot splash script + # provided by some generic splash handler - be it psplash, exquisite or + # whatever else soa simple install of one splash instead of another works + if [ "x$runlevel" != "xS" ]; then + if type exquisite-write >/dev/null 2>&1; then + EXQUISITE_IPC=/mnt/.exquisite/exquisite exquisite-write "QUIT" || true + umount /mnt/.exquisite + fi + fi diff --git a/packages/sysvinit/sysvinit/openmoko/rcS-default b/packages/sysvinit/sysvinit/openmoko/rcS-default new file mode 100644 index 0000000000..5bb57ef74f --- /dev/null +++ b/packages/sysvinit/sysvinit/openmoko/rcS-default @@ -0,0 +1,25 @@ +# +# Defaults for the boot scripts in /etc/rcS.d +# + +# Time files in /tmp are kept in days. +TMPTIME=0 +# Set to yes if you want sulogin to be spawned on bootup +SULOGIN=no +# Set to no if you want to be able to login over telnet/rlogin +# before system startup is complete (as soon as inetd is started) +DELAYLOGIN=no +# Set UTC=yes if your system clock is set to UTC (GMT), and UTC=no if not. +UTC=yes +# Set VERBOSE to "no" if you would like a more quiet bootup. +VERBOSE=no +# Set EDITMOTD to "no" if you don't want /etc/motd to be editted automatically +EDITMOTD=no +# Whether to fsck root on boot +ENABLE_ROOTFS_FSCK=no +# Set FSCKFIX to "yes" if you want to add "-y" to the fsck at startup. +FSCKFIX=yes +# Set TICKADJ to the correct tick value for this specific machine +#TICKADJ=10000 +# Enable caching in populate-volatile.sh +VOLATILE_ENABLE_CACHE=yes -- cgit v1.2.3 From 3f0debd6d7001dac5bb8d2c78444c9617d7b54bd Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Thu, 13 Nov 2008 22:56:43 +0000 Subject: sysvinit: Bump PR for last change --- packages/sysvinit/sysvinit_2.86.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysvinit/sysvinit_2.86.bb b/packages/sysvinit/sysvinit_2.86.bb index 0922199c6f..c399874b8d 100644 --- a/packages/sysvinit/sysvinit_2.86.bb +++ b/packages/sysvinit/sysvinit_2.86.bb @@ -2,7 +2,7 @@ DESCRIPTION = "System-V like init." SECTION = "base" LICENSE = "GPL" HOMEPAGE = "http://freshmeat.net/projects/sysvinit/" -PR = "r43" +PR = "r44" # USE_VT and SERIAL_CONSOLE are generally defined by the MACHINE .conf. # Set PACKAGE_ARCH appropriately. -- cgit v1.2.3 From b7a9cf5b35bca708eb97af9775c6ef6c6dd24050 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Raster" Date: Wed, 29 Oct 2008 21:28:59 +1100 Subject: exquisite: Fix the package so it actually can be a splash screen app This fixes the exquisitie packages so they provide an initscript and all the appropriate sysvinit goop in the .bb file so exquisite can be a splash app if its installed and enabled by the initscripts. --- packages/e17/exquisite/exquisite-init | 40 +++++++++++++++++++++++++++++++++++ packages/e17/exquisite_svn.bb | 26 ++++++++++++++++++++++- 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 packages/e17/exquisite/exquisite-init diff --git a/packages/e17/exquisite/exquisite-init b/packages/e17/exquisite/exquisite-init new file mode 100644 index 0000000000..6c94fdcae6 --- /dev/null +++ b/packages/e17/exquisite/exquisite-init @@ -0,0 +1,40 @@ +#!/bin/sh + +for x in $(cat /proc/cmdline); do + case $x in + splash=false) + echo "Splash Disabled" + exit 0; + ;; + esac +done + +. /etc/init.d/functions + +### Default config here - gets overriden later +THEME="-t default" +FPS="-fps 30" +### Override config - if there is a config file - load it. +if test -f /etc/exquisite/config; then + . /etc/exquisite/config +fi + +args='' +case `machine_id` in + "hp_ipaq_h3100"|"hp_ipaq_h3800") + args='-rot 90' ;; + "hp_ipaq_3600"|"hp_ipaq_3700"|"hp_ipaq_h3900"|"htc_universal"|*collie|*poodle|*akita|*spitz|*borzoi) + args='-rot 270' ;; +esac +args=$args" $FPS $THEME" + +export EXDIR=/mnt/.exquisite +export EXQUISITE_IPC=$EXDIR/exquisite +mount tmpfs -t tmpfs $EXDIR -o,size=40k +exquisite -fb -fs $args & + +exquisite-write -wait 20 +exquisite-write "PULSATE" + +# kill off exquisite in 180 seconds if its not gone yet +(sleep 180; exquisite-write "QUIT")& diff --git a/packages/e17/exquisite_svn.bb b/packages/e17/exquisite_svn.bb index 4777226df5..f1c8908545 100644 --- a/packages/e17/exquisite_svn.bb +++ b/packages/e17/exquisite_svn.bb @@ -2,8 +2,32 @@ DESCRIPTION = "A psplash replacement for display" LICENSE = "MIT BSD" DEPENDS = "eet evas ecore embryo edje" PV = "0.0.1+svnr${SRCREV}" -PR = "r1" +PR = "r2" +RDEPENDS = "initscripts" +RRECOMMENDS_${PN} = "exquisite-themes" + +SRCNAME = "exquisite" inherit e EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc" + +SRC_URI += "file://exquisite-init" + +inherit update-rc.d + +do_install_prepend() { + install -d ${D}/mnt/.exquisite/ + install -d ${D}${sysconfdir}/init.d/ + install -m 0755 ${WORKDIR}/exquisite-init ${D}${sysconfdir}/init.d/exquisite +} + + +do_install_append() { + rm -rf ${D}${datadir}/exquisite/data/fonts/* +} + +INITSCRIPT_NAME = "exquisite" +INITSCRIPT_PARAMS = "start 01 S . stop 20 0 1 6 ." + +FILES_${PN} += "/mnt/.exquisite/" -- cgit v1.2.3 From c337c8981261c197e6b29f1325b18739263d8b76 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Raster" Date: Thu, 30 Oct 2008 14:11:08 +1100 Subject: edje: disable program cache as it uses a fair bit of ram disable the program cache as it uses a fair bit of ram and you probably should re-evaluate your usage of edje if you need it for speed. --- packages/efl1/edje_svn.bb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/efl1/edje_svn.bb b/packages/efl1/edje_svn.bb index 17c8f91024..5cbeec9b37 100644 --- a/packages/efl1/edje_svn.bb +++ b/packages/efl1/edje_svn.bb @@ -6,8 +6,9 @@ PR = "r5" inherit efl -# gain some extra performance at the expense of RAM -EXTRA_OECONF = "--enable-edje-program-cache" +# gain some extra performance at the expense of RAM - generally i'd say bad +# and a possible source of bugs +#EXTRA_OECONF = "--enable-edje-program-cache" PACKAGES =+ "${PN}-utils" RDEPENDS_${PN}-utils = "cpp cpp-symlinks embryo-tests" -- cgit v1.2.3 From 36705acbf8dfc65a9ce0652514cb0ee59cd456a4 Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Thu, 13 Nov 2008 23:12:16 +0000 Subject: edje_svn: Bump PR for cache change --- packages/efl1/edje_svn.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/efl1/edje_svn.bb b/packages/efl1/edje_svn.bb index 5cbeec9b37..5e767ac580 100644 --- a/packages/efl1/edje_svn.bb +++ b/packages/efl1/edje_svn.bb @@ -2,7 +2,7 @@ DESCRIPTION = "Edje is the Enlightenment graphical design & layout library" DEPENDS = "eet evas ecore embryo edje-native" LICENSE = "MIT BSD" PV = "0.5.0.043+svnr${SRCREV}" -PR = "r5" +PR = "r6" inherit efl -- cgit v1.2.3 From dcc6fbead960522b68f12392e1e7f0009af38b17 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Raster" Date: Thu, 30 Oct 2008 14:23:06 +1100 Subject: e17+efl: update to match latest additions and changes upstream lots of changes: 1. eina added. now a dependency. 2. illume removed as separate source tree and module and part of e17's wm 3. e17's default theme now include illume support so no need for illume theme these are fairly major but clean things up a lot. the e17 package splits out config profile now (it includes all of them as recommends though). the user can choose what profiel they want runtime. this is a "first time you run e" thing or whenever you choose the default profile (you go back to the wizard). also full intl support works with language selection etc. as long as glibc has that locale support. lots of other bugfixes and improvements as well. if you want "latest e+efl to work well" you will want these changes. --- conf/distro/include/sane-srcrevs.inc | 4 +- packages/e17/e-wm_svn.bb | 85 ++++++++++++++++++++++++++++----- packages/e17/illume-theme-illume_svn.bb | 33 ------------- packages/efl1/eet-native_svn.bb | 2 +- packages/efl1/eet_svn.bb | 2 +- packages/efl1/eina-native_svn.bb | 6 +++ packages/efl1/eina_svn.bb | 12 +++++ packages/python/python-ecore_svn.bb | 2 +- packages/python/python-edje_svn.bb | 2 +- packages/python/python-evas_svn.bb | 2 +- 10 files changed, 100 insertions(+), 50 deletions(-) delete mode 100644 packages/e17/illume-theme-illume_svn.bb create mode 100644 packages/efl1/eina-native_svn.bb create mode 100644 packages/efl1/eina_svn.bb diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc index e8c88626cc..6b1d5d8fe6 100644 --- a/conf/distro/include/sane-srcrevs.inc +++ b/conf/distro/include/sane-srcrevs.inc @@ -212,9 +212,11 @@ SRCREV_pn-zhone ?= "929c78f2e83faef526064231c17958eaef72eba3" # Enlightenment Foundation Libraries # Caution: This is not alphabetically, but (roughly) dependency-sorted. # Please leave it like that. -EFL_SRCREV ?= "36540" +EFL_SRCREV ?= "37324" SRCREV_pn-edb-native ?= "${EFL_SRCREV}" SRCREV_pn-edb ?= "${EFL_SRCREV}" +SRCREV_pn-eina-native ?= "${EFL_SRCREV}" +SRCREV_pn-eina ?= "${EFL_SRCREV}" SRCREV_pn-eet-native ?= "${EFL_SRCREV}" SRCREV_pn-eet ?= "${EFL_SRCREV}" SRCREV_pn-evas-native ?= "${EFL_SRCREV}" diff --git a/packages/e17/e-wm_svn.bb b/packages/e17/e-wm_svn.bb index acbee85a70..a641a2c34a 100644 --- a/packages/e17/e-wm_svn.bb +++ b/packages/e17/e-wm_svn.bb @@ -2,11 +2,51 @@ DESCRIPTION = "The Enlightenment Window Manager Version 17" DEPENDS = "eet evas ecore edje efreet edbus" LICENSE = "MIT BSD" PV = "0.16.999.043+svnr${SRCREV}" -PR = "r15" +PR = "r16" inherit e update-alternatives -RDEPENDS += "shared-mime-info mime-support" +RDEPENDS += "shared-mime-info mime-support edje-utils glibc-utils" + +PACKAGES =+ "\ + ${PN}-config-default \ + ${PN}-config-illume \ + ${PN}-config-minimalist \ + ${PN}-config-netbook \ + ${PN}-config-scaleable \ + ${PN}-config-standard \ + ${PN}-theme-default \ + ${PN}-theme-illume \ + ${PN}-background-dark-gradient \ + ${PN}-background-light-gradient \ + ${PN}-images \ + ${PN}-icons \ + ${PN}-other \ + ${PN}-input-methods \ +" + +RRECOMMENDS_${PN} = "\ + ${PN}-config-default \ + ${PN}-images \ + ${PN}-icons \ + ${PN}-other \ + ${PN}-input-methods \ +" + +PACKAGE_ARCH_${PN}-config-default = "all" +PACKAGE_ARCH_${PN}-config-illume = "all" +PACKAGE_ARCH_${PN}-config-minimalist = "all" +PACKAGE_ARCH_${PN}-config-netbook = "all" +PACKAGE_ARCH_${PN}-config-scaleable = "all" +PACKAGE_ARCH_${PN}-config-standard = "all" +PACKAGE_ARCH_${PN}-theme-default = "all" +PACKAGE_ARCH_${PN}-theme-illume = "all" +PACKAGE_ARCH_${PN}-background-dark-gradient = "all" +PACKAGE_ARCH_${PN}-background-light-gradient = "all" +PACKAGE_ARCH_${PN}-images = "all" +PACKAGE_ARCH_${PN}-icons = "all" +PACKAGE_ARCH_${PN}-other = "all" +PACKAGE_ARCH_${PN}-input-methods = "all" SRC_URI = "\ svn://svn.enlightenment.org/svn/e/trunk;module=e;proto=http \ @@ -37,30 +77,53 @@ do_stage() { do_install_append() { # customising - should rather make this simple upstream - rm -rf ${D}${datadir}/enlightenment/data/backgrounds/* - rm -rf ${D}${datadir}/enlightenment/data/fonts/* - rm -rf ${D}${datadir}/enlightenment/data/other/* install -m 755 ${WORKDIR}/enlightenment_start.oe ${D}/${bindir} install -d ${D}/${sysconfdir}/xdg/menus install -m 644 ${WORKDIR}/applications.menu ${D}/${sysconfdir}/xdg/menus/ + for I in `find ${D}/${libdir}/enlightenment -name "*.a" -print`; do rm -f $I; done + for I in `find ${D}/${libdir}/enlightenment -name "*.la" -print`; do rm -f $I; done } FILES_${PN} = "\ ${bindir}/* \ ${libdir}/enlightenment/modules/*/*.* \ ${libdir}/enlightenment/modules/*/*/* \ - ${libdir}/enlightenment/preload/*.so \ - ${datadir} \ + ${datadir}/locale \ + ${datadir}/enlightenment/data/icons \ + ${datadir}/enlightenment/data/input_methods \ + ${datadir}/enlightenment/data/config/profile.cfg \ ${sysconfdir} \ " +FILES_${PN}-config-default = "${datadir}/enlightenment/data/config/default" +FILES_${PN}-config-illume = "${datadir}/enlightenment/data/config/illume" +FILES_${PN}-config-minimalist = "${datadir}/enlightenment/data/config/minimalist" +FILES_${PN}-config-netbook = "${datadir}/enlightenment/data/config/netbook" +FILES_${PN}-config-scaleable = "${datadir}/enlightenment/data/config/scaleable" +FILES_${PN}-config-standard = "${datadir}/enlightenment/data/config/standard" +FILES_${PN}-theme-default = "${datadir}/enlightenment/data/themes/default.edj" +FILES_${PN}-theme-illume = "${datadir}/enlightenment/data/themes/illume.edj" +FILES_${PN}-theme-default = "${datadir}/enlightenment/data/themes/default.edj" +FILES_${PN}-background-dark-gradient = "${datadir}/enlightenment/data/backgrounds/Dark_Gradient.edj" +FILES_${PN}-background-light-gradient = "${datadir}/enlightenment/data/backgrounds/Light_Gradient.edj" +FILES_${PN}-images = "${datadir}/enlightenment/data/images" +FILES_${PN}-icons = "${datadir}/enlightenment/data/icons" +FILES_${PN}-other = "${datadir}/enlightenment/data/other" +FILES_${PN}-input-methods = "${datadir}/enlightenment/data/input_methods" + +RRECOMMENDS_${PN}-config-default = "${PN}-theme-default" +RRECOMMENDS_${PN}-config-illume = "${PN}-theme-illume" +RRECOMMENDS_${PN}-config-minimalist = "${PN}-background-light-gradient \ +${PN}-theme-default" +RRECOMMENDS_${PN}-config-netbook = "${PN}-background-dark-gradient \ +${PN}-theme-default" +RRECOMMENDS_${PN}-config-scaleable = "${PN}-theme-default" +RRECOMMENDS_${PN}-config-standard = "${PN}-theme-default" + FILES_${PN}-dbg += "\ ${libdir}/enlightenment/modules/*/*/.debug/ \ ${libdir}/enlightenment/preload/.debug/ \ " - -FILES_${PN}-dev += "\ - ${libdir}/enlightenment/preload/*.?a \ -" +FILES_${PN}-dev += "${libdir}/enlightenment/preload/*.?a" CONFFILES_${PN} = "/etc/xdg/menus/applications.menu" diff --git a/packages/e17/illume-theme-illume_svn.bb b/packages/e17/illume-theme-illume_svn.bb deleted file mode 100644 index eb313e074c..0000000000 --- a/packages/e17/illume-theme-illume_svn.bb +++ /dev/null @@ -1,33 +0,0 @@ -DESCRIPTION = "Illume theme for Illume E module" -HOMEPAGE = "http://www.enlightenment.org/" -LICENSE = "MIT/BSD" -DEPENDS = "edje-native eet-native" -PV = "0.0+${PR}-svnr${SRCREV}" -PR = "r1" - -SRC_URI = "svn://svn.enlightenment.org/svn/e/trunk;module=THEMES/b_and_w;proto=http" -S = "${WORKDIR}/THEMES/b_and_w" - -do_compile() { - edje_cc illume.edc - edje_cc illume_init.edc -} - -do_install() { - install -d ${D}${sysconfdir}/enlightenment - install -d ${D}${datadir}/enlightenment/data/themes/ - install -d ${D}${datadir}/enlightenment/data/init/ - - # FIXME: hack. should modify profile.cfg and nto use enlightenment_start.oe - echo 'E_PROFILE="-profile illume"' > ${D}${sysconfdir}/enlightenment/default_profile - - install -m 0644 ${S}/illume.edj ${D}${datadir}/enlightenment/data/themes/ - install -m 0644 ${S}/illume_init.edj ${D}${datadir}/enlightenment/data/init/ -} - -RPROVIDES_${PN} = "illume-theme" -CONFFILES_${PN} = "${sysconfdir}/enlightenment/default_profile" -FILES_${PN} = "${sysconfdir}/enlightenment ${datadir}/enlightenment" - -PACKAGE_ARCH_${PN} = "all" - diff --git a/packages/efl1/eet-native_svn.bb b/packages/efl1/eet-native_svn.bb index 0b0b5a4862..454bc53a7b 100644 --- a/packages/efl1/eet-native_svn.bb +++ b/packages/efl1/eet-native_svn.bb @@ -1,6 +1,6 @@ require eet_svn.bb inherit native -DEPENDS = "zlib-native jpeg-native" +DEPENDS = "zlib-native jpeg-native eina-native" # we no longer inherit pkgconfig, so we need to state this explicitly # (see explanation in efl.bbclass and autotools.bbclass) DEPENDS += "pkgconfig-native" diff --git a/packages/efl1/eet_svn.bb b/packages/efl1/eet_svn.bb index e801a543e7..6f7a615fad 100644 --- a/packages/efl1/eet_svn.bb +++ b/packages/efl1/eet_svn.bb @@ -1,5 +1,5 @@ DESCRIPTION = "EET is the Enlightenment data storage library" -DEPENDS = "zlib jpeg openssl" +DEPENDS = "zlib jpeg openssl eina" LICENSE = "MIT BSD" PV = "1.0.1+svnr${SRCREV}" PR = "r3" diff --git a/packages/efl1/eina-native_svn.bb b/packages/efl1/eina-native_svn.bb new file mode 100644 index 0000000000..8cc34bb178 --- /dev/null +++ b/packages/efl1/eina-native_svn.bb @@ -0,0 +1,6 @@ +require eina_svn.bb +inherit native +DEPENDS = "" +# we no longer inherit pkgconfig, so we need to state this explicitly +# (see explanation in efl.bbclass and autotools.bbclass) +DEPENDS += "pkgconfig-native" diff --git a/packages/efl1/eina_svn.bb b/packages/efl1/eina_svn.bb new file mode 100644 index 0000000000..2344b4e678 --- /dev/null +++ b/packages/efl1/eina_svn.bb @@ -0,0 +1,12 @@ +DESCRIPTION = "EET is the Enlightenment data storage library" +DEPENDS = "" +LICENSE = "LGPL" +PV = "0.0.1+svnr${SRCREV}" +PR = "r1" + +inherit efl + +EXTRA_OECONF = "\ +" + +FILES_${PN} += "${libdir}/eina" diff --git a/packages/python/python-ecore_svn.bb b/packages/python/python-ecore_svn.bb index 1b02bf77df..78aebc62fc 100644 --- a/packages/python/python-ecore_svn.bb +++ b/packages/python/python-ecore_svn.bb @@ -1,5 +1,5 @@ require python-efl.inc -DEPENDS += "python-evas ecore" +DEPENDS += "python-evas ecore eina" RDEPENDS += "python-evas" PV = "0.3.0+svnr${SRCREV}" PR = "r0" diff --git a/packages/python/python-edje_svn.bb b/packages/python/python-edje_svn.bb index 4e33847dae..532db0875f 100644 --- a/packages/python/python-edje_svn.bb +++ b/packages/python/python-edje_svn.bb @@ -1,5 +1,5 @@ require python-efl.inc -DEPENDS += "edje python-evas" +DEPENDS += "edje python-evas eina" RDEPENDS += "python-evas" PV = "0.3.0+svnr${SRCREV}" PR = "r0" diff --git a/packages/python/python-evas_svn.bb b/packages/python/python-evas_svn.bb index 6f53bf7e8d..2deb020b70 100644 --- a/packages/python/python-evas_svn.bb +++ b/packages/python/python-evas_svn.bb @@ -1,5 +1,5 @@ require python-efl.inc -DEPENDS += "evas" +DEPENDS += "evas eina" PV = "0.3.0+svnr${SRCREV}" PR = "r0" -- cgit v1.2.3 From 401c829f33f3ef248e34d06a06a05517b052a618 Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Thu, 13 Nov 2008 23:34:02 +0000 Subject: illume_svn: It inside E now. Remove the extra recipe for it --- packages/e17/illume_svn.bb | 59 ---------------------------------------------- 1 file changed, 59 deletions(-) delete mode 100644 packages/e17/illume_svn.bb diff --git a/packages/e17/illume_svn.bb b/packages/e17/illume_svn.bb deleted file mode 100644 index de738211f7..0000000000 --- a/packages/e17/illume_svn.bb +++ /dev/null @@ -1,59 +0,0 @@ -DESCRIPTION = "Illume - A mobile UI module for the Enlightenment Window Manager" -HOMEPAGE = "http://illume.projects.openmoko.org" -AUTHOR = "Carsten 'Rasterman' Haitzler" -LICENSE = "MIT/BSD" -DEPENDS = "e-wm eet evas ecore edje embryo efreet edbus edje-native embryo-native eet-native" -PV = "0.0+svnr${SRCREV}" -PR = "r14" - -SRC_URI = "svn://svn.enlightenment.org/svn/e/trunk;module=illume;proto=http \ - file://gsm-segfault.patch;patch=1;pnum=1" -S = "${WORKDIR}/${PN}" - -inherit autotools pkgconfig - -EXTRA_OECONF = "\ - --x-includes=${STAGING_INCDIR}/X11 \ - --x-libraries=${STAGING_LIBDIR} \ - --enable-simple-x11 \ - --with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc \ - --with-eet-eet=${STAGING_BINDIR_NATIVE}/eet \ -" - -RRECOMMENDS_${PN} = "\ - ${PN}-config-illume \ - ${PN}-theme \ - ${PN}-dicts-english-us \ - ${PN}-keyboards-default \ - ${PN}-keyboards-numbers \ - ${PN}-keyboards-terminal \ -" - -PACKAGES =+ "\ - ${PN}-config-illume \ - ${PN}-config-asu \ - ${PN}-dicts-english-us \ - ${PN}-keyboards-default \ - ${PN}-keyboards-numbers \ - ${PN}-keyboards-terminal \ -" -PACKAGE_ARCH_${PN}-config-illume = "all" -PACKAGE_ARCH_${PN}-config-asu = "all" -PACKAGE_ARCH_${PN}-dicts-english-us = "all" -PACKAGE_ARCH_${PN}-keyboards-default = "all" -PACKAGE_ARCH_${PN}-keyboards-numbers = "all" -PACKAGE_ARCH_${PN}-keyboards-terminal = "all" - -FILES_${PN}-config-illume = "${datadir}/enlightenment/data/config/illume/*" -FILES_${PN}-config-asu = "${datadir}/enlightenment/data/config/asu/*" -FILES_${PN}-dicts-english-us = "${libdir}/enlightenment/modules/illume/dicts/English_*.dic" -FILES_${PN}-keyboards-default = "${libdir}/enlightenment/modules/illume/keyboards/Default.kbd" -FILES_${PN}-keyboards-numbers = "${libdir}/enlightenment/modules/illume/keyboards/Numbers.kbd" -FILES_${PN}-keyboards-terminal = "${libdir}/enlightenment/modules/illume/keyboards/Terminal.kbd" - -FILES_${PN} = "\ - ${libdir}/enlightenment/modules/*/*.edj \ - ${libdir}/enlightenment/modules/*/*.desktop \ - ${libdir}/enlightenment/modules/*/*/* \ -" -FILES_${PN}-dbg += "${libdir}/enlightenment/modules/*/*/.debug/" -- cgit v1.2.3 From 38b28c110b718b119bb308bc7831f3a05059355b Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Thu, 13 Nov 2008 23:36:43 +0000 Subject: eina: Cleanup recipe --- packages/efl1/eina_svn.bb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/efl1/eina_svn.bb b/packages/efl1/eina_svn.bb index 2344b4e678..f38c4c5b36 100644 --- a/packages/efl1/eina_svn.bb +++ b/packages/efl1/eina_svn.bb @@ -1,12 +1,8 @@ -DESCRIPTION = "EET is the Enlightenment data storage library" -DEPENDS = "" +DESCRIPTION = "Eina is the Enlightenment data library" LICENSE = "LGPL" PV = "0.0.1+svnr${SRCREV}" -PR = "r1" +PR = "r0" inherit efl -EXTRA_OECONF = "\ -" - FILES_${PN} += "${libdir}/eina" -- cgit v1.2.3 From 2ced994b93b6488570c3a8fd146185e53dbdd91c Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Raster" Date: Thu, 30 Oct 2008 16:06:52 +1100 Subject: exquisitie: update initial timeout to wait for exquisite and the total boot too this increases the initial timeout wait from 20 to 40 seconds for exqusitie and also extends the total boot time timeout to 300 seconds from 180, incase the boot takes a long time. --- packages/e17/exquisite/exquisite-init | 6 +++--- packages/e17/exquisite_svn.bb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/e17/exquisite/exquisite-init b/packages/e17/exquisite/exquisite-init index 6c94fdcae6..1750184842 100644 --- a/packages/e17/exquisite/exquisite-init +++ b/packages/e17/exquisite/exquisite-init @@ -33,8 +33,8 @@ export EXQUISITE_IPC=$EXDIR/exquisite mount tmpfs -t tmpfs $EXDIR -o,size=40k exquisite -fb -fs $args & -exquisite-write -wait 20 +exquisite-write -wait 40 exquisite-write "PULSATE" -# kill off exquisite in 180 seconds if its not gone yet -(sleep 180; exquisite-write "QUIT")& +# kill off exquisite in 300 seconds if its not gone yet +(sleep 300; exquisite-write "QUIT")& diff --git a/packages/e17/exquisite_svn.bb b/packages/e17/exquisite_svn.bb index f1c8908545..e303600d58 100644 --- a/packages/e17/exquisite_svn.bb +++ b/packages/e17/exquisite_svn.bb @@ -2,7 +2,7 @@ DESCRIPTION = "A psplash replacement for display" LICENSE = "MIT BSD" DEPENDS = "eet evas ecore embryo edje" PV = "0.0.1+svnr${SRCREV}" -PR = "r2" +PR = "r3" RDEPENDS = "initscripts" RRECOMMENDS_${PN} = "exquisite-themes" -- cgit v1.2.3 From 64a3540e1f43d303a3af4e116473d225b460f2e9 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Raster" Date: Sun, 2 Nov 2008 11:44:09 +1100 Subject: e-wm: decrease e niceness to -10 to get all the cpu it wants/needs get more cpu to function as a launcher/app manager. e will not set this for children - children get nice 1 now anyway. --- packages/e17/e-wm/enlightenment_start.oe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e17/e-wm/enlightenment_start.oe b/packages/e17/e-wm/enlightenment_start.oe index 7d472fa76f..fa783029a5 100644 --- a/packages/e17/e-wm/enlightenment_start.oe +++ b/packages/e17/e-wm/enlightenment_start.oe @@ -5,4 +5,4 @@ if [ -r /etc/enlightenment/default_profile ]; then . /etc/enlightenment/default_profile fi -exec enlightenment_start $E_PROFILE +exec nice -n -10 enlightenment_start $E_PROFILE -- cgit v1.2.3 From aa065f38382a16415280b8724be62fd8a0d41a11 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Raster" Date: Sun, 2 Nov 2008 12:04:20 +1100 Subject: e-wm: fix nice level set for e can't use it with exec as its ONLY a shell builtin with busybox. use renice --- packages/e17/e-wm/enlightenment_start.oe | 3 ++- packages/e17/e-wm_svn.bb | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/e17/e-wm/enlightenment_start.oe b/packages/e17/e-wm/enlightenment_start.oe index fa783029a5..e5a65025cb 100644 --- a/packages/e17/e-wm/enlightenment_start.oe +++ b/packages/e17/e-wm/enlightenment_start.oe @@ -5,4 +5,5 @@ if [ -r /etc/enlightenment/default_profile ]; then . /etc/enlightenment/default_profile fi -exec nice -n -10 enlightenment_start $E_PROFILE +renice -10 -p $$ +exec enlightenment_start $E_PROFILE diff --git a/packages/e17/e-wm_svn.bb b/packages/e17/e-wm_svn.bb index a641a2c34a..a2fabc7840 100644 --- a/packages/e17/e-wm_svn.bb +++ b/packages/e17/e-wm_svn.bb @@ -2,7 +2,7 @@ DESCRIPTION = "The Enlightenment Window Manager Version 17" DEPENDS = "eet evas ecore edje efreet edbus" LICENSE = "MIT BSD" PV = "0.16.999.043+svnr${SRCREV}" -PR = "r16" +PR = "r17" inherit e update-alternatives -- cgit v1.2.3 From fcd05cbdf1048a81ae6f428f1bb4db91b39ed0fc Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Fri, 14 Nov 2008 00:34:13 +0000 Subject: angstrom-2007-for-openmoko: OM prefers exquisite over psplash --- conf/distro/include/angstrom-2007-for-openmoko.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/distro/include/angstrom-2007-for-openmoko.inc b/conf/distro/include/angstrom-2007-for-openmoko.inc index 0c7fe5be49..22a2c98a16 100644 --- a/conf/distro/include/angstrom-2007-for-openmoko.inc +++ b/conf/distro/include/angstrom-2007-for-openmoko.inc @@ -218,7 +218,7 @@ DISTRO_EXTRA_DEPENDS += " \ DISTRO_EXTRA_RDEPENDS += "\ update-modules \ - ${@base_contains("MACHINE_FEATURES", "screen", "psplash", "",d)} \ + ${@base_contains("MACHINE_FEATURES", "screen", "exquisite", "",d)} \ angstrom-version \ opkg opkg-collateral distro-feed-configs \ util-linux-mount util-linux-umount \ -- cgit v1.2.3 From 3f43346f5f2189da340c48a3aaec154a293a54d4 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 14 Nov 2008 10:12:02 +0100 Subject: checksums.ini: add gnome-games 2.25.1 and codec-engine 2.21 --- conf/checksums.ini | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index 6d025702e2..8c852b6200 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -2946,6 +2946,10 @@ sha256=4999d3054a04e6cf4847a72316e32e9e98e6152b1fd72adc87d15e305f990f27 md5=32b0df93b285ee094e053552d9301cb6 sha256=eb9f4b4b5973f444d16920201dfea217fb30542fea23107cf80a1f189408b321 +[http://install.tarball.in.source.dir/codec_engine_2_21.tar.gz] +md5=6cacb7db6eb61c64395be4ddc737095d +sha256=d391829686eb002ace3ffbfed75c35e877b42c1884c9359791634b5b57126797 + [http://install.tarball.in.source.dir/codec_engine_2_21_00_06.tar.gz] md5=d8f3bbfbcc337d9776991d9561f451f3 sha256=773ce12045ce98c3be4b1845547435f1b7798996fa3170dea72c7c15aa5ca79d @@ -6502,6 +6506,10 @@ sha256=af2ebf32fe93817e06333b94d3fabcf72fa5675f402c1bbdb7bed3be0b3b3a3e md5=23bf4e795725a74ebb37daacda784adb sha256=3105dfb490c187adbe1c14582daa5a134ec672c396af3dd4e0e29cc9fbb4a6ea +[http://ftp.gnome.org/pub/GNOME/sources/gnome-games/2.25/gnome-games-2.25.1.tar.bz2] +md5=886ab09752d3b420b744865342f07eb0 +sha256=a29eca01be141a9208ef2be3dc497d05faf4d2c0ca3e3d9edeec611ca3388b28 + [http://ftp.gnome.org/pub/GNOME/sources/gnome-games/2.6/gnome-games-2.6.1.tar.bz2] md5=6ea145547bfd8aa828b22cbbe34cbedf sha256=d7a823601f569589437d671d12b1b12f53abc08aeb7d25280bb3242299353086 -- cgit v1.2.3 From e3f304a3e80cb87d34fed098a3ab2006504aef52 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 14 Nov 2008 10:31:27 +0100 Subject: linux-omap git: add DSS2 patch for omap3evm * this is not enabled in the defconfig yet --- .../linux/linux-omap/omap3evm/omap3evm-dss2.diff | 443 +++++++++++++++++++++ packages/linux/linux-omap_git.bb | 3 +- 2 files changed, 445 insertions(+), 1 deletion(-) create mode 100644 packages/linux/linux-omap/omap3evm/omap3evm-dss2.diff diff --git a/packages/linux/linux-omap/omap3evm/omap3evm-dss2.diff b/packages/linux/linux-omap/omap3evm/omap3evm-dss2.diff new file mode 100644 index 0000000000..afcebba10f --- /dev/null +++ b/packages/linux/linux-omap/omap3evm/omap3evm-dss2.diff @@ -0,0 +1,443 @@ +From: hvaibhav@ti.com +To: linux-fbdev-devel@lists.sourceforge.net, linux-omap@vger.kernel.org +Cc: Vaibhav Hiremath +Subject: [REVIEW PATCH] Added OMAP3EVM support on Tomis FBDEV/DSS Patches +Date: Fri, 14 Nov 2008 12:02:32 +0530 + +From: Vaibhav Hiremath + +Tested LCD, TV, DVI (480P) out on OMAP3EVM board. + +Please make sure that you change the option +CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=7 and apply the +Mans Rullgard clock patches to support set_rate and round_rate API. + +Signed-off-by: Vaibhav Hiremath +--- + arch/arm/mach-omap2/board-omap3evm.c | 224 ++++++++++++++++++++++++++++++++-- + drivers/video/omap2/Kconfig | 5 + + drivers/video/omap2/Makefile | 1 + + drivers/video/omap2/panel-omap3evm.c | 110 +++++++++++++++++ + 5 files changed, 341 insertions(+), 53 deletions(-) + create mode 100644 drivers/video/omap2/panel-omap3evm.c + +diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c +index 42ab826..e244fa7 100644 +--- a/arch/arm/mach-omap2/board-omap3evm.c ++++ b/arch/arm/mach-omap2/board-omap3evm.c +@@ -37,6 +37,8 @@ + #include + #include + #include ++#include ++#include + + #include "sdram-micron-mt46h32m32lf-6.h" + #include "twl4030-generic-scripts.h" +@@ -161,14 +163,215 @@ static int __init omap3_evm_i2c_init(void) + omap_register_i2c_bus(3, 400, NULL, 0); + return 0; + } ++static struct omap_fbmem_config evm_fbmem0_config = { ++ .size = 480*720*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; + +-static struct platform_device omap3_evm_lcd_device = { +- .name = "omap3evm_lcd", +- .id = -1, ++static struct omap_fbmem_config evm_fbmem1_config = { ++ .size = 480*720*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, + }; + +-static struct omap_lcd_config omap3_evm_lcd_config __initdata = { +- .ctrl_name = "internal", ++static struct omap_fbmem_config evm_fbmem2_config = { ++ .size = 480*720*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++#define LCD_PANEL_LR 2 ++#define LCD_PANEL_UD 3 ++#define LCD_PANEL_INI 152 ++#define LCD_PANEL_ENABLE_GPIO 153 ++#define LCD_PANEL_QVGA 154 ++#define LCD_PANEL_RESB 155 ++ ++#define ENABLE_VDAC_DEDICATED 0x03 ++#define ENABLE_VDAC_DEV_GRP 0x20 ++#define ENABLE_VPLL2_DEDICATED 0x05 ++#define ENABLE_VPLL2_DEV_GRP 0xE0 ++ ++#define TWL4030_GPIODATA_IN3 0x03 ++#define TWL4030_GPIODATA_DIR3 0x06 ++#define TWL4030_VPLL2_DEV_GRP 0x33 ++#define TWL4030_VPLL2_DEDICATED 0x36 ++ ++static int lcd_enabled; ++static int dvi_enabled; ++ ++static void __init evm_display_init(void) ++{ ++ int r; ++ r = gpio_request(LCD_PANEL_LR, "lcd_panel_lr"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD_PANEL_LR\n"); ++ return; ++ } ++ r = gpio_request(LCD_PANEL_UD, "lcd_panel_ud"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD_PANEL_UD\n"); ++ goto err_1; ++ } ++ ++ r = gpio_request(LCD_PANEL_INI, "lcd_panel_ini"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD_PANEL_INI\n"); ++ goto err_2; ++ } ++ r = gpio_request(LCD_PANEL_RESB, "lcd_panel_resb"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD_PANEL_RESB\n"); ++ goto err_3; ++ } ++ r = gpio_request(LCD_PANEL_QVGA, "lcd_panel_qvga"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD_PANEL_QVGA\n"); ++ goto err_4; ++ } ++ ++ gpio_direction_output(LCD_PANEL_LR, 0); ++ gpio_direction_output(LCD_PANEL_UD, 0); ++ gpio_direction_output(LCD_PANEL_INI, 0); ++ gpio_direction_output(LCD_PANEL_RESB, 0); ++ gpio_direction_output(LCD_PANEL_QVGA, 0); ++ ++#define TWL_LED_LEDEN 0x00 ++#define TWL_PWMA_PWMAON 0x00 ++#define TWL_PWMA_PWMAOFF 0x01 ++ ++ twl4030_i2c_write_u8(TWL4030_MODULE_LED, 0x11, TWL_LED_LEDEN); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PWMA, 0x01, TWL_PWMA_PWMAON); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PWMA, 0x02, TWL_PWMA_PWMAOFF); ++ ++ gpio_direction_output(LCD_PANEL_RESB, 1); ++ gpio_direction_output(LCD_PANEL_INI, 1); ++ gpio_direction_output(LCD_PANEL_QVGA, 0); ++ gpio_direction_output(LCD_PANEL_LR, 1); ++ gpio_direction_output(LCD_PANEL_UD, 1); ++ ++ return; ++ ++err_4: ++ gpio_free(LCD_PANEL_RESB); ++err_3: ++ gpio_free(LCD_PANEL_INI); ++err_2: ++ gpio_free(LCD_PANEL_UD); ++err_1: ++ gpio_free(LCD_PANEL_LR); ++ ++} ++ ++static int panel_enable_lcd(struct omap_display *display) ++{ ++ if (dvi_enabled) { ++ printk(KERN_ERR "cannot enable LCD, DVI is enabled\n"); ++ return -EINVAL; ++ } ++ if (system_rev > OMAP3430_REV_ES1_0) { ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VPLL2_DEDICATED, TWL4030_VPLL2_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VPLL2_DEV_GRP, TWL4030_VPLL2_DEV_GRP); ++ } ++ gpio_direction_output(LCD_PANEL_ENABLE_GPIO, 0); ++ lcd_enabled = 1; ++ return 0; ++} ++ ++static void panel_disable_lcd(struct omap_display *display) ++{ ++ if (system_rev > OMAP3430_REV_ES1_0) { ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0, ++ TWL4030_VPLL2_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0, ++ TWL4030_VPLL2_DEV_GRP); ++ } ++ omap_set_gpio_dataout(LCD_PANEL_ENABLE_GPIO, 1); ++ lcd_enabled = 0; ++} ++ ++static struct omap_display_data evm_display_data = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "lcd", ++ .panel_name = "panel-evm", ++ .u.dpi.data_lines = 16, ++ .panel_enable = panel_enable_lcd, ++ .panel_disable = panel_disable_lcd, ++}; ++ ++static int panel_enable_tv(struct omap_display *display) ++{ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEDICATED, TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); ++ return 0; ++} ++ ++static void panel_disable_tv(struct omap_display *display) ++{ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEV_GRP); ++} ++ ++static struct omap_display_data evm_display_data_tv = { ++ .type = OMAP_DISPLAY_TYPE_VENC, ++ .name = "tv", ++ .u.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, ++ .panel_enable = panel_enable_tv, ++ .panel_disable = panel_disable_tv, ++}; ++ ++ ++static int panel_enable_dvi(struct omap_display *display) ++{ ++ if (lcd_enabled) { ++ printk(KERN_ERR "cannot enable DVI, LCD is enabled\n"); ++ return -EINVAL; ++ } ++ twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x80, ++ TWL4030_GPIODATA_IN3); ++ twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x80, ++ TWL4030_GPIODATA_DIR3); ++ dvi_enabled = 1; ++ ++ return 0; ++} ++ ++static void panel_disable_dvi(struct omap_display *display) ++{ ++ twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x00, ++ TWL4030_GPIODATA_IN3); ++ twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x00, ++ TWL4030_GPIODATA_DIR3); ++ dvi_enabled = 0; ++} ++ ++ ++static struct omap_display_data evm_display_data_dvi = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "dvi", ++ .panel_name = "panel-dvi", ++ .u.dpi.data_lines = 24, ++ .panel_enable = panel_enable_dvi, ++ .panel_disable = panel_disable_dvi, ++}; ++ ++static struct omap_dss_platform_data evm_dss_data = { ++ .num_displays = 3, ++ .displays = { ++ &evm_display_data, ++ &evm_display_data_dvi, ++ &evm_display_data_tv, ++ } ++}; ++static struct platform_device evm_dss_device = { ++ .name = "omap-dss", ++ .id = -1, ++ .dev = { ++ .platform_data = &evm_dss_data, ++ }, + }; + + static void ads7846_dev_init(void) +@@ -227,11 +430,13 @@ static void __init omap3_evm_init_irq(void) + + static struct omap_board_config_kernel omap3_evm_config[] __initdata = { + { OMAP_TAG_UART, &omap3_evm_uart_config }, +- { OMAP_TAG_LCD, &omap3_evm_lcd_config }, ++ { OMAP_TAG_FBMEM, &evm_fbmem0_config }, ++ { OMAP_TAG_FBMEM, &evm_fbmem1_config }, ++ { OMAP_TAG_FBMEM, &evm_fbmem2_config }, + }; + + static struct platform_device *omap3_evm_devices[] __initdata = { +- &omap3_evm_lcd_device, ++ &evm_dss_device, + &omap3evm_smc911x_device, + }; + +@@ -250,8 +455,6 @@ static void __init omap3_evm_init(void) + omap3_evm_i2c_init(); + + platform_add_devices(omap3_evm_devices, ARRAY_SIZE(omap3_evm_devices)); +- omap_board_config = omap3_evm_config; +- omap_board_config_size = ARRAY_SIZE(omap3_evm_config); + + spi_register_board_info(omap3evm_spi_board_info, + ARRAY_SIZE(omap3evm_spi_board_info)); +@@ -262,10 +465,13 @@ static void __init omap3_evm_init(void) + usb_ehci_init(); + omap3evm_flash_init(); + ads7846_dev_init(); ++ evm_display_init(); + } + + static void __init omap3_evm_map_io(void) + { ++ omap_board_config = omap3_evm_config; ++ omap_board_config_size = ARRAY_SIZE(omap3_evm_config); + omap2_set_globals_343x(); + omap2_map_common_io(); + } +diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig +index 95691ad..8211ffd 100644 +--- a/drivers/video/omap2/Kconfig ++++ b/drivers/video/omap2/Kconfig +@@ -51,4 +51,9 @@ config PANEL_SDP3430 + help + SDP3430 LCD + ++config PANEL_OMAP3EVM ++ tristate "OMAP3EVM Panel" ++ depends on OMAP2_DSS ++ help ++ OMAP3EVM LCD Panel + endmenu +diff --git a/drivers/video/omap2/Makefile b/drivers/video/omap2/Makefile +index 73ab1c0..668e8c6 100644 +--- a/drivers/video/omap2/Makefile ++++ b/drivers/video/omap2/Makefile +@@ -3,3 +3,4 @@ omapfb-y := omapfb-main.o omapfb-sysfs.o omapfb-ioctl.o + + obj-$(CONFIG_PANEL_DVI) += panel-dvi.o + obj-$(CONFIG_PANEL_SDP3430) += panel-sdp3430.o ++obj-$(CONFIG_PANEL_OMAP3EVM) += panel-omap3evm.o +diff --git a/drivers/video/omap2/panel-omap3evm.c b/drivers/video/omap2/panel-omap3evm.c +new file mode 100644 +index 0000000..4a00b02 +--- /dev/null ++++ b/drivers/video/omap2/panel-omap3evm.c +@@ -0,0 +1,110 @@ ++/* ++ * LCD panel support for the TI OMAP3EVM board ++ * ++ * Copyright (C) 2008 Texas Instruments, Inc. ++ * Author: Vaibhav Hiremath ++ * ++ * Derived from drivers/video/omap2/panel-sdp3430.c ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++ ++#include ++ ++static int omap3evm_panel_init(struct omap_display *display) ++{ ++ return 0; ++} ++ ++static void omap3evm_panel_cleanup(struct omap_display *display) ++{ ++} ++ ++static int omap3evm_panel_enable(struct omap_display *display) ++{ ++ int r = 0; ++ ++ if (display->hw_config.panel_enable) ++ r = display->hw_config.panel_enable(display); ++ ++ return r; ++} ++ ++static void omap3evm_panel_disable(struct omap_display *display) ++{ ++ if (display->hw_config.panel_disable) ++ display->hw_config.panel_disable(display); ++} ++ ++static int omap3evm_panel_suspend(struct omap_display *display) ++{ ++ omap3evm_panel_disable(display); ++ return 0; ++} ++ ++static int omap3evm_panel_resume(struct omap_display *display) ++{ ++ return omap3evm_panel_enable(display); ++} ++ ++static struct omap_panel omap3evm_panel = { ++ .owner = THIS_MODULE, ++ .name = "panel-evm", ++ .init = omap3evm_panel_init, ++ .cleanup = omap3evm_panel_cleanup, ++ .enable = omap3evm_panel_enable, ++ .disable = omap3evm_panel_disable, ++ .suspend = omap3evm_panel_suspend, ++ .resume = omap3evm_panel_resume, ++ /*.set_mode = omap3evm_set_mode, */ ++ ++ .timings = { ++ .pixel_clock = 26000, ++ ++ .hsw = 4, ++ .hfp = 4, ++ .hbp = 40, ++ ++ .vsw = 2, ++ .vfp = 2, ++ .vbp = 7, ++ }, ++ ++ .acb = 0x28, ++ ++ .config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | ++ OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC, ++ ++ .x_res = 480, ++ .y_res = 640, ++ .bpp = 18, ++}; ++ ++ ++static int __init omap3evm_panel_drv_init(void) ++{ ++ omap_dss_register_panel(&omap3evm_panel); ++ return 0; ++} ++ ++static void __exit omap3evm_panel_drv_exit(void) ++{ ++ omap_dss_unregister_panel(&omap3evm_panel); ++} ++ ++module_init(omap3evm_panel_drv_init); ++module_exit(omap3evm_panel_drv_exit); ++MODULE_LICENSE("GPL"); +-- +1.5.6 + +-- +To unsubscribe from this list: send the line "unsubscribe linux-omap" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html + diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb index dd5016336a..81f717ae5e 100644 --- a/packages/linux/linux-omap_git.bb +++ b/packages/linux/linux-omap_git.bb @@ -10,7 +10,7 @@ SRCREV = "444fcab6e8f8bad4ffc50feb91516c246d91e901" PV = "2.6.27+2.6.28-rc3+${PR}+gitr${SRCREV}" #PV = "2.6.27+${PR}+gitr${SRCREV}" -PR = "r3" +PR = "r4" SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \ file://defconfig" @@ -51,6 +51,7 @@ SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \ SRC_URI_append_omap3evm = " \ file://evm-mcspi-ts.diff;patch=1 \ file://omap3evm-lcd-redtint.diff;patch=1 \ + file://omap3evm-dss2.diff;patch=1 \ " S = "${WORKDIR}/git" -- cgit v1.2.3 From 0833c193ce38d965b5ab4becacb2a9d1520ebf3c Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Fri, 14 Nov 2008 09:35:33 +0100 Subject: openjdk-langtools-native: Rename 'javac' to 'sun-javac' when installing to staging. --- .../openjdk-langtools-native_0.0+jdk7-b31.bb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb b/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb index 3f90e4a7dd..1533818c00 100644 --- a/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb +++ b/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb @@ -1,7 +1,9 @@ -DESCRIPTION = "Java Language tools (javac, javah, javap, javadoc and apt) from OpenJDK" +DESCRIPTION = "Java Language tools (sun-javac, javah, javap, javadoc and apt) from OpenJDK" HOMEPAGE = "http://http://openjdk.java.net/groups/compiler" LICENSE = "GPL" +PR = "r1" + DEPENDS = "classpath-native fastjar-native ecj-initial" S = "${WORKDIR}/icepick-0.0+hg20080118" @@ -23,3 +25,11 @@ EXTRA_OECONF = "\ " export JAVAC_OPTS="-bootclasspath ${STAGING_DATADIR_JAVA}/share/classpath/glibj.zip -source 5.0" + +do_stage_append() { + # Provide javac as sun-javac to not clash with the binary of the same + # name in ecj-bootstrap-native. + # This way ecj-bootstrap-native and openjdk-langtools-native can coexist + # in staging dir. + mv ${bindir}/javac ${bindir}/sun-javac +} -- cgit v1.2.3 From a0ca3483100b1b8df24c133c2d90cb13320ba9a1 Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Fri, 14 Nov 2008 09:36:12 +0100 Subject: openjdk-javac-native: New recipe. --- .../openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb diff --git a/packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb b/packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb new file mode 100644 index 0000000000..8c5537911e --- /dev/null +++ b/packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "Java compiler from the OpenJDK project" +HOMEPAGE = "http://http://openjdk.java.net/groups/compiler" +LICENSE = "GPL" + +PR = "r0" + +DEPENDS = "openjdk-langtools-native" + +PROVIDES = "virtual/javac-native" + +do_stage() { + ln -sf ${bindir}/sun-javac ${bindir}/javac +} -- cgit v1.2.3 From 5ebf12cbebaf61fff2cb793bcc041f7b43caa4f4 Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Fri, 14 Nov 2008 09:36:33 +0100 Subject: openmoko.conf: Set virtual/javac-native preference to ecj-bootstrap-native. --- conf/distro/openmoko.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/distro/openmoko.conf b/conf/distro/openmoko.conf index d36a6188df..a4a006f92c 100644 --- a/conf/distro/openmoko.conf +++ b/conf/distro/openmoko.conf @@ -60,6 +60,7 @@ PREFERRED_PROVIDER_gtk+ = "gtk+-fastscaling" PREFERRED_VERSION_gtk+-fastscaling = "2.10.14" # for jalimo +PREFERRED_PROVIDER_virtual/javac-native = "ecj-bootstrap-native" PREFERRED_PROVIDER_classpath = "classpath" PREFERRED_PROVIDER_virtual/java-initial = "cacao-initial" PREFERRED_PROVIDER_swt3.4-gtk = "swt3.4-gtk" -- cgit v1.2.3 From 83a3a4d6da863a37c3b1f8f550564d42e4ea19e9 Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Fri, 14 Nov 2008 09:47:13 +0100 Subject: openjdk-javac-native: Inherit native. --- packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb b/packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb index 8c5537911e..e4c916f969 100644 --- a/packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb +++ b/packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb @@ -8,6 +8,8 @@ DEPENDS = "openjdk-langtools-native" PROVIDES = "virtual/javac-native" +inherit native + do_stage() { ln -sf ${bindir}/sun-javac ${bindir}/javac } -- cgit v1.2.3 From 06d6c5c9a035a9ac5c77d9e86d6a27749b72388d Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Fri, 14 Nov 2008 10:39:41 +0100 Subject: openjdk-langtools-native: Add virtual/java-native to DEPENDS (the tools need a runtime otherwise there are useless) --- .../openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb b/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb index 1533818c00..9b857a171a 100644 --- a/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb +++ b/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb @@ -2,9 +2,9 @@ DESCRIPTION = "Java Language tools (sun-javac, javah, javap, javadoc and apt) fr HOMEPAGE = "http://http://openjdk.java.net/groups/compiler" LICENSE = "GPL" -PR = "r1" +PR = "r2" -DEPENDS = "classpath-native fastjar-native ecj-initial" +DEPENDS = "classpath-native fastjar-native ecj-initial virtual/java-native" S = "${WORKDIR}/icepick-0.0+hg20080118" @@ -27,9 +27,11 @@ EXTRA_OECONF = "\ export JAVAC_OPTS="-bootclasspath ${STAGING_DATADIR_JAVA}/share/classpath/glibj.zip -source 5.0" do_stage_append() { + [ -f ${bindir}/sun-javac ] && rm ${bindir}/sun-javac + # Provide javac as sun-javac to not clash with the binary of the same # name in ecj-bootstrap-native. # This way ecj-bootstrap-native and openjdk-langtools-native can coexist # in staging dir. - mv ${bindir}/javac ${bindir}/sun-javac + mv -f ${bindir}/javac ${bindir}/sun-javac } -- cgit v1.2.3 From c84c511adf8559df2ed2be13de06b1ba5474cecd Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 14 Nov 2008 11:25:51 +0100 Subject: codec-engine, dsplink: start updating it to the upcoming 2.21 release --- packages/dsplink/cmemk.inc | 55 ++++++++++++++++++++++ packages/dsplink/codec-engine_2.21.bb | 79 ++++---------------------------- packages/dsplink/dsplink.inc | 1 + packages/dsplink/lpm.inc | 61 ++++++++++++++++++++++++ packages/dsplink/ti-cmemk-module_2.21.bb | 63 ++----------------------- packages/dsplink/ti-lpm-module_2.21.bb | 68 ++------------------------- 6 files changed, 134 insertions(+), 193 deletions(-) create mode 100644 packages/dsplink/cmemk.inc create mode 100644 packages/dsplink/lpm.inc diff --git a/packages/dsplink/cmemk.inc b/packages/dsplink/cmemk.inc new file mode 100644 index 0000000000..1b7ea3ae0f --- /dev/null +++ b/packages/dsplink/cmemk.inc @@ -0,0 +1,55 @@ +DESCRIPTION = "Codec Engine for TI ARM/DSP processors - cmemk module" + +DEPENDS = "virtual/kernel perl-native" +RDEPENDS = "update-modules" + +inherit module + +require ti-paths.inc + +export DSPLINK="${S}/cetools/packages/dsplink" + +PARALLEL_MAKE = "" + + +do_compile_append() { + echo "MVTOOL_PREFIX=${TARGET_PREFIX}" > ${S}/Rules.make + echo "UCTOOL_PREFIX=${TARGET_PREFIX}" >> ${S}/Rules.make + echo "LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}" >> ${S}/Rules.make + + # Build the cmem kernel module + # We unset CFLAGS because kernel modules need different ones, this is basically a verbatim copy of kernel.bbclass and module-base.bbclass + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + cd ${S}/cetools/packages/ti/sdo/linuxutils/cmem + + oe_runmake clean + oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ + KERNEL_SRC=${STAGING_KERNEL_DIR} \ + KERNEL_VERSION=${KERNEL_VERSION} \ + CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + AR="${KERNEL_AR}" +} + + +do_install() { + install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp + cp ${S}/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp +} + +INHIBIT_PACKAGE_STRIP = "1" + +FILES_ti-cmemk-module = "${sysconfdir} /lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/cmemk.ko" + +pkg_postinst_ti-cmemk-module () { + if [ -n "$D" ]; then + exit 1 + fi + depmod -a + update-modules || true +} + +pkg_postrm_ti-cmemk-module () { + update-modules || true +} + +PACKAGE_ARCH = "${MACHINE_ARCH}" diff --git a/packages/dsplink/codec-engine_2.21.bb b/packages/dsplink/codec-engine_2.21.bb index b300256a3a..7c81704604 100644 --- a/packages/dsplink/codec-engine_2.21.bb +++ b/packages/dsplink/codec-engine_2.21.bb @@ -1,3 +1,7 @@ +require dsplink.inc +require lpm.inc +require cmemk.inc + DESCRIPTION = "Codec Engine for TI ARM/DSP processors" DEPENDS = "virtual/kernel perl-native" @@ -6,19 +10,18 @@ RDEPENDS = "update-modules" inherit module # tconf from xdctools dislikes '.' in pwd :/ -PR = "r1" +PR = "r2" PV = "221" # Get CE tarball from TI website, place in sources and calculate # md5sum # Look for tarball at https://www-a.ti.com/downloads/sds_support/targetcontent/CE/index.html -SRC_URI = "http://install.tarball.in.source.dir/codec_engine_2_21_00_06.tar.gz \ +SRC_URI = "http://install.tarball.in.source.dir/codec_engine_2_21.tar.gz \ file://Makefile.dsplink \ - file://cmemk-fix-class-device-api.diff;patch=1 \ " -S = "${WORKDIR}/codec_engine_2_21_00_06" +S = "${WORKDIR}/codec_engine_2_21" require ti-paths.inc @@ -26,72 +29,8 @@ export DSPLINK="${S}/cetools/packages/dsplink" PARALLEL_MAKE = "" -do_configure () { - # Run perl script to create appropriate makefiles (v1.60 and up) - perl ${S}/cetools/packages/dsplink/config/bin/dsplinkcfg.pl --platform=${DSPLINKPLATFORM} --nodsp=1 --dspcfg_0=${DSPCFG} --dspos_0=DSPBIOS5XX --gppos=${GPPOS} --comps=ponslrm -} - -do_compile() { - unset DISPLAY - sed -i -e s:armv7a:armv7-a:g make/Linux/omap3530_2.6.mk || true - - # export various settings to override the defaults in the makefiles - export DSP_BASE_CGTOOLS=${TITOOLSDIR}/${TICGTOOLSDIR} - export DSP_BASE_BIOS=${TITOOLSDIR}/${TIBIOSDIR} - export DSP_BASE_RTDX=${TITOOLSDIR}/${TIBIOSDIR}/packages/ti/rtdx - export GPPTOOL_DIR=${CROSS_DIR} - export LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR} - export LINK_INSTALL_DIR=${DSPLINK} - export VARIANT=${DSPLINKSOC} - export PLATFORM=${DSPLINKPLATFORM} - export BASE_TOOLCHAIN=${CROSS_DIR} - export BASE_CGTOOLS=${BASE_TOOLCHAIN}/bin - # 'OSINC_PLATFORM' is used in both the dsp and gpp sides... - export OSINC_PLATFORM1=${CROSS_DIR}/lib/gcc/${TARGET_SYS}/$(${TARGET_PREFIX}gcc -dumpversion)/include - export OSINC_TARGET=${BASE_TOOLCHAIN}/target/usr/include - - # 'ARCHIVER' is being used in the dsp side of the build as well as gpp - export ARCHIVER_AR=${TARGET_PREFIX}ar - export BASE_SABIOS=${DSP_BASE_BIOS} - - make -e -f ${WORKDIR}/Makefile.dsplink - - echo "MVTOOL_PREFIX=${TARGET_PREFIX}" > ${S}/Rules.make - echo "UCTOOL_PREFIX=${TARGET_PREFIX}" >> ${S}/Rules.make - echo "LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}" >> ${S}/Rules.make - - # Build the cmem kernel module - # We unset CFLAGS because kernel modules need different ones, this is basically a verbatim copy of kernel.bbclass and module-base.bbclass - unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS - cd ${S}/cetools/packages/ti/sdo/linuxutils/cmem - - oe_runmake clean - oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ - KERNEL_SRC=${STAGING_KERNEL_DIR} \ - KERNEL_VERSION=${KERNEL_VERSION} \ - CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ - AR="${KERNEL_AR}" - - # Build the DSP power manager kernel module - cd ${S}/cetools/packages/ti/bios/power - - # Unpack all kernel sources for the DSP power manager module - for dsp in $(ls | grep bld | awk -F, '{print $2}' | awk -F_ '{print $1}') ; do - if ! [ -e $dsp ] ; then tar xf ti_bios_power,${dsp}_bld.tar ; fi - done - - cd ${DSPPOWERSOC}/lpm - - unset LDFLAGS CFLAGS - make KERNEL_PATH=${STAGING_KERNEL_DIR} \ - KERNEL_SRC=${STAGING_KERNEL_DIR} \ - KERNEL_DIR=${STAGING_KERNEL_DIR} \ - KERNEL_VERSION=${KERNEL_VERSION} \ - TOOL_PREFIX=${TARGET_PREFIX} \ - DSPLINK_REPO=${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ \ - CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ - AR="${KERNEL_AR}" - +# the include files on top define do_compile for the submodules +do_compile_append() { cd ${S}/examples # export some more variable to point to external TI tools # information is duplicated between the js and make based tools diff --git a/packages/dsplink/dsplink.inc b/packages/dsplink/dsplink.inc index 9955d4d038..30d1ca3165 100644 --- a/packages/dsplink/dsplink.inc +++ b/packages/dsplink/dsplink.inc @@ -23,6 +23,7 @@ PARALLEL_MAKE = "" do_compile () { unset DISPLAY sed -i -e s:armv7a:armv7-a:g make/Linux/omap3530_2.6.mk || true + sed -i -e s:armv7a:armv7-a:g cetools/packages/dsplink/make/Linux/omap3530_2.6.mk || true # export various settings to override the defaults in the makefiles export DSP_BASE_CGTOOLS=${TITOOLSDIR}/${TICGTOOLSDIR} diff --git a/packages/dsplink/lpm.inc b/packages/dsplink/lpm.inc new file mode 100644 index 0000000000..211ffd3766 --- /dev/null +++ b/packages/dsplink/lpm.inc @@ -0,0 +1,61 @@ +DESCRIPTION = "Codec Engine for TI ARM/DSP processors - power module" + +DEPENDS = "virtual/kernel perl-native dsplink" +RDEPENDS = "update-modules" + +inherit module + +require ti-paths.inc + +PARALLEL_MAKE = "" + +do_compile_append() { + echo "MVTOOL_PREFIX=${TARGET_PREFIX}" > ${S}/Rules.make + echo "UCTOOL_PREFIX=${TARGET_PREFIX}" >> ${S}/Rules.make + echo "LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}" >> ${S}/Rules.make + + # Build the DSP power manager kernel module + cd ${S}/cetools/packages/ti/bios/power + + # Unpack all kernel sources for the DSP power manager module + for dsp in $(ls | grep bld | awk -F, '{print $2}' | awk -F_ '{print $1}') ; do + if ! [ -e $dsp ] ; then tar xf ti_bios_power,${dsp}_bld.tar ; fi + done + + cd ${DSPPOWERSOC}/lpm + + unset LDFLAGS CFLAGS + make KERNEL_PATH=${STAGING_KERNEL_DIR} \ + KERNEL_SRC=${STAGING_KERNEL_DIR} \ + KERNEL_DIR=${STAGING_KERNEL_DIR} \ + KERNEL_VERSION=${KERNEL_VERSION} \ + TOOL_PREFIX=${TARGET_PREFIX} \ + DSPLINK_REPO=${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ \ + CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + AR="${KERNEL_AR}" +} + + +do_install() { + install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp + cp ${S}/cetools/packages/ti/bios/power/${DSPPOWERSOC}/lpm/*.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp || true +} + +INHIBIT_PACKAGE_STRIP = "1" + +FILES_ti-lpm-module = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/*lpm*ko" + +pkg_postinst_ti-lpm-module () { + if [ -n "$D" ]; then + exit 1 + fi + depmod -a + update-modules || true +} + +pkg_postrm_ti-lpm-module () { + update-modules || true +} + + +PACKAGE_ARCH = "${MACHINE_ARCH}" diff --git a/packages/dsplink/ti-cmemk-module_2.21.bb b/packages/dsplink/ti-cmemk-module_2.21.bb index 4261b140d2..0e9f733c8b 100644 --- a/packages/dsplink/ti-cmemk-module_2.21.bb +++ b/packages/dsplink/ti-cmemk-module_2.21.bb @@ -1,70 +1,15 @@ -DESCRIPTION = "Codec Engine for TI ARM/DSP processors - cmemk module" - -DEPENDS = "virtual/kernel perl-native" -RDEPENDS = "update-modules" - -inherit module - # tconf from xdctools dislikes '.' in pwd :/ -PR = "r1" +PR = "r2" PV = "221" # Get CE tarball from TI website, place in sources and calculate # md5sum # Look for tarball at https://www-a.ti.com/downloads/sds_support/targetcontent/CE/index.html -SRC_URI = "http://install.tarball.in.source.dir/codec_engine_2_21_00_06.tar.gz \ +SRC_URI = "http://install.tarball.in.source.dir/codec_engine_2_21.tar.gz \ file://Makefile.dsplink \ - file://cmemk-fix-class-device-api.diff;patch=1 \ " -S = "${WORKDIR}/codec_engine_2_21_00_06" - -require ti-paths.inc - -export DSPLINK="${S}/cetools/packages/dsplink" - -PARALLEL_MAKE = "" - - -do_compile() { - echo "MVTOOL_PREFIX=${TARGET_PREFIX}" > ${S}/Rules.make - echo "UCTOOL_PREFIX=${TARGET_PREFIX}" >> ${S}/Rules.make - echo "LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}" >> ${S}/Rules.make - - # Build the cmem kernel module - # We unset CFLAGS because kernel modules need different ones, this is basically a verbatim copy of kernel.bbclass and module-base.bbclass - unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS - cd ${S}/cetools/packages/ti/sdo/linuxutils/cmem - - oe_runmake clean - oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ - KERNEL_SRC=${STAGING_KERNEL_DIR} \ - KERNEL_VERSION=${KERNEL_VERSION} \ - CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ - AR="${KERNEL_AR}" -} - - -do_install() { - install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp - cp ${S}/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp -} - -INHIBIT_PACKAGE_STRIP = "1" - -FILES_ti-cmemk-module = "${sysconfdir} /lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/cmemk.ko" - -pkg_postinst_ti-cmemk-module () { - if [ -n "$D" ]; then - exit 1 - fi - depmod -a - update-modules || true -} - -pkg_postrm_ti-cmemk-module () { - update-modules || true -} +S = "${WORKDIR}/codec_engine_2_21" -PACKAGE_ARCH = "${MACHINE_ARCH}" +require cmemk.inc diff --git a/packages/dsplink/ti-lpm-module_2.21.bb b/packages/dsplink/ti-lpm-module_2.21.bb index 50e58666bd..9a9791894d 100644 --- a/packages/dsplink/ti-lpm-module_2.21.bb +++ b/packages/dsplink/ti-lpm-module_2.21.bb @@ -1,75 +1,15 @@ -DESCRIPTION = "Codec Engine for TI ARM/DSP processors - power module" - -DEPENDS = "virtual/kernel perl-native dsplink" -RDEPENDS = "update-modules" - -inherit module - # tconf from xdctools dislikes '.' in pwd :/ -PR = "r1" +PR = "r2" PV = "221" # Get CE tarball from TI website, place in sources and calculate # md5sum # Look for tarball at https://www-a.ti.com/downloads/sds_support/targetcontent/CE/index.html -SRC_URI = "http://install.tarball.in.source.dir/codec_engine_2_21_00_06.tar.gz \ +SRC_URI = "http://install.tarball.in.source.dir/codec_engine_2_21.tar.gz \ file://Makefile.dsplink \ " -S = "${WORKDIR}/codec_engine_2_21_00_06" - -require ti-paths.inc - -PARALLEL_MAKE = "" - -do_compile() { - echo "MVTOOL_PREFIX=${TARGET_PREFIX}" > ${S}/Rules.make - echo "UCTOOL_PREFIX=${TARGET_PREFIX}" >> ${S}/Rules.make - echo "LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}" >> ${S}/Rules.make - - # Build the DSP power manager kernel module - cd ${S}/cetools/packages/ti/bios/power - - # Unpack all kernel sources for the DSP power manager module - for dsp in $(ls | grep bld | awk -F, '{print $2}' | awk -F_ '{print $1}') ; do - if ! [ -e $dsp ] ; then tar xf ti_bios_power,${dsp}_bld.tar ; fi - done - - cd ${DSPPOWERSOC}/lpm - - unset LDFLAGS CFLAGS - make KERNEL_PATH=${STAGING_KERNEL_DIR} \ - KERNEL_SRC=${STAGING_KERNEL_DIR} \ - KERNEL_DIR=${STAGING_KERNEL_DIR} \ - KERNEL_VERSION=${KERNEL_VERSION} \ - TOOL_PREFIX=${TARGET_PREFIX} \ - DSPLINK_REPO=${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ \ - CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ - AR="${KERNEL_AR}" -} - - -do_install() { - install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp - cp ${S}/cetools/packages/ti/bios/power/${DSPPOWERSOC}/lpm/*.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp || true -} - -INHIBIT_PACKAGE_STRIP = "1" - -FILES_ti-lpm-module = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/*lpm*ko" - -pkg_postinst_ti-lpm-module () { - if [ -n "$D" ]; then - exit 1 - fi - depmod -a - update-modules || true -} - -pkg_postrm_ti-lpm-module () { - update-modules || true -} - +S = "${WORKDIR}/codec_engine_2_21" -PACKAGE_ARCH = "${MACHINE_ARCH}" +require lpm.inc -- cgit v1.2.3 From 8d2f8e65e01ea07335c3d172866d1ccbd10ebdcc Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 14 Nov 2008 11:27:07 +0100 Subject: angstrom: switch armv4t to thumb as per RFC on angstrom-devel --- conf/distro/include/angstrom.inc | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/conf/distro/include/angstrom.inc b/conf/distro/include/angstrom.inc index 48cbb49d2c..5d250074c5 100644 --- a/conf/distro/include/angstrom.inc +++ b/conf/distro/include/angstrom.inc @@ -21,6 +21,32 @@ CACHE = "${TMPDIR}/cache/${ANGSTROM_MODE}/${MACHINE}" DEPLOY_DIR = "${TMPDIR}/deploy/${ANGSTROM_MODE}" require conf/distro/include/angstrom-${ANGSTROM_MODE}.inc +# ARM920T and up can use thumb mode to decrease binary size at the expense of speed +# (the complete story is a bit more nuanced due to cache starvation) +# Angstrom turns on thumb for armv4t machine according to this RFC: +# http://lists.linuxtogo.org/pipermail/angstrom-distro-devel/2008-October/002714.html + +# We can't do ARM_INSTRUCTION_SET_armv4t since that will un-overridable in recipes like gcc +ANGSTROM_ARM_INSTRUCTION_SET ?= "arm" +ANGSTROM_ARM_INSTRUCTION_SET_armv4t = "thumb" + +ARM_INSTRUCTION_SET = "${ANGSTROM_ARM_INSTRUCTION_SET}" +# "arm" "thumb" +# The instruction set the compiler should use when generating application +# code. The kernel is always compiled with arm code at present. arm code +# is the original 32 bit ARM instruction set, thumb code is the 16 bit +# encoded RISC sub-set. Thumb code is smaller (maybe 70% of the ARM size) +# but requires more instructions (140% for 70% smaller code) so may be +# slower. + +THUMB_INTERWORK = "yes" +# "yes" "no" +# Whether to compile with code to allow interworking between the two +# instruction sets. This allows thumb code to be executed on a primarily +# arm system and vice versa. It is strongly recommended that DISTROs not +# turn this off - the actual cost is very small. + + #Use this variable in feeds and other parts that need a URI ANGSTROM_URI ?= "http://www.angstrom-distribution.org" -- cgit v1.2.3 From da0d2fe426302edcb6c63ad8e72554ae7267be3c Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Fri, 14 Nov 2008 10:37:11 +0000 Subject: frameworkd-devel git: fix FILESDIR --- packages/freesmartphone/frameworkd-devel_git.bb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/freesmartphone/frameworkd-devel_git.bb b/packages/freesmartphone/frameworkd-devel_git.bb index c46c44ad17..352f849535 100644 --- a/packages/freesmartphone/frameworkd-devel_git.bb +++ b/packages/freesmartphone/frameworkd-devel_git.bb @@ -1,5 +1,8 @@ require frameworkd_git.bb +FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/frameworkd" -SRC_URI = "${FREESMARTPHONE_GIT}/framework.git;protocol=git;branch=master \ - file://frameworkd \ - file://frameworkd.conf" +SRC_URI = "\ + ${FREESMARTPHONE_GIT}/framework.git;protocol=git;branch=master \ + file://frameworkd \ + file://frameworkd.conf \ +" -- cgit v1.2.3 From ff95dccb3c1617033c698165327e74ebda5f42a1 Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Fri, 14 Nov 2008 12:33:15 +0100 Subject: frameworkd-devel: Use FILESPATH of frameworkd --- packages/freesmartphone/frameworkd-devel_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/freesmartphone/frameworkd-devel_git.bb b/packages/freesmartphone/frameworkd-devel_git.bb index 352f849535..e5933ca214 100644 --- a/packages/freesmartphone/frameworkd-devel_git.bb +++ b/packages/freesmartphone/frameworkd-devel_git.bb @@ -1,5 +1,5 @@ require frameworkd_git.bb -FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/frameworkd" +FILESPATH = "${FILE_DIRNAME}/frameworkd" SRC_URI = "\ ${FREESMARTPHONE_GIT}/framework.git;protocol=git;branch=master \ -- cgit v1.2.3 From 5bbc2d06e61847ae30a3f3a87e1ff5c9b2e15652 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 14 Nov 2008 13:03:25 +0100 Subject: linux omap git: bump to 2.6.28rc4, fix evm dss2 patch for upstream changes * dss2 still not enabled in defconfig --- packages/linux/linux-omap/omap3evm/omap3evm-dss2.diff | 8 ++++---- packages/linux/linux-omap_git.bb | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/linux/linux-omap/omap3evm/omap3evm-dss2.diff b/packages/linux/linux-omap/omap3evm/omap3evm-dss2.diff index afcebba10f..60832e72ca 100644 --- a/packages/linux/linux-omap/omap3evm/omap3evm-dss2.diff +++ b/packages/linux/linux-omap/omap3evm/omap3evm-dss2.diff @@ -146,7 +146,7 @@ index 42ab826..e244fa7 100644 + printk(KERN_ERR "cannot enable LCD, DVI is enabled\n"); + return -EINVAL; + } -+ if (system_rev > OMAP3430_REV_ES1_0) { ++ if (omap_rev() > OMAP3430_REV_ES1_0) { + twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, + ENABLE_VPLL2_DEDICATED, TWL4030_VPLL2_DEDICATED); + twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, @@ -159,20 +159,20 @@ index 42ab826..e244fa7 100644 + +static void panel_disable_lcd(struct omap_display *display) +{ -+ if (system_rev > OMAP3430_REV_ES1_0) { ++ if (omap_rev() > OMAP3430_REV_ES1_0) { + twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0, + TWL4030_VPLL2_DEDICATED); + twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0, + TWL4030_VPLL2_DEV_GRP); + } -+ omap_set_gpio_dataout(LCD_PANEL_ENABLE_GPIO, 1); ++ gpio_set_value(LCD_PANEL_ENABLE_GPIO, 1); + lcd_enabled = 0; +} + +static struct omap_display_data evm_display_data = { + .type = OMAP_DISPLAY_TYPE_DPI, + .name = "lcd", -+ .panel_name = "panel-evm", ++ .panel_name = "panel-sdp3430", + .u.dpi.data_lines = 16, + .panel_enable = panel_enable_lcd, + .panel_disable = panel_disable_lcd, diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb index 81f717ae5e..c56f87ec00 100644 --- a/packages/linux/linux-omap_git.bb +++ b/packages/linux/linux-omap_git.bb @@ -6,11 +6,11 @@ KERNEL_IMAGETYPE = "uImage" COMPATIBLE_MACHINE = "omap5912osk|omap1710h3|omap2430sdp|omap2420h4|beagleboard|omap3evm" -SRCREV = "444fcab6e8f8bad4ffc50feb91516c246d91e901" +SRCREV = "5ecf98b76fa95078277c9037bb01640fd3de5e2c" -PV = "2.6.27+2.6.28-rc3+${PR}+gitr${SRCREV}" +PV = "2.6.27+2.6.28-rc4+${PR}+gitr${SRCREV}" #PV = "2.6.27+${PR}+gitr${SRCREV}" -PR = "r4" +PR = "r0" SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \ file://defconfig" @@ -41,7 +41,7 @@ SRC_URI_append = " \ file://0007-DSS-support-for-Beagle-Board.patch;patch=1 \ file://0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch;patch=1 \ file://0009-DSS-support-for-OMAP3-SDP-board.patch;patch=1 \ - file://fix-asoc.diff;patch=1 \ +# file://fix-asoc.diff;patch=1 \ " @@ -50,7 +50,7 @@ SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \ SRC_URI_append_omap3evm = " \ file://evm-mcspi-ts.diff;patch=1 \ - file://omap3evm-lcd-redtint.diff;patch=1 \ +# file://omap3evm-lcd-redtint.diff;patch=1 \ file://omap3evm-dss2.diff;patch=1 \ " -- cgit v1.2.3 From d483356a8fa4a369cf1c998916def164fb430af6 Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Fri, 14 Nov 2008 14:03:43 +0100 Subject: frameworkd_devel: Use base_set_filespath for machine specific subdirs in FILESPATH --- packages/freesmartphone/frameworkd-devel_git.bb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/freesmartphone/frameworkd-devel_git.bb b/packages/freesmartphone/frameworkd-devel_git.bb index e5933ca214..9438b6d768 100644 --- a/packages/freesmartphone/frameworkd-devel_git.bb +++ b/packages/freesmartphone/frameworkd-devel_git.bb @@ -1,5 +1,7 @@ require frameworkd_git.bb -FILESPATH = "${FILE_DIRNAME}/frameworkd" +FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/frameworkd', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}" + +PR="r1" SRC_URI = "\ ${FREESMARTPHONE_GIT}/framework.git;protocol=git;branch=master \ -- cgit v1.2.3 From 348d24922145daec41d09d3c5d89b47b57f32de0 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Thu, 13 Nov 2008 00:54:41 -0200 Subject: evince: add 2.24.1 --- conf/checksums.ini | 4 ++++ packages/evince/evince_2.24.1.bb | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 packages/evince/evince_2.24.1.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 8c852b6200..96309e78e9 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -4418,6 +4418,10 @@ sha256=4dcbdbd253b1978dcd70452780d7804ade912f4ede90f122f30d5322f53c5c3e md5=4e353edd6481f67ee534a40d4b7f3b8c sha256=c424e6dd5cc0d998a311f5c49835de9803da4dbcb74ca7fbda29c1b953bf6d6b +[http://ftp.gnome.org/pub/GNOME/sources/evince/2.24/evince-2.24.1.tar.bz2] +md5=ad0e463ab1fe596fc52c03403a9b9f1e +sha256=d8803313e2a0b3fa3fe20fe613ac3ec85ec6848d5d446dd02e9cc5be8194f65c + [http://enlightenment.freedesktop.org/files/ewl-0.0.4.007.tar.gz] md5=29bc8aec80b53480c2ea53aea1796e15 sha256=0a0dba00517013082b8e094b4b7753162cf5fb71a170eb54cbc2eaa35717d5f6 diff --git a/packages/evince/evince_2.24.1.bb b/packages/evince/evince_2.24.1.bb new file mode 100644 index 0000000000..9dc61c35f7 --- /dev/null +++ b/packages/evince/evince_2.24.1.bb @@ -0,0 +1,18 @@ +DESCRIPTION = "Evince is a document viewer for document formats like pdf, ps, djvu." +LICENSE = "GPL" +SECTION = "x11/office" +DEPENDS = "gnome-icon-theme tiff libxt espgs gnome-doc-utils poppler libxml2 gtk+ gnome-vfs gconf libglade gnome-keyring " +RDEPENDS = "espgs gnome-icon-theme" +RRECOMMENDS = "gnome-vfs-plugin-file" +PR = "r1" + +inherit gnome pkgconfig gtk-icon-cache + +SRC_URI += " file://no-help-dir.patch;patch=1" + +EXTRA_OECONF = " --without-libgnome \ + --disable-thumbnailer \ + --disable-scrollkeeper \ + --enable-djvu \ + " +FILES_${PN}-dbg = "${libdir}/evince/backends/.debug" -- cgit v1.2.3 From 28a627e78d957096eb4c16889ec71a51100993f0 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Wed, 5 Nov 2008 09:09:00 -0200 Subject: xorg-xserver-common.inc: add default font path to misc fonts --- packages/xorg-xserver/xorg-xserver-common.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/xorg-xserver/xorg-xserver-common.inc b/packages/xorg-xserver/xorg-xserver-common.inc index d391ffe60b..0dee7db032 100644 --- a/packages/xorg-xserver/xorg-xserver-common.inc +++ b/packages/xorg-xserver/xorg-xserver-common.inc @@ -23,6 +23,7 @@ S = "${WORKDIR}/${XORG_PN}-${PV}" inherit autotools pkgconfig EXTRA_OECONF += " --enable-xcalibrate \ + --with-default-font-path="/usr/share/fonts/X11/misc" \ ac_cv_file__usr_share_sgml_X11_defs_ent=no" EXTRA_OECONF_append_arm = " ac_cv_header_linux_apm_bios_h=no " -- cgit v1.2.3 From 44a201e095eb1f32c5e2e3f7510ee7a5400f6757 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Wed, 12 Nov 2008 22:16:05 -0200 Subject: xorg-xserver-common.inc: build xephyr package It makes sense to build xephyr package from xserver-xorg recipe as well to be sure that the version of both matches. --- packages/xorg-xserver/xorg-xserver-common.inc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/xorg-xserver/xorg-xserver-common.inc b/packages/xorg-xserver/xorg-xserver-common.inc index 0dee7db032..df594133ba 100644 --- a/packages/xorg-xserver/xorg-xserver-common.inc +++ b/packages/xorg-xserver/xorg-xserver-common.inc @@ -23,6 +23,8 @@ S = "${WORKDIR}/${XORG_PN}-${PV}" inherit autotools pkgconfig EXTRA_OECONF += " --enable-xcalibrate \ + --enable-kdrive \ + --enable-xephyr \ --with-default-font-path="/usr/share/fonts/X11/misc" \ ac_cv_file__usr_share_sgml_X11_defs_ent=no" @@ -32,13 +34,14 @@ PACKAGES =+ "xserver-security-policy" FILES_xserver-security-policy += "${libdir}/xserver/SecurityPolicy" RRECOMMENDS_${PN} += "xserver-security-policy xkeyboard-config xorg-minimal-fonts rgb xserver-xorg-conf" -PACKAGES =+ "${PN}-xprint ${PN}-xvfb ${PN}-utils" +PACKAGES =+ "${PN}-xprint ${PN}-xvfb ${PN}-utils ${PN}-xephyr" FILES_${PN}-xprint = "${libdir}/X11/xserver/*/print" FILES_${PN}-xvfb = "${bindir}/Xvfb" FILES_${PN}-utils = "${bindir}/scanpci ${bindir}/pcitweak ${bindir}/ioport ${bindir}/in[bwl] ${bindir}/out[bwl] ${bindir}/mmap[rw] ${bindir}/gtf ${bindir}/getconfig ${bindir}/getconfig.pl" FILES_${PN} = "${bindir} ${libdir}/X11/Options ${libdir}/X11/Cards ${libdir}/X11/getconfig ${libdir}/X11/etc ${libdir}/modules ${libdir}/xorg/modules /etc/X11 " FILES_${PN}-doc += "${libdir}/X11/doc /usr/share/X11/xkb/compiled/README.compiled" +FILES_${PN}-xephyr = "${bindir}/Xephyr" FILES_${PN}-dbg += "${libdir}/xorg/modules/.debug \ ${libdir}/xorg/modules/*/.debug \ -- cgit v1.2.3 From 4f5a0a5bea3eedad61ce28ccafc858735306194e Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 14 Nov 2008 17:33:21 +0100 Subject: angstrom 2008: while binutils 2.19 works fine on some platforms it breaks thumb, so switch back to 2.18.something --- conf/distro/angstrom-2008.1.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/distro/angstrom-2008.1.conf b/conf/distro/angstrom-2008.1.conf index cf668e9e0f..9bc0273466 100644 --- a/conf/distro/angstrom-2008.1.conf +++ b/conf/distro/angstrom-2008.1.conf @@ -105,8 +105,8 @@ ANGSTROM_GCC_VERSION_avr32 ?= "4.2.2" #Everybody else can just use this: ANGSTROM_GCC_VERSION ?= "4.2.4" -PREFERRED_VERSION_binutils-cross ?= "2.19" -PREFERRED_VERSION_binutils-cross-sdk ?= "2.19" +PREFERRED_VERSION_binutils-cross ?= "2.18.50.0.7" +PREFERRED_VERSION_binutils-cross-sdk ?= "2.18.50.0.7" PREFERRED_VERSION_gcc ?= "${ANGSTROM_GCC_VERSION}" PREFERRED_VERSION_gcc-cross ?= "${ANGSTROM_GCC_VERSION}" -- cgit v1.2.3 From efaef6b847bd258bc9d8462fe844575bf19274c9 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 14 Nov 2008 17:35:04 +0100 Subject: binutils 2.18.50.0.7: bump PR to force rebuild --- packages/binutils/binutils_2.18.50.0.7.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/binutils/binutils_2.18.50.0.7.bb b/packages/binutils/binutils_2.18.50.0.7.bb index d0656f6300..98b389fd53 100644 --- a/packages/binutils/binutils_2.18.50.0.7.bb +++ b/packages/binutils/binutils_2.18.50.0.7.bb @@ -1,4 +1,4 @@ -PR = "r4" +PR = "r5" require binutils.inc -- cgit v1.2.3 From c9ba39c5b65be9731f760160a176bef6acf8d67d Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Fri, 14 Nov 2008 16:49:34 +0000 Subject: xserver-xorg_1.5.3.bb : xserver update to 1.5.3 --- conf/checksums.ini | 4 ++++ packages/xorg-xserver/xserver-xorg-1.5.3/drmfix.patch | 13 +++++++++++++ packages/xorg-xserver/xserver-xorg_1.5.3.bb | 13 +++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 packages/xorg-xserver/xserver-xorg-1.5.3/drmfix.patch create mode 100644 packages/xorg-xserver/xserver-xorg_1.5.3.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 96309e78e9..93002947d4 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -1,3 +1,7 @@ +[http://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.5.3.tar.bz2] +md5=308971036e25250e7fe3cccfd5a120f8 +sha256=a680174f54be7763819e5275c5d5d44fc9e9b6f8e9351dd45c150eb4c182d5bb + [http://www.directfb.org/downloads/Extras/++DFB-0.9.25.tar.gz] md5=c6a2705f6210d8ede50a947b375f1c0b sha256=b3dbf01563dd60d63cff543ea8cd0c885381e78ecbbab8ff176e46df3f198a88 diff --git a/packages/xorg-xserver/xserver-xorg-1.5.3/drmfix.patch b/packages/xorg-xserver/xserver-xorg-1.5.3/drmfix.patch new file mode 100644 index 0000000000..e0f633bc24 --- /dev/null +++ b/packages/xorg-xserver/xserver-xorg-1.5.3/drmfix.patch @@ -0,0 +1,13 @@ +Index: xorg-server-1.5.1/hw/xfree86/os-support/linux/Makefile.am +=================================================================== +--- xorg-server-1.5.1.orig/hw/xfree86/os-support/linux/Makefile.am 2008-09-23 19:24:59.000000000 +0100 ++++ xorg-server-1.5.1/hw/xfree86/os-support/linux/Makefile.am 2008-10-27 13:27:40.000000000 +0000 +@@ -40,7 +40,7 @@ + + AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(DIX_CFLAGS) $(XORG_CFLAGS) $(PLATFORM_DEFINES) + +-INCLUDES = $(XORG_INCS) $(PLATFORM_INCLUDES) -I/usr/include/drm # FIXME this last part is crack ++INCLUDES = $(XORG_INCS) $(PLATFORM_INCLUDES) $(LIBDRM_CFLAGS) + + # FIXME: These need to be added to the build + LNX_EXTRA_SRCS = \ diff --git a/packages/xorg-xserver/xserver-xorg_1.5.3.bb b/packages/xorg-xserver/xserver-xorg_1.5.3.bb new file mode 100644 index 0000000000..92ef22fd63 --- /dev/null +++ b/packages/xorg-xserver/xserver-xorg_1.5.3.bb @@ -0,0 +1,13 @@ +require xorg-xserver-common.inc + +DESCRIPTION = "the X.Org X server" +DEPENDS += "pixman libpciaccess openssl" +PE = "1" +PR = "r1" + +SRC_URI += "file://drmfix.patch;patch=1 \ + file://sysroot_fix.patch;patch=1" + +MESA_VER = "7.2" + +export LDFLAGS += " -ldl " -- cgit v1.2.3 From 4c1f12e0815bb39a80ab0ccc3ff7e346b2707d29 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Fri, 14 Nov 2008 16:50:16 +0000 Subject: preferred-xorg-versions-X11R7.4.inc : add comment about mesa version --- conf/distro/include/preferred-xorg-versions-X11R7.4.inc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.4.inc b/conf/distro/include/preferred-xorg-versions-X11R7.4.inc index 548d8239e8..46fa8d496a 100644 --- a/conf/distro/include/preferred-xorg-versions-X11R7.4.inc +++ b/conf/distro/include/preferred-xorg-versions-X11R7.4.inc @@ -191,6 +191,9 @@ PREFERRED_VERSION_libxxf86dga ?= "1.0.2" PREFERRED_VERSION_libxxf86misc ?= "1.0.1" PREFERRED_VERSION_libxxf86vm ?= "1.0.2" PREFERRED_VERSION_xtrans ?= "1.2.1" + +# This should be here but is needed until bitbake can do +# versioned depends PREFERRED_VERSION_mesa ?= "7.2" # proto -- cgit v1.2.3 From 6e06616b067073a4f0a0daeba22b744ae7c6fb7a Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Fri, 14 Nov 2008 16:51:08 +0000 Subject: angstrom-2008-preferred-versions.inc : dont hardcode xserver here --- conf/distro/include/angstrom-2008-preferred-versions.inc | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/distro/include/angstrom-2008-preferred-versions.inc b/conf/distro/include/angstrom-2008-preferred-versions.inc index c1dc088ead..e58eb40519 100644 --- a/conf/distro/include/angstrom-2008-preferred-versions.inc +++ b/conf/distro/include/angstrom-2008-preferred-versions.inc @@ -28,4 +28,3 @@ PREFERRED_VERSION_pulseaudio = "0.9.10" PREFERRED_VERSION_tiff = "3.8.2+4.0.0beta2" PREFERRED_VERSION_udev = "124" PREFERRED_VERSION_xserver-kdrive = "1.4.0.90" -PREFERRED_VERSION_xserver-xorg = "1.5.1" -- cgit v1.2.3 From 1e21bb5cfcc5ad62f7338edf3f0e69f020aa5bd4 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Fri, 14 Nov 2008 16:51:34 +0000 Subject: preferred-xorg-versions-X11R7.4-updates.inc : add file to list updates since release version --- conf/distro/include/preferred-xorg-versions-X11R7.4-updates.inc | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 conf/distro/include/preferred-xorg-versions-X11R7.4-updates.inc diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.4-updates.inc b/conf/distro/include/preferred-xorg-versions-X11R7.4-updates.inc new file mode 100644 index 0000000000..cf999a2a4d --- /dev/null +++ b/conf/distro/include/preferred-xorg-versions-X11R7.4-updates.inc @@ -0,0 +1,3 @@ +# This file is for updates after X11R7.4 was released + +PREFERRED_VERSION_xserver-xorg ?= "1.5.3" -- cgit v1.2.3 From 39603155a14bea4dc83f475e489205c245cb2bff Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Fri, 14 Nov 2008 16:59:22 +0000 Subject: angstrom-2008.1.conf : make use of the X11R7.4 updates file --- conf/distro/angstrom-2008.1.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/distro/angstrom-2008.1.conf b/conf/distro/angstrom-2008.1.conf index 9bc0273466..cc5be470d2 100644 --- a/conf/distro/angstrom-2008.1.conf +++ b/conf/distro/angstrom-2008.1.conf @@ -116,6 +116,7 @@ PREFERRED_VERSION_gcc-cross-intermediate ?= "${ANGSTROM_GCC_VERSION}" #Loads preferred versions from files, these have weak assigments (?=), so put them at the bottom require conf/distro/include/preferred-e-versions.inc +require conf/distro/include/preferred-xorg-versions-X11R7.4-updates.inc require conf/distro/include/preferred-xorg-versions-X11R7.4.inc #avr32 only has patches for binutils 2.17 in OE -- cgit v1.2.3 From 5f7bde74179a9eac56e874687f4837d3af759878 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 14 Nov 2008 18:39:42 +0100 Subject: linux-omap git: update DSS2 patches, fix mmc --- ...cumentation-for-OMAP2-3-display-subsystem.patch | 2 +- ...-New-display-subsystem-driver-for-OMAP2-3.patch | 14 +- ...MAPFB-fb-driver-for-new-display-subsystem.patch | 2 +- .../0006-DSS-Add-generic-DVI-panel.patch | 24 +- .../0007-DSS-support-for-Beagle-Board.patch | 2 +- ...DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch | 2 +- ...09-DSS-Sharp-LS037V7DW01-LCD-Panel-driver.patch | 155 +++++++++++ .../0010-DSS-Support-for-OMAP3-SDP-board.patch | 296 +++++++++++++++++++++ .../0011-DSS-Support-for-OMAP3-EVM-board.patch | 288 ++++++++++++++++++++ packages/linux/linux-omap/fix-mmc.diff | 39 +++ packages/linux/linux-omap_git.bb | 6 +- 11 files changed, 806 insertions(+), 24 deletions(-) create mode 100644 packages/linux/linux-omap/0009-DSS-Sharp-LS037V7DW01-LCD-Panel-driver.patch create mode 100644 packages/linux/linux-omap/0010-DSS-Support-for-OMAP3-SDP-board.patch create mode 100644 packages/linux/linux-omap/0011-DSS-Support-for-OMAP3-EVM-board.patch create mode 100644 packages/linux/linux-omap/fix-mmc.diff diff --git a/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch b/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch index 2ee2e2acce..6cc8ce12c6 100644 --- a/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch +++ b/packages/linux/linux-omap/0003-DSS-Documentation-for-OMAP2-3-display-subsystem.patch @@ -1,4 +1,4 @@ -From b6d4f19ae3192db2d7733fb70c212494bb1e0abd Mon Sep 17 00:00:00 2001 +From e8cc995ace5ef4c8e920ccac6bacc1a0129ad2c4 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Tue, 4 Nov 2008 15:08:07 +0200 Subject: [PATCH] DSS: Documentation for OMAP2/3 display subsystem diff --git a/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch b/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch index 461890343a..e7beec7898 100644 --- a/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch +++ b/packages/linux/linux-omap/0004-DSS-New-display-subsystem-driver-for-OMAP2-3.patch @@ -1,4 +1,4 @@ -From 04b4d27af34373bbb65df19c2c084f117fe54213 Mon Sep 17 00:00:00 2001 +From 6bec28d7c3d7cf97d644c610beadfef354fa596e Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Thu, 13 Nov 2008 15:38:15 +0200 Subject: [PATCH] DSS: New display subsystem driver for OMAP2/3 @@ -9,7 +9,7 @@ Signed-off-by: Tomi Valkeinen arch/arm/plat-omap/Makefile | 2 + arch/arm/plat-omap/dss/Kconfig | 66 + arch/arm/plat-omap/dss/Makefile | 6 + - arch/arm/plat-omap/dss/dispc.c | 1720 ++++++++++++++++ + arch/arm/plat-omap/dss/dispc.c | 1722 ++++++++++++++++ arch/arm/plat-omap/dss/display.c | 775 ++++++++ arch/arm/plat-omap/dss/dpi.c | 323 +++ arch/arm/plat-omap/dss/dsi.c | 3020 +++++++++++++++++++++++++++++ @@ -19,7 +19,7 @@ Signed-off-by: Tomi Valkeinen arch/arm/plat-omap/dss/sdi.c | 157 ++ arch/arm/plat-omap/dss/venc.c | 515 +++++ arch/arm/plat-omap/include/mach/display.h | 458 +++++ - 14 files changed, 9086 insertions(+), 0 deletions(-) + 14 files changed, 9088 insertions(+), 0 deletions(-) create mode 100644 arch/arm/plat-omap/dss/Kconfig create mode 100644 arch/arm/plat-omap/dss/Makefile create mode 100644 arch/arm/plat-omap/dss/dispc.c @@ -142,10 +142,10 @@ index 0000000..e98c6c1 +omap-dss-$(CONFIG_OMAP2_DSS_DSI) += dsi.o diff --git a/arch/arm/plat-omap/dss/dispc.c b/arch/arm/plat-omap/dss/dispc.c new file mode 100644 -index 0000000..6d06082 +index 0000000..3738cf3 --- /dev/null +++ b/arch/arm/plat-omap/dss/dispc.c -@@ -0,0 +1,1720 @@ +@@ -0,0 +1,1722 @@ +/* + * linux/arch/arm/plat-omap/dss/dispc.c + * @@ -1261,8 +1261,10 @@ index 0000000..6d06082 + + for (cur_pd = pcd_min; cur_pd <= 255; ++cur_pd) { + unsigned long pck = lck / cur_pd; ++ long old_delta = abs(best_pck - req_pck); ++ long new_delta = abs(pck - req_pck); + -+ if (abs(pck - req_pck) < abs(best_pck - req_pck)) { ++ if (best_pck == 0 || new_delta < old_delta) { + best_pck = pck; + best_ld = cur_ld; + best_pd = cur_pd; diff --git a/packages/linux/linux-omap/0005-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch b/packages/linux/linux-omap/0005-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch index d64fe442f9..b9a56afcd9 100644 --- a/packages/linux/linux-omap/0005-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch +++ b/packages/linux/linux-omap/0005-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch @@ -1,4 +1,4 @@ -From e2aaa3251054eecf92b8936e704a3581de69bdc7 Mon Sep 17 00:00:00 2001 +From 36ac3fa1184b392dc54024de6d98e4355f2baba8 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Tue, 4 Nov 2008 15:12:21 +0200 Subject: [PATCH] DSS: OMAPFB: fb driver for new display subsystem diff --git a/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch b/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch index 4925f2437b..bbf96ecc6f 100644 --- a/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch +++ b/packages/linux/linux-omap/0006-DSS-Add-generic-DVI-panel.patch @@ -1,4 +1,4 @@ -From ce4676f5a466d991bccfeac2c32316053e86b9a1 Mon Sep 17 00:00:00 2001 +From ff78ff9513a40be30649420bc9833793a6e70b75 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Tue, 11 Nov 2008 13:52:56 +0200 Subject: [PATCH] DSS: Add generic DVI panel @@ -16,7 +16,7 @@ You also need DSI PLL to generate pix clock for 1280x1024. create mode 100644 drivers/video/omap2/panel-dvi.c diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig -index 4b72479..996f047 100644 +index 4b72479..11ca6fe 100644 --- a/drivers/video/omap2/Kconfig +++ b/drivers/video/omap2/Kconfig @@ -24,6 +24,29 @@ config FB_OMAP2_FORCE_AUTO_UPDATE @@ -31,18 +31,18 @@ index 4b72479..996f047 100644 +choice + prompt "Default DVI Mode" + depends on PANEL_DVI -+ default PANEL_DVI_HIGHRES ++ default PANEL_DVI_1024X768 + -+config PANEL_DVI_LOWLOWRES ++config PANEL_DVI_640X480 + bool "640 x 480 @ 60" + -+config PANEL_DVI_LOWRES ++config PANEL_DVI_800X600 + bool "800 x 600 @ 60" + -+config PANEL_DVI_HIGHRES ++config PANEL_DVI_1024X768 + bool "1024 x 768 @ 60" + -+config PANEL_DVI_VERYHIGHRES ++config PANEL_DVI_1280X1024 + bool "1280 x 1024 @ 57" + +endchoice @@ -60,7 +60,7 @@ index 51c2e00..7c75340 100644 +obj-$(CONFIG_PANEL_DVI) += panel-dvi.o diff --git a/drivers/video/omap2/panel-dvi.c b/drivers/video/omap2/panel-dvi.c new file mode 100644 -index 0000000..541f588 +index 0000000..393eaf1 --- /dev/null +++ b/drivers/video/omap2/panel-dvi.c @@ -0,0 +1,150 @@ @@ -131,7 +131,7 @@ index 0000000..541f588 + .resume = dvi_panel_resume, + /*.set_mode = dvi_set_mode, */ + -+#if defined(CONFIG_PANEL_DVI_LOWLOWRES) ++#if defined(CONFIG_PANEL_DVI_640X480) + .timings = { + /* 640 x 480 @ 60 hz reduced blanking vesa + * (dunno if these are correct) */ @@ -147,7 +147,7 @@ index 0000000..541f588 + .x_res = 640, + .y_res = 480, + .bpp = 24, -+#elif defined(CONFIG_PANEL_DVI_LOWRES) ++#elif defined(CONFIG_PANEL_DVI_800X600) + .timings = { + /* 800 x 600 @ 60 hz reduced blanking vesa cvt 0.48m3-r */ + .pixel_clock = 35500, @@ -162,7 +162,7 @@ index 0000000..541f588 + .x_res = 800, + .y_res = 600, + .bpp = 24, -+#elif defined(CONFIG_PANEL_DVI_HIGHRES) ++#elif defined(CONFIG_PANEL_DVI_1024X768) + .timings = { + /* 1024 x 768 @ 60 Hz Reduced blanking */ + .pixel_clock = 56000, @@ -177,7 +177,7 @@ index 0000000..541f588 + .x_res = 1024, + .y_res = 768, + .bpp = 24, -+#elif defined(CONFIG_PANEL_DVI_VERYHIGHRES) ++#elif defined(CONFIG_PANEL_DVI_1280X1024) + .timings = { + /* 1280 x 1024 @ 57 Hz Reduced blanking */ + .pixel_clock = 86500, diff --git a/packages/linux/linux-omap/0007-DSS-support-for-Beagle-Board.patch b/packages/linux/linux-omap/0007-DSS-support-for-Beagle-Board.patch index 39670557b2..9ca1bd7a66 100644 --- a/packages/linux/linux-omap/0007-DSS-support-for-Beagle-Board.patch +++ b/packages/linux/linux-omap/0007-DSS-support-for-Beagle-Board.patch @@ -1,4 +1,4 @@ -From eaadaa1e6192ef58079fb6149136e4f267f771b0 Mon Sep 17 00:00:00 2001 +From 1a63704f218e5ec0bc6f94fc0629ab96f3d6ab34 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Mon, 29 Sep 2008 17:03:36 +0300 Subject: [PATCH] DSS: support for Beagle Board diff --git a/packages/linux/linux-omap/0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch b/packages/linux/linux-omap/0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch index a3df3ef562..858cccf6df 100644 --- a/packages/linux/linux-omap/0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch +++ b/packages/linux/linux-omap/0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch @@ -1,4 +1,4 @@ -From adf1ac7680926ca94f1b36ae8c643f74c8a47253 Mon Sep 17 00:00:00 2001 +From 53561526e1e9bf20dd9e17b66f2a1b1c6cfec935 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Fri, 7 Nov 2008 16:54:01 +0200 Subject: [PATCH] DSS: BEAGLE: Enable DSS in beagle defconfig diff --git a/packages/linux/linux-omap/0009-DSS-Sharp-LS037V7DW01-LCD-Panel-driver.patch b/packages/linux/linux-omap/0009-DSS-Sharp-LS037V7DW01-LCD-Panel-driver.patch new file mode 100644 index 0000000000..68720a9b91 --- /dev/null +++ b/packages/linux/linux-omap/0009-DSS-Sharp-LS037V7DW01-LCD-Panel-driver.patch @@ -0,0 +1,155 @@ +From 436d6597311770af1d3a6d42560f34d6342a1c2f Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Fri, 14 Nov 2008 15:47:19 +0200 +Subject: [PATCH] DSS: Sharp LS037V7DW01 LCD Panel driver + +Signed-off-by: Tomi Valkeinen +--- + drivers/video/omap2/Kconfig | 7 ++- + drivers/video/omap2/Makefile | 1 + + drivers/video/omap2/panel-sharp-ls037v7dw01.c | 108 +++++++++++++++++++++++++ + 3 files changed, 115 insertions(+), 1 deletions(-) + create mode 100644 drivers/video/omap2/panel-sharp-ls037v7dw01.c + +diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig +index 11ca6fe..4bd3f87 100644 +--- a/drivers/video/omap2/Kconfig ++++ b/drivers/video/omap2/Kconfig +@@ -48,5 +48,10 @@ config PANEL_DVI_1280X1024 + + endchoice + +-endmenu ++config PANEL_SHARP_LS037V7DW01 ++ tristate "Sharp LS037V7DW01 LCD Panel" ++ depends on OMAP2_DSS ++ help ++ LCD Panel used in TI's SDP3430 and EVM boards + ++endmenu +diff --git a/drivers/video/omap2/Makefile b/drivers/video/omap2/Makefile +index 7c75340..b86dd0b 100644 +--- a/drivers/video/omap2/Makefile ++++ b/drivers/video/omap2/Makefile +@@ -2,3 +2,4 @@ obj-$(CONFIG_FB_OMAP2) += omapfb.o + omapfb-y := omapfb-main.o omapfb-sysfs.o omapfb-ioctl.o + + obj-$(CONFIG_PANEL_DVI) += panel-dvi.o ++obj-$(CONFIG_PANEL_SHARP_LS037V7DW01) += panel-sharp-ls037v7dw01.o +diff --git a/drivers/video/omap2/panel-sharp-ls037v7dw01.c b/drivers/video/omap2/panel-sharp-ls037v7dw01.c +new file mode 100644 +index 0000000..b4270df +--- /dev/null ++++ b/drivers/video/omap2/panel-sharp-ls037v7dw01.c +@@ -0,0 +1,108 @@ ++/* ++ * LCD panel driver for Sharp LS037V7DW01 ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Author: Tomi Valkeinen ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published by ++ * the Free Software Foundation. ++ * ++ * 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 . ++ */ ++ ++#include ++#include ++ ++#include ++ ++static int sharp_ls_panel_init(struct omap_display *display) ++{ ++ return 0; ++} ++ ++static void sharp_ls_panel_cleanup(struct omap_display *display) ++{ ++} ++ ++static int sharp_ls_panel_enable(struct omap_display *display) ++{ ++ int r = 0; ++ ++ if (display->hw_config.panel_enable) ++ r = display->hw_config.panel_enable(display); ++ ++ return r; ++} ++ ++static void sharp_ls_panel_disable(struct omap_display *display) ++{ ++ if (display->hw_config.panel_disable) ++ display->hw_config.panel_disable(display); ++} ++ ++static int sharp_ls_panel_suspend(struct omap_display *display) ++{ ++ sharp_ls_panel_disable(display); ++ return 0; ++} ++ ++static int sharp_ls_panel_resume(struct omap_display *display) ++{ ++ return sharp_ls_panel_enable(display); ++} ++ ++static struct omap_panel sharp_ls_panel = { ++ .owner = THIS_MODULE, ++ .name = "sharp-ls037v7dw01", ++ .init = sharp_ls_panel_init, ++ .cleanup = sharp_ls_panel_cleanup, ++ .enable = sharp_ls_panel_enable, ++ .disable = sharp_ls_panel_disable, ++ .suspend = sharp_ls_panel_suspend, ++ .resume = sharp_ls_panel_resume, ++ /*.set_mode = sharp_ls_set_mode, */ ++ ++ .timings = { ++ .pixel_clock = 19200, ++ ++ .hsw = 2, ++ .hfp = 1, ++ .hbp = 28, ++ ++ .vsw = 1, ++ .vfp = 1, ++ .vbp = 1, ++ }, ++ ++ .acb = 0x28, ++ ++ .config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | ++ OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC, ++ ++ .x_res = 480, ++ .y_res = 640, ++ .bpp = 16, ++}; ++ ++ ++static int __init sharp_ls_panel_drv_init(void) ++{ ++ omap_dss_register_panel(&sharp_ls_panel); ++ return 0; ++} ++ ++static void __exit sharp_ls_panel_drv_exit(void) ++{ ++ omap_dss_unregister_panel(&sharp_ls_panel); ++} ++ ++module_init(sharp_ls_panel_drv_init); ++module_exit(sharp_ls_panel_drv_exit); ++MODULE_LICENSE("GPL"); +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0010-DSS-Support-for-OMAP3-SDP-board.patch b/packages/linux/linux-omap/0010-DSS-Support-for-OMAP3-SDP-board.patch new file mode 100644 index 0000000000..707b6c4d66 --- /dev/null +++ b/packages/linux/linux-omap/0010-DSS-Support-for-OMAP3-SDP-board.patch @@ -0,0 +1,296 @@ +From 06675e403dfe6fd9471513fb7db77db69c38c91d Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Fri, 14 Nov 2008 15:47:55 +0200 +Subject: [PATCH] DSS: Support for OMAP3 SDP board + +Signed-off-by: Tomi Valkeinen +--- + arch/arm/mach-omap2/board-3430sdp.c | 234 +++++++++++++++++++++++++++++++++-- + 1 files changed, 223 insertions(+), 11 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c +index b7d2e92..ac4f806 100644 +--- a/arch/arm/mach-omap2/board-3430sdp.c ++++ b/arch/arm/mach-omap2/board-3430sdp.c +@@ -40,6 +40,8 @@ + #include + #include + #include ++#include ++#include + + #include + #include +@@ -240,14 +242,224 @@ static struct spi_board_info sdp3430_spi_board_info[] __initdata = { + }, + }; + +-static struct platform_device sdp3430_lcd_device = { +- .name = "sdp2430_lcd", +- .id = -1, ++static struct omap_fbmem_config sdp3430_fbmem0_config = { ++ .size = 1024*768*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++ ++static struct omap_fbmem_config sdp3430_fbmem1_config = { ++ .size = 640*480*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, + }; + ++static struct omap_fbmem_config sdp3430_fbmem2_config = { ++ .size = 640*480*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++ ++ ++#define SDP2430_LCD_PANEL_BACKLIGHT_GPIO 91 ++#define SDP2430_LCD_PANEL_ENABLE_GPIO 154 ++#define SDP3430_LCD_PANEL_BACKLIGHT_GPIO 24 ++#define SDP3430_LCD_PANEL_ENABLE_GPIO 28 ++ ++#define PM_RECEIVER TWL4030_MODULE_PM_RECEIVER ++#define ENABLE_VAUX2_DEDICATED 0x09 ++#define ENABLE_VAUX2_DEV_GRP 0x20 ++#define ENABLE_VAUX3_DEDICATED 0x03 ++#define ENABLE_VAUX3_DEV_GRP 0x20 ++ ++#define ENABLE_VPLL2_DEDICATED 0x05 ++#define ENABLE_VPLL2_DEV_GRP 0xE0 ++#define TWL4030_VPLL2_DEV_GRP 0x33 ++#define TWL4030_VPLL2_DEDICATED 0x36 ++ ++#define t2_out(c, r, v) twl4030_i2c_write_u8(c, r, v) ++ ++static unsigned backlight_gpio; ++static unsigned enable_gpio; ++static int lcd_enabled; ++static int dvi_enabled; ++ ++static void __init sdp3430_display_init(void) ++{ ++ int r; ++ ++ enable_gpio = SDP3430_LCD_PANEL_ENABLE_GPIO; ++ backlight_gpio = SDP3430_LCD_PANEL_BACKLIGHT_GPIO; ++ ++ r = gpio_request(enable_gpio, "LCD reset"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD reset GPIO\n"); ++ goto err0; ++ } ++ ++ r = gpio_request(backlight_gpio, "LCD Backlight"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD backlight GPIO\n"); ++ goto err1; ++ } ++ ++ gpio_direction_output(enable_gpio, 0); ++ gpio_direction_output(backlight_gpio, 0); ++ ++ return; ++err1: ++ gpio_free(enable_gpio); ++err0: ++ return; ++} ++ ++ ++static int sdp3430_panel_enable_lcd(struct omap_display *display) ++{ ++ u8 ded_val, ded_reg; ++ u8 grp_val, grp_reg; ++ ++ if (dvi_enabled) { ++ printk(KERN_ERR "cannot enable LCD, DVI is enabled\n"); ++ return -EINVAL; ++ } ++ ++ if (omap_rev() > OMAP3430_REV_ES1_0) { ++ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEDICATED, ++ TWL4030_VPLL2_DEDICATED); ++ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEV_GRP, ++ TWL4030_VPLL2_DEV_GRP); ++ } ++ ++ ded_reg = TWL4030_VAUX3_DEDICATED; ++ ded_val = ENABLE_VAUX3_DEDICATED; ++ grp_reg = TWL4030_VAUX3_DEV_GRP; ++ grp_val = ENABLE_VAUX3_DEV_GRP; ++ ++ gpio_direction_output(enable_gpio, 1); ++ gpio_direction_output(backlight_gpio, 1); ++ ++ if (0 != t2_out(PM_RECEIVER, ded_val, ded_reg)) ++ return -EIO; ++ if (0 != t2_out(PM_RECEIVER, grp_val, grp_reg)) ++ return -EIO; ++ ++ lcd_enabled = 1; ++ ++ return 0; ++} ++ ++static void sdp3430_panel_disable_lcd(struct omap_display *display) ++{ ++ lcd_enabled = 0; ++ ++ gpio_direction_output(enable_gpio, 0); ++ gpio_direction_output(backlight_gpio, 0); ++ ++ if (omap_rev() > OMAP3430_REV_ES1_0) { ++ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEDICATED); ++ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEV_GRP); ++ mdelay(4); ++ } ++} ++ ++static struct omap_display_data sdp3430_display_data = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "lcd", ++ .panel_name = "sharp-ls037v7dw01", ++ .u.dpi.data_lines = 16, ++ .panel_enable = sdp3430_panel_enable_lcd, ++ .panel_disable = sdp3430_panel_disable_lcd, ++}; ++ ++static int sdp3430_panel_enable_dvi(struct omap_display *display) ++{ ++ if (lcd_enabled) { ++ printk(KERN_ERR "cannot enable DVI, LCD is enabled\n"); ++ return -EINVAL; ++ } ++ ++ if (omap_rev() > OMAP3430_REV_ES1_0) { ++ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEDICATED, ++ TWL4030_VPLL2_DEDICATED); ++ t2_out(PM_RECEIVER, ENABLE_VPLL2_DEV_GRP, ++ TWL4030_VPLL2_DEV_GRP); ++ } ++ ++ dvi_enabled = 1; ++ ++ return 0; ++} ++ ++static void sdp3430_panel_disable_dvi(struct omap_display *display) ++{ ++ dvi_enabled = 0; ++ ++ if (omap_rev() > OMAP3430_REV_ES1_0) { ++ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEDICATED); ++ t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEV_GRP); ++ mdelay(4); ++ } ++} ++ ++ ++static struct omap_display_data sdp3430_display_data_dvi = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "dvi", ++ .panel_name = "panel-dvi", ++ .u.dpi.data_lines = 24, ++ .panel_enable = sdp3430_panel_enable_dvi, ++ .panel_disable = sdp3430_panel_disable_dvi, ++}; ++ ++static int sdp3430_panel_enable_tv(struct omap_display *display) ++{ ++#define ENABLE_VDAC_DEDICATED 0x03 ++#define ENABLE_VDAC_DEV_GRP 0x20 ++ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEDICATED, ++ TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); ++ ++ return 0; ++} ++ ++static void sdp3430_panel_disable_tv(struct omap_display *display) ++{ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEV_GRP); ++} ++ ++static struct omap_display_data sdp3430_display_data_tv = { ++ .type = OMAP_DISPLAY_TYPE_VENC, ++ .name = "tv", ++ .u.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, ++ .panel_enable = sdp3430_panel_enable_tv, ++ .panel_disable = sdp3430_panel_disable_tv, ++}; ++ ++static struct omap_dss_platform_data sdp3430_dss_data = { ++ .num_displays = 3, ++ .displays = { ++ &sdp3430_display_data, ++ &sdp3430_display_data_dvi, ++ &sdp3430_display_data_tv, ++ } ++}; ++ ++static struct platform_device sdp3430_dss_device = { ++ .name = "omap-dss", ++ .id = -1, ++ .dev = { ++ .platform_data = &sdp3430_dss_data, ++ }, ++}; ++ ++ + static struct platform_device *sdp3430_devices[] __initdata = { + &sdp3430_smc91x_device, +- &sdp3430_lcd_device, ++ &sdp3430_dss_device, + }; + + static inline void __init sdp3430_init_smc91x(void) +@@ -294,13 +506,11 @@ static struct omap_uart_config sdp3430_uart_config __initdata = { + .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)), + }; + +-static struct omap_lcd_config sdp3430_lcd_config __initdata = { +- .ctrl_name = "internal", +-}; +- + static struct omap_board_config_kernel sdp3430_config[] __initdata = { + { OMAP_TAG_UART, &sdp3430_uart_config }, +- { OMAP_TAG_LCD, &sdp3430_lcd_config }, ++ { OMAP_TAG_FBMEM, &sdp3430_fbmem0_config }, ++ { OMAP_TAG_FBMEM, &sdp3430_fbmem1_config }, ++ { OMAP_TAG_FBMEM, &sdp3430_fbmem2_config }, + }; + + static int sdp3430_batt_table[] = { +@@ -467,8 +677,6 @@ static void __init omap_3430sdp_init(void) + { + omap3430_i2c_init(); + platform_add_devices(sdp3430_devices, ARRAY_SIZE(sdp3430_devices)); +- omap_board_config = sdp3430_config; +- omap_board_config_size = ARRAY_SIZE(sdp3430_config); + if (omap_rev() > OMAP3430_REV_ES1_0) + ts_gpio = OMAP34XX_TS_GPIO_IRQ_SDPV2; + else +@@ -483,10 +691,14 @@ static void __init omap_3430sdp_init(void) + usb_musb_init(); + usb_ehci_init(); + hsmmc_init(mmc); ++ sdp3430_display_init(); + } + + static void __init omap_3430sdp_map_io(void) + { ++ omap_board_config = sdp3430_config; ++ omap_board_config_size = ARRAY_SIZE(sdp3430_config); ++ + omap2_set_globals_343x(); + omap2_map_common_io(); + } +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/0011-DSS-Support-for-OMAP3-EVM-board.patch b/packages/linux/linux-omap/0011-DSS-Support-for-OMAP3-EVM-board.patch new file mode 100644 index 0000000000..6ca8c0dd28 --- /dev/null +++ b/packages/linux/linux-omap/0011-DSS-Support-for-OMAP3-EVM-board.patch @@ -0,0 +1,288 @@ +From 21156e8a6473c293d260b18565a382283d227ef4 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Fri, 14 Nov 2008 16:03:34 +0200 +Subject: [PATCH] DSS: Support for OMAP3 EVM board + +Coded by Vaibhav Hiremath + +Signed-off-by: Tomi Valkeinen +--- + arch/arm/mach-omap2/board-omap3evm.c | 224 ++++++++++++++++++++++++++++++++-- + 1 files changed, 215 insertions(+), 9 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c +index bc44cb5..edecfd3 100644 +--- a/arch/arm/mach-omap2/board-omap3evm.c ++++ b/arch/arm/mach-omap2/board-omap3evm.c +@@ -37,6 +37,8 @@ + #include + #include + #include ++#include ++#include + + #include "sdram-micron-mt46h32m32lf-6.h" + #include "twl4030-generic-scripts.h" +@@ -161,14 +163,215 @@ static int __init omap3_evm_i2c_init(void) + omap_register_i2c_bus(3, 400, NULL, 0); + return 0; + } ++static struct omap_fbmem_config evm_fbmem0_config = { ++ .size = 480*720*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; + +-static struct platform_device omap3_evm_lcd_device = { +- .name = "omap3evm_lcd", +- .id = -1, ++static struct omap_fbmem_config evm_fbmem1_config = { ++ .size = 480*720*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, + }; + +-static struct omap_lcd_config omap3_evm_lcd_config __initdata = { +- .ctrl_name = "internal", ++static struct omap_fbmem_config evm_fbmem2_config = { ++ .size = 480*720*4, ++ .start = OMAPFB_MEMTYPE_SDRAM, ++}; ++#define LCD_PANEL_LR 2 ++#define LCD_PANEL_UD 3 ++#define LCD_PANEL_INI 152 ++#define LCD_PANEL_ENABLE_GPIO 153 ++#define LCD_PANEL_QVGA 154 ++#define LCD_PANEL_RESB 155 ++ ++#define ENABLE_VDAC_DEDICATED 0x03 ++#define ENABLE_VDAC_DEV_GRP 0x20 ++#define ENABLE_VPLL2_DEDICATED 0x05 ++#define ENABLE_VPLL2_DEV_GRP 0xE0 ++ ++#define TWL4030_GPIODATA_IN3 0x03 ++#define TWL4030_GPIODATA_DIR3 0x06 ++#define TWL4030_VPLL2_DEV_GRP 0x33 ++#define TWL4030_VPLL2_DEDICATED 0x36 ++ ++static int lcd_enabled; ++static int dvi_enabled; ++ ++static void __init evm_display_init(void) ++{ ++ int r; ++ r = gpio_request(LCD_PANEL_LR, "lcd_panel_lr"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD_PANEL_LR\n"); ++ return; ++ } ++ r = gpio_request(LCD_PANEL_UD, "lcd_panel_ud"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD_PANEL_UD\n"); ++ goto err_1; ++ } ++ ++ r = gpio_request(LCD_PANEL_INI, "lcd_panel_ini"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD_PANEL_INI\n"); ++ goto err_2; ++ } ++ r = gpio_request(LCD_PANEL_RESB, "lcd_panel_resb"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD_PANEL_RESB\n"); ++ goto err_3; ++ } ++ r = gpio_request(LCD_PANEL_QVGA, "lcd_panel_qvga"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD_PANEL_QVGA\n"); ++ goto err_4; ++ } ++ ++ gpio_direction_output(LCD_PANEL_LR, 0); ++ gpio_direction_output(LCD_PANEL_UD, 0); ++ gpio_direction_output(LCD_PANEL_INI, 0); ++ gpio_direction_output(LCD_PANEL_RESB, 0); ++ gpio_direction_output(LCD_PANEL_QVGA, 0); ++ ++#define TWL_LED_LEDEN 0x00 ++#define TWL_PWMA_PWMAON 0x00 ++#define TWL_PWMA_PWMAOFF 0x01 ++ ++ twl4030_i2c_write_u8(TWL4030_MODULE_LED, 0x11, TWL_LED_LEDEN); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PWMA, 0x01, TWL_PWMA_PWMAON); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PWMA, 0x02, TWL_PWMA_PWMAOFF); ++ ++ gpio_direction_output(LCD_PANEL_RESB, 1); ++ gpio_direction_output(LCD_PANEL_INI, 1); ++ gpio_direction_output(LCD_PANEL_QVGA, 0); ++ gpio_direction_output(LCD_PANEL_LR, 1); ++ gpio_direction_output(LCD_PANEL_UD, 1); ++ ++ return; ++ ++err_4: ++ gpio_free(LCD_PANEL_RESB); ++err_3: ++ gpio_free(LCD_PANEL_INI); ++err_2: ++ gpio_free(LCD_PANEL_UD); ++err_1: ++ gpio_free(LCD_PANEL_LR); ++ ++} ++ ++static int evm_panel_enable_lcd(struct omap_display *display) ++{ ++ if (dvi_enabled) { ++ printk(KERN_ERR "cannot enable LCD, DVI is enabled\n"); ++ return -EINVAL; ++ } ++ if (omap_rev() > OMAP3430_REV_ES1_0) { ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VPLL2_DEDICATED, TWL4030_VPLL2_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VPLL2_DEV_GRP, TWL4030_VPLL2_DEV_GRP); ++ } ++ gpio_direction_output(LCD_PANEL_ENABLE_GPIO, 0); ++ lcd_enabled = 1; ++ return 0; ++} ++ ++static void evm_panel_disable_lcd(struct omap_display *display) ++{ ++ if (omap_rev() > OMAP3430_REV_ES1_0) { ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0, ++ TWL4030_VPLL2_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0, ++ TWL4030_VPLL2_DEV_GRP); ++ } ++ gpio_set_value(LCD_PANEL_ENABLE_GPIO, 1); ++ lcd_enabled = 0; ++} ++ ++static struct omap_display_data evm_display_data = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "lcd", ++ .panel_name = "sharp-ls037v7dw01", ++ .u.dpi.data_lines = 16, ++ .panel_enable = evm_panel_enable_lcd, ++ .panel_disable = evm_panel_disable_lcd, ++}; ++ ++static int evm_panel_enable_tv(struct omap_display *display) ++{ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEDICATED, TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); ++ return 0; ++} ++ ++static void evm_panel_disable_tv(struct omap_display *display) ++{ ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEDICATED); ++ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEV_GRP); ++} ++ ++static struct omap_display_data evm_display_data_tv = { ++ .type = OMAP_DISPLAY_TYPE_VENC, ++ .name = "tv", ++ .u.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, ++ .panel_enable = evm_panel_enable_tv, ++ .panel_disable = evm_panel_disable_tv, ++}; ++ ++ ++static int evm_panel_enable_dvi(struct omap_display *display) ++{ ++ if (lcd_enabled) { ++ printk(KERN_ERR "cannot enable DVI, LCD is enabled\n"); ++ return -EINVAL; ++ } ++ twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x80, ++ TWL4030_GPIODATA_IN3); ++ twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x80, ++ TWL4030_GPIODATA_DIR3); ++ dvi_enabled = 1; ++ ++ return 0; ++} ++ ++static void evm_panel_disable_dvi(struct omap_display *display) ++{ ++ twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x00, ++ TWL4030_GPIODATA_IN3); ++ twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x00, ++ TWL4030_GPIODATA_DIR3); ++ dvi_enabled = 0; ++} ++ ++ ++static struct omap_display_data evm_display_data_dvi = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "dvi", ++ .panel_name = "panel-dvi", ++ .u.dpi.data_lines = 24, ++ .panel_enable = evm_panel_enable_dvi, ++ .panel_disable = evm_panel_disable_dvi, ++}; ++ ++static struct omap_dss_platform_data evm_dss_data = { ++ .num_displays = 3, ++ .displays = { ++ &evm_display_data, ++ &evm_display_data_dvi, ++ &evm_display_data_tv, ++ } ++}; ++static struct platform_device evm_dss_device = { ++ .name = "omap-dss", ++ .id = -1, ++ .dev = { ++ .platform_data = &evm_dss_data, ++ }, + }; + + static void ads7846_dev_init(void) +@@ -227,11 +430,13 @@ static void __init omap3_evm_init_irq(void) + + static struct omap_board_config_kernel omap3_evm_config[] __initdata = { + { OMAP_TAG_UART, &omap3_evm_uart_config }, +- { OMAP_TAG_LCD, &omap3_evm_lcd_config }, ++ { OMAP_TAG_FBMEM, &evm_fbmem0_config }, ++ { OMAP_TAG_FBMEM, &evm_fbmem1_config }, ++ { OMAP_TAG_FBMEM, &evm_fbmem2_config }, + }; + + static struct platform_device *omap3_evm_devices[] __initdata = { +- &omap3_evm_lcd_device, ++ &evm_dss_device, + &omap3evm_smc911x_device, + }; + +@@ -250,8 +455,6 @@ static void __init omap3_evm_init(void) + omap3_evm_i2c_init(); + + platform_add_devices(omap3_evm_devices, ARRAY_SIZE(omap3_evm_devices)); +- omap_board_config = omap3_evm_config; +- omap_board_config_size = ARRAY_SIZE(omap3_evm_config); + + spi_register_board_info(omap3evm_spi_board_info, + ARRAY_SIZE(omap3evm_spi_board_info)); +@@ -262,10 +465,13 @@ static void __init omap3_evm_init(void) + usb_ehci_init(); + omap3evm_flash_init(); + ads7846_dev_init(); ++ evm_display_init(); + } + + static void __init omap3_evm_map_io(void) + { ++ omap_board_config = omap3_evm_config; ++ omap_board_config_size = ARRAY_SIZE(omap3_evm_config); + omap2_set_globals_343x(); + omap2_map_common_io(); + } +-- +1.5.6.3 + diff --git a/packages/linux/linux-omap/fix-mmc.diff b/packages/linux/linux-omap/fix-mmc.diff new file mode 100644 index 0000000000..dfc531c3ef --- /dev/null +++ b/packages/linux/linux-omap/fix-mmc.diff @@ -0,0 +1,39 @@ +Oops.. Haven't thought to try it without gpio_cd set up, in which case c->mmc +is not set initialized.. Please try the following patch: + + +diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c +index 0ea6ba6..626d668 100644 +--- a/arch/arm/mach-omap2/mmc-twl4030.c ++++ b/arch/arm/mach-omap2/mmc-twl4030.c +@@ -239,6 +239,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, + u32 reg; + int ret = 0; + struct twl_mmc_controller *c = &hsmmc[0]; ++ struct omap_mmc_platform_data *mmc = dev->platform_data; + + if (power_on) { + if (cpu_is_omap2430()) { +@@ -250,7 +251,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, + omap_ctrl_writel(reg, OMAP243X_CONTROL_DEVCONF1); + } + +- if (c->mmc->slots[0].internal_clock) { ++ if (mmc->slots[0].internal_clock) { + reg = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0); + reg |= OMAP2_MMCSDIO1ADPCLKISEL; + omap_ctrl_writel(reg, OMAP2_CONTROL_DEVCONF0); +@@ -293,11 +294,11 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, + static int twl_mmc2_set_power(struct device *dev, int slot, int power_on, int vdd) + { + int ret; +- + struct twl_mmc_controller *c = &hsmmc[1]; ++ struct omap_mmc_platform_data *mmc = dev->platform_data; + + if (power_on) { +- if (c->mmc->slots[0].internal_clock) { ++ if (mmc->slots[0].internal_clock) { + u32 reg; + + reg = omap_ctrl_readl(control_devconf1_offset); diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb index c56f87ec00..b3af0204d9 100644 --- a/packages/linux/linux-omap_git.bb +++ b/packages/linux/linux-omap_git.bb @@ -40,8 +40,11 @@ SRC_URI_append = " \ file://0006-DSS-Add-generic-DVI-panel.patch;patch=1 \ file://0007-DSS-support-for-Beagle-Board.patch;patch=1 \ file://0008-DSS-BEAGLE-Enable-DSS-in-beagle-defconfig.patch;patch=1 \ - file://0009-DSS-support-for-OMAP3-SDP-board.patch;patch=1 \ + file://0009-DSS-Sharp-LS037V7DW01-LCD-Panel-driver.patch;patch=1 \ + file://0010-DSS-Support-for-OMAP3-SDP-board.patch;patch=1 \ + file://0011-DSS-Support-for-OMAP3-EVM-board.patch;patch=1 \ # file://fix-asoc.diff;patch=1 \ + file://fix-mmc.diff;patch=1 \ " @@ -51,7 +54,6 @@ SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \ SRC_URI_append_omap3evm = " \ file://evm-mcspi-ts.diff;patch=1 \ # file://omap3evm-lcd-redtint.diff;patch=1 \ - file://omap3evm-dss2.diff;patch=1 \ " S = "${WORKDIR}/git" -- cgit v1.2.3 From 53f5ff6a465538396cf839aa8d0cfc643826ee6c Mon Sep 17 00:00:00 2001 From: woglinde Date: Fri, 14 Nov 2008 19:01:29 +0100 Subject: checksum.ini: fix entry of wesnoth - was duplicated and one missed sha256sum --- conf/checksums.ini | 4 ---- 1 file changed, 4 deletions(-) diff --git a/conf/checksums.ini b/conf/checksums.ini index 93002947d4..a6902899a1 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -20008,10 +20008,6 @@ sha256=b8e200ae66c20897c9aaa80b0044e638a0016d3bdb6e67560fd61f1ef162f305 [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.5.tar.bz2] md5=09b7b76d4a4eedf502f38df9d551d827 -sha256= - -[http://heanet.dl.sourceforge.net/wesnoth/wesnoth-1.4.5.tar.bz2] -md5=09b7b76d4a4eedf502f38df9d551d827 sha256=ce4b00b85fd26cbb7b7362b405648f422d3c228df4236eac8ce2f464182cf750 [ftp://ftp.gnu.org/gnu/wget/wget-1.9.1.tar.gz] -- cgit v1.2.3 From 41420b585e294f7337d0c93ab59148d1dfa3ce95 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Fri, 14 Nov 2008 18:08:08 +0000 Subject: checksums.ini : forgot to sort after xserver-xorg commit --- conf/checksums.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/conf/checksums.ini b/conf/checksums.ini index a6902899a1..c735e690d7 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -1,7 +1,3 @@ -[http://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.5.3.tar.bz2] -md5=308971036e25250e7fe3cccfd5a120f8 -sha256=a680174f54be7763819e5275c5d5d44fc9e9b6f8e9351dd45c150eb4c182d5bb - [http://www.directfb.org/downloads/Extras/++DFB-0.9.25.tar.gz] md5=c6a2705f6210d8ede50a947b375f1c0b sha256=b3dbf01563dd60d63cff543ea8cd0c885381e78ecbbab8ff176e46df3f198a88 @@ -22606,6 +22602,10 @@ sha256=9a0687812eaceaccc21d55dead47f1fbecf8300a28604bd2c08aae6ff7874cd0 md5=d16f5a033f001c9069b4141194614da2 sha256=2f36880bffaee0a5b2b704376a02b22066b6842445e1d77da698854e5973eb21 +[http://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.5.3.tar.bz2] +md5=308971036e25250e7fe3cccfd5a120f8 +sha256=a680174f54be7763819e5275c5d5d44fc9e9b6f8e9351dd45c150eb4c182d5bb + [http://xorg.freedesktop.org/releases/X11R7.0/src/xserver/xorg-server-X11R7.0-1.0.1.tar.bz2] md5=0e7527480fb845a3c2e333bd0f47ff50 sha256=0419124e1bab473f8f9e2d7de1dba8bae2ed1375b72d55cdfb9471dac357ed47 -- cgit v1.2.3 From 4eb94e67b1d769fba1fad7bdc4c1c955c21479c8 Mon Sep 17 00:00:00 2001 From: Denys Dmytriyenko Date: Mon, 10 Nov 2008 20:13:22 -0500 Subject: autotools.bbclass: allow autotools_do_configure to accept parameters and pass to oe_runconf Signed-off-by: Denys Dmytriyenko --- classes/autotools.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/autotools.bbclass b/classes/autotools.bbclass index 82b5311ef5..adb57f6cc9 100644 --- a/classes/autotools.bbclass +++ b/classes/autotools.bbclass @@ -134,7 +134,7 @@ autotools_do_configure() { ;; esac if [ -e ${S}/configure ]; then - oe_runconf + oe_runconf $@ else oenote "nothing to configure" fi -- cgit v1.2.3 From ca344437bba2733bd3cc8b45fa113d3302e2a981 Mon Sep 17 00:00:00 2001 From: Denys Dmytriyenko Date: Mon, 10 Nov 2008 20:17:02 -0500 Subject: hal: Find and use the right linux/input.h to work with external toolchain Signed-off-by: Denys Dmytriyenko --- packages/hal/hal_0.5.11.bb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/hal/hal_0.5.11.bb b/packages/hal/hal_0.5.11.bb index e93ad64ac3..2b56fdfca5 100644 --- a/packages/hal/hal_0.5.11.bb +++ b/packages/hal/hal_0.5.11.bb @@ -1,8 +1,14 @@ require hal.inc -PR = "r1" +PR = "r2" SRC_URI += " file://hal-right-input-h.patch;patch=1 \ file://fix-configure.diff;patch=1" -EXTRA_OECONF += "--with-linux-input-header=${STAGING_INCDIR}/linux/input.h" +# The following code finds the right linux/input.h, +# which also works with external-toolchain/SDK +do_configure() { + linux_input_h=`echo "#include " | ${CPP} - | \ + grep "linux\/input.h" | head -n 1 | awk -F '"' '{print $2}'` + autotools_do_configure --with-linux-input-header=${linux_input_h} +} -- cgit v1.2.3 From fa5510fb527b7a4dae11fd96b65f69360c326e3a Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Fri, 14 Nov 2008 12:53:49 +0100 Subject: openjdk-langtools-native: Rework do_stage to manually install things. --- .../openjdk-langtools-native_0.0+jdk7-b31.bb | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb b/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb index 9b857a171a..abeea96a0a 100644 --- a/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb +++ b/packages/openjdk-langtools/openjdk-langtools-native_0.0+jdk7-b31.bb @@ -2,7 +2,7 @@ DESCRIPTION = "Java Language tools (sun-javac, javah, javap, javadoc and apt) fr HOMEPAGE = "http://http://openjdk.java.net/groups/compiler" LICENSE = "GPL" -PR = "r2" +PR = "r3" DEPENDS = "classpath-native fastjar-native ecj-initial virtual/java-native" @@ -26,12 +26,20 @@ EXTRA_OECONF = "\ export JAVAC_OPTS="-bootclasspath ${STAGING_DATADIR_JAVA}/share/classpath/glibj.zip -source 5.0" -do_stage_append() { - [ -f ${bindir}/sun-javac ] && rm ${bindir}/sun-javac +do_stage() { + # Do install step manually to fine control installation names. + install -d ${bindir} + install -m 0755 tools/apt ${bindir} + install -m 0755 tools/javadoc ${bindir} + install -m 0755 tools/javah ${bindir} + install -m 0755 tools/javap ${bindir} # Provide javac as sun-javac to not clash with the binary of the same # name in ecj-bootstrap-native. # This way ecj-bootstrap-native and openjdk-langtools-native can coexist # in staging dir. - mv -f ${bindir}/javac ${bindir}/sun-javac + install -m 0755 tools/javac ${bindir}/sun-javac + + install -d ${libdir} + install -m 0644 tools.jar ${libdir} } -- cgit v1.2.3 From cb9d26e56cba8e1be5d01dc2f85ab29fb0808d45 Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Fri, 14 Nov 2008 12:55:56 +0100 Subject: libecj-bootstrap 3.4: Prevent recipe being taken by default. --- packages/ecj/libecj-bootstrap_3.4.bb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/ecj/libecj-bootstrap_3.4.bb b/packages/ecj/libecj-bootstrap_3.4.bb index c321a8f2c1..ee1d1ab505 100644 --- a/packages/ecj/libecj-bootstrap_3.4.bb +++ b/packages/ecj/libecj-bootstrap_3.4.bb @@ -1,5 +1,8 @@ require libecj-bootstrap.inc +# Something is wrong with this ECJ version. It randomly fails to create directories. +DEFAULT_PREFERENCE = "-1" + SRC_URI = "\ http://mirrors.ibiblio.org/pub/mirrors/eclipse/eclipse/downloads/drops/R-3.4-200806172000/ecjsrc.zip \ " -- cgit v1.2.3 From abf87c6f96838bb848f4fda05fbb3d840fc2e8e9 Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Fri, 14 Nov 2008 13:46:17 +0100 Subject: Revert "libecj-bootstrap 3.4: Prevent recipe being taken by default." * This proved to be unneeded. ECJ was not the problem. This reverts commit dfe47a8e77682049e6440c1238ae62ac281b8722. --- packages/ecj/libecj-bootstrap_3.4.bb | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/ecj/libecj-bootstrap_3.4.bb b/packages/ecj/libecj-bootstrap_3.4.bb index ee1d1ab505..c321a8f2c1 100644 --- a/packages/ecj/libecj-bootstrap_3.4.bb +++ b/packages/ecj/libecj-bootstrap_3.4.bb @@ -1,8 +1,5 @@ require libecj-bootstrap.inc -# Something is wrong with this ECJ version. It randomly fails to create directories. -DEFAULT_PREFERENCE = "-1" - SRC_URI = "\ http://mirrors.ibiblio.org/pub/mirrors/eclipse/eclipse/downloads/drops/R-3.4-200806172000/ecjsrc.zip \ " -- cgit v1.2.3 From 4a90826f75410002b731d797d23e1743084120f8 Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Fri, 14 Nov 2008 13:48:30 +0100 Subject: classpath-initial 0.93: Use a patch that fits to classpath 0.93. --- packages/classpath/classpath-initial_0.93.bb | 4 ++-- packages/classpath/files/miscompilation-0.93.patch | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 packages/classpath/files/miscompilation-0.93.patch diff --git a/packages/classpath/classpath-initial_0.93.bb b/packages/classpath/classpath-initial_0.93.bb index 09bcde1b87..c36ea3813d 100644 --- a/packages/classpath/classpath-initial_0.93.bb +++ b/packages/classpath/classpath-initial_0.93.bb @@ -5,13 +5,13 @@ require classpath-native.inc DESCRIPTION="Java1.4-compatible GNU Classpath variant that is used as bootclasspath for jikes-native." -PR = "r5" +PR = "r6" DEPENDS = "zip-native fastjar-native jikes-native gettext-native" SRC_URI += "\ file://autotools.patch;patch=1 \ - file://miscompilation.patch;patch=1 \ + file://miscompilation-0.93.patch;patch=1 \ " EXTRA_OECONF = "\ diff --git a/packages/classpath/files/miscompilation-0.93.patch b/packages/classpath/files/miscompilation-0.93.patch new file mode 100644 index 0000000000..99db6f3003 --- /dev/null +++ b/packages/classpath/files/miscompilation-0.93.patch @@ -0,0 +1,13 @@ +Index: classpath-0.93/native/jni/java-io/java_io_VMFile.c +=================================================================== +--- classpath-0.93.orig/native/jni/java-io/java_io_VMFile.c 2006-09-23 07:17:45.000000000 +0200 ++++ classpath-0.93/native/jni/java-io/java_io_VMFile.c 2008-11-14 13:41:27.000000000 +0100 +@@ -239,7 +239,7 @@ + { + #ifndef WITHOUT_FILESYSTEM + const char *filename; +- int result; ++ volatile int result; + + /* Don't use the JCL convert function because it throws an exception + on failure */ -- cgit v1.2.3 From 30d3a5890436fe6275c170158da2e5d26307b665 Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Fri, 14 Nov 2008 22:59:35 +0100 Subject: openjdk-javac-native: Use relative path for symlink. --- packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb b/packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb index e4c916f969..1e3e1f8259 100644 --- a/packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb +++ b/packages/openjdk-langtools/openjdk-javac-native_0.0+jdk7-b31.bb @@ -2,7 +2,7 @@ DESCRIPTION = "Java compiler from the OpenJDK project" HOMEPAGE = "http://http://openjdk.java.net/groups/compiler" LICENSE = "GPL" -PR = "r0" +PR = "r1" DEPENDS = "openjdk-langtools-native" @@ -11,5 +11,5 @@ PROVIDES = "virtual/javac-native" inherit native do_stage() { - ln -sf ${bindir}/sun-javac ${bindir}/javac + ln -sf sun-javac ${bindir}/javac } -- cgit v1.2.3 From 82e936dfe3a5d6423b781c406a38019a8d7d463f Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Fri, 14 Nov 2008 22:26:59 +0000 Subject: task-x11-illume: Make it build with the current EFL changes. Need more tweaks later. --- packages/tasks/task-x11-illume.bb | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/packages/tasks/task-x11-illume.bb b/packages/tasks/task-x11-illume.bb index a477c6e8c5..a285762c9c 100644 --- a/packages/tasks/task-x11-illume.bb +++ b/packages/tasks/task-x11-illume.bb @@ -9,7 +9,7 @@ PR = "r0" inherit task # Default illume theme -ILLUME_THEME ?= "illume-theme-illume" +# ILLUME_THEME ?= "illume-theme-illume" RDEPENDS_${PN} = "\ task-x11-server \ @@ -17,11 +17,6 @@ RDEPENDS_${PN} = "\ # xserver-kdrive-splash-illume \ \ e-wm \ - illume \ - illume-config-illume \ - illume-dicts-english-us \ - illume-keyboards-default \ - illume-keyboards-numbers \ - illume-keyboards-terminal \ - ${ILLUME_THEME} \ + e-wm-config-illume \ +# ${ILLUME_THEME} \ " -- cgit v1.2.3 From 4a66c132ce2282f4a14b97d08e3557f855eb7b0e Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Fri, 14 Nov 2008 23:40:28 +0100 Subject: gstreamer_0.10.17: Work around glibc bug with dlopen When installing gstreamer-dbg and running gst-inspect-0.10 gstreamer will crash. Somehow glibc can not properly fail dlopening our debug so. Work around by not going into the .debug directories when searching plugins. --- .../registry-do-not-look-into-debug-dirs.patch | 39 ++++++++++++++++++++++ packages/gstreamer/gstreamer_0.10.17.bb | 5 +-- 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 packages/gstreamer/gstreamer/registry-do-not-look-into-debug-dirs.patch diff --git a/packages/gstreamer/gstreamer/registry-do-not-look-into-debug-dirs.patch b/packages/gstreamer/gstreamer/registry-do-not-look-into-debug-dirs.patch new file mode 100644 index 0000000000..6733e6be06 --- /dev/null +++ b/packages/gstreamer/gstreamer/registry-do-not-look-into-debug-dirs.patch @@ -0,0 +1,39 @@ +Work around a glibc 2.6.1 bug with dlopen. We try to dlopen a .so file that +only contains debug symbols (e.g. no architecture is set in the elf header) + + +#0 0x4000a88c in _dl_relocate_object () from /lib/ld-linux.so.3 +(gdb) bt +#0 0x4000a88c in _dl_relocate_object () from /lib/ld-linux.so.3 +#1 0x40011f68 in dl_open_worker () from /lib/ld-linux.so.3 +#2 0x4000d7e4 in _dl_catch_error () from /lib/ld-linux.so.3 +#3 0x400117d8 in _dl_open () from /lib/ld-linux.so.3 +#4 0x402fba84 in dlopen_doit () from /lib/libdl.so.2 +#5 0x4000d7e4 in _dl_catch_error () from /lib/ld-linux.so.3 +#6 0x402fbf50 in _dlerror_run () from /lib/libdl.so.2 +#7 0x402fb9bc in dlopen@@GLIBC_2.4 () from /lib/libdl.so.2 +#8 0x402f2790 in g_module_open () from /usr/lib/libgmodule-2.0.so.0 +#9 0x40078784 in gst_plugin_load_file ( + filename=0x10a6c8 "/usr/lib/gstreamer-0.10/.debug/libgstcoreindexers.so", + error=0x0) at gstplugin.c:481 +#10 0x4007e3c4 in gst_registry_scan_path_level (registry=0x27828, + path=0x10a6a0 "/usr/lib/gstreamer-0.10/.debug", level=1) at gstregistry.c:891 +#11 0x4007df04 in gst_registry_scan_path_level (registry=0x27828, + + +Index: gstreamer-0.10.17/gst/gstregistry.c +=================================================================== +--- gstreamer-0.10.17.orig/gst/gstregistry.c 2008-11-14 23:30:48.000000000 +0100 ++++ gstreamer-0.10.17/gst/gstregistry.c 2008-11-14 23:32:39.000000000 +0100 +@@ -813,7 +813,10 @@ + GST_LOG_OBJECT (registry, "examining file: %s", filename); + + if (g_file_test (filename, G_FILE_TEST_IS_DIR)) { +- if (level > 0) { ++ if (g_str_has_suffix (filename, ".debug")) { ++ GST_LOG_OBJECT (registry, ++ "found directory, not descending into .debug directory"); ++ } else if (level > 0) { + GST_LOG_OBJECT (registry, "found directory, recursing"); + changed |= gst_registry_scan_path_level (registry, filename, level - 1); + } else { diff --git a/packages/gstreamer/gstreamer_0.10.17.bb b/packages/gstreamer/gstreamer_0.10.17.bb index 51a1426564..4087e8e1d0 100644 --- a/packages/gstreamer/gstreamer_0.10.17.bb +++ b/packages/gstreamer/gstreamer_0.10.17.bb @@ -1,6 +1,7 @@ require gstreamer.inc -PR = "r3" +PR = "r4" -SRC_URI += "file://po-makefile-fix.patch;patch=1" +SRC_URI += "file://po-makefile-fix.patch;patch=1 \ + file://registry-do-not-look-into-debug-dirs.patch;patch=1 " -- cgit v1.2.3 From 625b6fa7dc58ae4c67891a8805cd5729424c3090 Mon Sep 17 00:00:00 2001 From: Thomas Seiler Date: Fri, 14 Nov 2008 23:40:50 +0000 Subject: preferred-om-2008-versions: Bump shared-mime-info to 0.51 --- conf/distro/include/preferred-om-2008-versions.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/distro/include/preferred-om-2008-versions.inc b/conf/distro/include/preferred-om-2008-versions.inc index 5cf079de84..7a7c29f121 100644 --- a/conf/distro/include/preferred-om-2008-versions.inc +++ b/conf/distro/include/preferred-om-2008-versions.inc @@ -1713,7 +1713,7 @@ PREFERRED_VERSION_setserial ?= "2.17" PREFERRED_VERSION_setxkbmap ?= "1.0.4" PREFERRED_VERSION_sgml-common ?= "0.6.3" PREFERRED_VERSION_sgml-common-native ?= "0.6.3" -PREFERRED_VERSION_shared-mime-info ?= "0.22" +PREFERRED_VERSION_shared-mime-info ?= "0.51" PREFERRED_VERSION_sharp-compat-libs ?= "0.5" PREFERRED_VERSION_sharprom-toolchain-native ?= "1.0" PREFERRED_VERSION_shasum-native ?= "1.0" -- cgit v1.2.3 From cb452087bb55cb426a711f5fbec60bf8173859e2 Mon Sep 17 00:00:00 2001 From: Julien Cassignol Date: Sat, 15 Nov 2008 00:09:03 +0000 Subject: numptyphysics: Update to rev 109, add some patches --- conf/distro/include/sane-srcrevs.inc | 2 +- packages/numptyphysics/numptyphysics/faster.patch | 22 +++ packages/numptyphysics/numptyphysics/keyb.patch | 189 +++++++++++++++++++++ packages/numptyphysics/numptyphysics/keyb.png | Bin 0 -> 2571 bytes packages/numptyphysics/numptyphysics/next.png | Bin 0 -> 7054 bytes .../numptyphysics/numptyphysics.desktop | 9 + .../numptyphysics/numptyphysics/replay_off.patch | 166 ++++++++++++++++++ packages/numptyphysics/numptyphysics_svn.bb | 30 ++-- 8 files changed, 402 insertions(+), 16 deletions(-) create mode 100644 packages/numptyphysics/numptyphysics/faster.patch create mode 100644 packages/numptyphysics/numptyphysics/keyb.patch create mode 100644 packages/numptyphysics/numptyphysics/keyb.png create mode 100644 packages/numptyphysics/numptyphysics/next.png create mode 100644 packages/numptyphysics/numptyphysics/numptyphysics.desktop create mode 100644 packages/numptyphysics/numptyphysics/replay_off.patch diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc index 6b1d5d8fe6..41990a7ab1 100644 --- a/conf/distro/include/sane-srcrevs.inc +++ b/conf/distro/include/sane-srcrevs.inc @@ -110,7 +110,7 @@ SRCREV_pn-neod ?= "4617" SRCREV_pn-netsurf ?= "3859" SRCREV_pn-networkmanager ?= "3202" SRCREV_pn-networkmanager-applet ?= "200" -SRCREV_pn-numptyphysics = "45" +SRCREV_pn-numptyphysics = "109" SRCREV_pn-om-locations ?= "28d56a504a41261c363c085a38f81721cdd6683e" SRCREV_pn-om-settings ?= "65" SRCREV_pn-oh-puzzles ?= "22" diff --git a/packages/numptyphysics/numptyphysics/faster.patch b/packages/numptyphysics/numptyphysics/faster.patch new file mode 100644 index 0000000000..e52c11e526 --- /dev/null +++ b/packages/numptyphysics/numptyphysics/faster.patch @@ -0,0 +1,22 @@ +--- old_Config.h 2008-11-05 13:45:25.000000000 +0200 ++++ Config.h 2008-11-05 13:45:44.000000000 +0200 +@@ -36,14 +36,15 @@ + # define SELECT_TOLERANCE 8.0f //PIXELS_PER_METREf) + # define CLICK_TOLERANCE 16 //PIXELs + #else +-# define ITERATION_RATE 60 //fps +-# define RENDER_RATE 20 //fps +-# define SOLVER_ITERATIONS 10 ++# define ITERATION_RATE 30 //fps ++# define RENDER_RATE 10 //fps ++# define SOLVER_ITERATIONS 5 + # define JOINT_TOLERANCE 4.0f //PIXELs + # define SELECT_TOLERANCE 5.0f //PIXELS_PER_METREf) +-# define CLICK_TOLERANCE 4 //PIXELs ++# define CLICK_TOLERANCE 16 //PIXELs + #endif + ++ + #define ITERATION_TIMESTEPf (1.0f / (float)ITERATION_RATE) + #define RENDER_INTERVAL (1000/RENDER_RATE) + diff --git a/packages/numptyphysics/numptyphysics/keyb.patch b/packages/numptyphysics/numptyphysics/keyb.patch new file mode 100644 index 0000000000..aa82e67215 --- /dev/null +++ b/packages/numptyphysics/numptyphysics/keyb.patch @@ -0,0 +1,189 @@ +diff -ur oldÃ_Game.cppGame.cpp +--- old_Game.cpp 2008-11-01 08:56:50.000000000 +0200 ++++ Game.cpp 2008-11-01 10:48:33.000000000 +0200 +@@ -896,6 +896,7 @@ + Window m_window; + Overlay *m_pauseOverlay; + Overlay *m_editOverlay; ++ Overlay *m_keyboardOverlay; + // DemoOverlay m_demoOverlay; + Os *m_os; + public: +@@ -905,6 +906,7 @@ + m_window(width,height,"Numpty Physics","NPhysics"), + m_pauseOverlay( NULL ), + m_editOverlay( NULL ), ++ m_keyboardOverlay( NULL ), + m_os( Os::get() ) + //,m_demoOverlay( *this ) + { +@@ -1038,6 +1040,14 @@ + && m_overlays.indexOf( m_pauseOverlay ) >= 0; + } + ++ void togglePause() ++ { ++ if ( !m_pauseOverlay ) { ++ m_pauseOverlay = createIconOverlay( *this, "pause.png", 50, 50 ); ++ } ++ toggleOverlay( m_pauseOverlay ); ++ } ++ + void edit( bool doEdit ) + { + if ( m_edit != doEdit ) { +@@ -1080,10 +1090,7 @@ + case SDLK_SPACE: + case SDLK_KP_ENTER: + case SDLK_RETURN: +- if ( !m_pauseOverlay ) { +- m_pauseOverlay = createIconOverlay( *this, "pause.png", 50, 50 ); +- } +- toggleOverlay( m_pauseOverlay ); ++ togglePause(); + break; + case SDLK_s: + case SDLK_F4: +@@ -1094,6 +1191,10 @@ + edit( !m_edit ); + break; + case SDLK_d: ++ if ( !m_keyboardOverlay ) { ++ m_keyboardOverlay = createKeyboardOverlay(*this); ++ } ++ toggleOverlay( m_keyboardOverlay ); + //toggleOverlay( m_demoOverlay ); + break; + case SDLK_r: +@@ -1154,6 +1165,19 @@ + return false; + } + ++ void undoLastStroke() ++ { ++ if ( m_createStroke ) { ++ m_scene.deleteStroke( m_createStroke ); ++ m_createStroke = NULL; ++ } else { ++ m_scene.deleteStroke( m_scene.strokes().at(m_scene.strokes().size()-1) ); ++ } ++ m_refresh = true; ++ } ++ ++ ++ + bool handlePlayEvent( SDL_Event &ev ) + { + switch( ev.type ) { +@@ -1197,13 +1221,7 @@ + break; + case SDL_KEYDOWN: + if ( ev.key.keysym.sym == SDLK_ESCAPE ) { +- if ( m_createStroke ) { +- m_scene.deleteStroke( m_createStroke ); +- m_createStroke = NULL; +- } else { +- m_scene.deleteStroke( m_scene.strokes().at(m_scene.strokes().size()-1) ); +- } +- m_refresh = true; ++ undoLastStroke(); + } + break; + default: +@@ -1250,6 +1268,10 @@ + { + Overlay *completedOverlay = createNextLevelOverlay(*this); + ++ //toggle onScreenKeyboard ON ++ m_keyboardOverlay = createKeyboardOverlay(*this); ++ toggleOverlay( m_keyboardOverlay ); ++ + m_scene.draw( m_window, FULLSCREEN_RECT ); + m_window.update( FULLSCREEN_RECT ); + +diff -ur old_Game.h Game.h +--- old_Game.h 2008-11-01 08:56:50.000000000 +0200 ++++ Game.h 2008-11-01 09:27:22.000000000 +0200 +@@ -41,6 +41,9 @@ + virtual void gotoLevel( int l, bool replay=false ) {} + Levels& levels() { return m_levels; } + virtual bool renderScene( Canvas& c, int level ) =0; ++ virtual void togglePause() {} ++ virtual void undoLastStroke() {} ++ virtual void edit( bool editting ) {} + bool m_quit; + bool m_edit; + bool m_refresh; +diff -ur old_Overlay.cpp Overlay.cpp +--- old_Overlay.cpp 2008-11-01 08:56:50.000000000 +0200 ++++ Overlay.cpp 2008-11-01 09:45:57.000000000 +0200 +@@ -311,7 +311,51 @@ + } + }; + ++class KeyboardOverlay : public IconOverlay ++{ ++ int m_saving, m_sending; ++public: ++ KeyboardOverlay( GameControl& game ) ++ : IconOverlay(game,"keyb.png",0,0,true), ++ m_saving(0), ++ m_sending(0) ++ {} ++ ++ int index( int x, int y ) ++ { ++ //these values correspond with keyb.png (in pixels) ++ int sizeOfElement = 20; ++ ++ int colum = x/sizeOfElement; ++ int row = y/sizeOfElement; ++ return row*3+colum; ++ } ++ ++ virtual void draw( Canvas& screen ) ++ { ++ IconOverlay::draw( screen ); ++ } + ++ virtual bool onClick( int x, int y ) ++ { ++ int i = index(x,y); ++ //printf("i= %d\n",i); return 0; ++ switch (i) { ++ case -1: return false; ++ case 0: m_game.undoLastStroke(); break; ++ case 1: m_game.togglePause(); break; ++ case 2: m_game.m_quit=true; break; ++ case 3: break; ++ case 4: m_game.edit( !m_game.m_edit ); break; ++ case 5: break; ++ case 6: m_game.gotoLevel(m_game.m_level-1); break; ++ case 7: m_game.gotoLevel(m_game.m_level); break; ++ case 8: m_game.gotoLevel(m_game.m_level+1); break; ++ default: break; ++ } ++ return true; ++ } ++}; + + + Overlay* createIconOverlay( GameControl& game, const char* file, +@@ -330,3 +383,8 @@ + { + return new NextLevelOverlay( game ); + } ++ ++extern Overlay* createKeyboardOverlay( GameControl& game ) ++{ ++ return new KeyboardOverlay( game ); ++} +diff -ur old_Overlay.h Overlay.h +--- old_Overlay.h 2008-11-01 08:56:50.000000000 +0200 ++++ Overlay.h 2008-11-01 09:44:16.000000000 +0200 +@@ -45,4 +45,5 @@ + + extern Overlay* createNextLevelOverlay( GameControl& game ); + ++extern Overlay* createKeyboardOverlay( GameControl& game ); + #endif //OVERLAY_H diff --git a/packages/numptyphysics/numptyphysics/keyb.png b/packages/numptyphysics/numptyphysics/keyb.png new file mode 100644 index 0000000000..4d77e88fd9 Binary files /dev/null and b/packages/numptyphysics/numptyphysics/keyb.png differ diff --git a/packages/numptyphysics/numptyphysics/next.png b/packages/numptyphysics/numptyphysics/next.png new file mode 100644 index 0000000000..21a94ce1dc Binary files /dev/null and b/packages/numptyphysics/numptyphysics/next.png differ diff --git a/packages/numptyphysics/numptyphysics/numptyphysics.desktop b/packages/numptyphysics/numptyphysics/numptyphysics.desktop new file mode 100644 index 0000000000..b85265ab6f --- /dev/null +++ b/packages/numptyphysics/numptyphysics/numptyphysics.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=numptyphysics +Comment=Physics Game +Note=Simulate Objects +Exec=xrandr -o 3 && numptyphysics -geometry 640x480; xrandr -o 0 +Icon=star.png +Type=Application +Categories=Games + diff --git a/packages/numptyphysics/numptyphysics/replay_off.patch b/packages/numptyphysics/numptyphysics/replay_off.patch new file mode 100644 index 0000000000..e2f606ea64 --- /dev/null +++ b/packages/numptyphysics/numptyphysics/replay_off.patch @@ -0,0 +1,166 @@ +--- old_Game.cpp 2008-10-30 15:46:15.000000000 +0200 ++++ Game.cpp 2008-10-30 15:49:14.000000000 +0200 +@@ -1197,100 +1197,9 @@ + } + }; + +-class DemoRecorder +-{ +-public: +- +- void start() +- { +- m_running = true; +- m_log.empty(); +- m_log.capacity(512); +- m_lastTick = 0; +- m_lastTickTime = SDL_GetTicks(); +- } + +- void stop() +- { +- printf("stop recording: %d events\n",m_log.size()); +- m_running = false; +- } + +- void tick() +- { +- if ( m_running ) { +- m_lastTick++; +- m_lastTickTime = SDL_GetTicks(); +- } +- } + +- void record( SDL_Event& ev ) +- { +- if ( m_running ) { +- m_log.append( m_lastTick, SDL_GetTicks()-m_lastTickTime, ev ); +- } +- } +- +- DemoLog& getLog() { return m_log; } +- +-private: +- bool m_running; +- DemoLog m_log; +- int m_lastTick; +- int m_lastTickTime; +-}; +- +- +-class DemoPlayer +-{ +-public: +- +- void start( const DemoLog* log ) +- { +- m_playing = true; +- m_log = log; +- m_index = 0; +- m_lastTick = 0; +- m_lastTickTime = SDL_GetTicks(); +- printf("start playback: %d events\n",m_log->size()); +- } +- +- bool isRunning() { return m_playing; } +- +- void stop() +- { +- m_playing = false; +- m_log = NULL; +- } +- +- void tick() +- { +- if ( m_playing ) { +- m_lastTick++; +- m_lastTickTime = SDL_GetTicks(); +- } +- } +- +- bool fetchEvent( SDL_Event& ev ) +- { +- if ( m_playing +- && m_index < m_log->size() +- && m_log->at(m_index).t <= m_lastTick +- && m_log->at(m_index).o <= SDL_GetTicks()-m_lastTickTime ) { +- ev = m_log->at(m_index).e; +- m_index++; +- return true; +- } +- return false; +- } +- +-private: +- bool m_playing; +- const DemoLog* m_log; +- int m_index; +- int m_lastTick; +- int m_lastTickTime; +-}; + + + class Game : public GameParams +@@ -1303,8 +1212,6 @@ + IconOverlay m_pauseOverlay; + EditOverlay m_editOverlay; + // DemoOverlay m_demoOverlay; +- DemoRecorder m_recorder; +- DemoPlayer m_player; + Os *m_os; + public: + Game( int width, int height ) +@@ -1328,15 +1235,11 @@ + if ( m_edit ) { + m_scene.protect(0); + } +- m_recorder.stop(); +- m_player.stop(); + if ( replay ) { + // for ( int i=0; i=0 && !handled; i-- ) { + handled = m_overlays[i]->handleEvent(ev); + } +@@ -1703,8 +1603,6 @@ + if ( m_scene.isCompleted() != isComplete && !m_edit ) { + isComplete = m_scene.isCompleted(); + if ( isComplete ) { +- m_player.stop(); +- m_recorder.stop(); + showOverlay( completedOverlay ); + } else { + hideOverlay( completedOverlay ); diff --git a/packages/numptyphysics/numptyphysics_svn.bb b/packages/numptyphysics/numptyphysics_svn.bb index 6c833c2f01..1e5409f223 100644 --- a/packages/numptyphysics/numptyphysics_svn.bb +++ b/packages/numptyphysics/numptyphysics_svn.bb @@ -1,39 +1,39 @@ DESCRIPTION = "Numpty Physics is a drawing puzzle game in the spirit (and style?) \ of Crayon Physics using the same excellent Box2D engine." -DEPENDS = "virtual/libsdl libsdl-image" +DEPENDS = "virtual/libsdl libsdl-image libpng" LICENSE = "GPL" HOMEPAGE = "http://numptyphysics.garage.maemo.org/" SECTION = "x11/games" PV = "0.2+svnr${SRCREV}" +inherit autotools + SRC_URI = "\ svn://garage.maemo.org/svn/${PN};module=trunk;proto=https \ http://wwwpub.zih.tu-dresden.de/~mkluge/numptyphysics_setup.tgz \ - file://gcc43.diff;patch=1 \ + file://replay_off.patch;patch=1;pnum=0 \ + file://next.png \ + file://keyb.patch;patch=1;pnum=0 \ + file://keyb.png \ + file://faster.patch;patch=1;pnum=0 \ + file://numptyphysics.desktop \ " S = "${WORKDIR}/trunk" EXTRA_S = "${WORKDIR}/local/packages/numptyphysics" -# what an ugly buildsystem... handcrafted Makefiles... back to the stoneage -export CCOPTS = "${CFLAGS} -I Box2D/Include" -export LDOPTS = "${LDFLAGS} -lSDL -lSDL_image -lX11" - -do_configure() { - for i in Config.h Makefile Game.cpp; do - install -m 0644 ${EXTRA_S}/$i ${S} - done +do_configure_append() { + mv ../next.png data + mv ../keyb.png data } -do_install() { +do_install_append() { install -d ${D}${datadir}/numptyphysics - install -d ${D}${bindir} install -d ${D}${datadir}/pixmaps install -d ${D}${datadir}/applications - install -m 0755 ${S}/arm/Game ${D}${bindir}/numptyphysics install -m 0644 ${EXTRA_S}/star.png ${D}${datadir}/pixmaps - install -m 0644 ${EXTRA_S}/numptyphysics.desktop ${D}/${datadir}/applications - cp -a ${EXTRA_S}/data/* ${D}/${datadir}/numptyphysics/ + install -m 0644 ../numptyphysics.desktop ${D}/${datadir}/applications + cp -a ${EXTRA_S}/data/* data/keyb.png ${D}/${datadir}/numptyphysics/ } FILES_${PN} += "${datadir}" -- cgit v1.2.3 From 59b2fb57c2966241496ad2e439c2e7a9d787671f Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sat, 15 Nov 2008 00:58:22 +0100 Subject: debianutils_2.30: Add this version and make it default for openmoko debianutils 2.19 is not fetchable and 2.30 is the latest version. Add this to OpenEmbedded, add the checksums, change the Openmoko distro to use it. --- conf/checksums.ini | 4 ++++ conf/distro/include/preferred-om-2008-versions.inc | 2 +- packages/debianutils/debianutils_2.30.bb | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 packages/debianutils/debianutils_2.30.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index c735e690d7..1bda49ad39 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -3502,6 +3502,10 @@ sha256=28be7102bde3bc9b39be2732b89da9fbab79b7ac3898075ed414a45258bb3026 md5=cc768faa584f6c31cc1e0a959a3b8c0c sha256=46c0991b71d1991aa2f90d6816d9efb737fc9f9b99713174fcdf8d323727a11c +[ftp://ftp.debian.org/debian/pool/main/d/debianutils/debianutils_2.30.tar.gz] +md5=7fdd5f8395162d8728d4b79e97b9819e +sha256=d62e98fee5b1a758d83b62eed8d8bdec473677ff782fed89fc4ae3ba3f381401 + [ftp://ftp.gnu.org/gnu/dejagnu/dejagnu-1.4.4.tar.gz] md5=053f18fd5d00873de365413cab17a666 sha256=d0fbedef20fb0843318d60551023631176b27ceb1e11de7468a971770d0e048d diff --git a/conf/distro/include/preferred-om-2008-versions.inc b/conf/distro/include/preferred-om-2008-versions.inc index 7a7c29f121..96484d4d2c 100644 --- a/conf/distro/include/preferred-om-2008-versions.inc +++ b/conf/distro/include/preferred-om-2008-versions.inc @@ -231,7 +231,7 @@ PREFERRED_VERSION_dcopidl2cpp-native ?= "3.5.4" PREFERRED_VERSION_dcopidl-native ?= "3.5.4" PREFERRED_VERSION_dcron ?= "2.3.3" PREFERRED_VERSION_ddclient ?= "3.6.3" -PREFERRED_VERSION_debianutils ?= "2.19" +PREFERRED_VERSION_debianutils ?= "2.30" PREFERRED_VERSION_dejagnu ?= "1.4.4" PREFERRED_VERSION_dejagnu-native ?= "1.4.4" PREFERRED_VERSION_detect-stylus ?= "0.13" diff --git a/packages/debianutils/debianutils_2.30.bb b/packages/debianutils/debianutils_2.30.bb new file mode 100644 index 0000000000..30beb5d4ed --- /dev/null +++ b/packages/debianutils/debianutils_2.30.bb @@ -0,0 +1,5 @@ +# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved +# Released under the MIT license (see packages/COPYING) + +require debianutils.inc +PR="r0" -- cgit v1.2.3 From 8c6bb3062ace7bfe0d44f00c8f9de2b9b2a73cda Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sat, 15 Nov 2008 01:13:14 +0100 Subject: task-openmoko-feed: Add various full blown tools to escape from busybox Werner tries to escape from Busybox. Provide net-tools, iproute2, iputils, psmisc, tar, coreutils, debianutils, tcptraceroute in the feed. --- packages/tasks/task-openmoko-feed.bb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/tasks/task-openmoko-feed.bb b/packages/tasks/task-openmoko-feed.bb index 921f4d7edd..921077b40b 100644 --- a/packages/tasks/task-openmoko-feed.bb +++ b/packages/tasks/task-openmoko-feed.bb @@ -1,7 +1,7 @@ DESCRIPTION = "Openmoko: Misc. Feed Items" SECTION = "openmoko/base" LICENSE = "MIT" -PR = "r45" +PR = "r46" inherit task @@ -104,4 +104,14 @@ RDEPENDS_task-openmoko-feed = "\ midori \ microcom \ emacs \ +# for werner \ + net-tools \ + iproute2 \ + iputils \ + psmisc \ + tar \ + coreutils \ + debianutils \ + tcptraceroute \ +# dnsutils/bind-tools for dig, nslookup is still missing \ " -- cgit v1.2.3 From a65a3423aadfd013ce0a9cb87ed23dd861002f9a Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Sat, 15 Nov 2008 02:08:23 +0100 Subject: sane-srcrevs: Bump vala-terminal to working version --- conf/distro/include/sane-srcrevs.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc index 41990a7ab1..a5537876c3 100644 --- a/conf/distro/include/sane-srcrevs.inc +++ b/conf/distro/include/sane-srcrevs.inc @@ -198,7 +198,7 @@ SRCREV_pn-tmut ?= "60" SRCREV_pn-u-boot-openmoko ?= "2b78a9413619902aa4ff55a986b12ece3021fbe3" SRCREV_pn-usbpath ?= "3172" SRCREV_pn-usbpath-native ?= "3172" -SRCREV_pn-vala-terminal ?= "e5399ff1b88f5a16d6943e5dce6ab3679238cbc0" +SRCREV_pn-vala-terminal ?= "502d62d7eb100f86380b0e78474cc360ad7944b5" SRCREV_pn-webkit-gtk ?= "36540" SRCREV_pn-webkit-qt ?= "28656" SRCREV_pn-webkit-qtopia ?= "28656" -- cgit v1.2.3 From 6beb5e9ae29e4351ab3fc1c8ce7ba0d35ea62bfe Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 15 Nov 2008 09:12:20 +0100 Subject: mplayer: ARM_INSTRUCTION_SET = "ARM" --- packages/mplayer/mplayer_0.0+1.0rc1.bb | 4 +++- packages/mplayer/mplayer_0.0+1.0rc2.bb | 4 +++- packages/mplayer/mplayer_svn.bb | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/mplayer/mplayer_0.0+1.0rc1.bb b/packages/mplayer/mplayer_0.0+1.0rc1.bb index cf899861a0..d1682435cb 100644 --- a/packages/mplayer/mplayer_0.0+1.0rc1.bb +++ b/packages/mplayer/mplayer_0.0+1.0rc1.bb @@ -37,9 +37,11 @@ SRC_URI_append_collie = "file://disable-executable-stack-test.patch;patch=1" PACKAGE_ARCH_mplayer_collie = "collie" PACKAGE_ARCH_mencoder_collie = "collie" +ARM_INSTRUCTION_SET = "ARM" + RCONFLICTS_${PN} = "mplayer-atty" RREPLACES_${PN} = "mplayer-atty" -PR = "r17" +PR = "r18" PARALLEL_MAKE = "" diff --git a/packages/mplayer/mplayer_0.0+1.0rc2.bb b/packages/mplayer/mplayer_0.0+1.0rc2.bb index 8ecb205457..9d32fce12f 100644 --- a/packages/mplayer/mplayer_0.0+1.0rc2.bb +++ b/packages/mplayer/mplayer_0.0+1.0rc2.bb @@ -40,10 +40,12 @@ PACKAGE_ARCH_collie = "collie" PACKAGE_ARCH_c7x0 = "c7x0" PACKAGE_ARCH_hx4700 = "hx4700" +ARM_INSTRUCTION_SET = "ARM" + RCONFLICTS_${PN} = "mplayer-atty" RREPLACES_${PN} = "mplayer-atty" -PR = "r9" +PR = "r10" PARALLEL_MAKE = "" diff --git a/packages/mplayer/mplayer_svn.bb b/packages/mplayer/mplayer_svn.bb index 26170c6ede..b0f12504d4 100644 --- a/packages/mplayer/mplayer_svn.bb +++ b/packages/mplayer/mplayer_svn.bb @@ -36,11 +36,13 @@ PACKAGE_ARCH_collie = "collie" PACKAGE_ARCH_c7x0 = "c7x0" PACKAGE_ARCH_hx4700 = "hx4700" +ARM_INSTRUCTION_SET = "ARM" + RCONFLICTS_${PN} = "mplayer-atty" RREPLACES_${PN} = "mplayer-atty" PV = "0.0+1.0rc2+svnr${SRCREV}" -PR = "r6" +PR = "r7" DEFAULT_PREFERENCE = "-1" DEFAULT_PREFERENCE_armv7a = "1" -- cgit v1.2.3 From feb7b882512b63f7a366361bc0925bcd7fdad16f Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 15 Nov 2008 09:15:16 +0100 Subject: empathy: add gnome-doc-utils to DEPENDS * http://tinderbox.openembedded.net/packages/228163/ --- packages/telepathy/empathy_2.24.0.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/telepathy/empathy_2.24.0.bb b/packages/telepathy/empathy_2.24.0.bb index 66c8210adf..b9cf1d5ac9 100644 --- a/packages/telepathy/empathy_2.24.0.bb +++ b/packages/telepathy/empathy_2.24.0.bb @@ -1,7 +1,7 @@ DESCRIPTION = "Empathy: a Telepathy based IM client" HOMEPAGE = "http://blogs.gnome.org/view/xclaesse/2007/04/26/0" LICENSE = "GPL" -DEPENDS = "python-native telepathy-python telepathy-mission-control libtelepathy telepathy-glib gtk+ gconf libglade eds-dbus" +DEPENDS = "gnome-doc-utils python-native telepathy-python telepathy-mission-control libtelepathy telepathy-glib gtk+ gconf libglade eds-dbus" RDEPENDS = "telepathy-mission-control" RRECOMMENDS = "telepathy-gabble" -- cgit v1.2.3 From c6b7b30b4c50b58f852f9fd321fce3cde9b85389 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 15 Nov 2008 09:17:49 +0100 Subject: firefox.inc: ARM_INSTRUCTION_SET = "arm" * http://tinderbox.openembedded.net/builds/56419/ * http://tinderbox.openembedded.net/builds/56410/ --- packages/mozilla/firefox.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mozilla/firefox.inc b/packages/mozilla/firefox.inc index 0684214fc6..419398de95 100644 --- a/packages/mozilla/firefox.inc +++ b/packages/mozilla/firefox.inc @@ -2,6 +2,7 @@ DESCRIPTION ?= "Browser made by mozilla" SRC_URI += "file://mozilla-${PN}.png file://mozilla-${PN}.desktop" PARALLEL_MAKE = "" +ARM_INSTRUCTION_SET = "arm" MOZPV ?= "${PV}" -- cgit v1.2.3 From 4ba0b063f104b9ef775b3dbcac5d4fdd5c8f85d8 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 15 Nov 2008 09:20:28 +0100 Subject: webkit gtk: ARM_INSTRUCTION_SET = "arm" * http://tinderbox.openembedded.net/builds/56478/ --- packages/webkit/webkit-gtk_svn.bb | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/webkit/webkit-gtk_svn.bb b/packages/webkit/webkit-gtk_svn.bb index 92df2d0f94..3abf37a409 100644 --- a/packages/webkit/webkit-gtk_svn.bb +++ b/packages/webkit/webkit-gtk_svn.bb @@ -27,6 +27,7 @@ S = "${WORKDIR}/" inherit autotools pkgconfig lib_package +ARM_INSTRUCTION_SET = "arm" # FIXME: Segfaulting without --with-http-backend=curl EXTRA_OECONF = "\ --enable-debug=no \ -- cgit v1.2.3 From cd97e02ba52817f5c1a1d27c7c5e92c00ac0f7ef Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 15 Nov 2008 11:02:16 +0100 Subject: madplay: ARM_INSTRUCTION_SET = "arm" * http://tinderbox.openembedded.net/builds/56529/ --- packages/madplay/madplay_0.15.2b.bb | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/madplay/madplay_0.15.2b.bb b/packages/madplay/madplay_0.15.2b.bb index d942b965e2..9c5bc5a742 100644 --- a/packages/madplay/madplay_0.15.2b.bb +++ b/packages/madplay/madplay_0.15.2b.bb @@ -8,5 +8,6 @@ HOMEPAGE = "http://www.mars.org/home/rob/proj/mpeg/" SRC_URI = "ftp://ftp.mars.org/pub/mpeg/${PN}-${PV}.tar.gz" inherit autotools +ARM_INSTRUCTION_SET = "arm" FILES_${PN} = "${bindir}/madplay" -- cgit v1.2.3 From 9dcb99b070c453efc5ff6087d5c6dd242fab1994 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 15 Nov 2008 11:02:59 +0100 Subject: u-boot omap3: update SRCREV for l1neon fix --- packages/u-boot/u-boot-omap3_git.bb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/u-boot/u-boot-omap3_git.bb b/packages/u-boot/u-boot-omap3_git.bb index 5be3657fba..56ca67bb60 100644 --- a/packages/u-boot/u-boot-omap3_git.bb +++ b/packages/u-boot/u-boot-omap3_git.bb @@ -2,10 +2,10 @@ require u-boot.inc FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/u-boot-omap3-git/${MACHINE}" -SRCREV = "c492706ba046124333323273f6fc21123360cb50" +SRCREV = "08d7fdcce5dde5c2dc968fac5b2facf17cbabb5" -PV = "2008.10-rc1+${PR}+git${SRCREV}" -PR ="r1" +PV = "2008.10+${PR}+git${SRCREV}" +PR ="r2" SRC_URI = "git://www.sakoman.net/git/u-boot-omap3.git;branch=common;protocol=git \ " -- cgit v1.2.3 From e9404d66bec8f92a9e05cda5251078460bdc9ed2 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 15 Nov 2008 12:00:54 +0100 Subject: mono 1.2.6: ARM_INSTRUCTION_SET = "arm" * http://tinderbox.openembedded.net/builds/56543/ --- packages/mono/mono_1.2.6.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mono/mono_1.2.6.inc b/packages/mono/mono_1.2.6.inc index c9644cbce5..36eece0148 100644 --- a/packages/mono/mono_1.2.6.inc +++ b/packages/mono/mono_1.2.6.inc @@ -8,6 +8,7 @@ SRC_URI = "http://go-mono.com/sources/mono/mono-1.2.6.tar.bz2 \ S = "${WORKDIR}/mono-1.2.6" inherit autotools +ARM_INSTRUCTION_SET = "arm" EXTRA_OECONF_arm = "--without-tls" EXTRA_OECONF_mipsel = "--without-tls" -- cgit v1.2.3 From a1553c8bf673e161ff4f49bb58083f4c3f692acf Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Sat, 15 Nov 2008 13:12:59 +0100 Subject: fso-illume-image: Make fso-illume-image build with ENTERPRISE_DISTRO=1 --- packages/images/fso-illume-image.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/images/fso-illume-image.bb b/packages/images/fso-illume-image.bb index 979adf1855..a2bdda5e47 100644 --- a/packages/images/fso-illume-image.bb +++ b/packages/images/fso-illume-image.bb @@ -40,7 +40,7 @@ AUDIO_INSTALL = "\ alsa-utils-amixer \ gst-meta-audio \ gst-plugin-modplug \ - gst-plugin-sid \ + ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'gst-plugin-sid', d)} \ fso-sounds \ " -- cgit v1.2.3 From 35140731e1fa6fb6380c079b14549b1e221a12a4 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 15 Nov 2008 13:16:34 +0100 Subject: kernel.bbclass: stage more headers for >=2.6.27 kernels --- classes/kernel.bbclass | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass index 742654e7c1..a6db6815ce 100644 --- a/classes/kernel.bbclass +++ b/classes/kernel.bbclass @@ -96,9 +96,11 @@ kernel_do_stage() { mkdir -p ${STAGING_KERNEL_DIR}/include/$ASMDIR cp -fR include/$ASMDIR/* ${STAGING_KERNEL_DIR}/include/$ASMDIR/ - # Kernel 2.6.27 moved headers from includes/asm-${ARCH} to arch/${ARCH/include/asm + # Kernel 2.6.27 moved headers from includes/asm-${ARCH} to arch/${ARCH}/include/asm if [ -e arch/${ARCH}/include/asm/ ] ; then cp -fR arch/${ARCH}/include/asm/* ${STAGING_KERNEL_DIR}/include/$ASMDIR/ + install -d ${STAGING_KERNEL_DIR}/arch/${ARCH}/include + cp -fR arch/${ARCH}/include/* ${STAGING_KERNEL_DIR}/arch/${ARCH}/include/ fi rm -f $ASMDIR ${STAGING_KERNEL_DIR}/include/asm ln -sf $ASMDIR ${STAGING_KERNEL_DIR}/include/asm -- cgit v1.2.3 From eff7da1cbee62784124027fece144dfc200aec16 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 15 Nov 2008 13:20:23 +0100 Subject: task-proper-tools: add more network related utils to replace busybox parts --- packages/tasks/task-proper-tools.bb | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/packages/tasks/task-proper-tools.bb b/packages/tasks/task-proper-tools.bb index 6e1cd5d895..ce512535dc 100644 --- a/packages/tasks/task-proper-tools.bb +++ b/packages/tasks/task-proper-tools.bb @@ -1,25 +1,30 @@ DESCRIPTION = "Full versions of tools provided by busybox" -PR = "r6" +PR = "r7" inherit task RDEPENDS_${PN} = "\ - coreutils \ - findutils \ - util-linux-ng \ - gawk \ - sed \ - wget \ - patch \ - tar \ - diffutils \ - less \ - vim \ - e2fsprogs \ - binutils-symlinks \ - module-init-tools \ + coreutils \ + findutils \ + util-linux-ng \ + gawk \ + sed \ + wget \ + patch \ + tar \ + diffutils \ + less \ + vim \ + e2fsprogs \ + binutils-symlinks \ + module-init-tools \ + net-tools \ + iproute2 \ + iputils \ + psmisc \ + debianutils \ + tcptraceroute \ " - # # binutils-symlinks provide ar in a way which conflict with busybox - #1465 for more info # -- cgit v1.2.3 From f9452eeca830982b1c8a4c2e71a8dc60c5d0c5f1 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 15 Nov 2008 13:26:25 +0100 Subject: angstrom feed builder: add numptyphysics --- contrib/angstrom/build-feeds.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/angstrom/build-feeds.sh b/contrib/angstrom/build-feeds.sh index d71d57b3bd..653d0b941f 100755 --- a/contrib/angstrom/build-feeds.sh +++ b/contrib/angstrom/build-feeds.sh @@ -173,7 +173,8 @@ do nmap \ nmm \ notecase \ - openmoko-browser2 \ + numptyphysics \ + openmoko-browser2 \ openredalert \ openvpn \ opie-notes \ -- cgit v1.2.3 From a67695446b604cca6d8969adc3c273b632e5a037 Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Sat, 15 Nov 2008 13:01:55 +0000 Subject: linux-handhelds: fix compilation error due to missing include Add missing include of linux/limits.h. Fixes bug #4344. --- packages/linux/linux-handhelds-2.6-2.6.21/gcc4x-limits.patch | 10 ++++++++++ packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 packages/linux/linux-handhelds-2.6-2.6.21/gcc4x-limits.patch diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/gcc4x-limits.patch b/packages/linux/linux-handhelds-2.6-2.6.21/gcc4x-limits.patch new file mode 100644 index 0000000000..02f3a5da09 --- /dev/null +++ b/packages/linux/linux-handhelds-2.6-2.6.21/gcc4x-limits.patch @@ -0,0 +1,10 @@ +--- linux/scripts/mod/sumversion.c.orig 2008-11-15 12:22:04.000000000 +0000 ++++ linux/scripts/mod/sumversion.c 2008-11-15 12:22:21.000000000 +0000 +@@ -7,6 +7,7 @@ + #include + #include + #include ++#include + #include "modpost.h" + + /* diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb index 3df1102761..7fbc286774 100644 --- a/packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb +++ b/packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb @@ -1,7 +1,7 @@ SECTION = "kernel" DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices." LICENSE = "GPL" -PR = "r20" +PR = "r21" DEFAULT_PREFERENCE = "-1" @@ -12,6 +12,7 @@ FILESPATH = "${FILE_DIRNAME}/linux-handhelds-2.6-2.6.21/${MACHINE}:${FILE_DIRNAM SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \ file://linux-2.6.git-9d20fdd58e74d4d26dc5216efaaa0f800c23dd3a.patch;patch=1 \ http://www.rpsys.net/openzaurus/patches/archive/export_atags-r0a.patch;patch=1 \ + file://gcc4x-limits.patch;patch=1 \ file://defconfig" require linux-handhelds-2.6.inc -- cgit v1.2.3 From 7a59e5082766cb19288aecdf72b9c0703071d3e8 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 15 Nov 2008 14:12:46 +0100 Subject: ti-cmemk-module, ti-lpm-module: adapt build to release versions that fixed the weird stuff we worked around --- packages/dsplink/lpm.inc | 25 +++++++++---------------- packages/dsplink/ti-cmemk-module_2.21.bb | 6 ++++++ packages/dsplink/ti-lpm-module_2.21.bb | 5 +++++ packages/dsplink/ti-paths.inc | 11 ++++++++--- 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/packages/dsplink/lpm.inc b/packages/dsplink/lpm.inc index 211ffd3766..7938268c52 100644 --- a/packages/dsplink/lpm.inc +++ b/packages/dsplink/lpm.inc @@ -3,8 +3,6 @@ DESCRIPTION = "Codec Engine for TI ARM/DSP processors - power module" DEPENDS = "virtual/kernel perl-native dsplink" RDEPENDS = "update-modules" -inherit module - require ti-paths.inc PARALLEL_MAKE = "" @@ -13,22 +11,17 @@ do_compile_append() { echo "MVTOOL_PREFIX=${TARGET_PREFIX}" > ${S}/Rules.make echo "UCTOOL_PREFIX=${TARGET_PREFIX}" >> ${S}/Rules.make echo "LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}" >> ${S}/Rules.make + export DSPLINK=${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/dsplink # Build the DSP power manager kernel module - cd ${S}/cetools/packages/ti/bios/power - - # Unpack all kernel sources for the DSP power manager module - for dsp in $(ls | grep bld | awk -F, '{print $2}' | awk -F_ '{print $1}') ; do - if ! [ -e $dsp ] ; then tar xf ti_bios_power,${dsp}_bld.tar ; fi - done - - cd ${DSPPOWERSOC}/lpm - - unset LDFLAGS CFLAGS - make KERNEL_PATH=${STAGING_KERNEL_DIR} \ - KERNEL_SRC=${STAGING_KERNEL_DIR} \ - KERNEL_DIR=${STAGING_KERNEL_DIR} \ - KERNEL_VERSION=${KERNEL_VERSION} \ + cd ${S}/cetools/packages/ti/bios/power/modules/${DSPPOWERSOC}/lpm + + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + rm -f *o + make KERNEL_PATH=${STAGING_KERNEL_DIR} \ + KERNEL_SRC=${STAGING_KERNEL_DIR} \ + KERNEL_DIR=${STAGING_KERNEL_DIR} \ + KERNEL_VERSION=${KERNEL_VERSION} \ TOOL_PREFIX=${TARGET_PREFIX} \ DSPLINK_REPO=${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ \ CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ diff --git a/packages/dsplink/ti-cmemk-module_2.21.bb b/packages/dsplink/ti-cmemk-module_2.21.bb index 0e9f733c8b..d15accb3ae 100644 --- a/packages/dsplink/ti-cmemk-module_2.21.bb +++ b/packages/dsplink/ti-cmemk-module_2.21.bb @@ -6,10 +6,16 @@ PV = "221" # md5sum # Look for tarball at https://www-a.ti.com/downloads/sds_support/targetcontent/CE/index.html +inherit module + SRC_URI = "http://install.tarball.in.source.dir/codec_engine_2_21.tar.gz \ file://Makefile.dsplink \ " S = "${WORKDIR}/codec_engine_2_21" +do_compile() { + : +} + require cmemk.inc diff --git a/packages/dsplink/ti-lpm-module_2.21.bb b/packages/dsplink/ti-lpm-module_2.21.bb index 9a9791894d..6a6945f710 100644 --- a/packages/dsplink/ti-lpm-module_2.21.bb +++ b/packages/dsplink/ti-lpm-module_2.21.bb @@ -9,7 +9,12 @@ PV = "221" SRC_URI = "http://install.tarball.in.source.dir/codec_engine_2_21.tar.gz \ file://Makefile.dsplink \ " +inherit module S = "${WORKDIR}/codec_engine_2_21" +do_compile() { + : +} + require lpm.inc diff --git a/packages/dsplink/ti-paths.inc b/packages/dsplink/ti-paths.inc index 4599c3ef73..7640d6b4fe 100644 --- a/packages/dsplink/ti-paths.inc +++ b/packages/dsplink/ti-paths.inc @@ -1,10 +1,15 @@ +# To build the DSP applications you need to have DSP/BIOS, xdctools and codegen installed. Get these from: +# https://www-a.ti.com/downloads/sds_support/targetcontent/bios/bios_5_33/sabios-j05/bios_setuplinux_5_33_02.bin +# https://www-a.ti.com/downloads/sds_support/targetcontent/rtsc/xdctools_3_10_03/exports/xdctools_setuplinux_3_10_03.bin +# + # Path to the dir where the TI tools are unpacked TITOOLSDIR ?= "/OE/TI" # Path under TITOOLSDIR where dspbios is unpacked -TIBIOSDIR ?= "bios_5_32_04" -TIXDCTOOLSDIR ?= "${TITOOLSDIR}/xdctools_3_10_02" +TIBIOSDIR ?= "bios_5_33_02" +TIXDCTOOLSDIR ?= "${TITOOLSDIR}/xdctools_3_10_03" # Path under TITOOLSDIR where the dsp toolchain is unpacked -TICGTOOLSDIR ?= "cg6x_6_0_19" +TICGTOOLSDIR ?= "cg6x_6_0_16" DSPLINKPLATFORM ?= "DAVINCI" DSPLINKPLATFORM_omap5912osk = "OMAP" -- cgit v1.2.3 From 957bee3bf4db51a45a6940676490d08f38f17685 Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Sat, 15 Nov 2008 16:04:27 +0000 Subject: numptyphysics_svn: Add a comment about fetching problems due to svn only available as https --- packages/numptyphysics/numptyphysics_svn.bb | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/numptyphysics/numptyphysics_svn.bb b/packages/numptyphysics/numptyphysics_svn.bb index 1e5409f223..6dc49649d0 100644 --- a/packages/numptyphysics/numptyphysics_svn.bb +++ b/packages/numptyphysics/numptyphysics_svn.bb @@ -9,6 +9,7 @@ PV = "0.2+svnr${SRCREV}" inherit autotools SRC_URI = "\ +# Maemo garage is sadly only available with https. Can make you trouble while fetching without accepting the certificate. svn://garage.maemo.org/svn/${PN};module=trunk;proto=https \ http://wwwpub.zih.tu-dresden.de/~mkluge/numptyphysics_setup.tgz \ file://replay_off.patch;patch=1;pnum=0 \ -- cgit v1.2.3 From 7de244d8039430707d0ec4c2fb5812861c5f0b84 Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Sat, 15 Nov 2008 17:00:29 +0000 Subject: task-x11-illume: Catch up with new theme name --- packages/tasks/task-x11-illume.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/tasks/task-x11-illume.bb b/packages/tasks/task-x11-illume.bb index a285762c9c..8b813b4ebb 100644 --- a/packages/tasks/task-x11-illume.bb +++ b/packages/tasks/task-x11-illume.bb @@ -9,7 +9,7 @@ PR = "r0" inherit task # Default illume theme -# ILLUME_THEME ?= "illume-theme-illume" +ILLUME_THEME ?= "e-wm-theme-illume" RDEPENDS_${PN} = "\ task-x11-server \ @@ -18,5 +18,5 @@ RDEPENDS_${PN} = "\ \ e-wm \ e-wm-config-illume \ -# ${ILLUME_THEME} \ + ${ILLUME_THEME} \ " -- cgit v1.2.3 From 37eaf01d8cb40b66e913205e5ef56471e2b6dc16 Mon Sep 17 00:00:00 2001 From: Stefan Schmidt Date: Sat, 15 Nov 2008 17:01:18 +0000 Subject: e-wm: Apply patch former in the illumeeeeee package --- packages/e17/e-wm/gsm-segfault-fix.patch | 28 ++++++++++++++++++++++++++++ packages/e17/e-wm_svn.bb | 1 + 2 files changed, 29 insertions(+) create mode 100644 packages/e17/e-wm/gsm-segfault-fix.patch diff --git a/packages/e17/e-wm/gsm-segfault-fix.patch b/packages/e17/e-wm/gsm-segfault-fix.patch new file mode 100644 index 0000000000..0bed84a26e --- /dev/null +++ b/packages/e17/e-wm/gsm-segfault-fix.patch @@ -0,0 +1,28 @@ +Index: e/src/modules/illume/e_mod_gad_gsm.c +=================================================================== +--- e/src/modules/illume/e_mod_gad_gsm.c (revision 37617) ++++ e/src/modules/illume/e_mod_gad_gsm.c (revision 37618) +@@ -353,7 +353,7 @@ + { + /* We care only about the provider name right now. All the other status + * informations get ingnored for the gadget for now */ +- const char *provider, *name, *reg_stat; ++ const char *provider = 0 , *name = 0, *reg_stat = 0; + DBusMessageIter iter, a_iter, s_iter, v_iter; + + if (!dbus_message_has_signature(msg, "a{sv}")) return NULL; +@@ -380,10 +380,13 @@ + dbus_message_iter_next(&a_iter); + } + ++ if (!reg_stat) return NULL; + if (strcmp(reg_stat, "unregistered") == 0) provider = "No Service"; + else if (strcmp(reg_stat, "busy") == 0) provider = "Searching..."; + else if (strcmp(reg_stat, "denied") == 0) provider = "SOS only"; +- ++ ++ if (!provider) return NULL; ++ + return strdup(provider); + } + diff --git a/packages/e17/e-wm_svn.bb b/packages/e17/e-wm_svn.bb index a2fabc7840..3dee2ffd79 100644 --- a/packages/e17/e-wm_svn.bb +++ b/packages/e17/e-wm_svn.bb @@ -52,6 +52,7 @@ SRC_URI = "\ svn://svn.enlightenment.org/svn/e/trunk;module=e;proto=http \ file://enlightenment_start.oe \ file://applications.menu \ + file://gsm-segfault-fix.patch;patch=1;maxrev=37617 \ " S = "${WORKDIR}/e" -- cgit v1.2.3